David Miller (), verantwoordelijk voor het netwerksubsysteem van de Linux-kernel, naar de net-volgende tak met de implementatie van de VPN-interface van het project . Begin volgend jaar zullen de wijzigingen in de net-next branch de basis vormen voor de release van Linux kernel 5.6.
Er zijn de afgelopen jaren pogingen gedaan om WireGuard-code in de hoofdkernel te implementeren, maar deze pogingen waren niet succesvol vanwege de koppeling met gepatenteerde implementaties van cryptografische functies die werden gebruikt om de prestaties te verbeteren. Aanvankelijk waren deze functies voor de kernel als een extra low-level Zinc API, die uiteindelijk de standaard Crypto API zou kunnen vervangen.
Na de lezingen op de Kernel Recipes-conferentie in september, hebben de makers van WireGuard om hun patches te vertalen naar de Crypto API die beschikbaar is in de core, waar de WireGuard-ontwikkelaars klachten over hebben op het gebied van prestaties en algemene beveiliging. Er werd besloten de Zinc API verder te ontwikkelen, maar dan als een apart project.
In november hebben kernelontwikkelaars tot een wederzijds compromis en kwamen overeen om een deel van de code van Zinc naar de hoofdkern te verplaatsen. Sterker nog, sommige Zinc-componenten zullen naar de kern worden verplaatst, maar niet als een aparte API, maar als onderdeel van het Crypto API-subsysteem. De Crypto API bijvoorbeeld, Snelle implementaties van de ChaCha20- en Poly1305-algoritmen voorbereid in WireGuard.
Nu WireGuard op het punt staat de hoofdkern te leveren, heeft de oprichter van het project over de herstructurering van de repository. Om de ontwikkeling te vereenvoudigen, wordt de monolithische "WireGuard.git"-repository, die ontworpen was om geïsoleerd te bestaan, vervangen door drie afzonderlijke repositories die beter geschikt zijn voor het organiseren van werk met code in de hoofdkern:
- — de volledige kernelboom met wijzigingen van het Wireguard-project, waarvan patches worden beoordeeld voor opname in de kernel en regelmatig worden gemigreerd naar de net/net-next branches.
- — een repository voor runtime-hulpprogramma's en scripts voor de gebruikersruimte, zoals wg en wg-quick. De repository kan worden gebruikt om pakketten voor distributies te maken.
- — een repository met een versie van de module, los van de kernel geleverd en inclusief een compat.h-laag om compatibiliteit met oudere kernels te garanderen. De belangrijkste ontwikkeling vindt plaats in de wireguard-linux.git repository, maar zolang er een mogelijkheid en vraag van gebruikers is, zal er ook een aparte versie van de patches 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 encryptiemethoden gebruikt. WireGuard-ondersteuning is al geïntegreerd in NetworkManager en systemd, en kernelpatches zijn opgenomen in de basisdistributies , Mageia, Alpine, Boog, Gentoo, OpenWrt, NixOS, и .
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 , vergelijkbaar met het onderhouden van authorized_keys in SSH. Gegevensoverdracht vindt plaats via encapsulatie in UDP-pakketten. Ondersteunt het wijzigen van het IP-adres van de VPN-server (roaming) zonder de verbinding te verbreken en automatische herconfiguratie van de client.
Voor encryptie stroomcijfer en berichtauthenticatie-algoritme (MAC) , ontworpen door Daniel 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 , ook voorgesteld door Daniel Bernstein. Het algoritme dat voor hashing wordt gebruikt is .
bij WireGuard toonde een 3.9 keer hogere doorvoer en 3.8 keer hogere responsiviteit vergeleken met OpenVPN (256-bits AES met HMAC-SHA2-256). Vergeleken met IPsec (256-bits ChaCha20+Poly1305 en AES-256-GCM-128) toonde WireGuard een licht prestatievoordeel (13-18%) en een lagere latentie (21-23%). De tests werden uitgevoerd met behulp van de snelle implementaties van de encryptiealgoritmen die door het project zijn ontwikkeld. Overschakelen naar de standaard Crypto API van de kernel kan leiden tot verslechtering van de resultaten.
Bron: opennet.ru
