David Miller (), responsable de la sous-systÚme réseau du noyau Linux, dans la branche net-next avec l'implémentation de l'interface VPN du projet . Au début de l'année prochaine, les changements accumulés dans la branche net-next seront à la base de la version du noyau Linux 5.6.
Des tentatives de promotion du code WireGuard dans le noyau principal ont été faites ces derniÚres années, mais elles ont échoué en raison de la dépendance à des implémentations propriétaires des fonctions cryptographiques qui étaient utilisées pour améliorer les performances. Au départ, ces fonctions étaient pour le noyau en tant qu'API bas niveau supplémentaire Zinc, qui pourrait avec le temps remplacer l'API Crypto standard.
AprÚs des négociations lors de la conférence Kernel Recipes, les créateurs de WireGuard ont en septembre de transférer leurs patches pour utiliser l'API Crypto existante dans le noyau, à laquelle les développeurs de WireGuard ont des préoccupations concernant la performance et la sécurité globale. Il a été décidé de continuer à développer l'API Zinc, mais comme un projet séparé.
En novembre, les développeurs du noyau à un compromis réciproque et ont accepté de transférer une partie du code de Zinc dans le noyau principal. En essence, certains composants de Zinc seront transférés dans le noyau, mais non pas en tant qu'API séparée, mais comme partie intégrante de l'API Crypto. Par exemple, dans l'API Crypto, il y a déjà des implémentations rapides des algorithmes ChaCha20 et Poly1305 préparées dans WireGuard.
à l'approche de la livraison de WireGuard dans le noyau principal, le fondateur du projet concernant la restructuration du dépÎt. Pour simplifier le développement, trois dépÎts séparés viendront remplacer le dépÎt monolithique « WireGuard.git », qui était conçu pour une existence séparée, mieux adaptés à l'organisation du travail avec le code dans le noyau principal :
- â un arbre complet du noyau avec les modifications du projet WireGuard, dont les patches seront examinĂ©s pour inclusion dans le noyau et transfĂ©rĂ©s rĂ©guliĂšrement dans les branches net/net-next.
- â un dĂ©pĂŽt pour les utilitaires et scripts exĂ©cutables dans l'espace utilisateur, tels que wg et wg-quick. Le dĂ©pĂŽt peut ĂȘtre utilisĂ© pour crĂ©er des paquets pour les distributions.
- â un rĂ©fĂ©rentiel avec une version du module, fournie sĂ©parĂ©ment du noyau et incluant une couche compat.h pour assurer la compatibilitĂ© avec les anciens noyaux. Le dĂ©veloppement principal se fera dans le rĂ©fĂ©rentiel wireguard-linux.git, mais pour l'instant, il y a Ă©galement un besoin et une possibilitĂ© de maintenir une version sĂ©parĂ©e des patches.
Rappelons que le VPN WireGuard est basĂ© sur des mĂ©thodes de chiffrement modernes, offre une trĂšs haute performance, est facile Ă utiliser, dĂ©pourvu de complications et a bien rĂ©ussi dans plusieurs grandes mises en Ćuvre traitant de gros volumes de trafic. Le projet se dĂ©veloppe depuis 2015, a Ă©tĂ© auditĂ© et des mĂ©thodes de chiffrement appliquĂ©es. Le support de WireGuard est dĂ©jĂ intĂ©grĂ© dans NetworkManager et systemd, et les patches pour le noyau font partie des distributions de base , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, et .
WireGuard utilise le concept de routage par clés de cryptage, liant chaque interface réseau à une clé privée et utilisant des clés publiques pour établir des connexions. L'échange de clés publiques pour établir une connexion se fait de maniÚre analogue à SSH. Pour l'accord des clés et la connexion sans démarrer un démon séparé dans l'espace utilisateur, le mécanisme Noise_IK est utilisé , similaire à la gestion des authorized_keys dans SSH. Le transfert de données s'effectue par encapsulation dans des paquets UDP. Changement d'adresse IP du serveur VPN (roaming) est pris en charge sans interruption de la connexion et avec une reconfiguration automatique du client.
Pour le cryptage un chiffre de flux et un algorithme d'authentification de message (MAC) , développés par Daniel Bernstein (), Tanja Lange
(Tanja Lange) et Peter Schwabe (Peter Schwabe). ChaCha20 et Poly1305 sont présentés comme des alternatives plus rapides et plus sécurisées à AES-256-CTR et HMAC, dont l'implémentation logicielle permet d'obtenir un temps d'exécution fixe sans nécessiter de support matériel particulier. Pour générer une clé secrÚte partagée, le protocole de Diffie-Hellman sur des courbes elliptiques est utilisé, implémenté par , également proposé par Daniel Bernstein. L'algorithme utilisé pour le hachage est .
En cas la performance de WireGuard a dĂ©montrĂ© une capacitĂ© de traitement 3,9 fois supĂ©rieure et une rĂ©activitĂ© 3,8 fois meilleure par rapport Ă OpenVPN (AES 256 bits avec HMAC-SHA2-256). ComparĂ© Ă IPsec (ChaCha20+Poly1305 et AES-256-GCM-128), WireGuard prĂ©sente un lĂ©ger avantage de performance (13-18 %) et une rĂ©duction de la latence (21-23 %). Les tests ont Ă©tĂ© effectuĂ©s en utilisant les implĂ©mentations rapides des algorithmes de cryptage dĂ©veloppĂ©s par le projet â le passage Ă l'API Crypto standard du noyau pourrait entraĂźner une dĂ©gradation des performances.
Source : opennet.ru
