Objavljeni WireGuard VPN za Windows i WireGuardNT 1.0

Jason A. Donenfeld, autor WireGuard VPN-a, objavio je prvo veliko izdanje klijentskog softvera WireGuard za Windows 1.0, kao i drajvere WireGuardNT 1.0 s portom VPN WireGuard za Windows 10 i 11 kernel, koji podržava AMD64, x86 i ARM64 arhitekture. Kod komponenti Windows kernela licenciran je pod GPLv2 licencom, a klijentski softver pod MIT licencom.

Port je zasnovan na kodnoj bazi glavne WireGuard implementacije za Linux kernel, koja je konvertovana da koristi Windows kernel entitete i NDIS mrežni stek. U poređenju sa wireguard-go implementacijom, koja radi u korisničkom prostoru i koristi Wintun mrežni interfejs, WireGuardNT nudi značajna poboljšanja performansi eliminisanjem kontekstnih prekidača i kopiranjem sadržaja paketa iz kernela u korisnički prostor. Slično implementacijama za Linux, OpenBSD i FreeBSD, sva logika obrade protokola u WireGuardNT-u radi direktno na nivou mrežnog steka.

Verzija 1.0 označena je kao prekretnica, označavajući rješavanje niza problema i ispunjenje planiranih zadataka, kao što su: korištenje funkcije NdisWdfGetAdapterContextFromAdapterHandle() umjesto manje sigurnog pohranjivanja stanja upravljačkog programa u polju Reserved i korištenje nedokumentovanih pomaka; ispravno i brzo praćenje veličine MTU-a (Maximum Transmission Unit) putem presretanja sistemskih poziva; korištenje C23 standarda u kodu.

Podsjetimo, VPN WireGuard je implementiran na bazi modernih metoda enkripcije, pruža vrlo visoke performanse, jednostavan je za korištenje, bez komplikacija i dobro se pokazao u nizu velikih implementacija koje obrađuju velike količine prometa. Projekat se razvija od 2015. godine i prošao je reviziju i formalnu verifikaciju korišćenih metoda šifrovanja. WireGuard koristi koncept rutiranja šifriranja zasnovanog na ključu, koji uključuje povezivanje privatnog ključa sa svakim mrežnim sučeljem i korištenje javnih ključeva za povezivanje.

Razmjena javnih ključeva za uspostavljanje veze slična je SSH-u. Za pregovaranje o ključevima i povezivanje bez pokretanja zasebnog daemona u korisničkom prostoru koristi se mehanizam Noise_IK iz Noise Protocol Frameworka, slično održavanju authorized_keys u SSH-u. Prijenos podataka se vrši putem enkapsulacije u UDP pakete. Promjena je podržana. IP adrese VPN serveri (roaming) bez prekida veze s automatskom rekonfiguracijom klijenata.

Šifriranje koristi ChaCha20 stream šifru i Poly1305 algoritam za provjeru autentičnosti poruke (MAC), koji su razvili Daniel J. Bernstein, Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 su pozicionirani kao brži i sigurniji analozi AES-256-CTR i HMAC, čija softverska implementacija omogućava postizanje fiksnog vremena izvršenja bez upotrebe posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa, protokol Elliptic Curve Diffie-Hellman se koristi u implementaciji Curve25519, koju je također predložio Daniel Bernstein. Za heširanje se koristi algoritam BLAKE2s (RFC7693).

izvor: opennet.ru