Jason A. Donenfeld, auteur de VPN WireGuard, de dans le noyau principal du pilote OpenBSD « wg » pour le protocole WireGuard, interface réseau spécifique et outils fonctionnant dans l'espace utilisateur. OpenBSD est devenu le deuxième système d'exploitation après avec un support complet et intégré de WireGuard. L'inclusion de WireGuard est attendue dans la version OpenBSD 6.8.
Les correctifs incluent un pilote pour le noyau OpenBSD, des modifications pour les utilitaires ifconfig et tcpdump avec prise en charge des fonctionnalités de WireGuard, de la documentation et des modifications mineures pour l'intégration de WireGuard avec le reste du système. Le pilote utilise une implémentation propriétaire des algorithmes , et , ainsi que l'implémentation de SipHash déjà présente dans le noyau OpenBSD.
L'implémentation est compatible avec tous les clients officiels WireGuard pour Linux, Windows, macOS, *BSD, iOS et Android. Les tests de performance effectués sur l'ordinateur portable du développeur (Lenovo x230) ont montré une bande passante de l'ordre de 750 Mbit/s. En comparaison, isakmpd avec des paramètres par défaut ike psk fournit une bande passante de 380 Mbit/s.
Lors du développement du pilote pour le noyau OpenBSD, certaines solutions architecturales similaires à celles du pilote pour Linux ont été choisies, mais le pilote a d'abord été développé pour OpenBSD, en tenant compte des spécificités de ce système et de l'expérience acquise lors de la création du pilote pour Linux. Avec l'accord de l'auteur original de WireGuard, le code du nouveau pilote est entièrement distribué sous la licence libre ISC.
Le pilote s'intègre étroitement à la pile réseau OpenBSD et utilise les sous-systèmes existants, ce qui a permis de rendre le code très compact (environ 3000 lignes de code). Parmi les différences, on note aussi une séparation différente des composants du pilote par rapport à Linux : les interfaces spécifiques à OpenBSD sont placées dans les fichiers « if_wg.* », le code de protection contre les attaques par déni de service (DoS) dans « wg_cookie.* », et la logique de négociation des connexions et de cryptage dans « wg_noise.* ».
Source : opennet.ru
