Qu'est-ce que WireGuard ? Un VPN simple et sécurisé qui fait désormais partie de Linux (traduction)

Définition de WireGuard

WireGuard est un réseau privé virtuel (VPN) axé sur la sécurité, connu pour sa simplicité et sa facilité d'utilisation. Il utilise des protocoles et des algorithmes de chiffrement éprouvés pour protéger les données. Développé à l'origine pour le noyau Linux, il est désormais déployable sur Windows, macOS, BSD, iOS et Android.

Les réseaux privés virtuels (VPN) sont indispensables aux entreprises. Ils relient des sites distants au réseau principal de l'entreprise, permettent aux employés en déplacement d'utiliser les applications internes de l'entreprise et permettent aux serveurs dans le cloud de faire partie du même réseau que les serveurs sur site.

La plupart des solutions VPN qui existent aujourd'hui ont été conçues il y a longtemps, elles sont donc assez lentes et trop techniques. Découvrez WireGuard, un projet qui met la sécurité et la simplicité au premier plan.

Jason Donenfeld, chercheur en sécurité et développeur de kernel, a eu l'idée de WireGuard en 2017 alors qu'il avait besoin d'une solution furtive pour les tunnels vpn qui pourrait être utilisée lors de tests de pénétration. Plus il examinait les options existantes, plus il se rendait compte que les tunnels VPN comme IPsec et OpenVPN ne fonctionnaient pas bien et étaient difficiles à configurer et à gérer correctement.

Il a donc entrepris de créer un protocole VPN entièrement nouveau et une mise en œuvre qui permettrait d'éviter certaines des décisions de conception qui ont transformé d'autres technologies de tunneling en projets monstrueux avec d'énormes bases de code et d'innombrables boutons et switches.

Comment fonctionne le chiffrement de WireGuard

D'une part, le protocole WireGuard élimine l'agilité cryptographique - le concept d'offrir le choix entre différents algorithmes de chiffrement, d'échange de clés et de hachage - car cela a entraîné des déploiements non sécurisés avec d'autres technologies. Au lieu de cela, le protocole utilise une sélection de méthodes de chiffrement modernes, testées et évaluées par des pairs, qui se traduisent par des choix de chiffrement par défaut que les utilisateurs ne peuvent pas modifier ou mal configurer. Si une vulnérabilité grave est découverte dans les méthodes de chiffrement primitives utilisées, une nouvelle version du protocole est publiée et un mécanisme de négociation de la version du protocole entre pairs est mis en place.

WireGuard utilise ChaCha20 pour le chiffrement symétrique et Poly1305 pour l'authentification des messages, une combinaison plus performante qu'AES sur les architectures d'unités centrales intégrées qui n'ont pas d'accélération matérielle cryptographique ; Curve25519 pour l'accord de clé Diffie-Hellman à courbe elliptique (ECDH) ; BLAKE2s pour le hachage, qui est plus rapide que SHA-3 ; et une connexion à 1,5 Round Trip Time (1,5-RTT) qui est basée sur le framework Noise et fournit une confidentialité en amont. Il comprend également une protection intégrée contre l'usurpation de clés, le déni de service et les attaques replay, ainsi qu'une certaine résistance cryptographique post-quantique.

Dans le protocole WireGuard, chaque pair est identifié aux autres par des clés publiques courtes, de la même façon que l'authentification par clé utilisée dans OpenSSH. Les clés publiques sont également utilisées pour établir quelles adresses IP sont attribuées à chaque pair à l'intérieur du tunnel, dans le cadre d'un nouveau concept que les développeurs de WireGuard appellent le routage par crypto-clef.

Le protocole est également furtif, car il ne répond à aucun paquet provenant de pairs qu'il ne reconnaît pas, de sorte qu'une analyse du réseau ne révélera pas que WireGuard fonctionne sur une machine. En outre, la connexion entre pairs, qui peuvent agir à la fois comme clients et comme serveurs, devient silencieuse lorsqu'il n'y a pas d'échange de données.

Le protocole WireGuard a été examiné par plusieurs équipes de chercheurs en sécurité du secteur privé et du monde universitaire et a été formellement vérifié dans différents modèles de calcul.

La principale implémentation de WireGuard est pour Linux et se présente sous la forme d'un module de noyau. Le code est conçu pour être facilement vérifiable, Donenfeld affirmant qu'il peut être lu en un après-midi.

Comparé à OpenVPN qui a plus de 100 000 lignes de code et qui dépend d'OpenSSL -- une autre énorme base de code -- le module du noyau WireGuard a environ 4 000 lignes de code et le code de chiffrement y est intégré. Cela signifie qu'il a une surface d'attaque plus petite par rapport aux autres projets VPN et, comme il ne répond pas aux paquets non authentifiés, il est beaucoup plus difficile à attaquer.

Quelles sont les performances de WireGuard ?

Sous Linux, WireGuard fonctionne exclusivement dans l'espace du noyau, de sorte que ses performances sont bien meilleures que celles d'OpenVPN, qui se trouve dans l'espace utilisateur et utilise un pilote d'interface réseau virtuel. De nombreux tests de WireGuard, y compris sur le site web du projet, montrent des performances et des vitesses de connexion jusqu'à quatre fois supérieures à celles d'OpenVPN et des vitesses supérieures à celles des VPN basés sur IPsec sur le même matériel.

Cependant, les implémentations de WireGuard pour Android, iOS, macOS, OpenBSD et Windows sont écrites dans le langage de programmation Go, qui est sûr pour la mémoire. Hormis quelques projets de microprogrammes Android soutenus par la communauté qui ont intégré le module du noyau WireGuard, les implémentations WireGuard non Linux s'exécutent dans l'espace utilisateur et ne bénéficient pas des mêmes performances que l'implémentation du noyau. Cela dit, elles parviennent toujours à égaler ou à surpasser OpenVPN dans la plupart des cas.

Comment WireGuard s'intègre dans le noyau Linux

Le module du noyau WireGuard est disponible dans les dépôts de paquets de toutes les principales distributions Linux et même de certaines distributions spécialisées. À partir de la version 5.6 du noyau Linux, publiée le 29 mars 2020, WireGuard est l'une des technologies qui sont intégrées par défaut. Elle est également la première version stable de WireGuard, ou version 1.0.0.

"Les dernières semaines de développement et de stabilisation de la version 5.6 ont été passionnantes, avec notre base de code soumise à un audit de sécurité rapide, et de réels progrès en termes de distribution", a déclaré M. Donenfeld dans l'annonce de la sortie de la version. "Nous allons également continuer à maintenir notre dépôt de rétro-portages wireguard-linux-compat pour les anciens noyaux".

Faire partie du noyau Linux lui-même ne rendra pas WireGuard omniprésent immédiatement, car certaines distributions continueront à utiliser des noyaux LTS (support à long terme) plus anciens. Les appareils embarqués tels que les routeurs, qui pourraient bénéficier de cette technologie, sont très lents à adopter les nouvelles versions du noyau. Toutefois, le module installable WireGuard est déjà disponible pour le microprogramme communautaire OpenWRT pour les routeurs, ainsi que pour EdgeOS, le microprogramme utilisé sur les appareils de réseau Ubiquiti.

Donenfeld travaille à l'intégration de WireGuard dans le noyau principal de Linux depuis 2018. Les progrès ont été lents car la fusion a nécessité d'apporter des modifications importantes à l'API cryptographique du noyau Linux et à la pile réseau, mais elle a reçu très tôt un avis favorable de Linus Torvalds lui-même.

"Je vois que Jason a en fait fait la demande de retrait pour que WireGuard soit inclus dans le noyau", a déclaré Torvalds sur la liste de diffusion du noyau Linux en 2018. "Puis-je juste une fois de plus déclarer mon amour pour cette technologie et espérer qu'elle sera bientôt fusionnée ? Peut-être que le code n'est pas parfait, mais je l'ai écrémé, et comparé aux horreurs que sont OpenVPN et IPSec, c'est une œuvre d'art".

Les plans de Donenfeld consistaient à fusionner une nouvelle API cryptographique plus simple au noyau Linux qu'il a baptisé Zinc. Selon lui, Zinc aurait permis aux développeurs d'effectuer plus facilement des opérations cryptographiques dans leurs applications par rapport à l'utilisation de l'API de crypto existante du noyau, qui est trop complexe pour la plupart des cas d'utilisation. Dans une présentation de Zinc, il a décrit l'API de chiffrement de Linux comme "une API d'entreprise super folle qui est très sujette à l'échec et extrêmement difficile à utiliser".

Ses tentatives de fusion d'une deuxième API de crypto ont suscité des réactions mitigées de la part d'autres développeurs de noyaux qui ont soulevé diverses préoccupations concernant la duplication des fonctionnalités et la nécessité de la fusion au lieu de résoudre les problèmes avec l'API existante. La discussion sur la liste de diffusion concernant la soumission du correctif Zinc s'est arrêtée en avril 2019, mais un autre développeur du noyau s'est ensuite chargé d'intégrer la plupart des fonctionnalités de Zinc dans l'API de crypto existante et les changements ont été fusionnés dans le noyau en novembre. Donenfeld a accepté le compromis et s'est montré très satisfait du résultat.

Il n'est plus appelé "Zinc" et certaines des décisions de conception que j'ai appréciées ne sont plus là, mais je pense que la plus grande partie de ce que nous recherchions est là, et que quelques autres éléments devraient pouvoir être intégrés en amont, un à la fois", a-t-il déclaré dans un message à la liste de diffusion du projet WireGuard à l'époque.

L'intégration des bases cryptographiques de Zinc a marqué une étape importante dans le processus d'intégration de WireGuard en amont dans le sous-système de réseau Linux. À partir de ce moment, les choses ont évolué relativement vite, avec plusieurs révisions, corrections de bogues et changements au cours des quelques mois précédant la version stable.

Windows et un nouveau pilote TUN

Pour améliorer les performances de WireGuard sous Windows, Donenfeld et les autres développeurs de WireGuard ont créé un nouveau pilote TUN open-source plus simple appelé Wintun. Windows ne fournit pas de périphérique virtuel TUN natif et bien que certains pilotes existent pour y parvenir, issus de projets tels que OpenVPN ou SoftEther, ils ont été écrits il y a longtemps et présentent divers problèmes.

"Ces projets ont été écrits à une autre époque, celle de NDIS5, puis portés plus tard sur NDIS6", a écrit Donenfeld dans un courrier électronique en mars pour annoncer le projet. "Cela signifie qu'ils n'ont pas bénéficié de choses comme le NdisMediumIP de Windows 7, qui permet un tunnelage natif de la couche 3, sans avoir à faire d'émulation de la couche 2. Les pilotes comme les tap-windows6 d'OpenVPN font aussi des choses un peu désagréables, comme émuler le DHCP depuis le noyau pour la configuration du réseau. Le code est vieux et compliqué. Comme d'habitude, je voulais plutôt quelque chose de minuscule et de stupide pour lequel on puisse réfléchir, qui fasse les choses d'une manière "correcte" et "ennuyeuse" pour un cas d'utilisation plus restreint : le TUN de couche 3".

Comme Zinc et WireGuard lui-même, Wintun semble être développé avec le même souci de simplicité, d'auditabilité et de sécurité. Les développeurs du projet OpenVPN travaillent également sur l'ajout d'un support pour OpenVPN afin de l'utiliser comme alternative à leur ancien pilote.

Quand WireGuard sera-t-il prêt pour les entreprises ?

Avant même de parvenir à une version stable, WireGuard était déjà utilisé en production. Certains fournisseurs de services VPN commerciaux proposent des serveurs WireGuard et des efforts sont en cours pour construire des outils de réseau maillé autour de celui-ci. Il n'est pas encore "prêt pour l'entreprise" et on ne sait pas s'il le sera un jour car ses développeurs sont réticents à ajouter de nouvelles fonctionnalités qui ne sont utiles qu'à un sous-ensemble d'utilisateurs ou à couvrir des cas limites car c'est ainsi que d'autres projets sont devenus trop complexes.

Toutefois, WireGuard peut être un élément de base sur lequel des solutions plus complexes peuvent être créées. Par exemple, les entreprises doivent déployer et configurer de nouveaux logiciels sur un grand nombre d'ordinateurs de manière automatisée, mais la distribution de clés publiques entre pairs et la gestion des clés ne sont pas couvertes par le projet WireGuard lui-même et devront être mises en œuvre comme un outil distinct.

source :
https://www.csoonline.com/article/3434788/what-is-wireguard-secure-simple-vpn-still-in-development.html

Enregistrer un commentaire

Les commentaires sont validés manuellement avant publication. Il est normal que ceux-ci n'apparaissent pas immédiatement.

Plus récente Plus ancienne