VPN WireGuard inclus dans le noyau Linux 5.6

Aujourd'hui, Linus a déplacé la branche net-next avec des interfaces VPN vers lui-même WireGuard. À propos de cet événement сообщили sur la liste de diffusion WireGuard.

VPN WireGuard inclus dans le noyau Linux 5.6

La collecte de code pour le nouveau noyau Linux 5.6 est actuellement en cours. WireGuard est un VPN rapide de nouvelle génération qui implémente une cryptographie moderne. Il a été initialement développé comme une alternative plus simple et plus pratique aux VPN existants. L'auteur est le spécialiste canadien de la sécurité de l'information, Jason A. Donenfeld. En août 2018, WireGuard a été loué par Linus Torvalds. À cette époque, des travaux ont commencé pour inclure le VPN dans le noyau Linux. Le processus a pris un peu plus de temps.

"Je vois que Jason a fait une pull request pour inclure WireGuard dans le noyau", a écrit Linus le 2 août 2018. — Puis-je déclarer une fois de plus mon amour pour ce VPN et espérer une fusion prochaine ? Le code n'est peut-être pas parfait, mais je l'ai regardé, et comparé aux horreurs d'OpenVPN et d'IPSec, c'est une véritable œuvre d'art."

Malgré la volonté de Linus, la fusion a duré un an et demi. Le principal problème s’est avéré lié aux implémentations propriétaires de fonctions cryptographiques, utilisées pour améliorer les performances. Après de longues négociations en septembre 2019, il a été une décision de compromis a été prise traduire les correctifs vers les fonctions Crypto API disponibles dans le noyau, contre lesquelles les développeurs de WireGuard ont des plaintes dans le domaine des performances et de la sécurité générale. Mais ils ont décidé de séparer les fonctions cryptographiques natives de WireGuard dans une API Zinc de bas niveau distincte et de les porter éventuellement sur le noyau. En novembre, les développeurs du noyau ont tenu leur promesse et convenu transférer une partie du code de Zinc vers le noyau principal. Par exemple, dans l'API Crypto inclus implémentations rapides des algorithmes ChaCha20 et Poly1305 préparés dans WireGuard.

Enfin, le 9 décembre 2019, David S. Miller, responsable du sous-système réseau du noyau Linux, accepté le vers la branche suivante patchs avec la mise en place d'une interface VPN du projet WireGuard.

Et aujourd'hui, le 29 janvier 2020, les modifications ont été transférées à Linus pour inclusion dans le noyau.

VPN WireGuard inclus dans le noyau Linux 5.6

Avantages revendiqués de WireGuard par rapport aux autres solutions VPN :

  • Facile à utiliser.
  • Utilise une cryptographie moderne : Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Code compact et lisible, plus facile à rechercher pour les vulnérabilités.
  • Haute performance.
  • Clair et élaboré spécification.

Toute la logique de base de WireGuard occupe moins de 4000 XNUMX lignes de code, alors qu'OpenVPN et IPSec nécessitent des centaines de milliers de lignes.

« WireGuard utilise le concept de routage de clé de chiffrement, qui consiste à attacher une clé privée à chaque interface réseau et à utiliser des clés publiques pour la lier. 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 de démon séparé dans l'espace utilisateur, le mécanisme Noise_IK de Cadre du protocole de bruitsimilaire à 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 le changement de l'adresse IP du serveur VPN (roaming) sans déconnecter la connexion avec reconfiguration automatique du client, - écrit Réseau ouvert.

Pour le cryptage d'occasion chiffrement de flux ChaCha20 et algorithme d'authentification des messages (MAC) Poly1305, conçu par Daniel Bernstein (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 Diffie-Hellman à courbe elliptique est utilisé dans l'implémentation Curve25519, également proposé par Daniel Bernstein. L'algorithme utilisé pour le hachage est BLAKE2 (RFC7693)».

résultats des tests de performance sur le site officiel :

Bande passante (mégabit/s)
VPN WireGuard inclus dans le noyau Linux 5.6

Ping (ms)
VPN WireGuard inclus dans le noyau Linux 5.6

Configurer les tests :

  • Intel Core i7-3820QM et Intel Core i7-5200U
  • Cartes Gigabit Intel 82579LM et Intel I218LM
  • Linux 4.6.1
  • Configuration WireGuard : ChaCha256 20 bits avec Poly1305 pour MAC
  • Première configuration IPsec : ChaCha256 20 bits avec Poly1305 pour MAC
  • Deuxième configuration IPsec : AES-256-GCM-128 (avec AES-NI)
  • Configuration OpenVPN : suite de chiffrement équivalente AES 256 bits avec HMAC-SHA2-256, mode UDP
  • Les performances ont été mesurées à l'aide iperf3, affiche le résultat moyen sur 30 minutes.

En théorie, une fois intégré à la pile réseau, WireGuard devrait fonctionner encore plus rapidement. Mais en réalité ce ne sera pas forcément le cas en raison du passage aux fonctions cryptographiques Crypto API intégrées au noyau. Peut-être qu’ils ne sont pas tous encore optimisés pour le niveau de performances de WireGuard natif.

« De mon point de vue, WireGuard est généralement idéal pour l'utilisateur. Toutes les décisions de bas niveau sont prises dans la spécification, de sorte que le processus de préparation d'une infrastructure VPN typique ne prend que quelques minutes. Il est presque impossible de gâcher la configuration - écrit sur Habré en 2018. - Processus d'installation décrit en détail sur le site officiel, je voudrais souligner séparément l'excellent Prise en charge d'OpenWRT. Cette facilité d'utilisation et cette compacité de la base de code ont été obtenues en éliminant la distribution de clés. Il n’y a pas de système de certificat complexe et toute cette horreur d’entreprise ; les clés de chiffrement courtes sont distribuées un peu comme les clés SSH. »

Le projet WireGuard se développe depuis 2015, il a été audité et vérification formelle. La prise en charge de WireGuard est intégrée à NetworkManager et systemd, et les correctifs du noyau sont inclus dans les distributions de base de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph et ALT.

Source: habr.com

Ajouter un commentaire