Télécharger
Technique··11 min de lecture

WireGuard vs OpenVPN : comparaison des protocoles

Langue: EnglishالعربيةDeutschEspañolفارسیहिन्दीBahasa IndonesiaItaliano日本語한국어PolskiPortuguêsРусскийไทยTürkçeУкраїнськаTiếng Việt简体中文繁體中文

WireGuard et OpenVPN sont les deux protocoles les plus couramment proposés par les services VPN grand public. Cet article les compare sur le plan de la conception cryptographique, des performances, de la taille du code, de la compatibilité des plateformes et des caractéristiques opérationnelles — les dimensions qui déterminent le comportement réel d’un service en production.

Présentation des deux protocoles

OpenVPN a été publié en 2001 et est devenu un standard de fait dans les déploiements VPN commerciaux. C’est un projet open source écrit en C, qui s’exécute en espace utilisateur et utilise les bibliothèques OpenSSL ou mbedTLS pour les opérations cryptographiques. Sa longévité et sa souplesse ont donné naissance à un ensemble de fonctionnalités étendu et à une large gamme de configurations prises en charge.

WireGuard est nettement plus récent. Le protocole a été publié pour la première fois en 2016 et intégré au noyau Linux en 2020. Il a été conçu explicitement pour être plus simple que ses prédécesseurs, avec une empreinte de code plus réduite, un ensemble restreint de primitives cryptographiques modernes et une implémentation résidant dans le noyau sur les plateformes qui le prennent en charge. L’auteur du protocole, Jason A. Donenfeld, a orienté les objectifs de conception vers la vérifiabilité et les performances plutôt que vers la configurabilité.

Conception cryptographique

Les deux protocoles diffèrent sensiblement dans leur approche de la cryptographie. WireGuard est livré avec un ensemble fixe d’algorithmes ; OpenVPN permet à l’opérateur de choisir parmi de nombreuses options.

La suite fixe de WireGuard

WireGuard utilise une suite cryptographique unique fondée sur des primitives modernes. Les composants sont ChaCha20 pour le chiffrement, Poly1305 pour l’authentification, Curve25519 pour l’échange de clés, BLAKE2s pour le hachage et SipHash24 pour la répartition de charge. Le Noise Protocol Framework fournit le handshake.

Figer la suite a deux conséquences. D’abord, cela élimine la négociation de protocole, qui a historiquement été une source d’attaques par rétrogradation dans les protocoles fondés sur TLS. Ensuite, cela signifie que la mise à niveau de la cryptographie nécessite un changement de version du protocole plutôt qu’un changement de configuration.

La configurabilité d’OpenVPN

OpenVPN prend en charge de nombreux choix de chiffrement grâce à sa bibliothèque TLS sous-jacente. Les configurations courantes incluent AES-256-GCM pour le chiffrement, SHA256 pour l’authentification et ECDH pour l’échange de clés. Les anciens déploiements d’OpenVPN peuvent utiliser BF-CBC ou AES-CBC avec HMAC, qui sont nettement plus faibles au regard des standards modernes.

Cette souplesse permet à OpenVPN de prendre en charge les clients anciens, mais elle implique aussi qu’un audit de configuration est nécessaire pour confirmer qu’un déploiement donné utilise des réglages solides.

Caractéristiques de performance

WireGuard surpasse généralement OpenVPN sur le même matériel. Deux facteurs expliquent l’essentiel de la différence.

Premièrement, WireGuard s’exécute dans le noyau sous Linux, macOS et Windows, ce qui évite la surcharge liée au transfert de chaque paquet entre le noyau et l’espace utilisateur. L’implémentation en espace utilisateur d’OpenVPN est portable mais entraîne un coût de changement de contexte par paquet.

Deuxièmement, ChaCha20-Poly1305 est bien adapté aux processeurs dépourvus d’instructions AES dédiées, ce qui est courant sur les appareils mobiles à base d’ARM. OpenVPN utilise généralement AES, plus rapide sur du matériel doté d’AES-NI mais plus lent ailleurs.

Concrètement, WireGuard atteint souvent un débit plus élevé, une latence plus faible et une utilisation du processeur réduite par rapport à OpenVPN sur les appareils grand public. L’impact sur la batterie des appareils mobiles est lui aussi généralement moindre.

Taille du code et surface d’audit

La taille d’une base de code est vaguement corrélée à l’effort nécessaire pour l’auditer à la recherche de vulnérabilités. L’implémentation de référence de WireGuard compte environ quatre mille lignes de code. L’implémentation dans le noyau Linux est comparable.

OpenVPN, en revanche, comprend environ soixante-dix mille lignes et dépend d’une bibliothèque TLS — OpenSSL ou mbedTLS — qui ajoute plusieurs centaines de milliers de lignes de code supplémentaires à la frontière de confiance. La différence de taille n’indique pas en soi que WireGuard est plus sûr, mais elle influe sur la profondeur avec laquelle l’implémentation peut être examinée.

Compatibilité des plateformes

Les deux protocoles sont largement pris en charge. WireGuard dispose d’implémentations officielles pour Linux (noyau et espace utilisateur), Windows, macOS, iOS, Android, FreeBSD et OpenBSD. La prise en charge d’iOS, en particulier, est bien intégrée grâce au framework iOS Network Extension.

OpenVPN est disponible sur pratiquement toutes les plateformes, y compris d’anciens systèmes vers lesquels WireGuard n’a pas été porté. De nombreux réseaux d’entreprise utilisent OpenVPN pour la compatibilité avec une infrastructure ancienne.

Pour les nouveaux déploiements sur des systèmes d’exploitation modernes, WireGuard est le choix le plus simple. Pour les environnements qui exigent une compatibilité étendue — y compris les systèmes anciens, les appareils embarqués ou certains produits d’entreprise — OpenVPN reste pertinent.

Modèle de configuration

Le modèle de configuration de WireGuard est volontairement minimal. Chaque pair possède une identité par clé publique et une liste d’IP autorisées. Il n’y a pas d’authentification au niveau de l’utilisateur, pas d’état de session sur le serveur et pas de négociation de keepalive. Le protocole repose sur une identité cryptographique plutôt que sur des noms d’utilisateur et des mots de passe.

OpenVPN prend en charge un modèle d’authentification plus souple. L’authentification par certificat, l’authentification par nom d’utilisateur et mot de passe, et l’authentification à deux facteurs sont toutes disponibles. Cette souplesse est utile dans les environnements d’entreprise où l’authentification est intégrée aux services d’annuaire.

Pour les services VPN grand public, où les utilisateurs n’ont pas besoin d’être identifiés les uns par rapport aux autres, le modèle plus simple de WireGuard est généralement suffisant.

Quand utiliser chacun

Le choix entre les protocoles dépend des contraintes du déploiement.

  • WireGuard est préférable lorsque les performances, la simplicité du code et la cryptographie moderne sont prioritaires ; lorsque les plateformes cibles bénéficient d’une prise en charge native ; et lorsque le déploiement peut accepter une suite cryptographique fixe.
  • OpenVPN est préférable lorsque la compatibilité avec des systèmes anciens est requise ; lorsqu’une intégration avec l’authentification d’entreprise est nécessaire ; ou lorsque le déploiement doit traverser des réseaux qui restreignent le trafic UDP (OpenVPN prend en charge un repli sur TCP ; WireGuard non).

De nombreux services VPN grand public modernes proposent les deux protocoles et laissent l’utilisateur choisir. Snap VPN, à l’inverse, utilise exclusivement WireGuard, intégré via le framework iOS Network Extension. Ce choix reflète le principe de conception consistant à réduire la surface d’implémentation à ce qui est nécessaire pour la plateforme cible.

Pour un aperçu général du fonctionnement des VPN, consultez notre introduction aux VPN. Pour une mise en place pratique sur iPhone, voir le guide de configuration iOS.