VPN WireGuard inkluderet i Linux-kernen 5.6

I dag flyttede Linus net-næste-grenen med VPN-grænseflader til sig selv WireGuard. Om denne begivenhed сообщили på WireGuard-mailinglisten.

VPN WireGuard inkluderet i Linux-kernen 5.6

Kodeindsamling til den nye Linux 5.6-kerne er i øjeblikket i gang. WireGuard er en hurtig næste generations VPN, der implementerer moderne kryptografi. Det blev oprindeligt udviklet som et enklere og mere bekvemt alternativ til eksisterende VPN'er. Forfatteren er den canadiske informationssikkerhedsspecialist Jason A. Donenfeld. I august 2018, WireGuard fik ros af Linus Torvalds. Omkring det tidspunkt begyndte arbejdet med at inkludere VPN i Linux-kernen. Processen tog lidt længere tid.

"Jeg kan se, at Jason har fremsat en pull-anmodning om at inkludere WireGuard i kernen," skrev Linus den 2. august 2018. — Kan jeg bare endnu en gang erklære min kærlighed til denne VPN og håbe på en fusion snart? Koden er måske ikke perfekt, men jeg kiggede på den, og sammenlignet med rædslerne fra OpenVPN og IPSec er den et rigtigt kunstværk."

Trods Linus' ønsker trak fusionen ud i halvandet år. Hovedproblemet viste sig at være knyttet til proprietære implementeringer af kryptografiske funktioner, som blev brugt til at forbedre ydeevnen. Efter langvarige forhandlinger i september 2019 var det der blev truffet en kompromisbeslutning oversætte patches til Crypto API-funktionerne, der er tilgængelige i kernen, som WireGuard-udviklerne har klager over inden for ydeevne og generel sikkerhed. Men de besluttede at adskille WireGuards native kryptofunktioner i en separat lav-niveau Zinc API og til sidst portere dem til kernen. I november holdt kerneudviklerne deres løfte og aftalt overføre en del af koden fra zink til hovedkernen. For eksempel i Crypto API inkluderet hurtige implementeringer af ChaCha20 og Poly1305 algoritmerne udarbejdet i WireGuard.

Endelig, den 9. december 2019, David S. Miller, ansvarlig for netværksundersystemet i Linux-kernen, accepteret til den næste gren plastre med implementering af en VPN-grænseflade fra WireGuard-projektet.

Og i dag, den 29. januar 2020, gik ændringerne til Linus for inklusion i kernen.

VPN WireGuard inkluderet i Linux-kernen 5.6

Påståede fordele ved WireGuard i forhold til andre VPN-løsninger:

  • Let at bruge.
  • Bruger moderne kryptografi: Støjprotokolramme, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF osv.
  • Kompakt, læsbar kode, lettere at undersøge for sårbarheder.
  • Høj ydeevne.
  • Klar og udførlig specifikation.

Hele WireGuards kernelogik fylder mindre end 4000 linjer kode, hvorimod OpenVPN og IPSec kræver hundredtusindvis af linjer.

"WireGuard bruger konceptet med krypteringsnøgle routing, som involverer at knytte en privat nøgle til hver netværksgrænseflade og bruge offentlige nøgler til at binde den sammen. 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 Støjprotokolrammesvarende til at vedligeholde autoriserede_nøgler i SSH. Datatransmission udføres gennem indkapsling i UDP-pakker. Det understøtter ændring af IP-adressen på VPN-serveren (roaming) uden at afbryde forbindelsen med automatisk omkonfiguration af klienten, - skriver Åbent net.

Til kryptering brugt stream chiffer ChaCha20 og meddelelsesgodkendelsesalgoritme (MAC) Poly1305, designet af Daniel Bernstein (Daniel J. Bernstein), 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 Curve25519, også foreslået af Daniel Bernstein. Algoritmen der bruges til hashing er BLAKE2s (RFC7693)'.

Fund præstationstest fra den officielle hjemmeside:

Båndbredde (megabit/s)
VPN WireGuard inkluderet i Linux-kernen 5.6

Ping (ms)
VPN WireGuard inkluderet i Linux-kernen 5.6

Test konfiguration:

  • Intel Core i7-3820QM og Intel Core i7-5200U
  • Gigabit-kort Intel 82579LM og Intel I218LM
  • Linux 4.6.1
  • WireGuard-konfiguration: 256-bit ChaCha20 med Poly1305 til MAC
  • Første IPsec-konfiguration: 256-bit ChaCha20 med Poly1305 til MAC
  • Anden IPsec-konfiguration: AES-256-GCM-128 (med AES-NI)
  • OpenVPN-konfiguration: AES 256-bit tilsvarende chifferpakke med HMAC-SHA2-256, UDP-tilstand
  • Ydeevne blev målt vha iperf3, viser det gennemsnitlige resultat over 30 minutter.

I teorien burde WireGuard fungere endnu hurtigere, når den først er integreret i netværksstakken. Men i virkeligheden vil dette ikke nødvendigvis være tilfældet på grund af overgangen til Crypto API's kryptografiske funktioner indbygget i kernen. Måske er de ikke alle endnu optimeret til ydeevneniveauet for native WireGuard.

“Fra mit synspunkt er WireGuard generelt ideel til brugeren. Alle beslutninger på lavt niveau træffes i specifikationen, så processen med at forberede en typisk VPN-infrastruktur tager kun et par minutter. Det er næsten umuligt at ødelægge konfigurationen - skrev på Habré i 2018. - Installationsproces beskrevet i detaljer på den officielle hjemmeside, vil jeg gerne særskilt bemærke den fremragende OpenWRT understøttelse. Denne brugervenlighed og kompakthed af kodebasen blev opnået ved at eliminere distributionen af ​​nøgler. Der er ikke noget komplekst certifikatsystem og al denne rædsel i virksomheden; korte krypteringsnøgler distribueres meget ligesom SSH-nøgler."

WireGuard-projektet har været under udvikling siden 2015, det er blevet revideret og formel verifikation. WireGuard-understøttelse er integreret i NetworkManager og systemd, og kernepatches er inkluderet i basisdistributionerne af Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph og ALT.

Kilde: www.habr.com

Tilføj en kommentar