Un développeur connu dans la communauté Bitcoin sous le nom de b10c a publié le 27 mai une découverte qui étend les outils disponibles pour tout utilisateur pour vérifier l’authenticité du logiciel qu’il installe sur son nœud.
Comme le documente b10c dans son blob personnel, il a compilé le programme principal Bitcoin Core v31.0 à l’aide de Nix, un outil de création de logiciel indépendant du processus officiel, et obtenu un résultat octet par octet identique au binaire de version construit par le projet Bitcoin Core avec du plâtre
Jusqu’à ce résultat, le seul moyen de vérifier que le logiciel officiel n’avait pas été altéré était de reproduire le processus de compilation avec Guix, le même outil utilisé par l’équipe Bitcoin Core. Comme l’explique b10ccela signifiait que la confiance des utilisateurs dépendait d’une seule chaîne d’outils. Désormais, deux systèmes de build complètement indépendants arrivent exactement au même résultat, ce qui rend techniquement beaucoup plus difficile la détection d’une attaque logicielle silencieuse.
Une attaque silencieuse peut être exécutée de différentes manières – dans ce cas il s’agirait d’une attaque par livraison – et consiste à intercepter et modifier le logiciel avant qu’il n’atteigne l’utilisateur final, sans être détecté par l’utilisateur final. Dans ce cas, un attaquant compromet le référentiel de code, une dépendance logicielle tierce ou le compilateur lui-même (l’outil qui traduit le code). Si le compilateur officiel Bitcoin Core était compromis, il générerait nativement un binaire malveillant. L’équipe officielle le signerait numériquement sans savoir qu’il est infecté, car l’origine elle-même était compromise.
Ces types de failles de sécurité peuvent entraîner une perte totale de fonds pour ceux qui exploitent des nœuds ou des portefeuilles avec des logiciels compromis. La réalisation b10c attaque directement ce vecteur de risque au niveau du maillon le plus critique : le client Bitcoin lui-même.
b10c est un développeur indépendant qui contribue régulièrement à la recherche technique dans l’écosystème Bitcoin. Leurs travaux sont suivis de près par la communauté pour leur rigueur méthodologique et leur focalisation sur la sécurité protocolaire. Ce projet, selon le développeur lui-même, a duré trois ans.
Guix et Nix : deux cuisines qui préparent le même plat
Pour comprendre ce résultat, il convient d’expliquer quels sont ces outils. Lorsque les développeurs créent un programme comme Bitcoin Core, ils écrivent le code source (les instructions) puis le « compilent » : le transforment en fichier exécutable que l’utilisateur télécharge et installe. Ce processus de conversion est effectué par un outil de construction. Autrement dit, ils transfèrent les instructions du langage humain au langage machine.
Guix est l’outil que l’équipe Bitcoin Core utilise officiellement pour produire ses versions binaires. Nix est un outil différent, développé indépendamment, avec sa propre architecture et son propre fonctionnement. Que tous deux produisent exactement le même résultat à partir du même code équivaut à deux chefs, dans des cuisines séparées, suivant la même recette avec des ingrédients différents, servant un plat identique jusqu’au dernier gramme.
L’important est que si quelqu’un avait falsifié le logiciel à un moment donné du processus, que ce soit dans le code, dans l’outil de build ou sur le serveur de distribution, Les deux résultats ne coïncideraient pas. La coïncidence exacte est, en soi, la preuve que personne n’est intervenu.
Une vérification qui n’existait pas auparavant
Le mécanisme qui rend cette avancée possible s’appelle construction reproductible: Si deux personnes, utilisant des outils différents, compilent le même code source et obtiennent exactement le même résultat, il est pratiquement impossible que l’une d’elles ait introduit des modifications malveillantes sans que l’autre ne le détecte. b10c soutient que ce résultat fait de Nix le premier outil externe au projet capable de valider indépendamment les binaires Fonctionnaires principaux de Bitcoin.
Cependant, b10c prévient que cette réalisation est individuelle et ne fait pas encore partie d’une norme formelle adoptée par Bitcoin Core. Le projet ne dispose pas de processus établi pour intégrer plusieurs outils de vérification, ce qui signifie que la vérification croisée entre Guix et Nix dépend pour l’instant d’initiatives volontaires comme la vôtre.
Le développeur conclut que la prochaine étape naturelle serait de construire un modèle dans lequel la confiance dans le logiciel Bitcoin ne repose pas sur une seule chaîne d’outils, mais sur plusieurs vérifications indépendantes qui se confirment mutuellement – un principe qui, note-t-il, est déjà standard dans d’autres domaines de la sécurité informatique.