WireGuard 1.0 pro Windows: vydání jádrového ovladače a zvýšení výkonu
Byly vydány první stabilní verze WireGuard 1.0 pro Windows a ovladače WireGuardNT 1.0, který implementuje protokol VPN přímo v jádře Windows 10 a 11. To znamená přechod z uživatelského režimu k plné integraci se síťovým stackem NDIS, což zajišťuje významný nárůst výkonu díky eliminaci přepínání kontextu a zbytečného kopírování paketů.
Architektuřní změny v WireGuardNT
Dříve řešení pro Windows vycházelo z wireguard-go — implementace běžící v uživatelském prostoru a využívající ovladač Wintun pro interakci s jádrem. Navzdory své spolehlivosti tento přístup nevyhnutelně způsoboval režijní náklady: každý síťový paket procházel hranicí mezi uživatelským a privilegovaným režimem, což zpomalovalo zpracování provozu, zejména při vysoké zátěži.
WireGuardNT tento nedostatek odstraňuje umístěním celé logiky protokolu přímo do jádra. Ovladač je napsán s využitím NDIS (Network Driver Interface Specification) a plně vyhovuje architektonickým požadavkům Windows. Podporuje tři hlavní platformy: AMD64, x86 a ARM64. Kritické komponenty, jako zpracování MTU a správa stavu adaptéru, jsou nyní implementovány prostřednictvím oficiálních API jádra, včetně NdisWdfGetAdapterContextFromAdapterHandle(), což zvyšuje stabilitu a bezpečnost.
Kryptografická základna WireGuard
WireGuard zachovává jednotný kryptografický stack bez ohledu na platformu. Používá následující algoritmy:
- ChaCha20 — streamový šifr s pevnou dobou provádění;
- Poly1305 — MAC algoritmus pro autentizaci zpráv;
- Curve25519 — eliptická křivka pro protokol Diffie–Hellmana;
- BLAKE2s — hašovací funkce podle RFC 7693.
Tyto komponenty nebyly vybrány náhodně: zajišťují vysokou rychlost i bez hardwarového zrychlení, jsou odolné vůči útokům založeným na čase a prošly nezávislým ověřením. Na rozdíl od IPsec nebo OpenVPN WireGuard používá minimální sadu primitiv, což snižuje povrch útoku a usnadňuje audit.
Mechanismus navazování spojení a roaming
Navazování zabezpečeného kanálu v WireGuard je analogické výměně klíčů v SSH. Každý rozhraní má svůj soukromý klíč a důvěryhodné uzly jsou identifikovány podle veřejných klíčů. Pro dohodnutí relace klíčů se používá mechanismus Noise_IK z Noise Protocol Framework.
Specifikem WireGuard je podpora bezproblémového roamingu. Pokud klient změní IP adresu (např. při přechodu z Wi-Fi na mobilní síť), server automaticky aktualizuje informace o poloze klienta na základě posledního přijatého paketu. Spojení se tím nenaruší, což je klíčové pro mobilní zařízení a vzdálené pracovníky.
Technická vylepšení ve verzi 1.0
Vydání 1.0 je výsledkem víceletého doladění. Mezi klíčové změny patří:
- Odmítnutí ukládání stavu ovladače do pole
Reservedstruktur jádra — nyní se používá standardní mechanismus kontextu adaptéru. - Dynamické sledování MTU prostřednictvím zachycení systémových volání, což zabraňuje fragmentaci paketů.
- Přechod na standard C23 pro kódovou bázi, což zlepšuje přenositelnost a kompatibilitu s moderními kompilátory.
- Plná podpora ARM64, díky čemuž je řešení vhodné pro nové generace Windows zařízení na bázi Qualcomm a dalších SoC.
Co je důležité
- WireGuardNT běží plně v jádře Windows, což přináší významný nárůst výkonu ve srovnání s wireguard-go.
- Kryptografický stack zůstává nezměněn: ChaCha20, Poly1305, Curve25519, BLAKE2s.
- Roaming bez přerušení spojení je podporován „z krabice“.
- Vydání 1.0 není jen číslo verze, ale dokončení fáze architektonické stabilizace.
- Licencování je rozdělené: jádro — GPLv2, klientský software — MIT.
— Editorial Team
Zatím žádné komentáře.