Jason A. Donenfeld, der Autor von VPN WireGuard, hat das Projekt WireGuardNT vorgestellt. Es entwickelt eine leistungsstarke VPN-Portierung von WireGuard für den Windows-Kernel, die mit Windows 7, 8, 8.1 und 10 kompatibel ist und AMD64-, x86-, ARM64- und ARM-Architekturen unterstützt. Der Implementierungscode wird unter der GPLv2-Lizenz bereitgestellt. Der neue Treiber ist bereits im WireGuard-Client für Windows enthalten, ist jedoch derzeit als experimentell gekennzeichnet und nicht standardmäßig aktiviert.
Die Portierung basiert auf dem bewährten Quellcode der Hauptimplementierung von WireGuard für den Linux-Kernel, der angepasst wurde, um die Windows-Kernel-Entitäten und den NDIS-Netzwerkstack zu nutzen. Im Vergleich zur zuvor verfügbaren Windows-Implementierung wireguard-go, die im Benutzermodus läuft und das Wintun-Netzwerkinterface verwendet, bietet WireGuardNT eine signifikante Leistungssteigerung, da Kontextwechsel-Operationen und das Kopieren von Paketinhalt vom Kernel in den Benutzermodus vermieden werden. Analog zu Implementierungen für Linux, OpenBSD und FreeBSD wird in WireGuardNT die gesamte Protokollverarbeitungslogik direkt auf der Ebene des Netzwerkstacks ausgeführt.
Obwohl spezifische Optimierungen noch nicht vorgenommen wurden, hat WireGuardNT bereits eine Spitzenleistung von 7,5 Gbps bei Datenübertragungen in der aktuellen Testumgebung mit Ethernet erreicht. In echten Benutzersystemen mit Wi-Fi ist die Leistung deutlich niedriger, steht jedoch der direkten Datenübertragung kaum nach. Beispielsweise betrug in einem System mit der drahtlosen Intel AC9560-Karte die Bandbreite ohne WireGuard 600 Mbps und blieb mit WireGuardNT ebenfalls bei 600 Mbps, während sie bei der Verwendung von wireguard-go/Wintun nur 95 Mbps erreichte.
Wir erinnern daran, dass VPN WireGuard basiert auf modernen Verschlüsselungsmethoden, bietet eine sehr hohe Leistung, ist benutzerfreundlich, unkompliziert und hat sich in mehreren großen Implementierungen, die große Datenmengen verarbeiten, bewährt. Das Projekt wird seit 2015 weiterentwickelt und hat eine Prüfung sowie eine formale Verifizierung der verwendeten Verschlüsselungsmethoden durchlaufen. Bei WireGuard kommt das Konzept der Schlüssel-basierten Routing an, welches jeden Netzwerkinterface mit einem privaten Schlüssel verknüpft und zur Verbindung der öffentlichen Schlüssel verwendet.
Der Austausch von öffentlichen Schlüsseln zur Verbindungsherstellung erfolgt analog zu SSH. Um die Schlüssel zu vereinbaren und eine Verbindung ohne den Start eines separaten Daemons im Benutzerspace herzustellen, wird der Noise_IK-Mechanismus aus dem Noise Protocol Framework verwendet, der der Handhabung von authorized_keys in SSH ähnelt. Die Datenübertragung erfolgt durch Kapselung in UDP-Paketen. Es wird ein Wechsel unterstützt. IP-Adressen VPN-Server (Roaming) mit unterbrechungsfreier Verbindung und automatischer Neukonfiguration des Clients.
Zur Verschlüsselung kommen der Stream-Cipher ChaCha20 und der Nachrichten-Authentifizierungsalgorithmus (MAC) Poly1305 zum Einsatz. Diese wurden von Daniel J. Bernstein, Tanja Lange und Peter Schwabe entwickelt. ChaCha20 und Poly1305 bieten eine schnellere und sicherere Alternative zu AES-256-CTR und HMAC, wobei die Software-Implementierung eine konstante Ausführungszeit ohne spezielle Hardwareunterstützung ermöglicht. Zur Generierung des gemeinsamen geheimen Schlüssels verwendet man das elliptische Diffie-Hellman-Protokoll in der Implementierung Curve25519, das ebenfalls von Daniel Bernstein vorgeschlagen wurde. Für das Hashing wird der Algorithmus BLAKE2s (RFC7693) eingesetzt.
Quelle: opennet.ru
