VPN WireGuard opgenomen in Linux-kernel 5.6

Vandaag heeft Linus de net-next branch met VPN-interfaces naar zichzelf verplaatst WireGuard. Over dit evenement сообщили op de WireGuard-mailinglijst.

VPN WireGuard opgenomen in Linux-kernel 5.6

Het verzamelen van code voor de nieuwe Linux 5.6-kernel is momenteel aan de gang. WireGuard is een snelle VPN van de volgende generatie die moderne cryptografie implementeert. Het is oorspronkelijk ontwikkeld als een eenvoudiger en handiger alternatief voor bestaande VPN's. De auteur is de Canadese informatiebeveiligingsspecialist Jason A. Donenfeld. In augustus 2018 WireGuard werd geprezen van Linus Torvalds. Rond die tijd begon men te werken aan het opnemen van VPN in de Linux-kernel. Het proces duurde iets langer.

“Ik zie dat Jason een pull-verzoek heeft gedaan om WireGuard in de kernel op te nemen”, schreef Linus op 2 augustus 2018. — Kan ik nogmaals mijn liefde voor dit VPN uitspreken en hopen op een spoedige fusie? De code is misschien niet perfect, maar ik heb ernaar gekeken en vergeleken met de verschrikkingen van OpenVPN en IPSec is het een echt kunstwerk.”

Ondanks de wensen van Linus duurde de fusie anderhalf jaar. Het grootste probleem bleek verband te houden met propriëtaire implementaties van cryptografische functies, die werden gebruikt om de prestaties te verbeteren. Na langdurige onderhandelingen in september 2019 was dat zo er werd een compromisbesluit genomen patches vertalen naar de Crypto API-functies die beschikbaar zijn in de kernel, waarover de WireGuard-ontwikkelaars klachten hebben op het gebied van prestaties en algemene beveiliging. Maar ze besloten om de native WireGuard-cryptofuncties te scheiden in een afzonderlijke zink-API op laag niveau en deze uiteindelijk naar de kernel te porten. In november hielden de kernelontwikkelaars hun belofte en Akkoord breng een deel van de code over van Zinc naar de hoofdkernel. Bijvoorbeeld in de Crypto-API inbegrepen snelle implementaties van de ChaCha20- en Poly1305-algoritmen voorbereid in WireGuard.

Ten slotte heeft David S. Miller, verantwoordelijk voor het netwerksubsysteem van de Linux-kernel, op 9 december 2019 geaccepteerd naar de net-volgende tak pleisters met de implementatie van een VPN-interface uit het WireGuard-project.

En vandaag, 29 januari 2020, zijn de wijzigingen naar Linus gegaan voor opname in de kernel.

VPN WireGuard opgenomen in Linux-kernel 5.6

Beweerde voordelen van WireGuard ten opzichte van andere VPN-oplossingen:

  • Makkelijk te gebruiken.
  • Maakt gebruik van moderne cryptografie: Noise-protocolframework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, enz.
  • Compacte, leesbare code, gemakkelijker te onderzoeken op kwetsbaarheden.
  • Hoge prestaties.
  • Duidelijk en uitgebreid specificatie.

Alle kernlogica van WireGuard neemt minder dan 4000 regels code in beslag, terwijl OpenVPN en IPSec honderdduizenden regels vereisen.

“WireGuard maakt gebruik van het concept van encryptiesleutelroutering, waarbij aan elke netwerkinterface een privésleutel wordt gekoppeld en openbare sleutels worden gebruikt om deze te binden. Publieke sleutels worden uitgewisseld om een ​​verbinding tot stand te brengen op een vergelijkbare manier als SSH. Om over sleutels te onderhandelen en verbinding te maken zonder een afzonderlijke daemon in de gebruikersruimte uit te voeren, kan het Noise_IK-mechanisme van Kader voor geluidsprotocollenvergelijkbaar met het onderhouden van geautoriseerde_sleutels in SSH. Gegevensoverdracht vindt plaats door middel van inkapseling in UDP-pakketten. Het ondersteunt het wijzigen van het IP-adres van de VPN-server (roaming) zonder de verbinding te verbreken met automatische herconfiguratie van de client, - schrijft Opennet.

Voor encryptie gebruikt stroomcijfer ChaCha20 en berichtauthenticatie-algoritme (MAC) Poly1305, ontworpen door Daniel Bernstein (Daniël J. Bernstein), Tanja Lange en Peter Schwabe. ChaCha20 en Poly1305 zijn gepositioneerd als snellere en veiligere analogen van AES-256-CTR en HMAC, waarvan de software-implementatie het mogelijk maakt een vaste uitvoeringstijd te bereiken zonder het gebruik van speciale hardware-ondersteuning. Om een ​​gedeelde geheime sleutel te genereren, wordt bij de implementatie het elliptische curve-Diffie-Hellman-protocol gebruikt Curve 25519, ook voorgesteld door Daniel Bernstein. Het algoritme dat voor hashen wordt gebruikt, is BLAKE2's (RFC7693).

Bevindingen Prestatie testen van de officiële website:

Bandbreedte (megabit/s)
VPN WireGuard opgenomen in Linux-kernel 5.6

Pingen (ms)
VPN WireGuard opgenomen in Linux-kernel 5.6

Testconfiguratie:

  • Intel Core i7-3820QM en Intel Core i7-5200U
  • Gigabit-kaarten Intel 82579LM en Intel I218LM
  • Linux 4.6.1
  • WireGuard-configuratie: 256-bit ChaCha20 met Poly1305 voor MAC
  • Eerste IPsec-configuratie: 256-bit ChaCha20 met Poly1305 voor MAC
  • Tweede IPsec-configuratie: AES-256-GCM-128 (met AES-NI)
  • OpenVPN-configuratie: AES 256-bit equivalente coderingssuite met HMAC-SHA2-256, UDP-modus
  • De prestaties werden gemeten met behulp van iperf3, toont het gemiddelde resultaat over 30 minuten.

In theorie zou WireGuard, eenmaal geïntegreerd in de netwerkstack, nog sneller moeten werken. Maar in werkelijkheid zal dit niet noodzakelijkerwijs het geval zijn vanwege de overgang naar de cryptografische functies van de Crypto API die in de kernel zijn ingebouwd. Misschien zijn ze nog niet allemaal geoptimaliseerd voor het prestatieniveau van native WireGuard.

“Vanuit mijn standpunt is WireGuard over het algemeen ideaal voor de gebruiker. Alle beslissingen op laag niveau worden in de specificatie genomen, dus het proces van het voorbereiden van een typische VPN-infrastructuur duurt slechts een paar minuten. Het is bijna onmogelijk om een ​​fout te maken in de configuratie - писали over Habré in 2018. — Installatieproces gedetailleerd beschreven op de officiële website zou ik het uitstekende apart willen vermelden OpenWRT-ondersteuning. Dit gebruiksgemak en de compactheid van de codebasis werden bereikt door de distributie van sleutels te elimineren. Er is geen complex certificaatsysteem en al deze bedrijfsgruwel; korte encryptiesleutels worden net als SSH-sleutels gedistribueerd.”

Het WireGuard-project is sinds 2015 in ontwikkeling, is gecontroleerd en formele verificatie. WireGuard-ondersteuning is geïntegreerd in NetworkManager en systemd, en kernelpatches zijn opgenomen in de basisdistributies van Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph en ALT.

Bron: www.habr.com

Voeg een reactie