WireGuard

Aus besserwiki.de
WireGuard
Logo
Basisdaten
Maintainer Jason A. Donenfeld
Betriebssystem plattformunabhängig
Programmiersprache C (Kernel-Modul),
Go (Anwenderprogramme)
Kategorie Virtual Private Network
Lizenz GPLv2 (Freie Software)
wireguard.com

WireGuard ist eine freie Software zum Aufbau eines virtuellen privaten Netzwerkes (VPN) über eine verschlüsselte Verbindung. Als Besonderheit ist diese VPN-Technik direkt im Linux-Kernel ab Version 5.6 integriert und erlaubt so eine höhere Verarbeitungsgeschwindigkeit als vergleichbare Lösungen wie IPsec oder OpenVPN. Allerdings erlaubt WireGuard nur den Transport über das schnellere UDP, im Gegensatz dazu erlaubt OpenVPN alternativ auch TCP auf der Transportschicht. Diese Einschränkung gilt nicht für das virtuelle Netzwerk selbst.

WireGuard steht unter der GNU GPLv2 und ist neben dem Betriebssystem Linux mit eigenem Kernelmodul auch als Anwendungsprogramm für verschiedene andere Betriebssysteme wie OpenBSD, FreeBSD, NetBSD, macOS und Microsoft Windows verfügbar.

Wireguard verfügt aufgrund des Aufbaus über einige Vorteile gegenüber anderen VPN-Protokollen: Eine einfache minimierte Codebasis, die damit auch leicht verständlich und überprüfbar ist; hohe Übertragungsgeschwindigkeiten, da für die Verschlüsselung und Übertragung kaum Ressourcen der Server und Clients belastet werden; plattformübergreifende Integration in verschiedene Betriebssysteme wie Windows, Linux, MacOS, Android, iOS und weitere.

Im März 2020 erreichte die Linux-Version der Software ein stabiles Produktionsrelease und wurde in den Linux-Kernel 5.6 integriert sowie in frühere Linux-Kernel einiger Linux-Distributionen rückportiert. Die Komponenten des Linux-Kernels sind unter der GNU General Public License (GPL) Version 2 lizenziert; andere Implementierungen stehen unter der GPLv2 oder anderen Free/Open-Source-Lizenzen.

Protokoll

WireGuard verwendet die folgenden Protokolle:

  • Curve25519 für den Schlüsselaustausch
  • ChaCha20 für die symmetrische Verschlüsselung
  • Poly1305 für Nachrichten-Authentifizierungscodes
  • SipHash für hashtable Schlüssel
  • BLAKE2s für kryptografische Hashfunktionen
  • Nur UDP-basiert

Im Mai 2019 veröffentlichten Forscher des INRIA einen maschinengeprüften Beweis des WireGuard-Protokolls, der mit dem CryptoVerif-Proof-Assistenten erstellt wurde.

Optionaler Pre-shared Symmetric Key Modus

WireGuard unterstützt den Pre-Shared-Symmetric-Key-Modus, der eine zusätzliche Ebene der symmetrischen Verschlüsselung bietet, um zukünftige Fortschritte im Quantencomputing abzuschwächen. Damit wird dem Risiko entgegengewirkt, dass der Datenverkehr so lange gespeichert wird, bis Quantencomputer in der Lage sind, Curve25519 zu knacken; zu diesem Zeitpunkt könnte der Datenverkehr entschlüsselt werden. Pre-shared Keys sind "aus Sicht der Schlüsselverwaltung in der Regel problematisch und könnten eher gestohlen werden", aber kurzfristig bieten die Curve25519-Schlüssel immer noch mehr als ausreichenden Schutz, wenn der symmetrische Schlüssel kompromittiert wird.

Vernetzung

WireGuard verwendet nur UDP und funktioniert daher nicht in Netzwerken, die UDP-Verkehr blockieren. Dies ist im Gegensatz zu Alternativen wie OpenVPN aufgrund der vielen Nachteile von TCP-über-TCP-Routing.

WireGuard unterstützt IPv6 vollständig, sowohl innerhalb als auch außerhalb des Tunnels. Es unterstützt nur Layer 3 sowohl für IPv4 als auch für IPv6 und kann v4-in-v6 kapseln und vice versa.

WireGuard unterstützt mehrere Topologien:

  • Punkt-zu-Punkt
  • Stern (Server/Client)
    • Ein Client-Endpunkt muss nicht definiert werden, bevor der Client beginnt, Daten zu senden.
    • Client-Endpunkte können statisch vordefiniert werden.
  • Mesh

Da Punkt-zu-Punkt unterstützt wird, können auch andere Topologien erstellt werden, allerdings nicht auf demselben Tunnel.

Erweiterbarkeit

WireGuard ist so konzipiert, dass es durch Programme und Skripte von Drittanbietern erweitert werden kann. Dies wurde genutzt, um WireGuard um verschiedene Funktionen zu erweitern, darunter benutzerfreundlichere Verwaltungsoberflächen (einschließlich der einfacheren Einrichtung von Schlüsseln), Protokollierung, dynamische Firewall-Updates und LDAP-Integration.

Der Ausschluss solch komplexer Funktionen aus der minimalen Kern-Codebasis verbessert seine Stabilität und Sicherheit. Um die Sicherheit zu gewährleisten, schränkt WireGuard die Optionen für die Implementierung kryptografischer Kontrollen ein, begrenzt die Auswahlmöglichkeiten für Schlüsselaustauschprozesse und bildet Algorithmen auf eine kleine Teilmenge moderner kryptografischer Primitive ab. Wird eine Schwachstelle in einer der Primitiven gefunden, kann eine neue Version veröffentlicht werden, die das Problem behebt. Außerdem können Konfigurationseinstellungen, die sich auf die Sicherheit der gesamten Anwendung auswirken, nicht von nicht privilegierten Benutzern geändert werden.

Empfang

WireGuard zielt darauf ab, eine einfache und effektive Implementierung eines virtuellen privaten Netzwerks bereitzustellen. In einem Bericht von Ars Technica aus dem Jahr 2018 wurde festgestellt, dass gängige VPN-Technologien wie OpenVPN und IPsec oft kompliziert einzurichten sind, sich leicht trennen lassen (ohne weitere Konfiguration), viel Zeit für die Aushandlung neuer Verbindungen benötigen, möglicherweise veraltete Chiffren verwenden und eine relativ umfangreiche Codebasis von über 400.000 bzw. 600.000 Codezeilen haben, was die Fehlersuche erschwert.

Das Design von WireGuard zielt darauf ab, diese Probleme zu reduzieren und den Tunnel standardmäßig sicherer und einfacher zu verwalten zu machen. Durch die Versionierung von Kryptographiepaketen konzentriert sich WireGuard auf Chiffren, die als die sichersten aktuellen Verschlüsselungsmethoden gelten, und hatte zum Zeitpunkt des Ars Technica-Reviews eine Codebasis von etwa 4000 Zeilen Kernel-Code, etwa 1 % von OpenVPN oder IPsec, was Sicherheitsaudits erleichtert.

WireGuard wurde durch den Open Technology Fund finanziert.

WireGuard wurde vom Schöpfer des Linux-Kernels, Linus Torvalds, gelobt, der es im Gegensatz zu OpenVPN und IPsec als "Kunstwerk" bezeichnete.

Ars Technica berichtete, dass in Tests stabile Tunnel mit WireGuard im Vergleich zu Alternativen leicht erstellt werden konnten und kommentierte, dass es "schwer wäre, zu langen Verzögerungen bei der Wiederverbindung zurückzukehren", verglichen mit den "unsinnigen" sofortigen Wiederverbindungen von WireGuard.

Der Senator von Oregon, Ron Wyden, hat dem National Institute of Standards and Technology (NIST) empfohlen, WireGuard als Ersatz für bestehende Technologien wie IPsec und OpenVPN zu prüfen.

Verfügbarkeit

Implementierungen

Zu den Implementierungen des WireGuard-Protokolls gehören:

  • Donenfelds erste Implementierung, geschrieben in C und Go.
  • BoringTun von Cloudflare, eine in Rust geschriebene Implementierung für den Benutzerbereich.
  • Matt Dunwoodie's Implementierung für OpenBSD, geschrieben in C.
  • Ryota Ozakis wg(4)-Implementierung für NetBSD ist in C geschrieben.
  • Die FreeBSD-Implementierung ist in C geschrieben und teilt den größten Teil des Datenpfades mit der OpenBSD-Implementierung.
  • Native Windows-Kernel-Implementierung namens "wireguard-nt", seit August 2021
  • OPNsense über das Standardpaket os-WireGuard
  • pfSense über das experimentelle Zusatzpaket auf pfSense Plus 21.05, pfSense CE 2.5.2 und späteren Versionen.

Linux-Unterstützung

Zu den User-Space-Programmen, die WireGuard unterstützen, gehören:

  • NetworkManager seit Version 1.16
  • systemd seit Version 237
  • Intels ConnMan seit Version 1.38
  • IPVanish VPN seit Version 3.7.4.0
  • Mozilla VPN (mit Mullvad)
  • NOIA Netzwerk
  • NordVPN über Nordlynx
  • Veeam Powered Network v2, seit Mai 2019
  • PiVPN seit 17. Oktober 2019
  • VPN Unlimited seit November 2019
  • Private Internet Access VPN seit 10. April 2020
  • hide.me CLI VPN-Client seit 20. Juli 2020
  • Surfshark seit Oktober 2020
  • Mistborn (Software) VPN seit März 2020
  • Oracle Linux mit "Unbreakable Enterprise Kernel" Release 6 Update 1, seit November 2020
  • oVPN seit Februar 2020, Markteinführung in 2021
  • Torguard seit 2020
  • Vypr VPN seit Mai 2020
  • Windscribe seit 2020
  • Trust.zone VPN seit Februar 2021
  • ProtonVPN seit Oktober 2021

Geschichte

Frühe Schnappschüsse der Codebasis existieren seit dem 30. Juni 2016. Vier frühe Anwender von WireGuard waren die VPN-Dienstleister Mullvad, AzireVPN, IVPN und cryptostorm. WireGuard hat Spenden von Mullvad, Private Internet Access, IVPN, der NLnet Foundation und nun auch von OVPN erhalten.

Seit Juni 2018 raten die Entwickler von WireGuard, den Code und das Protokoll als experimentell zu betrachten, und weisen darauf hin, dass sie noch keine stabile Version erreicht haben, die mit der Nachverfolgung von CVE-Sicherheitslücken kompatibel ist, die entdeckt werden könnten.

Am 9. Dezember 2019 akzeptierte David Miller, der Hauptverantwortliche für den Linux-Netzwerkstack, die WireGuard-Patches in den "net-next"-Maintainer-Baum, um sie in einen kommenden Kernel aufzunehmen.

Am 28. Januar 2020 fügte Linus Torvalds David Millers net-next-Baum zusammen, und WireGuard wurde in den Mainline-Linux-Kernelbaum aufgenommen.

Am 20. März 2020 aktivierten die Debian-Entwickler die Modul-Bauoptionen für WireGuard in ihrer Kernel-Konfiguration für die Debian 11-Version (Testing).

Am 29. März 2020 wurde WireGuard in den Linux 5.6 Release Tree aufgenommen. Die Windows-Version der Software bleibt im Beta-Stadium.

Am 30. März 2020 fügten die Android-Entwickler native Kernel-Unterstützung für WireGuard in ihr Generic Kernel Image ein.

Am 22. April 2020 fügte der NetworkManager-Entwickler Beniamino Galvani GUI-Unterstützung für WireGuard hinzu.

Am 12. Mai 2020 schlug Matt Dunwoodie Patches für native Kernelunterstützung von WireGuard in OpenBSD vor.

Am 22. Juni 2020, nach der Arbeit von Matt Dunwoodie und Jason A. Donenfeld, wurde WireGuard-Unterstützung in OpenBSD importiert.

Am 23. November 2020 veröffentlichte Jason A. Donenfeld ein Update des Windows-Pakets, das die Installation, Stabilität, ARM-Unterstützung und Enterprise-Features verbessert.

Am 29. November 2020 wurde WireGuard-Unterstützung in den FreeBSD 13-Kernel importiert.

Am 19. Januar 2021 wurde die WireGuard-Unterstützung als Vorschau in den Entwicklungs-Snapshots der pfSense Community Edition (CE) 2.5.0 hinzugefügt.

Im März 2021 wurde die WireGuard-Unterstützung im Kernel-Modus aus FreeBSD 13.0, das sich noch in der Testphase befand, entfernt, nachdem eine dringende Codebereinigung in FreeBSD WireGuard nicht schnell abgeschlossen werden konnte. Die FreeBSD-basierte pfSense Community Edition (CE) 2.5.0 und pfSense Plus 21.02 entfernten ebenfalls den kernelbasierten WireGuard.

Im Mai 2021 wurde die WireGuard-Unterstützung als experimentelles Paket, das von einem Mitglied der pfSense-Community, Christian McDonald, geschrieben wurde, wieder in die Entwicklungs-Snapshots von pfSense CE und pfSense Plus aufgenommen. Das WireGuard-Paket für pfSense beinhaltet die laufende Kernel-Mode-WireGuard-Entwicklungsarbeit von Jason A. Donenfeld, die ursprünglich von Netgate gesponsert wurde.

Im Juni 2021 enthielten die offiziellen Paket-Repositories für pfSense CE 2.5.2 und pfSense Plus 21.05 das WireGuard-Paket