Aujourd'hui, Linus a intégré la branche net-next avec les interfaces VPN. . à propos de cet événement dans la liste de diffusion de WireGuard.

Actuellement, la compilation du code pour le nouveau noyau Linux 5.6 se poursuit. WireGuard est un VPN de nouvelle génération, qui utilise une cryptographie moderne. Il a été initialement développé comme une alternative plus simple et conviviale aux VPN existants. Son auteur est le spécialiste canadien de la sécurité informatique Jason Donenfeld. En août 2018, WireGuard de la part de Linus Torvalds. à peu prÚs à ce moment-là , le travail avait commencé pour intégrer le VPN dans le noyau Linux. Le processus a un peu traßné.
« Je vois que Jason a fait une demande de tirage pour intĂ©grer WireGuard dans le noyau, Ă©crivait Linus le 2 aoĂ»t 2018. â Puis-je simplement rĂ©affirmer mon amour pour ce VPN et espĂ©rer une fusion rapide ? Peut-ĂȘtre que le code n'est pas parfait, mais je l'ai examinĂ© et, comparĂ© aux horreurs d'OpenVPN et d'IPSec, c'est une vĂ©ritable Ćuvre d'art. »
Malgré le souhait de Linus, la fusion a pris un an et demi. Le principal problÚme concernait l'attachement aux implémentations cryptographiques propriétaires qui étaient utilisées pour améliorer les performances. AprÚs de longues négociations, en septembre 2019, une décision de compromis a été de transférer les correctifs vers les fonctions Crypto API existantes dans le noyau, auxquelles les développeurs de WireGuard ont des réclamations en matiÚre de performance et de sécurité générale. Mais ils ont décidé de mettre en évidence les fonctions cryptographiques natives de WireGuard dans une API de bas niveau distincte appelée Zinc et de les porter dans le noyau avec le temps. En novembre, les développeurs du noyau ont tenu leur promesse et de transférer dans le noyau principal une partie du code de Zinc. Par exemple, dans le Crypto API les implémentations rapides des algorithmes ChaCha20 et Poly1305 préparées dans WireGuard.
Finalement, le 9 dĂ©cembre 2019, David Miller, responsable du sous-systĂšme rĂ©seau du noyau Linux, dans la branche net-next avec la mise en Ćuvre de l'interface VPN du projet WireGuard.
Et aujourd'hui, le 29 janvier 2020, les modifications ont été envoyées à Linus pour intégration dans le noyau.

Les avantages déclarés de WireGuard par rapport à d'autres solutions VPN :
- Facile Ă utiliser.
- Utilise une cryptographie moderne : Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
- Code compact et lisible, plus facile à analyser pour les vulnérabilités.
- Haute performance.
- Clair et détaillé .
Toute la logique principale de WireGuard ne fait pas plus de 4000 lignes de code, tandis qu'OpenVPN et IPSec en comptent des centaines de milliers.
Dans WireGuard, on utilise le concept de routage par clĂ©s de chiffrement, qui implique l'association d'une clĂ© privĂ©e Ă chaque interface rĂ©seau et l'application de clĂ©s publiques pour Ă©tablir des connexions. L'Ă©change de clĂ©s publiques pour Ă©tablir une connexion se fait de maniĂšre similaire Ă SSH. Un mĂ©canisme Noise_IK est utilisĂ© pour la nĂ©gociation des clĂ©s et la connexion sans le lancement d'un dĂ©mon distinct dans l'espace utilisateur. , semblable Ă la maintenance d'authorized_keys dans SSH. Le transfert de donnĂ©es s'effectue par encapsulation dans des paquets UDP. Le changement d'adresse IP du serveur VPN (roaming) est pris en charge sans interruption de la connexion avec une reconfiguration automatique du client, â Opennet.
Pour le cryptage un chiffre de flux et un algorithme d'authentification de message (MAC) , développés par Daniel Bernstein (), Tanja Lange et Peter Schwabe. ChaCha20 et Poly1305 sont positionnés comme des alternatives plus rapides et plus sécurisées à AES-256-CTR et HMAC, dont l'implémentation logicielle permet d'atteindre un temps d'exécution fixe sans nécessiter de prise en charge matérielle spécifique. Le protocole de Diffie-Hellman sur courbes elliptiques est utilisé pour générer une clé secrÚte partagée dans l'implémentation , également proposé par Daniel Bernstein. Pour le hachage, l'algorithme ».
Résultats depuis le site officiel :
Débit (Mbit/s)

Ping (ms)

Configuration du test :
- Intel Core i7-3820QM et Intel Core i7-5200U
- Cartes Gigabit Intel 82579LM et Intel I218LM
- Linux 4.6.1
- Configuration de WireGuard : ChaCha20 256 bits avec Poly1305 pour le MAC
- PremiĂšre configuration IPsec : ChaCha20 256 bits avec Poly1305 pour le MAC
- DeuxiĂšme configuration IPsec : AES-256-GCM-128 (avec AES-NI)
- Configuration OpenVPN : chiffrement équivalent à AES 256 bits avec HMAC-SHA2-256, mode UDP
- La performance a été mesurée avec
iperf3, montrant le résultat moyen sur 30 minutes.
Théoriquement, aprÚs son intégration dans la pile réseau, WireGuard devrait fonctionner encore plus rapidement. Mais dans la réalité, cela ne sera pas forcément le cas en raison du passage aux fonctions cryptographiques intégrées au noyau Crypto API. Il est possible que toutes ne soient pas encore optimisées au niveau de la rapidité du WireGuard natif.
«à mon avis, WireGuard est totalement idĂ©al pour l'utilisateur. Toutes les solutions de bas niveau sont adoptĂ©es dans les spĂ©cifications, donc le processus de mise en place d'une infrastructure VPN typique ne prend que quelques minutes. Il est pratiquement impossible de se tromper dans la configuration, â dirait sur Habr en 2018. â Le processus d'installation sur le site officiel, il convient de souligner l'excellente . Cette simplicitĂ© d'utilisation et la compacitĂ© du code ont Ă©tĂ© obtenues grĂące Ă l'abandon de la distribution des clĂ©s. Il n'y a pas de systĂšme complexe de certificats et de toute cette horreur corporative, les courtes clĂ©s de chiffrement se diffusent Ă peu prĂšs comme des clĂ©s SSH.
Le projet WireGuard évolue depuis 2015, il a été audité et . Le support de WireGuard est intégré dans NetworkManager et systemd, et les correctifs pour le noyau font partie de la distribution de base des systÚmes Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph et ALT.
Source : habr.com
