Qu’est-ce que la Bitcoin Improvement Proposal BIP 0069 ?
Cet article est disponible dans les langues suivantes :
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 et mise en œuvre. Les BIP portent généralement sur des mises à jour importantes (les corrections de bugs et autres évolutions mineures ne sont pas soumises à ce type de discussions à grande échelle).
Intéressons-nous à un BIP précis, 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 sont 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 les traverse. Elles servent essentiellement à enregistrer où les bitcoins sont envoyés et d’où ils proviennent. Les entrées correspondent à des liens vers les sorties de transactions précédentes, appelées sorties de transaction non dépensées (UXTO). Cela peut sembler complexe, alors prenons un exemple.
Comparons les transactions Bitcoin à des paiements en espèces. Par exemple, vous souhaitez acheter quelque chose à un ami pour 15 BTC. Auparavant, vous avez reçu deux transactions de 10 BTC chacune, comme si vous aviez deux billets de 10 dans votre portefeuille. La provenance de chaque billet est inscrite au crayon au dos. 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 dans 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 beaucoup 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 grosses. Cela créerait donc beaucoup plus d’entrées et de sorties.
Le problème de sécurité
Le problème vient de la façon dont les entrées et sorties sont triées. Il n’existe pas de norme pour enregistrer ces données : chaque wallet peut utiliser sa propre méthode de classement. Certains listent d’abord les entrées de paiement puis les sorties pour la monnaie, ce qui permet à des observateurs d’obtenir des informations sur les fonds présents dans les wallets de l’expéditeur et du destinataire. D’autres trient les entrées selon la date d’ajout au wallet, etc. Cela signifie que l’analyse des données peut révéler des schémas propres à un wallet ou un service donné.
Il existe un autre risque potentiel lors du développement de wallets crypto. Kristov Atlas, l’auteur de BIP 0069, a imaginé un scénario où un attaquant ayant accès au code d’un wallet (un développeur, par exemple) le modifie pour que les entrées et sorties soient triées selon les bits de la clé privée. Cette modification permettrait à l’attaquant de retrouver la clé privée en analysant simplement les transactions, et cet « implant » serait très difficile à repérer.
Comment résoudre ce problème ?
La vulnérabilité peut être éliminée si les entrées et sorties des transactions sont triées de façon à ne laisser apparaître aucun schéma. BIP 0069 propose une méthode de tri non déterministe, c’est-à-dire qui ne peut pas être déduite à partir des données d’entrée. De plus, cela ne nécessite pas d’algorithme complexe : il suffit d’organiser 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.