VPN WireGuard ingår i Linux-kärnan 5.6

Idag flyttade Linus nät-nästa gren med VPN-gränssnitt till sig själv WireGuard. Om denna händelse rapporterade på WireGuards e-postlista.

VPN WireGuard ingår i Linux-kärnan 5.6

Kodinsamling för den nya Linux 5.6-kärnan pågår för närvarande. WireGuard är en snabb nästa generations VPN som implementerar modern kryptografi. Det utvecklades ursprungligen som ett enklare och bekvämare alternativ till befintliga VPN:er. Författaren är den kanadensiske informationssäkerhetsspecialisten Jason A. Donenfeld. I augusti 2018, WireGuard fick beröm av Linus Torvalds. Runt den tiden började arbetet med att inkludera VPN i Linux-kärnan. Processen tog lite längre tid.

"Jag ser att Jason har gjort en pull-begäran om att inkludera WireGuard i kärnan", skrev Linus den 2 augusti 2018. — Kan jag bara ännu en gång förklara min kärlek till denna VPN och hoppas på en fusion snart? Koden kanske inte är perfekt, men jag tittade på den, och jämfört med fasorna i OpenVPN och IPSec är det ett riktigt konstverk."

Trots Linus önskemål drog sammanslagningen ut på ett och ett halvt år. Huvudproblemet visade sig vara knutet till proprietära implementeringar av kryptografiska funktioner, som användes för att förbättra prestandan. Efter långa förhandlingar i september 2019 var det så ett kompromissbeslut fattades översätt patchar till Crypto API-funktionerna som finns tillgängliga i kärnan, till vilka WireGuard-utvecklarna har klagomål inom området prestanda och allmän säkerhet. Men de bestämde sig för att separera de inbyggda WireGuard-krypteringsfunktionerna i ett separat Zink-API på låg nivå och så småningom portera dem till kärnan. I november höll kärnutvecklarna sitt löfte och gick med på överför en del av koden från zink till huvudkärnan. Till exempel i Crypto API ingår snabba implementeringar av ChaCha20- och Poly1305-algoritmerna förberedda i WireGuard.

Slutligen, den 9 december 2019, David S. Miller, ansvarig för nätverksundersystemet i Linux-kärnan, accepterad till nästa gren plåster med implementering av ett VPN-gränssnitt från WireGuard-projektet.

Och idag, den 29 januari 2020, gick ändringarna till Linus för inkludering i kärnan.

VPN WireGuard ingår i Linux-kärnan 5.6

Påstådda fördelar med WireGuard jämfört med andra VPN-lösningar:

  • Lätt att använda.
  • Använder modern kryptografi: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Kompakt, läsbar kod, lättare att undersöka för sårbarheter.
  • Hög prestanda.
  • Tydligt och genomarbetat Specifikation.

All WireGuards kärnlogik tar upp mindre än 4000 XNUMX rader kod, medan OpenVPN och IPSec kräver hundratusentals rader.

"WireGuard använder konceptet med krypteringsnyckeldirigering, vilket innebär att man fäster en privat nyckel till varje nätverksgränssnitt och använder offentliga nycklar för att binda det. Publika nycklar utbyts för att upprätta en anslutning på liknande sätt som SSH. För att förhandla nycklar och ansluta utan att köra en separat demon i användarutrymmet, Noise_IK-mekanismen från Noise Protocol Frameworkliknande att underhålla auktoriserade_nycklar i SSH. Dataöverföring sker genom inkapsling i UDP-paket. Det stöder ändring av IP-adressen för VPN-servern (roaming) utan att koppla från anslutningen med automatisk omkonfigurering av klienten, - skriver Opennet.

För kryptering används ström chiffer ChaCha20 och meddelandeautentiseringsalgoritm (MAC) Poly1305, designad av Daniel Bernstein (Daniel J. Bernstein), Tanja Lange och Peter Schwabe. ChaCha20 och Poly1305 är positionerade som snabbare och säkrare analoger till AES-256-CTR och HMAC, vars mjukvaruimplementering gör det möjligt att uppnå en fast exekveringstid utan användning av speciellt hårdvarustöd. För att generera en delad hemlig nyckel används det elliptiska kurvan Diffie-Hellman-protokollet i implementeringen Curve25519, också föreslagit av Daniel Bernstein. Algoritmen som används för hashning är BLAKE2s (RFC7693)".

Resultat prestationstester från den officiella hemsidan:

Bandbredd (megabit/s)
VPN WireGuard ingår i Linux-kärnan 5.6

Ping (ms)
VPN WireGuard ingår i Linux-kärnan 5.6

Testkonfiguration:

  • Intel Core i7-3820QM och Intel Core i7-5200U
  • Gigabit-kort Intel 82579LM och Intel I218LM
  • Linux 4.6.1
  • WireGuard-konfiguration: 256-bitars ChaCha20 med Poly1305 för MAC
  • Första IPsec-konfigurationen: 256-bitars ChaCha20 med Poly1305 för MAC
  • Andra IPsec-konfiguration: AES-256-GCM-128 (med AES-NI)
  • OpenVPN-konfiguration: AES 256-bitars motsvarande chiffersvit med HMAC-SHA2-256, UDP-läge
  • Prestanda mättes med hjälp av iperf3, visar det genomsnittliga resultatet under 30 minuter.

I teorin bör WireGuard fungera ännu snabbare när den väl har integrerats i nätverksstacken. Men i verkligheten kommer detta inte nödvändigtvis att vara fallet på grund av övergången till Krypto-API:s kryptografiska funktioner inbyggda i kärnan. Kanske inte alla är ännu optimerade för prestandanivån för inbyggda WireGuard.

“Från min synvinkel är WireGuard generellt sett idealisk för användaren. Alla beslut på låg nivå tas i specifikationen, så processen att förbereda en typisk VPN-infrastruktur tar bara några minuter. Det är nästan omöjligt att förstöra konfigurationen - писали på Habré 2018. — Installationsprocess beskrivs i detalj på den officiella webbplatsen skulle jag vilja notera det utmärkta separat Stöd för OpenWRT. Denna användarvänlighet och kompakthet hos kodbasen uppnåddes genom att eliminera fördelningen av nycklar. Det finns inget komplicerat certifikatsystem och all denna företagsskräck; korta krypteringsnycklar distribueras ungefär som SSH-nycklar.”

WireGuard-projektet har utvecklats sedan 2015, det har granskats och formell verifiering. WireGuard-stöd är integrerat i NetworkManager och systemd, och kärnpatchar ingår i basdistributionerna av Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph och ALT.

Källa: will.com

Lägg en kommentar