Vydána WireGuard VPN pro Windows a WireGuardNT 1.0

Jason A. Donenfeld, autor WireGuard VPN, vydal první hlavní verzi klientského softwaru WireGuard pro Windows 1.0 a také ovladače WireGuardNT 1.0 s portem VPN WireGuard pro jádra Windows 10 a 11 s podporou architektur AMD64, x86 a ARM64. Kód komponent jádra Windows je licencován pod licencí GPLv2 a klientský software je licencován pod licencí MIT.

Port je založen na kódové základně hlavní implementace WireGuardu pro linuxové jádro, která byla převedena pro 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é 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 u implementací pro Linux, OpenBSD a FreeBSD běží veškerá logika zpracování protokolů ve WireGuardNT přímo na úrovni síťového stacku.

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.

Pro připomenutí, WireGuard VPN je založena na moderních šifrovacích metodách, poskytuje výjimečný výkon, je snadno použitelná, bez komplikací a osvědčila se v řadě rozsáhlých nasazení zpracovávajících velké objemy provozu. Projekt je ve vývoji od roku 2015 a prošel auditem a formálním ověřením svých šifrovacích metod. WireGuard využívá koncept šifrování a 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í klíčů.

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