Jason A. Donenfeld, l'auteur de WireGuard VPN, a publié la première version majeure du logiciel client WireGuard pour Windows 1.0, ainsi que les pilotes WireGuardNT 1.0 avec un port VPN WireGuard pour le noyau Windows 10 et 11, compatible avec les architectures AMD64, x86 et ARM64. Le code du composant noyau Windows est distribué sous licence GPLv2 et le logiciel client sous licence MIT.
Ce portage est basé sur le code source de l'implémentation WireGuard principale pour le noyau Linux, converti pour utiliser les entités du noyau Windows et la pile réseau NDIS. Comparé à l'implémentation wireguard-go, qui s'exécute dans l'espace utilisateur et utilise l'interface réseau Wintun, WireGuardNT offre des gains de performance significatifs en éliminant les changements de contexte et en copiant le contenu des paquets du noyau vers l'espace utilisateur. À l'instar des implémentations pour Linux, OpenBSD et FreeBSD, toute la logique de traitement du protocole dans WireGuardNT s'exécute directement au niveau de la pile réseau.
La version 1.0 a été considérée comme une étape importante, marquant la résolution d'un certain nombre de problèmes et la réalisation des tâches prévues, telles que : l'utilisation de la fonction NdisWdfGetAdapterContextFromAdapterHandle() au lieu du stockage moins sécurisé de l'état du pilote dans le champ réservé et l'utilisation de décalages non documentés ; le suivi correct et rapide de la taille MTU (unité de transmission maximale) grâce à l'interception des appels système ; l'utilisation de la norme C23 dans le code.
Pour rappel, WireGuard VPN repose sur des méthodes de chiffrement modernes, offre des performances exceptionnelles, est facile à utiliser, sans complications et a fait ses preuves dans de nombreux déploiements à grande échelle gérant d'importants volumes de trafic. Le projet est en développement depuis 2015 et ses méthodes de chiffrement ont fait l'objet d'un audit et d'une vérification formelle. WireGuard utilise un concept de routage chiffré par clés, qui consiste à associer une clé privée à chaque interface réseau et à utiliser des clés publiques pour la liaison des clés.
L'échange de clés publiques pour établir une connexion est similaire à celui de SSH. Pour négocier les clés et se connecter sans exécuter de démon distinct dans l'espace utilisateur, le mécanisme Noise_IK du framework Noise Protocol est utilisé, comparable à la gestion des clés autorisées (authorized_keys) dans SSH. Le transfert de données s'effectue par encapsulation dans des paquets UDP. La modification des clés est prise en charge. Adresses IP Serveurs VPN (itinérance) sans interruption de connexion avec reconfiguration automatique du client.
Le chiffrement utilise le chiffrement de flux ChaCha20 et l'algorithme d'authentification de message (MAC) Poly1305, développés par Daniel J. Bernstein, Tanja Lange et Peter Schwabe. ChaCha20 et Poly1305 sont présentés comme des alternatives plus rapides et plus sûres à AES-256-CTR et HMAC, dont l'implémentation logicielle permet une exécution en temps fixe sans matériel spécifique. La clé secrète partagée est générée à l'aide du protocole Diffie-Hellman sur courbe elliptique (Curve25519), également proposé par Daniel Bernstein. L'algorithme BLAKE2s (RFC 7693) est utilisé pour le hachage.
Source: opennet.ru
