De FreeBSD-broncode is bijgewerkt met een nieuwe VPN-implementatie. WireGuard, gebaseerd op kernelmodulecode die gezamenlijk is voorbereid door de kernontwikkelingsteams van FreeBSD en WireGuard Met medewerking van Jason A. Donenfeld, auteur van VPN. WireGuardEn John H. Baldwin, een gerenommeerd GDB- en FreeBSD-ontwikkelaar die begin jaren 2000 SMP- en NUMA-ondersteuning in de FreeBSD-kernel implementeerde. Nadat het stuurprogramma in FreeBSD is opgenomen (sys/dev/wg), zal de ontwikkeling en het onderhoud ervan plaatsvinden in de FreeBSD-repository.
Voordat de code werd geaccepteerd, werd er een volledige beoordeling van de wijzigingen uitgevoerd met de steun van de FreeBSD Foundation. Tijdens deze beoordeling werd de interactie van de driver met andere kernel-subsystemen geanalyseerd en werd de mogelijkheid beoordeeld om de cryptografische primitieven van de kernel te gebruiken.
Om de cryptografische algoritmen te gebruiken die de driver vereist, is de FreeBSD-kernelcryptosubsysteem-API uitgebreid. Hieraan is een binding toegevoegd waarmee algoritmen die niet in FreeBSD worden ondersteund, kunnen worden gebruikt via de standaardcrypto-API. Hierbij wordt gebruikgemaakt van de implementatie van de benodigde algoritmen uit de libsodium-bibliotheek. Van de algoritmen die in de driver zijn ingebouwd, is alleen de code voor het berekenen van Blake2-hashes overgebleven, omdat de implementatie van dit algoritme in FreeBSD is gekoppeld aan een vaste hashgrootte.
Bovendien werden tijdens het beoordelingsproces code-optimalisaties uitgevoerd om de efficiëntie van de taakverdeling op multi-core CPU's te verbeteren (waardoor een gelijkmatige verdeling van pakketversleutelings- en -ontsleutelingstaken over de CPU-cores werd gewaarborgd). Hierdoor kwam de overhead van de pakketverwerking dichter in de buurt van die van de driverimplementatie. LinuxDe code biedt ook de mogelijkheid om de ossl-driver te gebruiken om versleutelingsbewerkingen te versnellen.
In tegenstelling tot de vorige poging tot integratie WireGuard In FreeBSD gebruikt de nieuwe implementatie het standaard wg-hulpprogramma in plaats van een aangepaste versie van ifconfig, waardoor het mogelijk werd de configuratie te uniformeren. Linux en FreeBSD. Het wg-hulpprogramma is, net als de driver, opgenomen in de FreeBSD-broncode. Dit werd mogelijk gemaakt door de licentie van de wg-code te wijzigen (de code is nu beschikbaar onder de MIT- en GPL-licenties). Een eerdere poging om dit te integreren WireGuard In 2020 werd een poging gedaan om de code in FreeBSD te integreren, maar dit liep uit op controverse. De reeds toegevoegde code werd verwijderd vanwege de slechte kwaliteit, gebrekkige bufferverwerking, het gebruik van stubs in plaats van controles, een onvolledige protocolimplementatie en schendingen van de GPL-licentie.
Bedenk dat VPN WireGuard Het systeem is geïmplementeerd met behulp van moderne encryptiemethoden, biedt zeer hoge prestaties, is gebruiksvriendelijk, ongecompliceerd en heeft zich bewezen in een aantal grootschalige implementaties die grote hoeveelheden verkeer verwerken. Het project is sinds 2015 in ontwikkeling en heeft een audit en formele verificatie van de encryptiemethoden ondergaan. WireGuard Het concept van sleutelgebaseerde routering wordt gebruikt, waarbij aan elke netwerkinterface een privésleutel wordt gekoppeld en publieke sleutels worden gebruikt voor de koppeling.
Het uitwisselen van publieke sleutels om een verbinding tot stand te brengen is vergelijkbaar met SSH. Om sleutels uit te wisselen en verbinding te maken zonder een aparte daemon in de gebruikersruimte te draaien, wordt het Noise_IK-mechanisme van het Noise Protocol Framework gebruikt, vergelijkbaar met het beheer van authorized_keys in SSH. Gegevensoverdracht vindt plaats via encapsulatie in UDP-pakketten. Wijzigingen worden ondersteund. IP-adressen VPN-servers (roaming) zonder verbindingsonderbrekingen 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
