WireGuard 1.0 pour Windows : sortie du pilote noyau et gain de performances
Les premières versions stables de WireGuard 1.0 pour Windows et du pilote WireGuardNT 1.0 sont sorties, implémentant le protocole VPN directement dans le noyau de Windows 10 et 11. Cela marque la transition du mode utilisateur vers une intégration complète avec la pile réseau NDIS, offrant des gains de performances substantiels en éliminant les changements de contexte et les copies redondantes de paquets.
Changements architecturaux dans WireGuardNT
Auparavant, la solution Windows reposait sur wireguard-go — une implémentation en espace utilisateur qui utilisait le pilote Wintun pour interagir avec le noyau. Malgré sa fiabilité, cette approche entraînait inévitablement une surcharge : chaque paquet réseau franchissait la limite entre les modes utilisateur et privilégié, ralentissant le traitement du trafic, particulièrement sous forte charge.
WireGuardNT élimine cet inconvénient en plaçant toute la logique du protocole à l'intérieur du noyau. Le pilote est écrit en utilisant NDIS (Network Driver Interface Specification) et respecte pleinement les exigences architecturales de Windows. Il prend en charge trois plateformes principales : AMD64, x86 et ARM64. Les composants critiques, tels que la gestion de la MTU et la gestion de l'état de l'adaptateur, sont désormais implémentés via les API officielles du noyau, y compris NdisWdfGetAdapterContextFromAdapterHandle(), ce qui améliore la stabilité et la sécurité.
Base cryptographique de WireGuard
WireGuard maintient une pile cryptographique unifiée sur toutes les plateformes. Il utilise les algorithmes suivants :
- ChaCha20 — chiffrement de flux à exécution en temps constant ;
- Poly1305 — algorithme MAC pour l'authentification des messages ;
- Curve25519 — courbe elliptique pour le protocole Diffie–Hellman ;
- BLAKE2s — fonction de hachage selon la RFC 7693.
Ces composants ont été choisis délibérément : ils offrent une vitesse élevée même sans accélération matérielle, résistent aux attaques par canal d'information temporelle et ont fait l'objet de vérifications indépendantes. Contrairement à IPsec ou OpenVPN, WireGuard utilise un ensemble minimal de primitives, réduisant la surface d'attaque et simplifiant les audits.
Établissement de la connexion et roaming
Le processus d'établissement d'un canal sécurisé dans WireGuard est similaire à l'échange de clés dans SSH. Chaque interface possède sa propre clé privée, et les pairs de confiance sont identifiés par des clés publiques. Les clés de session sont négociées à l'aide du mécanisme Noise_IK du Noise Protocol Framework.
Une fonctionnalité clé de WireGuard est le support du roaming fluide. Si un client change d'adresse IP (par exemple, en passant du Wi-Fi aux données mobiles), le serveur met automatiquement à jour les informations de localisation du client en se basant sur le dernier paquet reçu. La connexion reste ininterrompue, ce qui est essentiel pour les appareils mobiles et les travailleurs à distance.
Améliorations techniques de la version 1.0
La version 1.0 est le fruit d'années d'affinage. Les principaux changements incluent :
- Suppression du stockage de l'état du pilote dans le champ
Reserveddes structures du noyau — utilisation désormais du mécanisme standard de contexte d'adaptateur. - Suivi dynamique de la MTU par interception d'appels système, évitant la fragmentation des paquets.
- Passage à la norme C23 pour le code source, améliorant la portabilité et la compatibilité avec les compilateurs modernes.
- Support complet d'ARM64, le rendant adapté aux nouvelles générations d'appareils Windows basés sur Qualcomm et d'autres SoC.
Points clés
- WireGuardNT s'exécute entièrement dans le noyau Windows, offrant des gains de performances substantiels par rapport à wireguard-go.
- Pile cryptographique inchangée : ChaCha20, Poly1305, Curve25519, BLAKE2s.
- Roaming fluide sans interruption de connexion pris en charge nativement.
- La version 1.0 n'est pas qu'un numéro — c'est l'achèvement de la stabilisation architecturale.
- Licences séparées : noyau sous GPLv2, logiciel client sous MIT.
— Editorial Team
Aucun commentaire pour le moment.