Jason A. Donenfeld, forfatteren af WireGuard VPN, har udgivet den første større udgivelse af WireGuard-klientsoftwaren til Windows 1.0, samt WireGuardNT 1.0-driverne med en port VPN WireGuard til Windows 10- og 11-kernen, der understøtter AMD64-, x86- og ARM64-arkitekturerne. Windows-kernekomponentkoden er licenseret under GPLv2, og klientsoftwaren er licenseret under MIT-licensen.
Porteringen er baseret på kodebasen for den primære WireGuard-implementering til Linux-kernen, som er blevet konverteret til at bruge Windows-kerneenheder og NDIS-netværksstakken. Sammenlignet med wireGuard-go-implementeringen, som kører i brugerområdet og bruger Wintun-netværksgrænsefladen, tilbyder WireGuardNT betydelige forbedringer af ydeevnen ved at eliminere kontekstskift og kopiering af pakkeindhold fra kernen til brugerområdet. I lighed med implementeringerne til Linux, OpenBSD og FreeBSD kører al protokolbehandlingslogik i WireGuardNT direkte på netværksstakniveau.
Version 1.0 blev markeret som en milepæl, der markerede løsningen af en række problemer og opfyldelsen af de tilsigtede opgaver, såsom: brugen af funktionen NdisWdfGetAdapterContextFromAdapterHandle() i stedet for den mindre sikre lagring af drivertilstanden i feltet Reserveret og brugen af udokumenterede offsets; korrekt og hurtig sporing af MTU-størrelsen (Maximum Transmission Unit) gennem aflytning af systemkald; brugen af C23-standarden i koden.
Lad os minde dig om, at VPN WireGuard er implementeret på basis af moderne krypteringsmetoder, giver meget høj ydeevne, er nem at bruge, er fri for komplikationer og har vist sig godt i en række store implementeringer, der behandler store mængder trafik. Projektet har været under udvikling siden 2015 og har gennemgået en revision og formel verifikation af de anvendte krypteringsmetoder. WireGuard bruger konceptet nøglebaseret krypteringsrouting, som involverer at knytte en privat nøgle til hver netværksgrænseflade og bruge offentlige nøgler til binding.
Udveksling af offentlige nøgler for at etablere en forbindelse minder om SSH. For at forhandle nøgler og oprette forbindelse uden at køre en separat daemon i brugerområdet bruges Noise_IK-mekanismen fra Noise Protocol Framework, svarende til vedligeholdelsen af authorized_keys i SSH. Dataoverførsel udføres via indkapsling i UDP-pakker. Ændring understøttes. IP-adresser VPN-servere (roaming) uden forbindelsesafbrydelse med automatisk klientomkonfiguration.
Krypteringen bruger ChaCha20-strømchifferet og Poly1305-meddelelsesgodkendelsesalgoritmen (MAC), udviklet af Daniel J. Bernstein, Tanja Lange og Peter Schwabe. ChaCha20 og Poly1305 er placeret som hurtigere og mere sikre analoger af AES-256-CTR og HMAC, hvis softwareimplementering gør det muligt at opnå en fast udførelsestid uden brug af speciel hardwaresupport. For at generere den delte hemmelige nøgle bruges Elliptic Curve Diffie-Hellman-protokollen i Curve25519-implementeringen, også foreslået af Daniel Bernstein. BLAKE2s (RFC7693) algoritmen bruges til hashing.
Kilde: opennet.ru
