VPN WireGuard inkludert i Linux-kjernen 5.6

I dag flyttet Linus nett-neste gren med VPN-grensesnitt til seg selv WireGuard. Om denne hendelsen сообщили på WireGuard-postlisten.

VPN WireGuard inkludert i Linux-kjernen 5.6

Kodeinnsamling for den nye Linux 5.6-kjernen pågår for tiden. WireGuard er en rask neste generasjons VPN som implementerer moderne kryptografi. Det ble opprinnelig utviklet som et enklere og mer praktisk alternativ til eksisterende VPN-er. Forfatteren er den kanadiske informasjonssikkerhetsspesialisten Jason A. Donenfeld. I august 2018, WireGuard fikk ros av Linus Torvalds. Rundt den tiden begynte arbeidet med å inkludere VPN i Linux-kjernen. Prosessen tok litt lengre tid.

"Jeg ser at Jason har sendt en pull-forespørsel om å inkludere WireGuard i kjernen," skrev Linus 2. august 2018. — Kan jeg bare igjen erklære min kjærlighet til denne VPN-en og håpe på en fusjon snart? Koden er kanskje ikke perfekt, men jeg så på den, og sammenlignet med grusomhetene til OpenVPN og IPSec, er den et ekte kunstverk."

Til tross for Linus ønsker, trakk sammenslåingen ut i halvannet år. Hovedproblemet viste seg å være knyttet til proprietære implementeringer av kryptografiske funksjoner, som ble brukt til å forbedre ytelsen. Etter lange forhandlinger i september 2019 var det det det ble tatt en kompromissbeslutning oversette oppdateringer til Crypto API-funksjonene som er tilgjengelige i kjernen, som WireGuard-utviklerne har klager på innen ytelse og generell sikkerhet. Men de bestemte seg for å separere de opprinnelige WireGuard-kryptofunksjonene i en egen lav-nivå Zinc API og til slutt portere dem til kjernen. I november holdt kjerneutviklerne løftet sitt og avtalt overføre deler av koden fra sink til hovedkjernen. For eksempel i Crypto API inkludert raske implementeringer av ChaCha20- og Poly1305-algoritmene utarbeidet i WireGuard.

Til slutt, 9. desember 2019, David S. Miller, ansvarlig for nettverksundersystemet til Linux-kjernen, akseptert til nett-neste gren lapper med implementering av et VPN-grensesnitt fra WireGuard-prosjektet.

Og i dag, 29. januar 2020, gikk endringene til Linus for inkludering i kjernen.

VPN WireGuard inkludert i Linux-kjernen 5.6

Påståtte fordeler med WireGuard fremfor andre VPN-løsninger:

  • Lett å bruke.
  • Bruker moderne kryptografi: Støyprotokollrammeverk, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Kompakt, lesbar kode, lettere å undersøke for sårbarheter.
  • Høy ytelse.
  • Tydelig og forseggjort spesifikasjon.

All WireGuards kjernelogikk tar opp mindre enn 4000 linjer med kode, mens OpenVPN og IPSec krever hundretusenvis av linjer.

"WireGuard bruker konseptet med krypteringsnøkkelruting, som innebærer å feste en privat nøkkel til hvert nettverksgrensesnitt og bruke offentlige nøkler for å binde det sammen. Offentlige nøkler utveksles for å etablere en forbindelse på lignende måte som SSH. For å forhandle nøkler og koble til uten å kjøre en egen demon i brukerområdet, kan Noise_IK-mekanismen fra Støyprotokollrammeverkligner på å opprettholde autoriserte_nøkler i SSH. Dataoverføring utføres gjennom innkapsling i UDP-pakker. Den støtter endring av IP-adressen til VPN-serveren (roaming) uten å koble fra forbindelsen med automatisk rekonfigurering av klienten, - skriver Åpent nett.

For kryptering brukes strømchiffer ChaCha20 og meldingsautentiseringsalgoritme (MAC) Poly1305, designet av Daniel Bernstein (Daniel J. Bernstein), Tanja Lange og Peter Schwabe. ChaCha20 og Poly1305 er posisjonert som raskere og sikrere analoger av AES-256-CTR og HMAC, hvis programvareimplementering gjør det mulig å oppnå en fast utførelsestid uten bruk av spesiell maskinvarestøtte. For å generere en delt hemmelig nøkkel, brukes den elliptiske kurven Diffie-Hellman-protokollen i implementeringen Curve25519, også foreslått av Daniel Bernstein. Algoritmen som brukes for hashing er BLAKE2s (RFC7693)'.

Funn ytelsestester fra den offisielle nettsiden:

Båndbredde (megabit/s)
VPN WireGuard inkludert i Linux-kjernen 5.6

Ping (ms)
VPN WireGuard inkludert i Linux-kjernen 5.6

Testkonfigurasjon:

  • Intel Core i7-3820QM og Intel Core i7-5200U
  • Gigabit-kort Intel 82579LM og Intel I218LM
  • Linux 4.6.1
  • WireGuard-konfigurasjon: 256-bit ChaCha20 med Poly1305 for MAC
  • Første IPsec-konfigurasjon: 256-bit ChaCha20 med Poly1305 for MAC
  • Andre IPsec-konfigurasjon: AES-256-GCM-128 (med AES-NI)
  • OpenVPN-konfigurasjon: AES 256-bit tilsvarende chifferpakke med HMAC-SHA2-256, UDP-modus
  • Ytelsen ble målt ved hjelp av iperf3, viser gjennomsnittsresultatet over 30 minutter.

I teorien bør WireGuard fungere enda raskere når den er integrert i nettverksstakken. Men i virkeligheten vil dette ikke nødvendigvis være tilfellet på grunn av overgangen til Crypto API-krypteringsfunksjonene innebygd i kjernen. Kanskje ikke alle av dem ennå er optimalisert til ytelsesnivået til native WireGuard.

"Fra mitt synspunkt er WireGuard generelt ideell for brukeren. Alle beslutninger på lavt nivå tas i spesifikasjonen, så prosessen med å forberede en typisk VPN-infrastruktur tar bare noen få minutter. Det er nesten umulig å ødelegge konfigurasjonen - skrev på Habré i 2018. — Installasjonsprosess beskrevet i detalj på den offisielle nettsiden vil jeg merke det utmerkede separat OpenWRT-støtte. Denne brukervennligheten og kompaktheten til kodebasen ble oppnådd ved å eliminere distribusjonen av nøkler. Det er ikke noe komplekst sertifikatsystem og all denne bedriftsgruen; korte krypteringsnøkler distribueres omtrent som SSH-nøkler.»

WireGuard-prosjektet har vært under utvikling siden 2015, det har blitt revidert og formell verifisering. WireGuard-støtte er integrert i NetworkManager og systemd, og kjernepatcher er inkludert i basisdistribusjonene til Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph og ALT.

Kilde: www.habr.com

Legg til en kommentar