WireGuard VPN för Windows och WireGuardNT 1.0 släppt

Jason A. Donenfeld, författaren till WireGuard VPN, har släppt den första större versionen av WireGuard-klientprogramvaran för Windows 1.0, samt WireGuardNT 1.0-drivrutinerna med en port VPN WireGuard för Windows 10- och 11-kärnan, med stöd för AMD64-, x86- och ARM64-arkitekturerna. Windows-kärnkomponentkoden är licensierad under GPLv2 och klientprogramvaran är licensierad under MIT-licensen.

Porteringen är baserad på kodbasen för den huvudsakliga WireGuard-implementeringen för Linuxkärnan, vilken har konverterats för att använda Windows-kärnenheter och NDIS-nätverksstacken. Jämfört med wireGuard-go-implementeringen, som körs i användarutrymme och använder Wintun-nätverksgränssnittet, erbjuder WireGuardNT betydande prestandaförbättringar genom att eliminera kontextväxlar och kopiera paketinnehåll från kärnan till användarutrymmet. I likhet med implementeringarna för Linux, OpenBSD och FreeBSD körs all protokollbehandlingslogik i WireGuardNT direkt på nätverksstacknivå.

Version 1.0 markerades som en milstolpe och markerade lösningen på ett antal problem och uppfyllandet av avsedda uppgifter, såsom: användning av funktionen NdisWdfGetAdapterContextFromAdapterHandle() istället för den mindre säkra lagringen av drivrutinsstatus i fältet Reserverad och användning av odokumenterade offsets; korrekt och snabb spårning av MTU-storleken (Maximum Transmission Unit) genom avlyssning av systemanrop; användning av C23-standarden i koden.

Låt oss påminna dig om att VPN WireGuard är implementerat på basis av moderna krypteringsmetoder, ger mycket hög prestanda, är lätt att använda, fri från komplikationer och har bevisat sig i ett antal stora installationer som bearbetar stora trafikvolymer. Projektet har utvecklats sedan 2015 och har genomgått en revision och formell verifiering av de använda krypteringsmetoderna. WireGuard använder konceptet med krypteringsnyckeldirigering, vilket innebär att man fäster en privat nyckel till varje nätverksgränssnitt och använder den för att binda de offentliga nycklarna.

Utbytet av publika nycklar för att upprätta en anslutning liknar SSH. För att förhandla om nycklar och ansluta utan att köra en separat daemon i användarutrymmet används Noise_IK-mekanismen från Noise Protocol Framework, liknande underhållet av authorized_keys i SSH. Dataöverföring sker via inkapsling i UDP-paket. Ändringar stöds. IP-adresser VPN-servrar (roaming) utan anslutningsavbrott med automatisk klientomkonfiguration.

Kryptering använder ChaCha20-strömchifferet och Poly1305-meddelandeautentiseringsalgoritmen (MAC), utvecklad av Daniel J. Bernstein, Tanja Lange och Peter Schwabe. ChaCha20 och Poly1305 är positionerade som snabbare och säkrare analoger av AES-256-CTR och HMAC, vars mjukvaruimplementering gör det möjligt att uppnå en fast exekveringstid utan användning av speciellt hårdvarustöd. För att generera en delad hemlig nyckel används det elliptiska kurvan Diffie-Hellman-protokollet i Curve25519-implementeringen, också föreslagen av Daniel Bernstein. BLAKE2s algoritm (RFC7693) används för hash.

Källa: opennet.ru