WireGuard VPN für Windows und WireGuardNT 1.0 veröffentlicht

Jason A. Donenfeld, der Autor von WireGuard VPN, hat die erste größere Version der WireGuard-Client-Software für Windows 1.0 sowie die WireGuardNT 1.0-Treiber mit einem Port veröffentlicht. VPN WireGuard für den Windows 10- und 11-Kernel unterstützt die Architekturen AMD64, x86 und ARM64. Der Quellcode der Windows-Kernel-Komponente ist unter der GPLv2-Lizenz lizenziert, die Client-Software unter der MIT-Lizenz.

Die Portierung basiert auf der Quellcodebasis der WireGuard-Implementierung für den Linux-Kernel, die für die Verwendung von Windows-Kernel-Entitäten und dem NDIS-Netzwerkstack angepasst wurde. Im Vergleich zur WireGuard-Go-Implementierung, die im Benutzermodus läuft und die Wintun-Netzwerkschnittstelle nutzt, bietet WireGuardNT deutliche Leistungsverbesserungen, indem Kontextwechsel vermieden und Paketinhalte vom Kernel in den Benutzermodus kopiert werden. Ähnlich wie bei den Implementierungen für Linux, OpenBSD und FreeBSD läuft die gesamte Protokollverarbeitungslogik in WireGuardNT direkt auf der Ebene des Netzwerkstacks.

Version 1.0 wurde als Meilenstein markiert, da damit eine Reihe von Problemen behoben und geplante Aufgaben erfüllt wurden, wie beispielsweise: die Verwendung der Funktion NdisWdfGetAdapterContextFromAdapterHandle() anstelle der weniger sicheren Speicherung des Treiberstatus im Feld „Reserviert“ und der Verwendung undokumentierter Offsets; die korrekte und zeitnahe Verfolgung der MTU-Größe (Maximum Transmission Unit) durch das Abfangen von Systemaufrufen; die Verwendung des C23-Standards im Code.

Wir möchten Sie daran erinnern, dass VPN WireGuard auf der Grundlage moderner Verschlüsselungsmethoden implementiert ist, eine sehr hohe Leistung bietet, einfach zu verwenden ist, keine Komplikationen verursacht und sich in einer Reihe großer Implementierungen mit großen Verkehrsmengen bewährt hat. Das Projekt wird seit 2015 entwickelt und hat eine Prüfung und formale Überprüfung der verwendeten Verschlüsselungsmethoden durchlaufen. WireGuard verwendet das Konzept des schlüsselbasierten Verschlüsselungsroutings, bei dem jeder Netzwerkschnittstelle ein privater Schlüssel zugeordnet und öffentliche Schlüssel zur Bindung verwendet werden.

Der Austausch öffentlicher Schlüssel zum Verbindungsaufbau ähnelt dem von SSH. Um Schlüssel auszuhandeln und eine Verbindung herzustellen, ohne einen separaten Daemon im Benutzermodus auszuführen, wird der Noise_IK-Mechanismus des Noise Protocol Framework verwendet, analog zur Verwaltung von authorized_keys in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Paketen. Änderungen werden unterstützt. IP-Adressen VPN-Server (Roaming) ohne Verbindungsunterbrechung mit automatischer Client-Neukonfiguration.

Die Verschlüsselung verwendet den ChaCha20-Stromchiffre und den Poly1305-Nachrichtenauthentifizierungsalgorithmus (MAC), entwickelt von Daniel J. Bernstein, Tanja Lange und Peter Schwabe. ChaCha20 und Poly1305 gelten als schnellere und sicherere Analoga von AES-256-CTR und HMAC, deren Softwareimplementierung das Erreichen einer festen Ausführungszeit ohne den Einsatz spezieller Hardwareunterstützung ermöglicht. Zur Generierung des gemeinsamen geheimen Schlüssels wird in der ebenfalls von Daniel Bernstein vorgeschlagenen Curve25519-Implementierung das Elliptic Curve Diffie-Hellman-Protokoll verwendet. Zum Hashen wird der BLAKE2s-Algorithmus (RFC7693) verwendet.

Source: opennet.ru