Jason A. Donenfeld, skaparen av VPN WireGuard, har presenterat projektet WireGuardNT, som utvecklar en högpresterande port av VPN WireGuard för Windows-kÀrnan, kompatibel med Windows 7, 8, 8.1 och 10, och som stöder AMD64-, x86-, ARM64- och ARM-arkitekturer. Implementeringskoden distribueras under GPLv2-licensen. Den nya drivrutinen Àr redan inkluderad i WireGuard-klienten för Windows, men Àr för nÀrvarande markerad som experimentell och aktiveras inte som standard.
Porten Àr baserad pÄ den beprövade kodbasen av huvudimplementeringen av WireGuard för Linux-kÀrnan, som har översatts för att anvÀnda Windows-kÀrnans entiteter och NDIS-nÀtverksstacken. JÀmfört med den tidigare tillgÀngliga Windows-implementeringen wireguard-go, som körs i anvÀndarutrymmet och anvÀnder nÀtverksgrÀnssnittet Wintun, erbjuder WireGuardNT en avsevÀrd prestandaförbÀttring genom att utesluta kontextbyten och kopiering av paketinnehÄll frÄn kÀrnan till anvÀndarutrymmet. Precis som implementeringarna för Linux, OpenBSD och FreeBSD arbetar all protokollbehandlingslogik i WireGuardNT direkt pÄ nÀtverksstacknivÄ.
Trots att specifika optimeringar Ànnu inte har genomförts har WireGuardNT redan uppnÄtt en maximal dataprestanda pÄ 7,5 Gbps i det befintliga testmiljön med Ethernet. PÄ verkliga anvÀndarsystem med Wi-Fi Àr prestandan betydligt lÀgre, men skiljer sig inte mycket frÄn direkt dataöverföring. Till exempel, i ett system med ett trÄdlöst kort Intel AC9560 uppnÄdde bandbredden utan WireGuard 600 Mbps och med WireGuardNT förblev den ocksÄ pÄ 600 Mbps, medan den med wireguard-go/Wintun var 95 Mbps.
LÄt oss pÄminna om att VPN WireGuard Àr baserat pÄ moderna krypteringsmetoder, ger mycket hög prestanda, Àr enkel att anvÀnda, saknar komplicerade aspekter och har bevisat sig vÀl i flera stora implementationer som hanterar stora trafikvolymer. Projektet har utvecklats sedan 2015, har genomgÄtt granskningar och formell verifiering av de anvÀnda krypteringsmetoderna. WireGuard tillÀmpar konceptet nyckelbaserad routing, vilket innebÀr att varje nÀtverksgrÀnssnitt kopplas till en privat nyckel och anvÀnder öppna nycklar för att knyta ihop dem.
Nyckelutbyte för att etablera en anslutning sker pÄ liknande sÀtt som med SSH. För att samordna nycklar och ansluta utan att starta en separat demon i anvÀndarutrymmet anvÀnds mekanismen Noise_IK frÄn Noise Protocol Framework, som liknar hantering av authorized_keys i SSH. Dataöverföring sker genom inkapsling i UDP-paket. Stödet för att byta IP-adresser VPN-server (roaming) utan avbrott i anslutningen med automatisk omkonfigurering av klienten.
För kryptering anvÀnds strömkrypteringen ChaCha20 och meddelandets autentiseringsalgoritm (MAC) Poly1305, utvecklade av Daniel J. Bernstein, Tanja Lange och Peter Schwabe. ChaCha20 och Poly1305 positioneras som snabbare och sÀkrare alternativ till AES-256-CTR och HMAC, vars mjukvaruimplementering möjliggör konstant exekveringstid utan specialiserat hÄrdvarustöd. För att generera en gemensam hemlig nyckel anvÀnds Diffie-Hellman-protokollet pÄ elliptiska kurvor i implementationen Curve25519, Àven den föreslagen av Daniel J. Bernstein. För hashning anvÀnds algoritmen BLAKE2s (RFC7693).
KĂ€lla: opennet.ru
