WireGuard
| Développé par | Jason A. Donenfeld (d) |
|---|---|
| Première version | [1] |
| Dernière version | 1.0.20260223 ()[2] |
| Dépôt | git.zx2c4.com |
| Écrit en | C |
| Système d'exploitation | Linux, Android, iOS, FreeBSD, NetBSD, OpenBSD, macOS et Microsoft Windows |
| Formats lus | WireGuard profile (d) |
| Formats écrits | WireGuard profile (d) |
| Type | Réseau privé virtuel |
| Licence | Licence publique générale GNU version 2 |
| Site web | www.wireguard.com |
WireGuard est un protocle de réseau privé virtuel (VPN) libre et open source conçu pour établir des communications sécurisées entre des équipements connectés à un réseau IP. Développé par Jason A. Donenfeld et publié pour la première fois en 2015, il a été conçu pour offrir une alternative moderne aux protocoles VPN traditionnels tels qu'OpenVPN et IPsec, en mettant l'accent sur la simplicité, les performances et la sécurité.
WireGuard est intégré au noyau Linux depuis la version 5.6 et est également disponible sur de nombreux autres systèmes d'exploitation, notamment Windows, MacOS, FreeBSD, Android et iOS[3].
Historique
[modifier | modifier le code]Le développement de WireGuard débute en 2015 sous l'impulsion de Jason A. Donenfeld. Son objectif est de concevoir un protocole VPN moderne reposant exclusivement sur des primitives cryptographiques récentes, tout en limitant la taille du code afin de faciliter son audit et sa maintenance.
Après plusieurs années de développement et d'évaluation par la communauté, WireGuard est intégré au noyau Linux en mars 2020 avec la publication de Linux 5.6. Cette intégration contribue largement à son adoption par les administrateurs système, les fournisseurs de VPN et les infrastructures cloud[4].
Fonctionnement
[modifier | modifier le code]WireGuard fonctionne au niveau de la couche réseau et encapsule les paquets IP dans des datagrammes UDP. Chaque pair possède une paire de clés cryptographiques composée d'une clé privée et d'une clé publique.
Contrairement à de nombreux protocoles VPN traditionnels, WireGuard ne repose pas sur une infrastructure de certificats x.509 ni sur une autorité de certification. L'authentification des pairs est réalisée à l'aide de leurs clés publiques, qui sont configurés manuellement ou distribués par un système de gestion externe.
Chaque pair est également associé à une liste de préfixes IP autorisées (AllowedIPs). Cette information sert à la fois de politique de routage et de mécanisme de contrôle d'accès, en déterminant quelles addresses IP peuvent être atteintes via chaque tunnel.
Transport réseau
[modifier | modifier le code]WireGuard transport exclusivement son trafic au moyen du protocole UDP. Ce choix permet d'éviter les problèmes de performances liés à l'encapsulation de connexions TCP dans un autre flux TCP (TCP-over-TCP meltdown), phénomène pouvant entraîner une dégradation importante du débit et une augmentation de la latence. Les tunnels WireGuard transportent des paquets IPv4 et IPv6 et permettent l'encapsulation d'un protocole dans l'autre.
Cryptographie
[modifier | modifier le code]WireGuard utilise un ensemble restreint d'algorithmes cryptographiques considérés comme modernes et robustes :
- Curve25519 pour l'échange de clés
- ChaCha20 pour le chiffrement symétrique
- Poly1305 pour l'authentification des messages
- SipHash pour les clés hashées
- BLAKE2s pour les fonctions de hachage cryptographique
- HKDF pour la dérivation de clés
Le protocole met en œuvre le framework cryptographique Noise, plus précisément le modèle Noise_IK, afin d'assurer l'authentification mutuelle des pairs ainsi que l'établissement de clés de session[5].
WireGuard permet d'utiliser, en complément de l'échange de clés Curve25519, le mode de pré-partage symétrique des clés, qui fournit une couche de cryptographie symétrique supplémentaire pour atténuer les futurs progrès de l'informatique quantique. Cela réduit le risque que le trafic soit stocké jusqu'à ce que les ordinateurs quantiques soient capable de casser Curve25519, leur permettant de déchiffrer le trafic.
Les clés pré-partagées sont "généralement gênantes du point de vue de la gestion des clés et pourraient être plus probablement volées", mais à plus court terme, si la clé symétrique est compromise, les clés Curve25519 offrent toujours une protection plus que suffisante[6].
Architecture
[modifier | modifier le code]WireGuard adopte une architecture pair à pair (peer-to-peer). Chaque équipement est identifié par une clé publique et peut agir simultanément comme client et serveur.
Le protocole ne comporte pas de serveur central chargé d'établir les tunnels. Toute la configuration repose sur les clés publiques des pairs et sur leurs préfixes IP autorisés. Cette architecture réduit la complexité du protocole tout en limitant la surface d'attaque.
WireGuard adopte volontairement une architecture minimaliste. Il ne fournit pas nativement de mécanismes tels que la gestion des utilisateurs, la distribution des configurations, la haute disponibilité ou l'authentification multifactorielle. Ces fonctionnalités sont généralement apportées par des logiciels tiers, tels que Tailscale, Headscale, NetBird ou wg-easy. Cette séparation permet de maintenir une implémentation relativement compacte, facilitant les audits de sécurité et la maintenance.
Itinérance
[modifier | modifier le code]WireGuard prend en charge l'itinérance de manière transparente. Lorsqu'un équipement change d'adresse IP, par exemple lors du passage d'un réseau Wi-Fi à un réseau mobile, le protocole détecte automatiquement la nouvelle adresse source et poursuit la communication sans renégociation complète du tunnel.
Cette fonctionnalité facilite son utilisation sur les équipements mobiles et les ordinateurs portables.
Performances
[modifier | modifier le code]Grâce à une implémentation volontairement compacte et à son intégration dans le noyau Linux, WireGuard offre généralement de meilleures performances que les implémentations classiques d'OpenVPN et des performances comparables ou supérieures à IPsec selon les scénarios d'utilisation[7].
La faible taille de son code facilite également les audits de sécurité.
Utilisations
[modifier | modifier le code]WireGuard est utilisé dans de nombreux contextes:
- Interconnexion de sites distants
- Accès sécurisé aux réseaux d'entreprise
- Administration distante de serveurs
- Infrastructures cloud
- Réseaux privés entre machines virtuelles ou conteneurs
- Réseaux maillés
- Solutions d'accès distant telles que Tailscale[8] ou Headscale[9]
- Serveurs domestiques
Avantages
[modifier | modifier le code]Les principaux avantages de WireGuard sont:
- Sa simplicité d'utilisation
- Sa performance élevée
- Son implémentation compacte facilitant les audits
- Une cryptographie moderne imposée par le protocole
- Sa prise en charge native sur de nombreux systèmes d'exploitation
Limitations
[modifier | modifier le code]WireGuard ne fournit pas certaines fonctionnalités présentes dans des solutions VPN plus anciennes, comme la gestion native des utilisateurs, l'intégration avec une infrastructure de certificats, l'authentification multifactorielle, des mécanismes avancés de distribution de configurations.
Ces fonctions sont généralement assurées par des outils tiers tels que Headscale, Tailscale ou des solutions d'administration spécifiques.
Sécurité de l'itinérance
[modifier | modifier le code]Afin de faciliter la mobilité des équipements, WireGuard met automatiquement à jour l'adresse IP distante d'un pair lorsqu'il reçoit un paquet authentifié provenant d'une nouvelle adresse. Ce mécanisme permet notamment de maintenir un tunnel VPN actif lorsqu'un appareil change de réseau, par exemple lors du passage d'un réseau Wi-Fi à un réseau mobile.
Cette mise à jour de l'adresse distante ne nécessite pas d'échange supplémentaire ni de nouvelle authentification. En conséquence, un attaquant capable d'intercepter et de relayer activement le trafic (attaque de l'homme du milieu) peut amener un pair à associer temporairement son correspondant à une nouvelle adresse IP.
Cette attaque ne permet toutefois ni de déchiffrer ni de modifier les données échangées. Les paquets restent protégés par les mécanismes d'authentification et de chiffrement de WireGuard, de sorte que seul le pair possédant la clé privée correspondante est en mesure de les lire ou de les produire.
Dans les environnements où le changement d'adresse IP n'est pas souhaité, il est possible de limiter ce comportement en configurant un pare-feu afin de n'autoriser les communications WireGuard qu'à partir d'une ou plusieurs adresses IP prédéfinies. La documentation du projet indique également que les mécanismes plus restrictifs pourraient être introduits dans de futures évolutions du protocole[10].
Les auteurs de WireGuard mentionnent enfin un scénario théorique dans lequel un attaquant pourrait tenter de manipuler des numéros de séquence TCP afin d'inciter un serveur WireGuard à envoyer des paquets vers une adresse IP qu'il ne contrôle pas. Cette attaque demeure complexe à mettre en œuvre et ne compromet pas la confidentialité ni l'intégrité des communications.
Références
[modifier | modifier le code]- ↑ « https://www.businessinsider.com/wireguard-jason-a-donenfeld-profile-secure-vpn-linux-mac-windows-2021-1 »
- ↑ « wireguard-tools » (consulté le )
- ↑ (en) Jason A. Donenfeld, « WireGuard: fast, modern, secure VPN tunnel », sur www.wireguard.com (consulté le )
- ↑ « Linux_5.6 - Linux Kernel Newbies », sur kernelnewbies.org (consulté le )
- ↑ « Noise Protocol Framework », sur noiseprotocol.org (consulté le )
- ↑ Jason Donenfeld, « WireGuard: Next Generation Kernel Network Tunnel », sur Wireguard.com,
- ↑ « The Linux Kernel documentation — The Linux Kernel documentation », sur docs.kernel.org (consulté le )
- ↑ « Tailscale: How it works », sur tailscale.com (consulté le )
- ↑ (en) Headscale authors, « Headscale », sur juanfont.github.io (consulté le )
- ↑ (en) Jason A. Donenfeld, « Known Limitations - WireGuard », sur www.wireguard.com (consulté le )
Annexes
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]- OpenVPN
- Comparison of virtual private network services
- Secure Shell (SSH), un protocole de réseau cryptographique utilisé pour sécuriser les services sur un réseau non sécurisé
Liens externes
[modifier | modifier le code]- (en) Site officiel
- Face à OpenVPN, WireGuard veut devenir le Signal des connexions chiffrées sur nextinpact.com, le