Jason A. Donenfeld, autor knihy VPN WireGuard, představil první významnou verzi klientského softwaru WireGuard pro Windows 1.0, stejně jako ovladače WireGuardNT 1.0 s portem VPN WireGuard pro jádro Windows 10 a 11 s podporou architektur AMD64, x86 a ARM64. Kód komponent pro jádro Windows je distribuován pod licencí GPLv2 a klientský software pod licencí MIT.
Port je založen na kódové základně hlavní implementace. WireGuard pro jádro Linux, který byl převeden na použití základních entit Windows a síťový stack NDIS. Ve srovnání s implementací wireguard-go, který běží v uživatelském prostoru a používá síťové rozhraní Wintun, WireGuardNT nabízí významné zlepšení výkonu eliminací přepínání kontextu a kopírování obsahu paketů z jádra do uživatelského prostoru. Podobně jako implementace pro Linux, OpenBSD a FreeBSD v WireGuardV NT běží veškerá logika zpracování protokolů přímo na úrovni síťového zásobníku.
Verze 1.0 byla označena za milník, který znamenal vyřešení řady problémů a splnění plánovaných úkolů, jako například: použití funkce NdisWdfGetAdapterContextFromAdapterHandle() namísto méně bezpečného ukládání stavu ovladače do pole Reserved a použití nedokumentovaných offsetů; správné a rychlé sledování velikosti MTU (Maximum Transmission Unit) prostřednictvím zachycení systémových volání; použití standardu C23 v kódu.
Dovolte nám připomenout, že VPN WireGuard Je implementován s využitím moderních šifrovacích metod, poskytuje velmi vysoký výkon, je snadno použitelný, bez komplikací a osvědčil se v řadě rozsáhlých nasazení zpracovávajících velké objemy provozu. Projekt je vyvíjen od roku 2015 a prošel auditem a formálním ověřením svých šifrovacích metod. WireGuard Používá se koncept směrování na základě klíčů, který zahrnuje vázání soukromého klíče na každé síťové rozhraní a použití veřejných klíčů pro vázání.
Výměna veřejných klíčů pro navázání spojení je podobná SSH. Pro vyjednávání klíčů a připojení bez spouštění samostatného démona v uživatelském prostoru se používá mechanismus Noise_IK z Noise Protocol Framework, podobný údržbě authorized_keys v SSH. Přenos dat se provádí zapouzdřením v UDP paketech. Změny jsou podporovány. IP adresy VPN servery (roaming) bez přerušení připojení s automatickou rekonfigurací klientů.
Pro šifrování se používá proudová šifra ChaCha20 a algoritmus pro ověřování zpráv (MAC) Poly1305, které vyvinuli Daniel J. Bernstein, Tanja Lange a Peter Schwabe. ChaCha20 a Poly1305 jsou prodávány jako rychlejší a bezpečnější alternativy k AES-256-CTR a HMAC, jejichž softwarová implementace umožňuje provádění v pevném čase bez nutnosti speciální hardwarové podpory. Sdílený tajný klíč se generuje pomocí eliptického protokolu Diffie-Hellman v implementaci Curve25519, kterou rovněž navrhl Daniel Bernstein. Pro hashování se používá algoritmus BLAKE2s (RFC7693).
Zdroj: opennet.ru
