Jason A. Donenfeld, autor VPN WireGuard, představil první významné vydání klientského softwaru WireGuard pro Windows 1.0 a také ovladačů WireGuardNT 1.0 s portem. VPN WireGuard pro jádro Windows 10 a 11, podporující architektury AMD64, x86 a ARM64. Kód komponentů pro jádro Windows je distribuován pod licencí GPLv2, zatímco klientský software pod licencí MIT.
Port je založen na kódové základně hlavní implementace WireGuard pro jádro Linux, která byla portována k použití entit jádra Windows a síťového stacku NDIS. Ve srovnání s implementací wireguard-go, která běží v uživatelském prostoru a používá síťové rozhraní Wintun, nabízí WireGuardNT významné zvýšení výkonu díky vyloučení operací kontextového přepínání a kopírování obsahu paketů z jádra do uživatelského prostoru. Podobně jako implementace pro Linux, OpenBSD a FreeBSD, v WireGuardNT veškerá logika zpracování protokolu funguje přímo na úrovni síťového stacku.
Verze 1.0 je považována za určitou mezník, který označuje vyřešení řady problémů a splnění stanovených cílů, jako je využití funkce NdisWdfGetAdapterContextFromAdapterHandle() místo méně bezpečného uchovávání stavu ovladače v poli Reserved a použití nedokumentovaných posunů; správné a včasné sledování velikosti MTU (Maximum Transmission Unit) prostřednictvím odchytu systémových volání; zapojení v kódu standardu C23.
Připomeňme, že VPN WireGuard je realizován na základě moderních šifrovacích metod, poskytuje velmi vysoký výkon, je snadno ovladatelný, postrádá složitosti a osvědčil se v řadě velkých nasazení zpracovávajících velké objemy dat. Projekt se vyvíjí od roku 2015, prošel auditem a formální verifikací používaných šifrovacích metod. Ve WireGuard se používá koncept směrování podle šifrovacích klíčů, což zahrnuje přiřazení každému síťovému rozhraní soukromého klíče a použití pro propojení veřejných klíčů.
Výměna veřejných klíčů pro navázání spojení probíhá podobně jako při SSH. Pro dohodu o klíčích a spojení bez spuštění samostatného démona v uživatelském prostoru se používá mechanismus Noise_IK z Noise Protocol Framework, který je podobný zachování authorized_keys v SSH. Přenos dat se provádí prostřednictvím kapsulace do UDP paketů. Podporována je změna IP adres VPN serveru (roaming) bez přerušení spojení s automatickým přeprogramováním klienta.
Pro šifrování se používá proudová šifra ChaCha20 a algoritmus pro autentizaci zpráv (MAC) Poly1305, které vyvinuli Daniel Bernstein, Tanja Lange a Peter Schwabe. ChaCha20 a Poly1305 jsou prezentovány jako rychlejší a bezpečnější alternativy k AES-256-CTR a HMAC, jejichž softwarová implementace umožňuje dosáhnout pevného času provádění bez využití speciální hardwarové podpory. Pro generování sdíleného tajného klíče se používá protokol Diffie-Hellman na eliptických křivkách, konkrétně implementace Curve25519, kterou rovněž navrhl Daniel Bernstein. Pro hashování se používá algoritmus BLAKE2s (RFC7693).
Zdroj: opennet.ru
