Jason A. Donenfeld, der Autor von VPN WireGuard, stellte das Projekt WireGuardNT vor, das einen leistungsstarken Port von VPN WireGuard für den Windows-Kernel entwickelt, der mit Windows 7, 8, 8.1 und 10 kompatibel ist und die Architekturen AMD64, x86, ARM64 und ARM unterstützt. Der Implementierungscode wird unter der GPLv2-Lizenz verbreitet. Der neue Treiber ist bereits im WireGuard-Client für Windows enthalten, ist aber derzeit als experimentell gekennzeichnet und nicht standardmäßig aktiviert.
Der Port basiert auf einem bewährten Code-Basis der Hauptimplementierung von WireGuard für den Linux-Kernel, die auf die Verwendung von Windows-Kernel-Entitäten und dem NDIS-Netzwerk-Stack umgestellt wurde. Im Vergleich zur zuvor für Windows verfügbaren Implementierung wireguard-go, die im Benutzermodus arbeitet und die Netzwerk-Schnittstelle Wintun verwendet, bietet WireGuardNT eine erhebliche Leistungssteigerung durch den Ausschluss von Kontextwechsel und das Kopieren von Paket-Inhalten vom Kernel in den Benutzermodus. Ähnlich wie bei den Implementierungen für Linux, OpenBSD und FreeBSD funktioniert in WireGuardNT die gesamte Protokollverarbeitungslogik direkt auf der Ebene des Netzwerk-Stacks.
Obwohl spezifische Optimierungen noch nicht durchgeführt wurden, konnte WireGuardNT bereits eine Spitzenleistung von 7,5 Gbps im bestehenden Testumfeld mit Ethernet erreichen. Auf echten Benutzersystemen mit Wi-Fi ist die Leistung deutlich geringer, zeigt jedoch nur geringe Unterschiede zur direkten Datenübertragung. So betrug beispielsweise in einem System mit einer drahtlosen Intel AC9560-Karte die Bandbreite ohne WireGuard 600 Mbps und blieb mit WireGuardNT ebenfalls auf 600 Mbps, während sie bei der Verwendung von wireguard-go/Wintun nur 95 Mbps betrug.
Wir erinnern daran, dass VPN WireGuard basiert auf modernen Verschlüsselungsmethoden, bietet sehr hohe Leistung, ist einfach zu bedienen, frei von Komplikationen und hat sich in einer Reihe von großen Implementierungen bewährt, die große Datenmengen verarbeiten. Das Projekt wird seit 2015 entwickelt, hat eine Prüfung und formale Verifikation der verwendeten Verschlüsselungsmethoden durchlaufen. In WireGuard wird das Konzept des Routings basierend auf Verschlüsselungsschlüsseln verwendet, das die Bindung eines privaten Schlüssels an jede Netzwerkschnittstelle und die Anwendung zur Verbindung öffentlicher Schlüssel beinhaltet.
Der Austausch öffentlicher Schlüssel zur Establishierung einer Verbindung erfolgt analog zu SSH. Zur Aushandlung von Schlüsseln und zur Verbindung ohne das Starten eines separaten Daemons im Benutzerspace wird der Noise_IK-Mechanismus aus dem Noise Protocol Framework verwendet, ähnlich der Verwaltung von authorized_keys in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Pakete. Der Wechsel von IP-Adressen VPN-Servern (Roaming) ohne Verbindungsabbruch mit automatischer Neukonfiguration des Clients.
Für die Verschlüsselung wird der Stream-Chiffrieralgorithmus ChaCha20 und der Algorithmus für die Nachrichtenauthentifizierung (MAC) Poly1305 verwendet, die von Daniel J. Bernstein, Tanja Lange und Peter Schwabe entwickelt wurden. ChaCha20 und Poly1305 werden als schnellere und sicherere Alternativen zu AES-256-CTR und HMAC positioniert, deren Software-Implementierung eine konstante Ausführungszeit ohne spezielle Hardwareunterstützung ermöglicht. Für die Generierung des gemeinsamen geheimen Schlüssels wird das Diffie-Hellman-Protokoll auf elliptischen Kurven in der Implementierung Curve25519 verwendet, das ebenfalls von Daniel J. Bernstein vorgeschlagen wurde. Zum Hashen wird der Algorithmus BLAKE2s (RFC7693) verwendet.
Quelle: opennet.ru
