Wireguard sur FPGA
(github.com/chili-chips-ba)- Ce projet open source implémente le VPN Wireguard en matériel à l’aide d’un FPGA Artix7 à bas coût et d’une chaîne d’outils open source
- Il se distingue par une vitesse proche du wire-speed et un coût réduit par rapport aux approches logicielles classiques
- Tous les fichiers de conception sont entièrement publics, ce qui permet d’inspecter rigoureusement d’éventuelles portes dérobées ou failles de sécurité
- Les algorithmes cryptographiques modernes de Wireguard, comme ChaCha20-Poly1305, Curve25519 et BLAKE2, sont implémentés sous forme d’une combinaison matériel/logiciel
- Le projet n’en est encore qu’au stade initial de proof of concept, avec des extensions fonctionnelles et optimisations prévues pour la suite
Présentation et importance
Ce projet open source Wireguard sur FPGA implémente matériellement le VPN Wireguard sur un FPGA Artix7 abordable, afin de rendre accessible à tous, à faible coût et à vitesse maximale, un VPN qui constitue un élément clé de l’infrastructure de sécurité réseau. Alors que les solutions matérielles existantes nécessitaient des FPGA commerciaux coûteux et des chaînes d’outils fermées, ce projet se distingue fortement par sa conception open source, l’usage d’outils ouverts et la publication complète du code source, avec des avantages majeurs en matière de transparence et d’accessibilité.
Contexte et objectifs du projet
- Les solutions existantes comme OpenVPN ou IPSec présentent des limites en matière de performances et d’administration, ce qui fait de Wireguard une alternative moderne et sûre de plus en plus importante
- Les implémentations matérielles actuelles de Wireguard dépendent d’équipements coûteux et d’IP fermées, tandis que les implémentations logicielles n’atteignent pas les vitesses de ligne du réseau
- Ce projet propose une implémentation de Wireguard développée en SystemVerilog, exploitable par tous sur un environnement FPGA open source et peu coûteux, y compris à des fins de validation et d’enseignement
Comparaison avec des projets connexes
- Le projet Blackwire (matériel Wireguard à 100 Gbit/s) utilise un Alveo U50 coûteux et la chaîne d’outils fermée Vivado, ce qui le rend peu accessible
- L’équipe de ce projet avait auparavant développé des modules clés comme l’algorithme Balanced Binary Tree Search, mais s’est heurtée à des limites liées à l’échec de la commercialisation et à des problèmes de propriété
- Le projet Wireguard sur FPGA met en avant l’usage du HDL standard de l’industrie (SystemVerilog), la prise en charge d’outils open source, un matériel grand public abordable et une politique open source transparente
Architecture matérielle et logicielle
Matériel (HW)
- Plan de contrôle : un CPU logiciel relié à une boot ROM et à un contrôleur DDR3 SDRAM prend en charge la gestion du protocole Wireguard, le routage, ainsi que la gestion des sessions et des clés
- Plan de données : implémenté en RTL, il traite à wire-speed le chiffrement/déchiffrement des paquets, le routage et le transport effectif des données du protocole Wireguard
- Composants principaux
- Contrôleur PHY, MAC 1G, FIFO Rx/Tx, parseur d’en-têtes, assembleur/désassembleur de paquets, module de chiffrement/authentification ChaCha20-Poly1305, moteur de recherche IP, etc.
- Tous les modules de chiffrement et d’authentification sont implémentés sur la base du standard RFC7539
Logiciel (SW)
- Wireguard Agent : assure le handshake du protocole, le maintien des sessions et la gestion des tables de clés et de routage
- Modules liés à la cryptographie
- Curve25519 : échange de clés ECDH
- ChaCha20-Poly1305, XChaCha20-Poly1305 : chiffrement/authentification symétriques de type AEAD et protection des nonce
- BLAKE2s : authentification MAC et hachage
- Sont également inclus HKDF, Timer, SipHash, CLI, ainsi que des pilotes HAL/CSR
Plan de développement et d’exécution
Phases du projet
- Phase 1 : mise en route de la carte et définition du plan d’architecture, prise en main de la plateforme HW/SW, analyse des implémentations existantes, découpage de l’architecture et documentation
- Phase 2 : implémentation et intégration de base du chemin de données matériel pour un canal Wireguard statique, accélération matérielle des algorithmes cryptographiques, notamment ChaCha20-Poly1305
- Phase 3 : développement du logiciel de gestion sur processeur logiciel RISC-V et intégration HW/SW, avec la prise en charge logicielle des tâches à faible surcoût comme la gestion des sessions et des clés
- Phase 4 : implémentation du workflow complet du tunnel VPN, de l’initialisation à la fermeture sécurisée, en passant par le maintien de la session
- Phase 5 : tests de performance, optimisation, extension de la prise en charge d’autres chaînes d’outils open source (OpenXC7), maintenance continue de la documentation communautaire et de la CI
- Phase 6 (optionnelle) : développement du logiciel de contrôle du flux de données du tunnel VPN afin d’assurer un transport et une gestion stables des données
Architecture conjointe HW/SW
- Un nœud WireGuard remplissant un rôle proche de celui d’un routeur IP, une séparation en architecture à deux couches (plan de contrôle / plan de données) est jugée efficace
- Le trafic de contrôle (messages de protocole) et le trafic de données (paquets chiffrés ou paquets utilisateur ordinaires) sont distingués, avec une conception des chemins et traitements adaptée à chacun
Système de simulation et de validation
- Possibilité de choisir un CPU virtuel (VProc) ou un softcore RTL (comme RISC-V), avec analyse progressive des paquets à partir de scénarios de trafic Wireguard réels
- Co-simulation HAL : avec peakrdl, génération automatique des registres de contrôle/état entre HW et SW ainsi que des API, ce qui permet de tester rapidement l’intégration logicielle et matérielle en conditions réelles
Open source et transparence
- L’ensemble de l’implémentation — circuits (gateware), logiciel embarqué, build, bitstream, etc. — est publié intégralement sous licence BSD-3-Clause
- Le projet insiste sur une structure ouverte permettant à la communauté de vérifier directement d’éventuelles portes dérobées, vulnérabilités ou questions de propriété juridique
Autres informations
- Le flux de développement, les explications détaillées par composant, les principales sources de référence et les modules externalisés peuvent être consultés dans le fichier README et les sous-répertoires (1.hw, 2.sw, 3.build, etc.)
- Le projet est financé par la fondation NLnet
Conclusion
- Ce projet vise à devenir un standard open source pour l’implémentation matérielle haute performance de Wireguard VPN, avec comme différenciateurs un faible coût, une grande transparence et une adoption rapide
- Bien qu’encore à un stade précoce de développement, il est appelé à jouer un rôle important dans les futures infrastructures réseau ouvertes, tant sur le plan de la sécurité que de l’accessibilité
Aucun commentaire pour le moment.