Une nouvelle implémentation VPN, WireGuard, a été ajoutée à la base de code FreeBSD.

L'arborescence source de FreeBSD a été mise à jour avec une nouvelle implémentation de VPN WireGuard, basée sur le code du module du noyau produit conjointement par les équipes de développement principales de FreeBSD et WireGuard avec les contributions de Jason A. Donenfeld, auteur de VPN WireGuard, et John H. Baldwin ), un développeur bien connu de GDB et FreeBSD, qui a implémenté le support de SMP et NUMA dans le noyau FreeBSD au début des années 2000. Une fois le pilote accepté dans FreeBSD (sys/dev/wg), son développement et sa maintenance seront désormais effectués dans le référentiel FreeBSD.

Avant que le code ne soit accepté, un examen complet des modifications a été réalisé avec le soutien de la FreeBSD Foundation, au cours duquel l'interaction du pilote avec le reste des sous-systèmes du noyau a également été analysée et la possibilité d'utiliser les primitives cryptographiques fournies par le noyau. a été évaluée.

Pour utiliser les algorithmes cryptographiques requis par le pilote, l'API du sous-système cryptographique du noyau FreeBSD a été étendue, à laquelle a été ajouté un harnais qui permet l'utilisation d'algorithmes non pris en charge dans FreeBSD via l'API cryptographique standard, en utilisant l'implémentation du algorithmes nécessaires de la bibliothèque libsodium. Parmi les algorithmes intégrés au pilote, il ne reste que le code de calcul des hachages Blake2, puisque l'implémentation de cet algorithme fournie dans FreeBSD est liée à une taille de hachage fixe.

De plus, lors du processus de révision, une optimisation du code a été réalisée, ce qui a permis d'augmenter l'efficacité de la répartition de la charge sur les processeurs multicœurs (un équilibrage uniforme de l'attribution des tâches de cryptage et de décryptage des paquets aux cœurs du processeur a été assuré). En conséquence, la surcharge lors du traitement des paquets était proche de celle de l'implémentation du pilote Linux. Le code offre également la possibilité d'utiliser le pilote ossl pour accélérer les opérations de chiffrement.

Contrairement à la tentative précédente d'intégration de WireGuard dans FreeBSD, la nouvelle implémentation utilise l'utilitaire standard wg, plutôt qu'une version modifiée d'ifconfig, qui permet d'unifier la configuration sous Linux et FreeBSD. L'utilitaire wg, ainsi que le pilote, sont inclus dans le code source de FreeBSD, ce qui a été rendu possible en modifiant la licence du code wg (le code est désormais disponible sous les licences MIT et GPL). La dernière tentative d'inclure WireGuard dans FreeBSD a été faite en 2020, mais s'est soldée par un scandale, à la suite duquel le code déjà ajouté a été supprimé en raison d'un travail de mauvaise qualité et négligent avec les tampons, de l'utilisation de stubs au lieu de contrôles et d'une implémentation incomplète. du protocole et violation de la licence GPL.

Rappelons que VPN WireGuard est mis en œuvre sur la base de méthodes de cryptage modernes, offre des performances très élevées, est facile à utiliser, sans complications et a fait ses preuves dans un certain nombre de déploiements à grande échelle traitant de gros volumes de trafic. Le projet se développe depuis 2015 et a fait l'objet d'un audit et d'une vérification formelle des méthodes de cryptage utilisées. WireGuard utilise le concept de routage de clé de chiffrement, qui consiste à attacher une clé privée à chaque interface réseau et à l'utiliser pour lier les clés publiques.

Les clés publiques sont échangées pour établir une connexion de la même manière que SSH. Pour négocier les clés et se connecter sans exécuter un démon distinct dans l'espace utilisateur, le mécanisme Noise_IK du Noise Protocol Framework est utilisé, similaire à la gestion des clés_autorisées dans SSH. La transmission des données s'effectue par encapsulation dans des paquets UDP. Il prend en charge la modification de l'adresse IP du serveur VPN (roaming) sans déconnecter la connexion avec reconfiguration automatique du client.

Le chiffrement utilise le chiffrement de flux ChaCha20 et l'algorithme d'authentification de message (MAC) Poly1305, développés par Daniel J. Bernstein, Tanja Lange et Peter Schwabe. ChaCha20 et Poly1305 se positionnent comme des analogues plus rapides et plus sûrs d'AES-256-CTR et de HMAC, dont la mise en œuvre logicielle permet d'atteindre un temps d'exécution fixe sans utiliser de support matériel spécial. Pour générer une clé secrète partagée, le protocole à courbe elliptique Diffie-Hellman est utilisé dans l'implémentation Curve25519, également proposée par Daniel Bernstein. L'algorithme BLAKE2s (RFC7693) est utilisé pour le hachage.

Source: opennet.ru

Ajouter un commentaire