David Miller (), ansvarlig for netværksundersystemet i Linux-kernen, til den næste gren med implementeringen af VPN-grænsefladen fra projektet . Tidligt næste år vil ændringerne, der akkumuleres i net-næste-grenen, danne grundlaget for Linux-kernen 5.6-udgivelsen.
Forsøg på at skubbe WireGuard-kode ind i hovedkernen er blevet gjort i løbet af de sidste par år, men har været mislykkede på grund af dens tilknytning til proprietære implementeringer af kryptografiske funktioner, der blev brugt til at forbedre ydeevnen. Oprindeligt var disse funktioner for kernen som en ekstra lav-niveau zink API, som i sidste ende kunne erstatte standard Crypto API.
Efter foredrag på Kernel Recipes-konferencen, WireGuards skabere i september at oversætte deres patches til at bruge Crypto API'en, der er tilgængelig i kernen, hvilket WireGuard-udviklerne har klager over inden for ydeevne og generel sikkerhed. Det blev besluttet at fortsætte udviklingen af Zinc API'en, men som et separat projekt.
I november, kernel udviklere til et gensidigt kompromis og blev enige om at flytte noget af koden fra Zinc til hovedkernen. Faktisk vil nogle Zinc-komponenter blive flyttet til kernen, men ikke som en separat API, men som en del af Crypto API-undersystemet. For eksempel er Crypto API'en allerede Hurtige implementeringer af ChaCha20- og Poly1305-algoritmerne udarbejdet i WireGuard.
Med WireGuard ved at sende i hovedkernen, projektets grundlægger om depotomlægning. For at forenkle udviklingen vil det monolitiske "WireGuard.git"-depot, som er designet til at eksistere isoleret, blive erstattet af tre separate depoter, der er bedre egnede til at organisere arbejde med kode i hovedkernen:
- — det fulde kernetræ med ændringer fra Wireguard-projektet, hvorfra patches vil blive gennemgået for inkludering i kernen og regelmæssigt migreret til net/net-next-grenene.
- — et arkiv for runtime-værktøjer og scripts i brugerområdet, såsom wg og wg-quick. Arkivet kan bruges til at oprette pakker til distributioner.
- — et repository med en version af modulet, leveret separat fra kernen og inklusive et compat.h-lag for at sikre kompatibilitet med ældre kerner. Hovedudviklingen vil blive udført i wireguard-linux.git-repositoryet, men så længe der er mulighed for og efterspørgsel fra brugerne, vil en separat version af patches også blive understøttet i fungerende form.
Lad os minde dig om, at VPN WireGuard er implementeret på basis af moderne krypteringsmetoder, giver meget høj ydeevne, er nem at bruge, fri for komplikationer og har bevist sig selv i en række store implementeringer, der behandler store mængder trafik. Projektet har været under udvikling siden 2015, er blevet revideret og anvendte krypteringsmetoder. WireGuard-understøttelse er allerede integreret i NetworkManager og systemd, og kernepatches er inkluderet i basisdistributionerne , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, и .
WireGuard bruger konceptet med krypteringsnøgle routing, som involverer at knytte en privat nøgle til hver netværksgrænseflade og bruge den til at binde de offentlige nøgler. Offentlige nøgler udveksles for at etablere en forbindelse på samme måde som SSH. For at forhandle nøgler og oprette forbindelse uden at køre en separat dæmon i brugerrummet, kan Noise_IK-mekanismen fra , svarende til at opretholde autoriserede_nøgler i SSH. Datatransmission udføres gennem indkapsling i UDP-pakker. Understøtter ændring af IP-adressen på VPN-serveren (roaming) uden at afbryde forbindelsen og automatisk omkonfiguration af klienten.
Til kryptering stream chiffer og meddelelsesgodkendelsesalgoritme (MAC) , designet af Daniel Bernstein (), Tanya Lange
(Tanja Lange) og Peter Schwabe. ChaCha20 og Poly1305 er placeret som hurtigere og sikrere 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 en delt hemmelig nøgle bruges den elliptiske kurve Diffie-Hellman protokol i implementeringen , også foreslået af Daniel Bernstein. Algoritmen der bruges til hashing er .
på WireGuard demonstrerede 3.9 gange højere gennemløbshastighed og 3.8 gange højere responstid sammenlignet med OpenVPN (256-bit AES med HMAC-SHA2-256). Sammenlignet med IPsec (256-bit ChaCha20+Poly1305 og AES-256-GCM-128) viste WireGuard en lille ydelsesfordel (13-18%) og reduceret latenstid (21-23%). Testene blev udført ved hjælp af de hurtige implementeringer af krypteringsalgoritmer, der er udviklet af projektet - skift til standard Crypto API'en i kernen kan føre til forringelse af resultaterne.
Kilde: opennet.ru
