# WireGuard

WireGuard est un protocole de communication et un logiciel libre et open source permettant de créer un réseau privé virtuel (RPV)$^,$. Il est conçu avec des objectifs de facilité d'utilisation, de performances et de surface d'attaque basse. Il vise une meilleure performance et une plus grande économie d'énergie que les protocoles IPsec et OpenVPN Tunneling. Le protocole WireGuard transmet le trafic sur UDP. En mars 2020, la version Linux du logiciel a atteint une version de production stable et a été intégrée au noyau Linux 5.6. Les composants du noyau Linux sont sous licence GNU (GLPL) version 2. D'autres implémentations sont sous GPLV2 ou d'autres licences gratuites / Open-Source.

## Protocole

WireGuard utilise les protocoles suivant :
* Curve25519 pour l'échange de clé
* ChaCha20 pour la cryptographie symétrique
* Poly1305 pour les codes d'authentification de message
* SipHash pour les clés hashées
* BLAKE2s pour la fonction de hachage cryptographique
* Basé uniquement en UDP

### Mode optionnel de pré-partage symétrique des clés

WireGuard supporte 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.

### Mise en réseau

À cause des potentiels désavantages du TCP-sur-TCP$^,$, Wireguard utilise uniquement UDP. WireGuard prend entièrement en charge IPv6, à l'intérieur et à l'extérieur du tunnel. Il ne prend en charge que la Couche réseau 3 pour IPV4 et IPV6. De plus, il peut encapsuler IPV4 en IPV6 (et vice-versa).

### Extensibilité

WireGuard est conçu pour être étendu par des programmes et des scripts tiers. Cela a été utilisé pour améliorer WireGuard avec diverses fonctionnalités, notamment des interfaces de gestion plus simple d'utilisation (y compris une configuration plus facile des clés), la connexion, les mises à jour dynamiques du pare-feu et l'intégration du LDAP.
L'exclusion de ces fonctionnalités complexes du code source améliore sa stabilité et sa sécurité. Pour assurer la sécurité, WireGuard restreint les options d’implémentation de contrôles cryptographiques, limite les choix de processus d'échange de clé et limite les algorithmes à un petit sous-ensemble de primitives cryptographiques modernes.
Si un défaut est trouvé dans l'une des primitives, une nouvelle version peut être publiée et résoudre le problème. De plus, les paramètres de configuration qui affectent la sécurité de l'ensemble de l'application ne peuvent pas être modifiés par des utilisateurs non privilégiés.

## Réception

Une étude réalisée par Ars Technica a révélé que WireGuard était simple à configurer et à utiliser, utilisait des chiffrements puissants et avait une base de code minimale qui offrait une petite surface d'attaque.
WireGuard a reçu un financement de l'Open Technology Fund et des dons de Mullvad, Private Internet Access, IVPN, la Fondation NLnet et OVPN.
Le sénateur de l'Oregon, Ron Wyden, a recommandé au National Institute of Standards and Technology (NIST) d'évaluer WireGuard en remplacement des technologies existantes.