Een nieuwe implementatie van VPN WireGuard is toegevoegd aan de codebasis van FreeBSD.

In de broncode van FreeBSD zijn wijzigingen aangebracht met een nieuwe implementatie van de VPN WireGuard, gebaseerd op de code van de kernelmodule, gezamenlijk voorbereid door de belangrijkste ontwikkelteams van FreeBSD en WireGuard, met de deelname van Jason A. Donenfeld, de auteur van de VPN WireGuard, en John H. Baldwin, een bekende ontwikkelaar van GDB en FreeBSD, die begin jaren 2000 ondersteuning voor SMP en NUMA in de kernel van FreeBSD implementeerde. Na de opname van de driver in FreeBSD (sys/dev/wg) zal de ontwikkeling en het onderhoud voortaan plaatsvinden in de repository van FreeBSD.

Voordat de code werd aangenomen met ondersteuning van de FreeBSD Foundation, werd er een volledige review van de wijzigingen uitgevoerd, waarbij ook de interactie van de driver met andere subsysteemonderdelen van de kernel werd geanalyseerd en de mogelijkheid werd beoordeeld om gebruik te maken van de cryptografische primitieve die door de kernel wordt aangeboden.

Voor het gebruik van de cryptografische algoritmes die nodig zijn voor de driver, is de API van de cryptosubsystem van de FreeBSD-kernel uitgebreid, waarbij een wrapper is toegevoegd die het mogelijk maakt om algoritmes die niet worden ondersteund in FreeBSD via de standaard crypto-API te gebruiken, met behulp van de implementatie van de noodzakelijke algoritmes vanuit de libsodium-bibliotheek. Van de algoritmes die in de driver zijn ingebouwd, is alleen de code voor het berekenen van Blake2-hashes overgebleven, aangezien de in FreeBSD aangeboden implementatie van dit algoritme is gebonden aan een vaste hash-grootte.

Daarnaast werd tijdens de review het code geoptimaliseerd om de efficiëntie van de belastingverdeling op multicore CPU's te verhogen (er is een gelijkmatige balans van de toewijzing van encryptie- en decryptietaken aan de CPU-kernen gegarandeerd). Uiteindelijk zijn de overheadkosten bij het verwerken van pakketten benaderd aan de implementatie van de driver voor Linux. In de code is ook de mogelijkheid verzekerd om de ossl-driver te gebruiken voor het versnellen van encryptie-operaties.

In tegenstelling tot de vorige poging om WireGuard in FreeBSD te integreren, wordt in de nieuwe implementatie de standaardtool wg gebruikt in plaats van de gewijzigde versie van ifconfig, wat het mogelijk maakt om de configuratie in Linux en FreeBSD te uniformiseren. De tool wg is net als de driver opgenomen in de broncode van FreeBSD, wat mogelijk is gemaakt door de wijziging van de licentie van de wg-code (de code is nu beschikbaar onder de MIT- en GPL-licenties). De vorige poging om WireGuard in FreeBSD op te nemen, werd in 2020 ondernomen, maar eindigde in een schandaal, waardoor de al toegevoegde code werd verwijderd wegens slechte kwaliteit, onzorgvuldig bufferen, het gebruik van stubs in plaats van controles, een onvolledige implementatie van het protocol en een schending van de GPL-licentie.

de belangrijkste VPN WireGuard is gebaseerd op moderne versleutelingstechnieken, biedt zeer hoge prestaties, is eenvoudig te gebruiken, heeft geen 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 een formele verificatie van de toegepaste versleutelingstechnieken. In WireGuard wordt het concept van routering op basis van versleutelingssleutels toegepast, wat inhoudt dat aan elke netwerkinteface een privésleutel is gekoppeld en voor de verbinding openbare sleutels worden gebruikt.

De uitwisseling van openbare sleutels voor het opzetten van een verbinding gebeurt op dezelfde manier als bij SSH. Voor de overeenstemming van sleutels en verbinding zonder een aparte daemon in de gebruikersruimte wordt het Noise_IK-mechanisme uit het Noise Protocol Framework gebruikt, vergelijkbaar met het onderhoud van authorized_keys in SSH. Gegevens worden verzonden via encapsulatie in UDP-pakketten. Er wordt ondersteuning geboden voor het veranderen van IP-adressen VPN-servers (roaming) zonder verbroken verbinding met automatische herschikking van de client.

Voor de versleuteling wordt de stroomsleutel ChaCha20 en het authenticatie-algoritme (MAC) Poly1305 gebruikt, ontwikkeld door Daniel Bernstein, Tanja Lange en Peter Schwabe. ChaCha20 en Poly1305 worden gepositioneerd als snellere en veiligere alternatieven voor AES-256-CTR en HMAC, waarbij de software-implementatie een vaste uitvoertijd mogelijk maakt zonder gebruik te maken van speciale hardwareondersteuning. Voor het genereren van een gezamenlijke geheime sleutel wordt het Diffie-Hellman-protocol op elliptische krommen gebruikt, in de implementatie Curve25519, die ook door Daniel Bernstein is voorgesteld. Voor het hasheren worden de algoritmen BLAKE2s (RFC7693) gebruikt.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster