Jason A. Donenfeld, WireGuard VPN asutaja, tutvustas projekti WireGuardNT, mis arendab WireGuard VPN kõrge jõudlusega porti Windowsi südamikule, ühilduvat Windows 7, 8, 8.1 ja 10 operatsioonisüsteemidega ning toetab arhitektuure AMD64, x86, ARM64 ja ARM. Teostuse kood jagatakse GPLv2 litsentsi alusel. Uus draiver on juba kaasatud WireGuard Windowsi kliendisse, kuid hetkel on see märgitud eksperimentaalseks ja ei ole vaikimisi aktiveeritud.
Port põhineb tõestatud koodibaasil WireGuard peamise teostuse jaoks Linuxi südamikus, mis on muudetud kasutama Windowsi tuuma ja NDIS võrgustiku virna komponente. Erinevalt varem Windowsile kättesaadavat wireguard-go teostusest, mis töötas kasutaja ruumis ja kasutas Wintun võrgu liidest, pakub WireGuardNT märkimisväärset jõudluse paranemist, elimineerides konteksti vahetamise operatsioonid ja pakettide sisu kopeerimise tuumast kasutaja ruumi. Sarnaselt Linuxi, OpenBSD ja FreeBSD teostustele töötab WireGuardNT protokolli töötlemise kogu loogika otse võrgustiku virna tasemel.
Kuigi spetsiifilisi optimeerimisi pole veel tehtud, on WireGuardNT juba võimaldanud saavutada andmete ülekande tipptaseme 7,5 Gbps olemasolevas testkeskkonnas Ethernetiga. Reaalsetes kasutajate süsteemides Wi-Fi-iga on jõudlus märgatavalt madalam, kuid erineb vähe otsesest andmeülekandest. Näiteks süsteemis, kus on traadita kaart Intel AC9560, oli WireGuardita läbilaskevõime 600 Mbps ja WireGuardNT-ga jäi see samale tasemele 600 Mbps, samas kui wireguard-go/Wintun'i kasutamisel oli see vaid 95 Mbps.
Tuletame meelde, et VPN WireGuard on rakendatud tänapäevaste krüptimismeetodite alusel, tagab väga kõrge jõudluse, on lihtne kasutada, vaba keerukustest ja on hästi tõestatud mitmetes suurtes rakendustes, mis töötlevad suuri andmemahtusid. Projekt on arenenud alates 2015. aastast, läbinud auditi ja ametliku verifitseerimise rakendatud krüptimismeetodite osas. WireGuard kasutab krüpteerimise võtmete põhist marsruutimise kontseptsiooni, mille kohaselt seostatakse iga võrguühenduse jaoks privaatvõti ja avatud võtmete seostamiseks rakendatakse seda.
Avauste võtmete vahetus seose loomiseks toimub SSH-i sarnasel viisil. Võtmete kooskõlastamiseks ja ühendamiseks ilma eraldi demonite käivitamiseta kasutab Noise_IK mehhanismi Noise Protocol Frameworkist, mis on sarnane SSH-s autoriseeritud võtmete haldamisega. Andmete edastamine toimub UDP-pakettidesse kapseldamise kaudu. Toetatakse vahetust IP-aadressid VPN-serverid (roaming) katkestusteta ühendusega ja automaatse kliendi ümberseadistamisega.
Krüptimiseks kasutatakse voogkrüptimist ChaCha20 ja sõnumi autentimise algoritmi (MAC) Poly1305, mis on välja töötatud Daniel J. Bernstein'i, Tanja Lange'i ja Peter Schwabe'i poolt. ChaCha20 ja Poly1305 positsioneeritakse kui kiirem ja turvalisem alternatiiv AES-256-CTR ja HMAC-le, mille tarkvaraline implementeerimine võimaldab saavutada fikseeritud täitmise aega, ilma spetsiaalset riistvaratugi kasutamata. Ühise salajase võtme genereerimiseks kasutatakse Diiffi-Hellmani protokolli elliptiliste kõverate puhul Curve25519 elluviimises, mille on samuti esitanud Daniel J. Bernstein. Hasherimiseks kasutatakse algoritmi BLAKE2s (RFC7693).
Allikas: opennet.ru
