Readme: OpenVPN Sicherheit

Auf Basis einer Tunneltechnik, Verschlüsselung und weiterer Sicherheitsmechanismen ermöglicht OpenVPN einen geschützten Datenverkehr, ist individuell konfigurierbar und in sich abgeschlossen. Aber kann das eigentlich sicher sein, obwohl es kostenlos ist und noch dazu OpenSource?

06. Mai 2012 13:02

Sicherheit entsteht eigentlich vor allem durch Transparenz und möglichst einfach anwendbare Verschlüsselungstechnologien.

OpenVPN ist OpenSource und daher transparent. Und es nutzt OpenSSL, eine Verschlüsselungstechnologie, die ebenfalls OpenSource ist. Und sie ist einfach verwendbar und kommt daher vor allem an kritischen Stellen zum Einsatz, also z.B. beim Militär.

Sowohl OpenVPN als auch OpenSSL kann von jedermann kostenlos verwendet werden. Aber Kostenlos und Sicherheit, ist das nicht ein Widerspruch?

Vorabwissen: OpenSource?

Stellen Sie sich vor, Sie schreiben auf einen Zettel ein paar Matheaufgaben, deren Lösungsweg, und letzten endes das Ergebnis. Um nun herauszufinden, wie gut Sie in Mathe sind, müssen Sie diesen Zettel jemandem zur Kontrolle geben.

Da ist es freilich prima, wenn Sie sich dafür selbst jemanden heraussuchen dürfen. Sie wählen am besten jemanden, der nicht besonders gut in Mathe ist und landen die volle Punktzahl. Schön für Sie, denn Fehler und umständliche Rechenwege bleiben dabei unentdeckt.

OpenSource bedeutet, dass Sie den Zettel stattdessen öffentlich einsehbar von jedermann, also z.B. am Eingang einer Mathe-Uni, aushängen. Da wird die Sache deutlich unangenehmer.

Irgend jemand wird einen Fehler finden und zusätzlich wird es Leute geben, die Ihnen auch bei den richtig gerechneten Aufgaben einen besseren Lösungsweg zeigen können.

Wer will sich schon gern blamieren? Also nehmen Sie den Zettel ab und hängen eine verbesserte Version erneut aus, bei der Fehler entfernt und umständliche Rechenwege optimiert sind.

Auf diese Weise werden mutige OpenSource Projekte ständig kontrolliert und verbessert.

Vorabwissen: Verschlüsselung?

Verschlüsselung (hier besser Kryptografie) bedeutet in einfachen Worten die Umwandlung einer Information von einem verständlichen Zustand (Klartext) in scheinbaren Unsinn (Geheimtext).

Kryptografie ist eigentlich ein sehr einfaches Verfahren, logisch, verblüffend, bestechend trivial. Nehmen wir an, Sie möchten eine Nachricht übermitteln, die nur aus einem einzigen Zeichen besteht, sagen wir einem "K".

Bei der Kommunikation fragen Sie den Empfänger nach einer zufälligen Zahl und erhalten von ihm z.B. eine 3.

Anhand des vorher vereinbarten Verschlüsselungsverfahrens (hier beispielsweise durch monoalphabetische Substitution) ist nun festgelegt, dass alle vom Ihnen gesendeten Zeichen im Alphabet genau 3 Zeichen weiter stehen müssen. In diesem Beispiel wäre das ein "N". Sie senden also ein "N"; der Empfänger geht beim lesen im Alphabet 3 Zeichen zurück und versteht wieder das "K".

Wenn Sie sich nun diese Kommunikation nicht direkt, sondern über einen Boten vorstellen, so werden Sie feststellen, dass der Bote zu keinem Zeitpunkt erfährt, dass er das "K" als Nachricht übermittelt hat, er kennt nur eine Zahl (im Beispiel die "3") und einen Buchstaben (im Beispiel "N").

OpenVPN: vereinfachte Darstellung

Ein OpenVPN-Verbindungsaufbau durchläuft zwei Phasen. In der ersten Phase authentifizieren sich die Kommunikationspartner gegenseitig und die verschlüsselte Kommunikation wird aufgebaut. Danach wird das virtuelle Netzwerk, der eigentliche VPN-Tunnel, eingerichtet. Mit dem erfolgreichen Abschluss der zweiten Phase ist die VPN-Verbindung hergestellt.

Nun können Nutzdaten übertragen werden. Dabei wird die zu übermittelnde Nachricht an einem Tunnelende erst verschlüsselt, dann in einen "Briefumschlag" (VPN-Protokollheader) gesteckt, auf dem "Absender und Empfänger" (Quell- und Zieladresse des Tunnels) steht, und losgesendet. Am Tunnelausgang wird der "Briefumschlag" wieder entfernt, die Nachricht wird entschlüsselt und an den Empfänger ausgeliefert.

OpenVPN: detailreiche Darstellung

  • Der Client schickt zum Server eine Zufallszahl als "client_hello"
  • Der Server antwortet dem Client ebenfalls mit einer Zufallszahl als "server_hello".
  • Der Server authentifizieren sich gegenüber dem Client und sendet dazu seinen PublicKey zusammen mit einer Aufforderung an den Client, sich auf gleiche Weise zu authentifizieren
  • Die Konfiguration des Clients enthält einen Key, mit dem der Client die Authentizität des Servers anhand des gesendenten PublicKeys verifizieren kann und sendet an den Server seinen eigenen PublicKey
  • Der Client generiert ein sogenanntes MasterSecret, verschlüsstelt dieses mit dem zuvor erhaltenen öffentlichen Key des Servers und sendet es an den Server. Damit ist der Schlüssel für die aktuelle Session ausgetauscht der während der Verbindung zum Ver- und Entschlüsseln der Daten genutzt wird.
  • Master und Client beenden den Handshake. Die Nachrichten, die die Kommunikationspartner sich nun gegenseitig zusenden, werden nur noch verschlüsselt übertragen.
  • Der Client bezieht die zur Konfiguration des Tunnels nötigen Netzwerkparameter vom Server, legt auf seiner Seite ein entsprechendes virtuelles Netzwerkinterface an und der Tunnel ist eingerichtet.

 
π