Face à OpenVPN, WireGuard veut devenir le Signal des connexions chiffrées

Chiffrement et stickers 90
Accès libre
image dediée
Securité
Par
le mardi 05 septembre 2017 à 11:37
Guénaël Pépin

Depuis deux ans, Jason Donenfeld conçoit WireGuard, un protocole VPN censé mettre au rebut les outils classiques de sécurisation de connexions. Avec un code minuscule et de meilleures performances, il doit convaincre les internautes de se débarrasser d'OpenVPN, conçu il y a plus de 15 ans.

Pour sécuriser une connexion sur un réseau Wi-Fi public ou accéder à des contenus indisponibles dans un pays, les réseaux privés virtuels (VPN) sont devenus des outils quasi-incontournables. L'ensemble des données sont chiffrées dans le tunnel qui relie le client (un ordinateur, un smartphone...) et le serveur, qui dialogue lui-même avec le reste d'Internet. Les bases les plus utilisées s'appellent IPsec (conceptualisé en 1995) et OpenVPN (d'abord sorti en 2001).

Ce sont ces deux protocoles que WireGuard veut déloger des serveurs VPN. Pour Jason Donenfeld, guitariste de jazz et chercheur en sécurité installé en France depuis cinq ans, la complexité de ces deux outils historiques est un danger pour les utilisateurs. Si des failles sont corrigées et trouvées, il serait impossible de s'assurer qu'aucune des larges parties d'OpenVPN ne contient de problème (voir notre analyse).

« WireGuard a l’approche opposée : voir à quel point un design peut être minimal, tout en étant fondé sur de bons concepts et utilisable comme le bloc fondateur d’autres projets » nous explique son concepteur, d'abord rencontré lors de la dernière Nuit du Hack fin juin.

La simplicité avant tout, du code à la configuration

Le principal argument de WireGuard est la simplicité de son code, moins de 4 000 lignes, contre bien plus pour OpenVPN, la première cible de Jason Donenfeld. « C’est très court. C’est si peu qu’une personne peut tout lire en une après-midi » affirme-t-il. « Bien sûr, ce n’est pas la panacée contre toutes les failles de sécurité, mais cette taille et cette simplicité placent WireGuard dans une toute autre catégorie qu’OpenVPN et IPsec. »

WireGuard est la brique centrale sur laquelle doivent s'appuyer des serveurs VPN. « Pour l’utilisateur final, il est important de noter que WireGuard est un bloc central, à utiliser pour construire d’autres projets. Donc il y a le noyau, WireGuard, sur lequel toutes sortes d’interfaces graphiques et d’outils de gestion peuvent être créés » résume son créateur.

Pour le spécialiste de la cryptographie Jean-Philippe Aumasson, « WireGuard est plus fiable qu'OpenVPN ». D'une part, par la taille du code. D'autre part, par « le choix des composants cryptographiques, réduisant le risque d'erreur de la part des utilisateurs (on ne peut pas choisir des algorithmes crypto faibles) ».

« Il est même difficile de mal le configurer. Il n’y a pas de certificats X509 ou ASN.1. Le modèle d’authentification est similaire à SSH, donc toute personne avec des bases rudimentaires d’administration système comprend facilement les concepts de WireGuard. Il y a souvent une manière évidente d’aller d’un point A à un point B, qui se trouve aussi être sûre » appuie Jason Donenfeld. C'est aussi le point de vue de Fredrik Strömberg, cofondateur du service VPN suédois Mullvad, l'un des premiers à financer et essayer le nouveau protocole.

« [WireGuard] est dogmatique cryptographiquement. Il supporte une suite et c'est tout. Ça peut sembler être une mauvaise idée, mais l'expérience nous dit le contraire. L'agilité dans le chiffrement introduit souvent une complexité inutile, qui mène inévitablement à des failles de sécurité » nous explique ce dernier. L'outil « fait partie d’une tendance plus large qui vise à rendre la cryptographie facile et utilisable, sans sacrifice en matière de sécurité ou de performances », comme Signal, ajoute Jason Donenfeld.

Un VPN dans votre noyau Linux

Un autre choix fondamental est celui d'exécuter la brique centrale de WireGuard directement dans le noyau du système, pour le moment sur Linux. De quoi assurer de meilleures performances que le vénérable OpenVPN, qui se lance dans l'espace utilisateur. Le nouvel outil promet des débits quatre fois supérieurs, pour une latence divisée par quatre.

Ce choix n'a pas que des avantages : un outil intégré au noyau peut bien plus facilement compromettre un système par rapport à une application classique, limitée aux droits utilisateur. « Le projet est écrit en C, et est potentiellement vulnérable aux mêmes failles qu'OpenVPN. Le fonctionnement dans le kernel rend n'importe quelle faille autrement plus dramatique. Ça peut améliorer les performances, mais reste très inquiétant d'un point de vue sécurité » explique ainsi Alice du service français CCrypto (qui s'appuie aujourd'hui sur OpenVPN).

« Le noyau Linux est connu pour ses failles de sécurité fréquentes. Ce n'est pas dû à un manque d'efforts ou d'audit. La sécurité du noyau est simplement difficile. Il sera toujours plus sûr d'exécuter un logiciel en espace utilisateur, mais ça ne veut pas dire qu'il est impossible d'être sûr dans le noyau » abonde Andy Yen de ProtonVPN (aussi fondé sur OpenVPN).

Réponse du concepteur de WireGuard : « La surface d’attaque de WireGuard est faible. Je préfère avoir quelque chose de court comme WireGuard dans le kernel, plutôt qu’OpenVPN qui est massif en espace utilisateur ». D'autant que l'exécution en espace utilisateur n'empêche pas l'élévation de privilèges.

Il est une nouvelle fois rejoint par Fredrik Strömberg de Mullvad : « Si quelqu'un a accès au processus de votre serveur VPN, peu importe qu'il soit en plus entré dans le noyau du système. L'attaquant peut déjà voir le trafic de vos utilisateurs. Pour cette raison, optimiser un logiciel VPN au code simple et auditable a du sens, plutôt que de s'inquiéter de le voir tourner dans le noyau ».

Du chiffrement rempli de Bruit

Pour son chiffrement, WireGuard s'appuie aussi sur une base « moderne » : Noise, notamment derrière l'application de messagerie Signal. « WireGuard reprend certaines idées des protocoles SIGMA, KEA+, Signal, et TLS 1.3 en les simplifiant » explique Jason Donenfeld, aidé de Trevor Perrin (qui dirige le projet Noise). « Nous utilisons une construction et des primitives cryptographiques modernes, restant conservatrices et stables. Ce n’est pas de la cryptographie des années 90. Les propriétés de sécurité sont plus efficaces que l’existant en tout point » appuie-t-il.

« Noise a une plus petite surface d'attaque que TLS, par exemple, mais c'est un nouveau protocole qui n'a pas encore passé l'épreuve du feu » pointe pour sa part Andy Yen de ProtonVPN. En l'utilisant comme fondation, WireGuard propose des fonctions comme l'itinérance (le maintien de la connexion en changeant d'adresse IP), la confidentialité persistante (forward secrecy), la dissimulation d'identité ou la compatibilité native avec les conteneurs.

Pour le moment, la sécurité du nouveau protocole n'a pas été auditée, même si Jason Donenfeld s'attend à pouvoir en lancer plusieurs. La cryptographie a subi une vérification formelle, pour en assurer certaines propriétés, ce que n'auraient pas connu les plus anciens protocoles. Autrement dit, le protocole est vérifié en théorie, pas encore en pratique.

Vers une distribution via la branche principale du noyau Linux

Les 4 000 lignes de code de WireGuard ont d'abord été écrites en 2015, en une journée. « J’ai attendu avant de le publier, pour m’assurer qu’il n’y avait pas d’erreur fondamentale. [...] Écrire 4 000 lignes de code n’a rien d’impressionnant. Le vrai travail a commencé avec un processus sans relâche d’écriture, de réécriture, de mise un cause, d’itération, etc. » nous déclare son concepteur.

Il reste le principal contributeur du projet, qui compte sur l'apport de quatre à cinq autres personnes. Pour le moment, l'outil supporte les noyaux Linux de 3.10 à 4.13, avec des paquets pour 15 distributions différentes, en plus d'une intégration aux firmwares de routeurs libres OpenWRT/LEDE. Cet été, deux étudiants ont participé au développement, via le Google Summer of Code et le soutien de la fondation Linux ; notamment sur une implémentation de WireGuard en espace utilisateurs écrite en Go.

Ce soutien n'est pas innocent. Le prochain jalon est l'intégration du protocole VPN à la branche « mainline » du noyau Linux, celle maintenue par Linus Torvalds, d'ici la fin de l'année. Cette validation a demandé un important travail en amont. « Quelques fonctions pratiques utilisées par WireGuard n’étaient pas dans le kernel à l’origine, telles que SipHash. L’an passé, j’ai donc ajouté petit à petit des fonctions au kernel afin de faciliter l’intégration de WireGuard par la suite » détaille Donenfeld.

D'ici la validation par l'équipe de Torvalds, WireGuard est toujours estampillé « expérimental » et publie des « snapshots », plutôt que des versions. « Dans les faits, la plupart des gens ont trouvé les snapshots extrêmement stables, et il y a déjà des déploiements massifs ; j’ai pu constater que plus de 100 000 machines étaient connectées via WireGuard » rassure son créateur. Il s'attend à une adoption massive par les services VPN une fois le tampon du « dictateur bienveillant » de Linux apposé.

Un travail à plein temps

Les ambitions sont hautes pour Donenfeld. Les services VPN interrogés se veulent plus prudents, même s'ils pointent tous la supériorité de WireGuard sur le papier. Andy Yen de ProtonVPN insiste sur le besoin d'éprouver l'outil « par le plus dur des tests : le temps », quand Alice de CCrypto estime qu'OpenVPN restera sûrement longtemps encore leur protocole principal, compatible avec les principales plateformes.

« WireGuard est pour l'instant seulement accessible aux personnes avec un minimum de compétences techniques » note ainsi Jean-Philippe Aumasson. « Il faut des logiciels clients stables et simples d'utilisation disponibles pour chaque OS que l'on veut supporter : Windows, Linux, Android, iOS, les nombreux routeurs différents... » ajoute Alice de CCrypto.

Pour y arriver, Jason Donenfeld compte faire de ce projet un travail à plein temps, notamment grâce aux dons. « Aujourd’hui, je vis de mon travail de consultant en sécurité pour différentes entreprises, de la PME à la grande entreprise internationale. À présent, j’organise mon travail afin d’avoir du temps pour le concentrer sur la cryptographie et WireGuard » répond-il. Une implémentation Windows (via un pilote réseau) est notamment envisagée, même si rien n'est prévu dans l'immédiat.

La communauté doit aussi se développer, une tâche importante pour le créateur de WireGuard. Toujours prêt à envoyer des stickers et à communiquer sur son projet, il arpentait la dernière Nuit du Hack avec le pitch de son logiciel pour convaincre de futurs utilisateurs. Même si des développeurs s'impliquent aujourd'hui, le plus dur semble encore devant l'équipe, pour convaincre les services VPN et leurs clients de passer au nouveau protocole, face à un OpenVPN devenu un standard de fait.


chargement
Chargement des commentaires...