I dag overførte Linus net-next grenen med VPN-interfacer til sin egen udvikling. . Om denne begivenhed i WireGuard's mailingliste.

I øjeblikket fortsætter kodens indsamling til den nye Linux 5.6 kerne. WireGuard er en hurtig næste generations VPN med moderne kryptografi. Det blev oprindeligt udviklet som et mere simpelt og brugervenligt alternativ til eksisterende VPN-løsninger. Skaberen er den canadiske informationssikkerhedsekspert Jason Donenfeld. I august 2018 fra Linus Torvalds. Omtrent på den tid begyndte arbejdet med at inkludere VPN i Linux-kernen. Processen trak lidt ud.
«Jeg kan se, at Jason har lavet en pull-anmodning for at inkludere WireGuard i kernen, – skrev Linus den 2. august 2018. – Kan jeg bare endnu engang erklære min kærlighed til denne VPN og håbe på en hurtig fusion? Måske er koden ikke perfekt, men jeg har kigget på den, og sammenlignet med rædslerne i OpenVPN og IPSec, er det et ægte kunstværk».
På trods af Linus' ønsker trak fusionen ud i halvandet år. Hovedproblemet viste sig at være knyttet til egne implementeringer af kryptografiske funktioner, der blev brugt til at forbedre ydeevnen. Efter lange forhandlinger i september 2019 blev det at overføre patches til de eksisterende funktioner i Crypto API, som udviklerne af WireGuard har klager over med hensyn til ydeevne og generel sikkerhed. Men de besluttede at выделить WireGuard's native kryptofunktioner i en lav-niveau Zinc API og på sigt at portere dem til kernen. I november holdt kernens udviklere deres løfte og om at overføre en del af koden fra Zinc til den hovedkern. For eksempel i Crypto API de hurtige implementeringer af algoritmerne ChaCha20 og Poly1305, der blev forberedt i WireGuard.
Endelig, den 9. december 2019, tog David Miller, ansvarlig for Linux-kernens netværkssubsystem, i net-next-grenen med implementeringen af VPN-interfacet fra WireGuard-projektet.
Og i dag, den 29. januar 2020, er ændringerne sendt til Linus for at blive inkluderet i kernen.

De erklærede fordele ved WireGuard i forhold til andre VPN-løsninger:
- Nem at bruge.
- Bruger moderne kryptografi: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF osv.
- Kompakt og læsbar kode, lettere at undersøge for sårbarheder.
- Høj ydeevne.
- Klar og gennemtænkt .
Al den grundlæggende logik i WireGuard fylder mindre end 4000 linjer kode, mens OpenVPN og IPSec indeholder hundredtusinde linjer.
„I WireGuard anvendes konceptet med rute baseret på krypteringsnøgler, hvilket indebærer, at hver netværksinterface knyttes til en privat nøgle og anvendes til at forbinde offentlige nøgler. Udveksling af offentlige nøgler til at etablere forbindelsen sker analogt med SSH. For at forhandle nøgler og forbinde uden at starte en separat dæmon i brugerrummet anvendes Noise_IK mekanismen fra , som ligner vedligeholdelsen af authorized_keys i SSH. Dataoverførsel sker gennem indkapsling i UDP-pakker. Skift af IP-adressen på VPN-serveren (roaming) understøttes uden afbrydelse af forbindelsen med automatisk omkonfiguration af klienten, — Opennet.
Til kryptering strømcypher og algoritme til autentificering af meddelelser (MAC) , udviklet af Daniel Bernstein (), Tanja Lange og Peter Schwabe. ChaCha20 og Poly1305 præsenteres som hurtigere og mere sikre alternativer til AES-256-CTR og HMAC, hvor softwareimplementeringen giver ensartet ydeevne uden brug af speciel hardware. Til generering af den fælles hemmelige nøgle anvendes Diffie-Hellman protokollen på elliptiske kurver i implementeringen , også foreslået af Daniel Bernstein. Der anvendes algoritmen ».
Resultater fra den officielle hjemmeside:
Båndbredde (megabit/s)

Ping (ms)

Testkonfiguration:
- Intel Core i7-3820QM og Intel Core i7-5200U
- Gigabit-netværkskort 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: ækvivalent krypteringsalgoritme til 256-bit AES med HMAC-SHA2-256, UDP-tilstand
- Ydelse blev målt ved hjælp af
iperf3, hvor gennemsnittet er vist for 30 minutter.
Teoretisk set, efter integration i netværksstakken, skulle WireGuard kunne fungere endnu hurtigere. Men i praksis er det ikke nødvendigvis tilfældet på grund af overgangen til de indbyggede kryptografiske funktioner i Crypto API. Det er muligt, at ikke alle af dem endnu er optimeret til niveauet af nativ WireGuard ydeevne.
„Hvis du spørger mig, så er WireGuard i det hele taget ideelt for brugeren. Alle lavniveau-løsninger er fastlagt i specifikationen, så det tager kun få minutter at forberede en typisk VPN-infrastruktur. Det er næsten umuligt at lave fejl i konfigurationen, — skrev på Habr i 2018. – Installationsprocessen på den officielle hjemmeside, vil jeg særligt fremhæve den fremragende . Denne brugervenlighed og kompakte kodebase er opnået ved at undgå distribution af nøgler. Der findes ikke noget kompliceret certifikatsystem eller denne virksomhedens rædsel; korte krypteringsnøgler distribueres omtrent som SSH-nøgler.
WireGuard-projektet har været under udvikling siden 2015, det har gennemgået en revision og . Understøttelsen af WireGuard er integreret i NetworkManager og systemd, og patches til kernen er en del af de grundlæggende distribuerede i Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph og ALT.
Kilde: habr.com
