Jason A. Donenfeld, autor VPN WireGuard, predstavio je projekt WireGuardNT, koji razvija visokoperformantnu verziju VPN WireGuard za Windows kernel, kompatibilnu s Windows 7, 8, 8.1 i 10, te podržava AMD64, x86, ARM64 i ARM arhitekture. Implementacijski kod distribuira se pod GPLv2 licencom. Novi drajver već je uključen u klijent WireGuard za Windows, ali je za sada označen kao eksperimentalan i nije aktiviran po defaultu.
Port je temeljen na provjerenoj osnovi koda glavne implementacije WireGuard za Linux kernel, koja je prevedena na korištenje Windows kernel entiteta i NDIS mrežnog steka. U usporedbi s ranije dostupnom Windows implementacijom wireguard-go, koja radi u korisničkom prostoru i koristi Wintun mrežni interfejs, WireGuardNT donosi značajno povećanje performansi eliminacijom operacija prebacivanja konteksta i kopiranja sadržaja paketa iz kernela u korisnički prostor. Kao i u implementacijama za Linux, OpenBSD i FreeBSD, u WireGuardNT cijela logika obrade protokola radi izravno na razini mrežnog steka.
Iako specifične optimizacije još nisu provedene, WireGuardNT je već omogućio postizanje vrhunske propusnosti podataka od 7.5Gbps u postojećem testnom okruženju s Ethernetom. Na stvarnim korisničkim sustavima s Wi-Fi-jem, performanse su znatno niže, ali se malo razlikuju od izravnog prijenosa podataka. Na primjer, u sustavu s bežičnom karticom Intel AC9560, propusnost bez WireGuard-a iznosila je 600Mbps, a s WireGuardNT također je ostala na razini od 600Mbps, dok je s wireguard-go/Wintun iznosila 95Mbps.
Podsjećamo, da VPN WireGuard je implementiran na temelju modernih metoda enkripcije, pruža vrlo visoke performanse, jednostavan je za korištenje, oslobođen komplikacija i dobro se pokazao u nizu velikih implementacija koje obrađuju velike količine saobraćaja. Projekt se razvija od 2015. godine, prošao je reviziju i formalnu verifikaciju korišćenih metoda enkripcije. U WireGuard-u se koristi koncept rutiranja prema enkripcijskim ključevima, koji podrazumeva vezivanje zatvorenog ključa za svako mrežno sučelje i njegovo korištenje za povezivanje otvorenih ključeva.
Razmena otvorenih ključeva za uspostavljanje veze vrši se analogno kao kod SSH. Za usklađivanje ključeva i povezivanje bez pokretanja posebnog demona u korisničkom prostoru koristi se mehanizam Noise_IK iz Noise Protocol Framework-a, sličan održavanju authorized_keys u SSH. Prijenos podataka vrši se kroz enkapsulaciju u UDP pakete. Podržava se prebacivanje IP adrese VPN servera (roaming) bez prekida veze uz automatsko rekonfigurisanje klijenta.
Za šifriranje se koristi stream cifra ChaCha20 i algoritam za autentifikaciju poruka (MAC) Poly1305, koje su razvili Daniel J. Bernstein, Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 predstavljaju brže i sigurnije alternative AES-256-CTR i HMAC, čija softverska implementacija omogućuje postizanje fiksnog vrijeme izvođenja bez angažiranja specijalizirane hardverske podrške. Za generiranje zajedničkog tajnog ključa koristi se protokol Diffie-Hellman na eliptičnim krivuljama s implementacijom Curve25519, također predloženom od strane Daniela J. Bernsteina. Za hashiranje se koristi algoritam BLAKE2s (RFC7693).
Izvor: opennet.ru
