Vydané WireGuard VPN pre Windows a WireGuardNT 1.0

Jason A. Donenfeld, autor WireGuard VPN, vydal prvú hlavnú verziu klientskeho softvéru WireGuard pre Windows 1.0, ako aj ovládače WireGuardNT 1.0 s portom VPN WireGuard pre jadro Windowsu 10 a 11 s podporou architektúr AMD64, x86 a ARM64. Kód komponentov jadra systému Windows je licencovaný pod licenciou GPLv2 a klientsky softvér je licencovaný pod licenciou MIT.

Port je založený na kódovej základni hlavnej implementácie WireGuard pre jadro Linuxu, ktorá bola konvertovaná na používanie entít jadra systému Windows a sieťového zásobníka NDIS. V porovnaní s implementáciou wireguard-go, ktorá beží v používateľskom priestore a používa sieťové rozhranie Wintun, WireGuardNT ponúka významné zlepšenie výkonu elimináciou prepínania kontextu a kopírovaním obsahu paketov z jadra do používateľského priestoru. Podobne ako implementácie pre Linux, OpenBSD a FreeBSD, všetka logika spracovania protokolov vo WireGuardNT beží priamo na úrovni sieťového zásobníka.

Verzia 1.0 bola označená za míľnik, ktorý znamenal vyriešenie viacerých problémov a splnenie plánovaných úloh, ako napríklad: použitie funkcie NdisWdfGetAdapterContextFromAdapterHandle() namiesto menej bezpečného ukladania stavu ovládača v poli Reserved a použitie nezdokumentovaných offsetov; správne a rýchle sledovanie veľkosti MTU (Maximum Transmission Unit) prostredníctvom zachytávania systémových volaní; použitie štandardu C23 v kóde.

Pripomíname, že WireGuard VPN je založená na moderných šifrovacích metódach, poskytuje výnimočný výkon, je ľahko použiteľná, bez komplikácií a osvedčila sa v mnohých rozsiahlych nasadeniach spracovávajúcich veľké objemy prevádzky. Projekt sa vyvíja od roku 2015 a prešiel auditom a formálnym overením svojich šifrovacích metód. WireGuard využíva koncept smerovania šifrovania založeného na kľúčoch, ktorý zahŕňa viazanie súkromného kľúča na každé sieťové rozhranie a použitie verejných kľúčov na viazanie kľúčov.

Výmena verejných kľúčov na nadviazanie pripojenia je podobná SSH. Na vyjednávanie kľúčov a pripojenie bez spustenia samostatného démona v používateľskom priestore sa používa mechanizmus Noise_IK z Noise Protocol Framework, podobne ako údržba authorized_keys v SSH. Prenos dát sa vykonáva prostredníctvom zapuzdrenia v UDP paketoch. Zmena je podporovaná. IP adresy VPN servery (roaming) bez prerušenia pripojenia s automatickou rekonfiguráciou klienta.

Na šifrovanie sa používa prúdová šifra ChaCha20 a algoritmus autentifikácie správ (MAC) Poly1305, ktoré vyvinuli Daniel J. Bernstein, Tanja Lange a Peter Schwabe. ChaCha20 a Poly1305 sa predávajú ako rýchlejšie a bezpečnejšie alternatívy k AES-256-CTR a HMAC, ktorých softvérová implementácia umožňuje vykonávanie v pevnom čase bez potreby špeciálnej hardvérovej podpory. Zdieľaný tajný kľúč sa generuje pomocou eliptickej krivky Diffie-Hellmanovho protokolu v implementácii Curve25519, ktorú tiež navrhol Daniel Bernstein. Na hašovanie sa používa algoritmus BLAKE2s (RFC7693).

Zdroj: opennet.ru