Qu’est-ce que la Bitcoin Improvement Proposal BIP 0069 ?
Un BIP, ou Bitcoin Improvement Proposal, est une proposition d’amendement destinée à améliorer le code de Bitcoin. Tout utilisateur peut soumettre ce type de proposition ; après discussion et approbation par la communauté, elle peut être adoptée puis mise en œuvre. Les BIP concernent généralement des mises à jour importantes (les correctifs de bugs et autres modifications mineures ne sont pas soumis à de larges discussions).
Intéressons-nous à un BIP en particulier, le numéro 0069, et voyons pourquoi il est essentiel. Cette mise à jour vise à renforcer la sécurité des transactions Bitcoin en les rendant plus difficiles à analyser.
Quelles données peuvent être analysées ?
Pour bien comprendre ce que propose BIP 0069, il faut savoir comment les actifs sont transférés sur le réseau Bitcoin. Chaque transaction comporte des entrées et des sorties, mais il est important de noter qu’aucun flux réel ne circule entre elles. Elles servent essentiellement à enregistrer l’origine et la destination des bitcoins. Les entrées correspondent aux liens avec les sorties des transactions précédentes, appelées sorties de transaction non dépensées (UTXO). Cela peut sembler complexe, alors prenons un exemple.
Comparons les transactions Bitcoin à des paiements en argent liquide. Par exemple, vous souhaitez acheter quelque chose à un ami pour 15 BTC. Auparavant, vous avez reçu deux transactions de 10 BTC chacune, ce qui revient à avoir deux billets de « 10 » dans votre portefeuille. L’origine de chaque billet est inscrite au crayon dessus. Ce sont les entrées de votre nouvelle transaction. Puisqu’il y a deux billets, il y a donc deux entrées.
Vous pouvez maintenant prendre ces billets, écrire « à Pierre de la part de Charles » dessus et les remettre à votre ami. Ce message devient la première sortie de la transaction. Comme votre ami doit vous rendre la monnaie, il prend 5 BTC de son portefeuille, écrit « monnaie pour Pierre de la part de Charles » — créant ainsi une autre sortie pour la monnaie — et vous la remet.
Nous avons volontairement simplifié le processus, et seules trois coupures sont impliquées dans la transaction. Vous pourriez recevoir vos 20 BTC en « petite monnaie », ce qui générerait une multitude de petites transactions au lieu de deux plus grosses. Cela créerait donc bien plus d’entrées et de sorties.
Le problème de sécurité
Le problème réside dans la façon dont les entrées et sorties sont triées. Il n’existe aucune norme pour enregistrer ces données : chaque wallet peut utiliser sa propre méthode de classement. Certains listent d’abord les entrées utilisées pour le paiement, puis les sorties pour la monnaie rendue, ce qui permet à un observateur d’obtenir des informations sur les fonds présents dans les wallets de l’expéditeur et du destinataire. D’autres classent les entrées selon la date d’ajout au wallet, et ainsi de suite. Cela signifie que l’analyse des données peut révéler des schémas spécifiques à un wallet ou à un service donné.
Un autre risque concerne le développement de wallets crypto. Kristov Atlas, l’auteur du BIP 0069, évoque un scénario hypothétique dans lequel un attaquant ayant accès au code d’un wallet (un développeur, par exemple) le modifie pour que l’ordre des entrées et sorties dépende des bits de la clé privée. Cette manipulation permettrait à l’attaquant de retrouver la clé privée en analysant simplement les transactions, et cet « implant » serait très difficile à détecter.
Comment résoudre ce problème ?
On peut corriger cette vulnérabilité en triant les entrées et sorties des transactions de façon à ce qu’aucun schéma ne puisse être identifié. Le BIP 0069 propose une méthode de tri non déterministe, c’est-à-dire qu’elle ne peut pas être déduite à partir d’une donnée d’entrée. De plus, cela ne requiert pas d’algorithme complexe : il suffit de classer les données par ordre lexicographique (ordre alphabétique croissant).
Tangem Wallet applique déjà cette méthode. Oui, elle est disponible sur iOS et Android.