Jason A. Donenfeld, Autor von VPN WireGuardpräsentierte die erste bedeutende Version der Client-Software. WireGuard für Windows 1.0 sowie Fahrer WireGuardNT 1.0 mit Port VPN WireGuard für den Kern Windows 10 und 11, mit Unterstützung für die Architekturen AMD64, x86 und ARM64. Komponentencode für den Kernel Windows wird unter der GPLv2-Lizenz vertrieben, die Client-Software unter der MIT-Lizenz.
Die Portierung basiert auf der Codebasis der Hauptimplementierung. WireGuard für den Kern Linux, das auf die Verwendung von Kernentitäten umgestellt wurde. Windows und dem NDIS-Netzwerkstack. Im Vergleich zur Implementierung wireguard-go, das im Benutzermodus läuft und die Wintun-Netzwerkschnittstelle nutzt, WireGuardNT bietet deutliche Leistungsverbesserungen, indem Kontextwechsel und das Kopieren von Paketinhalten vom Kernel in den Benutzermodus entfallen. Ähnlich wie die Implementierungen für Linux, OpenBSD und FreeBSD in WireGuardBei NT läuft die gesamte Protokollverarbeitungslogik direkt auf der Netzwerkebene.
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 Die Implementierung erfolgt mithilfe moderner Verschlüsselungsmethoden und zeichnet sich durch hohe Leistungsfähigkeit, einfache Bedienbarkeit und unkomplizierte Handhabung aus. Das System hat sich in zahlreichen Großprojekten mit hohem Datenaufkommen bewährt. Das Projekt befindet sich seit 2015 in Entwicklung und wurde einer Prüfung sowie einer formalen Verifizierung seiner Verschlüsselungsmethoden unterzogen. WireGuard Es wird das Konzept des schlüsselbasierten Routings verwendet, bei dem jeder Netzwerkschnittstelle ein privater Schlüssel zugeordnet und öffentliche Schlüssel zur Verknüpfung 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
