WireGuard VPN-i autor Jason A. Donenfeld on välja andnud WireGuardi klienditarkvara esimese suurema versiooni Windows 1.0 jaoks, samuti WireGuardNT 1.0 draiverid koos pordiga. VPN WireGuard Windows 10 ja 11 kerneli jaoks, toetab AMD64, x86 ja ARM64 arhitektuure. Windowsi kerneli komponentide kood on litsentseeritud GPLv2 litsentsi alusel ja klienditarkvara on litsentseeritud MIT litsentsi alusel.
See port põhineb Linuxi kerneli peamise WireGuardi implementatsiooni koodibaasil, mis on teisendatud kasutama Windowsi kerneli üksuseid ja NDIS-i võrgupinu. Võrreldes wireguard-go implementatsiooniga, mis töötab kasutajaruumis ja kasutab Wintuni võrguliidest, pakub WireGuardNT olulisi jõudluse täiustusi, kõrvaldades kontekstilülitid ja kopeerides pakettide sisu kernelist kasutajaruumi. Sarnaselt Linuxi, OpenBSD ja FreeBSD implementatsioonidega töötab kogu WireGuardNT protokolli töötlemise loogika otse võrgupinu tasandil.
Versioon 1.0 tähistati verstapostina, mis tähistas mitmete probleemide lahendamist ja kavandatud ülesannete täitmist, näiteks: NdisWdfGetAdapterContextFromAdapterHandle() funktsiooni kasutamine draiveri oleku vähem turvalise reserveeritud väljale salvestamise ja dokumenteerimata nihete kasutamise asemel; MTU (maksimaalse edastusüksuse) suuruse korrektne ja kiire jälgimine süsteemikõnede pealtkuulamise kaudu; C23 standardi kasutamine koodis.
Meeldetuletuseks, WireGuard VPN põhineb kaasaegsetel krüpteerimismeetoditel, pakub erakordset jõudlust, on hõlpsasti kasutatav, komplikatsioonideta ja on ennast tõestanud mitmetes suuremahulistes juurutustes, mis käsitlevad suuri liiklusmahtusid. Projekti on arendatud alates 2015. aastast ning see on läbinud auditi ja krüpteerimismeetodite ametliku kontrolli. WireGuard kasutab võtmepõhist krüpteerimismarsruutimise kontseptsiooni, mis hõlmab privaatvõtme sidumist iga võrguliidesega ja avalike võtmete kasutamist võtme sidumiseks.
Avalike võtmete vahetamine ühenduse loomiseks sarnaneb SSH-ga. Võtmete üle läbirääkimiseks ja ühenduse loomiseks ilma eraldi deemonit kasutajaruumis käivitamata kasutatakse Noise Protocol Frameworki Noise_IK mehhanismi, mis sarnaneb SSH-s authorized_keys haldamisega. Andmeedastus toimub UDP-pakettidesse kapseldamise teel. Muutmine on toetatud. IP-aadressid VPN-serverid (rändlus) ilma ühenduse katkemiseta ja automaatse kliendi ümberkonfigureerimisega.
Krüpteerimiseks kasutatakse Daniel J. Bernsteini, Tanja Lange ja Peter Schwabe poolt välja töötatud ChaCha20 voosšifrit ja Poly1305 sõnumi autentimisalgoritmi (MAC). ChaCha20 ja Poly1305 turustatakse kiiremate ja turvalisemate alternatiividena AES-256-CTR-ile ja HMAC-ile, mille tarkvaraline teostus võimaldab fikseeritud aja täitmist ilma spetsiaalse riistvaratoeta. Jagatud salajane võti genereeritakse elliptilise kõveraga Diffie-Hellmani protokolli abil Curve25519 teostuses, mille pakkus välja samuti Daniel Bernstein. Räsimiseks kasutatakse BLAKE2s algoritmi (RFC7693).
Allikas: opennet.ru
