David Miller (), verantwoordelijk voor de netwerkonderdelen van de Linux-kernel, de code toegevoegd aan de net-next tak met de implementatie van de VPN-interface uit het project . Begin volgend jaar zullen de wijzigingen die in de net-next tak zijn verzameld, de basis vormen voor de release van de Linux-kernel 5.6.
Pogingen om de WireGuard-code in de hoofdversie van de kernel te integreren zijn de afgelopen jaren gedaan, maar zonder resultaat vanwege de afhankelijkheid van eigen implementaties van cryptografische functies die werden gebruikt om de prestaties te verbeteren. Aanvankelijk waren deze functies als een extra low-level API Zinc, die in de loop van de tijd de standaard Crypto API zou kunnen vervangen.
Na onderhandelingen op de conferentie Kernel Recipes hebben de makers van WireGuard in september om hun patches over te zetten naar het bestaande Crypto API in de kernel, waarvoor de ontwikkelaars van WireGuard bezwaren hebben aangaande de prestaties en algehele veiligheid. Het was besloten om de ontwikkeling van API Zinc voort te zetten, maar als een afzonderlijk project.
In november kwamen de kernelontwikkelaars tot een wederzijds compromis en stemden ermee in om een deel van de code uit Zinc in de hoofd-kernel te verplaatsen. In wezen zullen sommige componenten van Zinc in de kernel worden geïntegreerd, maar niet als een afzonderlijke API, maar als onderdeel van de Crypto API-subsystem. Bijvoorbeeld, in de Crypto API zijn al de snelle implementaties van de algoritmen ChaCha20 en Poly1305 die in WireGuard zijn voorbereid.
Met het toekomstige gebruik van WireGuard in de hoofdversie van de kernel, heeft de oprichter van het project over de herstructurering van de repository. Om de ontwikkeling te vereenvoudigen, zullen drie afzonderlijke repositories de monolithische repository 'WireGuard.git', die was ontworpen voor een afzonderlijk bestaan, vervangen, omdat deze beter geschikt zijn voor het organiseren van de code in de hoofd-kernel:
- — een volledige kernel-tree met wijzigingen van het Wireguard-project, waarvan de patches zullen worden geïnspecteerd voor opname in de kernel en regelmatig zullen worden overgezet naar de net/net-next takken.
- — een repository 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.
- — een repository met een variant van de module, afzonderlijk van de kern geleverd en met een compatibiliteitslaag compat.h voor ondersteuning van oudere kernen. De belangrijkste ontwikkeling zal plaatsvinden in de repository wireguard-linux.git, maar zolang gebruikers behoefte hebben aan en de mogelijkheid bestaat, zal er ook een afzonderlijke variant van patches werkzaam worden ondersteund.
Ter herinnering: de VPN WireGuard is gebaseerd op moderne encryptiemethoden, biedt zeer hoge prestaties, is gebruiksvriendelijk, zonder complicaties en heeft zich goed bewezen in verschillende grote implementaties die grote hoeveelheden verkeer verwerken. Het project is sinds 2015 in ontwikkeling, heeft een audit ondergaan en toegepaste versleutelingstechnieken. Ondersteuning voor WireGuard is al geïntegreerd in NetworkManager en systemd, en de patches voor de kernel maken deel uit van de basisdistributies. , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, en .
WireGuard past het concept van routing op basis van versleuteling sleutels toe, wat inhoudt dat elke netwerkinterface is gekoppeld aan een privésleutel en die voor het koppelen van publieke sleutels wordt gebruikt. Het uitwisselen van publieke sleutels voor het opzetten van een verbinding gebeurt op dezelfde manier als bij SSH. Voor de sleutelovereenstemming en verbinding zonder een aparte daemon in de gebruikersruimte wordt het Noise_IK-mechanisme toegepast. , vergelijkbaar met het onderhouden van authorized_keys in SSH. Gegevensoverdracht gebeurt door encapsulatie in UDP-pakketten. De VPN-server kan van IP-adres veranderen (roaming) zonder de verbinding te verbreken en met automatische herschikking van de client.
Voor encryptie de stroomcipher en het berichtauthenticatie-algoritme (MAC) , ontwikkeld door Daniel Bernstein (), Tanja Lange
(Tanja Lange) en Peter Schwabe. ChaCha20 en Poly1305 worden gepositioneerd als snellere en veiligere alternatieven voor AES-256-CTR en HMAC, waarvan de software-implementatie het mogelijk maakt om constante uitvoeringstijden te bereiken zonder speciale hardwareondersteuning. Voor het genereren van een gedeelde geheime sleutel wordt het Diffie-Hellman-protocol op elliptische krommen gebruikt in implementatie , ook voorgesteld door Daniel Bernstein. Voor hashing worden de algoritmes gebruikt. .
Bij prestaties heeft WireGuard 3,9 keer hogere doorvoer en 3,8 keer hogere responsiviteit aangetoond in vergelijking met OpenVPN (256-bit AES met HMAC-SHA2-256). In vergelijking met IPsec (256-bit ChaCha20+Poly1305 en AES-256-GCM-128) toont WireGuard een kleine prestatievoorsprong (13-18%) en vermindering van latentie (21-23%). De tests werden uitgevoerd met de snelle implementaties van versleuteling algoritmes die door het project zijn ontwikkeld — een overstap naar de standaard Crypto API van de kernel kan mogelijk leiden tot verslechtering van de prestaties.
Bron: opennet.ru
