I dag overførte Linus net-next-grenen med VPN-grensesnitt til seg selv . Om denne hendelsen i WireGuard-postlisten.

For øyeblikket pågår kodesamlingen for den nye Linux-kjernen 5.6. WireGuard er en ny generasjons rask VPN, som implementerer moderne kryptografi. Den ble opprinnelig utviklet som et enklere og mer brukervennlig alternativ til eksisterende VPN-er. Forfatteren er den kanadiske informasjonssikkerhetsspesialisten Jason A. Donenfeld. I august 2018 ble WireGuard av Linus Torvalds. Omtrent på den tiden begynte arbeidet med å inkludere VPN i Linux-kjernen. Prosessen ble litt forsinket.
«Jeg ser at Jason har gjort en pull-forespørsel for å inkludere WireGuard i kjernen, — skrev Linus 2. august 2018. — Kan jeg bare uttrykke min kjærlighet til denne VPN-en en gang til og håpe på en rask sammenslåing? Kanskje koden ikke er perfekt, men jeg har sett på den, og sammenlignet med marerittet OpenVPN og IPSec, er det et ekte mesterverk».
Til tross for Linus' ønske, ble sammenslåingen forsinket med ett og et halvt år. Hovedproblemet viste seg å være knyttet til egne implementeringer av kryptografiske funksjoner som ble brukt for å øke ytelsen. Etter lange forhandlinger ble det i september 2019 om å overføre patchene til de eksisterende funksjonene i Crypto API, som utviklerne av WireGuard har innvendinger mot når det gjelder ytelse og generell sikkerhet. Men de bestemte seg for å isolere WireGuards native kryptofunksjoner i separate lavnivå Zinc API-er og over tid portere dem til kjernen. I november holdt kjernedesignerne sitt løfte og om å flytte en del av koden fra Zinc til kjernen. For eksempel i Crypto API de raske implementeringene av algoritmene ChaCha20 og Poly1305 forberedt i WireGuard.
Til slutt, den 9. desember 2019, David S. Miller, som har ansvaret for nettverksundersystemet i Linux-kjernen, i net-next-grenen med implementeringen av VPN-grensesnittet fra WireGuard-prosjektet.
Og i dag, 29. januar 2020, ble endringene sendt til Linus for inkludering i kjernen.

De påståtte fordelene med WireGuard over andre VPN-løsninger:
- Enkelt å bruke.
- Bruker moderne kryptografi: Noise-protokollrammeverk, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF osv.
- Kompakt og lesbar kode, enklere å undersøke for sårbarheter.
- Høy ytelse.
- Klar og gjennomtenkt .
Hele hovedlogikken i WireGuard tar mindre enn 4000 linjer med kode, mens OpenVPN og IPSec er hundretusener av linjer.
I WireGuard bruker en nøkkelrutingskonsept som binder hver nettverksgrensesnitt til en privat nøkkel og bruker denne til å knytte offentlige nøkler. Utvekslingen av offentlige nøkler for å etablere en forbindelse skjer på samme måte som med SSH. For nøkkelavstemning og kobling, uten å starte en egen demon i brukerrammer, benyttes Noise_IK-mekanismen fra , som ligner på vedlikehold av authorized_keys i SSH. Dataoverføring foregår gjennom innkapsling i UDP-pakker. Støtte for endring av VPN-server IP-adresse (roaming) uten å bryte forbindelsen, med automatisk omkonfigurering av klienten, — Opennet.
For kryptering strømkryptering og algoritme for meldingsautentisering (MAC) , utviklet av Daniel Bernstein (), Tanja Lange og Peter Schwabe. ChaCha20 og Poly1305 posisjoneres som raskere og sikrere alternativer til AES-256-CTR og HMAC, hvor programvareimplementeringen muliggjør fast kjøretid uten bruk av spesialisert maskinvarestøtte. For generering av felles hemmelighetsnøkkel benyttes Diffie-Hellman-protokollen på elliptiske kurver i implementasjonen av , også foreslått av Daniel Bernstein. For hashing brukes algoritmen ».
Resultater fra den offisielle nettsiden:
Båndbredde (megabit/s)

Ping (ms)

Testkonfigurasjon:
- Intel Core i7-3820QM og Intel Core i7-5200U
- Gigabit-kortene 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: ekvivalent krypteringssett 256-bit AES med HMAC-SHA2-256, UDP-modus
- Ytelsen ble målt ved hjelp av
iperf3, den viste gjennomsnittlige resultatet over 30 minutter.
Teoretisk sett, etter integrering i nettverksstakken, burde WireGuard fungere enda raskere. Men i praksis er dette ikke nødvendigvis tilfelle på grunn av overgangen til innebygde kryptografiske funksjoner i kjerne Crypto API. Kanskje ikke alle av dem er optimalisert til nivået til native WireGuard.
«Fra mitt synspunkt, er WireGuard perfekt for brukeren. Alle lavnivåløsninger er fastsatt i spesifikasjonen, så prosessen med å forberede en typisk VPN-infrastruktur tar bare noen få minutter. Det er nesten umulig å rote med konfigurasjonen, — på Habr i 2018. — Installering prosessen på den offisielle nettsiden, og jeg vil spesielt nevne den utmerkede Denne enkle bruken og den kompakte kodebasen er oppnådd ved å ikke distribuere nøkler. Det finnes ikke noe komplisert sertifikatssystem eller alt dette bedriftsmarerittet, korte krypteringsnøkler distribueres omtrent som SSH-nøkler.
WireGuard-prosjektet har vært i utvikling siden 2015, det har gjennomgått revisjon og WireGuard-støtte er integrert i NetworkManager og systemd, og kjernemodifikasjoner er en del av standard distribusjoner som Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph og ALT.
Kilde: habr.com
