VPN WireGuard is geaccepteerd in de net-next branch en staat gepland voor opname in de Linux 5.6-kernel

David Molenaar (David S Miller), verantwoordelijk voor het netwerksubsysteem van de Linux-kernel, geaccepteerd naar de net-volgende tak pleisters met de implementatie van de VPN-interface uit het project WireGuard. Begin volgend jaar zullen de veranderingen die zich in de net-next branch hebben verzameld de basis vormen voor de release van de Linux-kernel 5.6.

Er zijn de afgelopen jaren pogingen ondernomen om de WireGuard-code in de hoofdkernel te duwen, maar deze bleven zonder succes omdat ze gebonden waren aan propriëtaire implementaties van cryptografische functies die werden gebruikt om de prestaties te verbeteren. Aanvankelijk waren deze functies voorgesteld voor de kernel als een extra zink-API op laag niveau, die uiteindelijk de standaard Crypto-API zou kunnen vervangen.

Naar aanleiding van discussies op de Kernel Recipes-conferentie hebben de makers van WireGuard in september een compromisbesluit genomen breng uw patches over om de in de kern beschikbare Crypto API te gebruiken, waarover de WireGuard-ontwikkelaars klachten hebben op het gebied van prestaties en algemene beveiliging. Er werd besloten om de Zink API verder te ontwikkelen, maar als een apart project.

In november kernelontwikkelaars ging als reactie op een compromis en stemde ermee in om een ​​deel van de code van Zinc naar de hoofdkernel over te dragen. In wezen zullen sommige zinkcomponenten naar de kern worden verplaatst, maar niet als een afzonderlijke API, maar als onderdeel van het Crypto API-subsysteem. De Crypto API is bijvoorbeeld al beschikbaar inbegrepen snelle implementaties van de ChaCha20- en Poly1305-algoritmen voorbereid in WireGuard.

In verband met de aanstaande levering van WireGuard in de hoofdkern, de grondlegger van het project объявил over de herstructurering van de repository. Om de ontwikkeling te vereenvoudigen zal de monolithische “WireGuard.git” repository, die ontworpen is om geïsoleerd te bestaan, vervangen worden door drie afzonderlijke repository's, die beter geschikt zijn voor het organiseren van werk met code in de hoofdkernel:

  • wireguard-linux.git - een complete kernelboom met wijzigingen uit het Wireguard-project, waarvan patches zullen worden beoordeeld voor opname in de kernel en regelmatig zullen worden overgebracht naar de net/net-next-takken.
  • wireguard-tools.git - een opslagplaats voor hulpprogramma's en scripts die in de gebruikersruimte worden uitgevoerd, zoals wg en wg-quick. De repository kan worden gebruikt om pakketten voor distributies te maken.
  • wireguard-linux-compat.git - een repository met een variant van de module, afzonderlijk van de kernel geleverd en inclusief de compat.h-laag om compatibiliteit met oudere kernels te garanderen. De belangrijkste ontwikkeling zal worden uitgevoerd in de wireguard-linux.git repository, maar zolang er een mogelijkheid en behoefte is onder gebruikers, zal een aparte versie van de patches ook in werkende vorm worden ondersteund.

Laten we u eraan herinneren dat VPN WireGuard is geïmplementeerd op basis van moderne encryptiemethoden, zeer hoge prestaties levert, gemakkelijk te gebruiken is, vrij is van complicaties en zichzelf heeft bewezen in een aantal grote implementaties die grote hoeveelheden verkeer verwerken. Het project is sinds 2015 in ontwikkeling, is gecontroleerd en formele verificatie encryptiemethoden gebruikt. WireGuard-ondersteuning is al geïntegreerd in NetworkManager en systemd, en kernelpatches zijn opgenomen in de basisdistributies Debian instabiel, Mageia, Alpine, Boog, Gentoo, OpenWrt, NixOS, subgraaf и ALT.

WireGuard maakt gebruik van het concept van routering van encryptiesleutels, waarbij aan elke netwerkinterface een privésleutel wordt gekoppeld en deze wordt gebruikt om de openbare sleutels 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 en de client automatisch opnieuw te configureren.

Voor encryptie gebruikt stroomcijfer ChaCha20 en berichtauthenticatie-algoritme (MAC) Poly1305, ontworpen door Daniel Bernstein (Daniël J. Bernstein), Tanya Lange
(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).

bij testen Prestaties WireGuard demonstreerde een 3.9 keer hogere doorvoer en 3.8 keer hogere responsiviteit vergeleken met OpenVPN (256-bit AES met HMAC-SHA2-256). Vergeleken met IPsec (256-bit ChaCha20+Poly1305 en AES-256-GCM-128) vertoont WireGuard een lichte prestatieverbetering (13-18%) en een lagere latentie (21-23%). De tests zijn uitgevoerd met behulp van snelle implementaties van encryptie-algoritmen die door het project zijn ontwikkeld. Het overzetten naar de standaard Crypto API van de kernel kan tot slechtere prestaties leiden.

VPN WireGuard is geaccepteerd in de net-next branch en staat gepland voor opname in de Linux 5.6-kernel

Bron: opennet.ru

Voeg een reactie