Een nieuwe VPN-implementatie, WireGuard, is toegevoegd aan de FreeBSD-codebase.

De FreeBSD-bronstructuur is bijgewerkt met een nieuwe implementatie van VPN WireGuard, gebaseerd op kernelmodulecode die gezamenlijk is geproduceerd door de kernontwikkelingsteams van FreeBSD en WireGuard met bijdragen van Jason A. Donenfeld, auteur van VPN WireGuard, en John H. Baldwin ), een bekende ontwikkelaar van GDB en FreeBSD, die begin jaren 2000 ondersteuning voor SMP en NUMA in de FreeBSD-kernel implementeerde. Nadat het stuurprogramma is geaccepteerd in FreeBSD (sys/dev/wg), zullen de ontwikkeling en het onderhoud ervan voortaan worden uitgevoerd in de FreeBSD-repository.

Voordat de code werd geaccepteerd, werd een volledige beoordeling van de wijzigingen uitgevoerd met de steun van de FreeBSD Foundation, waarbij ook de interactie van het stuurprogramma met de rest van de kernelsubsystemen werd geanalyseerd en de mogelijkheid om cryptografische primitieven te gebruiken die door de kernel werden geleverd. werd beoordeeld.

Om de door het stuurprogramma vereiste cryptografische algoritmen te gebruiken, werd de API van het FreeBSD-kernel crypto-subsysteem uitgebreid, waaraan een harnas werd toegevoegd dat het gebruik van algoritmen mogelijk maakt die niet in FreeBSD worden ondersteund via de standaard crypto-API, met behulp van de implementatie van de noodzakelijke algoritmen uit de libsodium-bibliotheek. Van de algoritmen die in het stuurprogramma zijn ingebouwd, blijft alleen de code voor het berekenen van Blake2-hashes over, omdat de implementatie van dit algoritme in FreeBSD gebonden is aan een vaste hashgrootte.

Bovendien werd tijdens het beoordelingsproces code-optimalisatie uitgevoerd, waardoor het mogelijk werd de efficiëntie van de belastingverdeling op multi-core CPU's te vergroten (er werd verzekerd dat er een uniforme balans was tussen de toewijzing van pakketversleuteling en decoderingstaken aan CPU-kernen). Als gevolg hiervan lag de overhead bij het verwerken van pakketten dicht bij die van de implementatie van het Linux-stuurprogramma. De code biedt ook de mogelijkheid om het ossl-stuurprogramma te gebruiken om de coderingsbewerkingen te versnellen.

In tegenstelling tot de vorige poging om WireGuard in FreeBSD te integreren, gebruikt de nieuwe implementatie het standaard hulpprogramma wg, in plaats van een aangepaste versie van ifconfig, wat het mogelijk maakt om de configuratie op Linux en FreeBSD te verenigen. Het wg-hulpprogramma, evenals het stuurprogramma, is opgenomen in de FreeBSD-broncode, wat mogelijk werd gemaakt door de licentie voor de wg-code te wijzigen (de code is nu beschikbaar onder de MIT- en GPL-licenties). De laatste poging om WireGuard op te nemen in FreeBSD werd in 2020 gedaan, maar eindigde in een schandaal, waardoor de reeds toegevoegde code werd verwijderd vanwege lage kwaliteit, onzorgvuldig werken met buffers, het gebruik van stubs in plaats van checks, onvolledige implementatie van het protocol en schending van de GPL-licentie.

Bedenk dat VPN WireGuard is geïmplementeerd op basis van moderne versleutelingsmethoden, zeer hoge prestaties levert, gebruiksvriendelijk is, geen complicaties kent en zichzelf heeft bewezen in een aantal grote implementaties die grote hoeveelheden verkeer verwerken. Het project ontwikkelt zich sinds 2015, heeft de audit en formele verificatie van de gebruikte coderingsmethoden doorstaan. WireGuard gebruikt het concept van routering van coderingssleutels, waarbij een privésleutel aan elke netwerkinterface wordt gekoppeld en openbare sleutels worden gebruikt om te binden.

Het uitwisselen van publieke sleutels om een ​​verbinding tot stand te brengen is vergelijkbaar met SSH. Om over sleutels te onderhandelen en verbinding te maken zonder een aparte gebruikersruimte-daemon uit te voeren, wordt het Noise_IK-mechanisme van het Noise Protocol Framework gebruikt, vergelijkbaar met het onderhouden van authorised_keys 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.

Versleuteling maakt gebruik van de ChaCha20-stroomcodering en het Poly1305-algoritme voor berichtauthenticatie (MAC), ontwikkeld door Daniel 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 speciale hardware-ondersteuning. Om een ​​gedeelde geheime sleutel te genereren, wordt het elliptische curve Diffie-Hellman-protocol in de Curve25519-implementatie, ook voorgesteld door Daniel Bernstein, gebruikt. Voor hashing wordt het BLAKE2s-algoritme (RFC7693) gebruikt.

Bron: opennet.ru

Voeg een reactie