diff --git a/MA-Inhalt.tex b/MA-Inhalt.tex index ec6e112..262d245 100644 --- a/MA-Inhalt.tex +++ b/MA-Inhalt.tex @@ -211,28 +211,35 @@ Alle kryptografische Operationen zur Verarbeitung des VPN-Datenverkehrs, sowie z \subsection{Wireguard} -Zur Zeit noch als Beta zu betrachten, könnte aber in Zukunft eine super Basis für VPN werden. -Für Linux gibt es ein Kernel-Modul, für MacOS, *BSD, (Linux) und co gibt es auch wireguard-go. -Windows-Unterstützung fehlt zur Zeit noch. +Wireguard ist ein Softwareprojekt, mit dem ein geschützter Netzwerktunnel zwischen zwei Netzwerkteilnehmern aufgebaut werden kann. +Zum aktuellen Zeitpunkt (12.10.2018) befindet sich Wireguard noch in Entwicklung, der Quellcode wird noch als experimentell eingestuft\footnote{Vergleich \url{https://www.wireguard.com/install/}}. +Wireguard wurde als Kernel-Modul für Linux entwickelt, welches einen Umfang von weniger als 4000 Zeilen Code hat \cite[][Abschnitt VII]{wireguard:intro}, wodurch Audits und Reviews erleichtert werden \cite[][Abschnitt VII]{wireguard:intro}. +Im Vergleich zu OpenVPN und IPsec arbeitet Wireguard als Kernel-Modul schneller und effizienter \cite[][Abschnitt VIII]{wireguard:intro}. +Für MacOS, FreeBSD und Windows (Unterstützung für Windows ist noch nicht fertiggestellt) wird mit \texttt{wireguard-go} eine in Go geschriebene Wireguard-Implementation entwickelt. +Eine auf Rust aufbauende Implementation wird unter der Bezeichnung \texttt{wireguard-rs} entwickelt\footnote{Siehe \url{https://www.wireguard.com/xplatform/}}. -Kommunikation erfolgt über UDP -NAT kann durch zusätzliche Keepalive-Nachrichten besiegt werden (UDP Hole Punching). +Wireguard arbeitet nur auf OSI-Layer~3 und unterstützt IPv4 und IPv6 sowohl zur Kommunikation zwischen zwei Netzwerkteilnehmern, als auch für den Transport durch den Netzwerktunnel \cite[][Abschnitt I]{wireguard:intro}. +Die durch Wireguard geschützten IP-Pakete werden in UDP-Paketen gekapselt zwischen den Netzwerkteilnehmern übertragen \cite[][Abschnitt III]{wireguard:intro}. +Durch das periodische Senden von \enquote{Keepalive}-Nachrichten \cite[][Abschnitt VI, Absatz E]{wireguard:intro} durch den Netzwerktunnel können Wireguard-Sitzungen, auch hinter \textit{Network Address Translation} (NAT) \cite[][Abschnitt II]{wireguard:intro}, aufrecht gehalten werden. -Der Tunnel ist Layer3 only und somit leichter in der Handhabung +Während OpenVPN und IPsec die Konfiguration der zu verwendenden kryptografischen Algorithmen und Parameter erlauben, gibt Wireguard diese fest vor. +Sollten Schwachstellen in der verwendeten Kryptografie vorliegen, so müssen alle Wireguard-Endpunkte mit Sicherheitsaktualisierungen versorgt werden \cite[][Abschnitt I]{wireguard:intro}. +Durch diesen Schritt kann Wireguard weniger komplex gestaltet werden und Verwundbarkeiten vermeiden, wie sie bei SSL/TLS häufig aufgetreten sind \cite[][Abschnitt I]{wireguard:intro}. -Architektur: Point-to-Point -Beide Teilnehmer tauschen auf nicht spezifizierte Weise ihre öffentlichen Schlüssel aus. (Wie bei OpenSSH) -Dieser öffentliche Schlüssel ist ein 32 Byte Curve25519 Punkt (II Cryptokey Routing) und identifiziert einen WireGuard-Peer. +Ein Netzwerkteilnehmer wird durch seinen öffentlichen Schlüssel, ein 32~Byte-Punkt auf der elliptischen Kurve \texttt{Curve25519}, eindeutig identifiziert \cite[][Abschnitt I]{wireguard:intro}. +Die Transportverschlüsselung verwendet \texttt{ChaCha20Poly1205} + +Zwei Netzwerkteilnehmer tauschen auf nicht spezifizierte Weise (wie bei OpenSSH) ihre öffentlichen Schlüssel aus. +Dieser öffentliche Schlüssel, der sind zufällig gewählte Punkte auf Curve25519 32 Byte) + +(II Cryptokey Routing) und identifiziert einen WireGuard-Peer. Curve25519 für ECDH -> von Bernstein als SaveCurve geführt ChaCha20Poly1305 - -\cite{wireguard:intro} - - -\cite{wireguard:analysis} +Laut einer Analyse ist das Wireguard-Protokoll für \textit{key-compromise impersonation} (KCI)-Angriffe verwundbar \cite{wireguard:analysis}. +Was das bedeutet, muss ich noch herausfinden. Aber dazu später. \begin{comment}