Les plateformes d’échanges subissent une pression croissante de leurs utilisateurs et des régulateurs qui leur demandent de prouver qu’elles gèrent correctement les fonds de leurs clients. Après des années de nombreux piratages d’envergure (dont plusieurs n’ont pas été détectés immédiatement), les entreprises qui veulent conserver la confiance de leurs clients doivent être en mesure de prouver leurs réserves en bitcoins.
Malheureusement, les quelques plateformes qui ont pris l’initiative de prouver la possession de leurs bitcoins à des tiers utilisent leurs propres solutions maison pour générer ces preuves. Cette diversité d’approche rend difficile la vérification pour ceux qui souhaiteraient l’effectuer pour eux-mêmes, car elle implique de devoir se familiariser individuellement avec chaque système, ce qui nécessite des connaissances techniques spécifiques.
Chez Blockstream, nous avons travaillé sur une solution visant à définir un standard de bonnes pratiques de Proof of Reserves pour l’industrie, et qui soit largement compatible avec la façon dont la plupart des plateformes stockent les fonds de leurs utilisateurs. Un BIP a déjà été soumis à la mailing list bitcoin-dev et nous venons d’ouvrir le code source de l’outil afin d’obtenir des retours.
Comment tout a commencé
À l’origine, il s’agissait de développer une solution pour les entreprises utilisant le réseau Liquid pour qu’elles puissent prouver leurs réserves de Liquid bitcoin (L-BTC) à des auditeurs externes. Mais nous avons rapidement réalisé qu’il y avait d’importants axes d’amélioration dans les différents procédés utilisés par les plateformes pour leurs réserves de bitcoins et que notre logiciel avait des applications plus larges que le réseau Liquid.
L’approche traditionnelle
L’absence de méthodologie standardisée pour la Proof of Reserves de bitcoins entraîne deux problèmes majeurs :
- Mauvaise accessibilité : comme nous l’avons déjà dit, chaque plateforme ayant sa propre approche du problème, les différentes solutions adoptées pour la Proof of Reserves sont techniques et ont peu en commun. Les utilisateurs doivent faire l’effort de comprendre comment vérifier les réserves de toutes les plateformes avec lesquelles ils sont impliqués. La tendance est donc à davantage de confiance et moins de vérifications.
- Risques de sécurité : prouver des réserves implique que le personnel des plateformes démontre la possession des clés privées associées à leurs portefeuilles. Cela implique souvent le déplacement de tous les fonds vers un nouveau set d’adresses, ce qui représente un vecteur d’attaque majeur pour des assaillants qui tentent de compromettre le stockage.
Comment fonctionne la Proof of Reserves
L’outil Proof of Reserves de Blockstream s’est construit par itérations sur les méthodes testées et approuvées dans le secteur, et non en partant de zéro avec une solution flambant neuve.
Plus simplement, Proof of Reserves permet à une plateforme de prouver combien de bitcoins elle pourrait dépenser, sans avoir à générer une transaction “live” ou de s’exposer aux risques de déplacements de fonds.
Avec cet outil, une plateforme construit d’abord une transaction unique qui dépense tous les bitcoins dans les UTXO de la plateforme, et ajoute un input supplémentaire invalide. En incluant cet input invalide, l’intégralité de la transaction devient elle aussi invalide et sera rejetée sur le réseau si elle est diffusée. Cependant, la transaction est élaborée pour être toujours utilisée comme une preuve explicite de tous les UTXO bitcoin dépensables par la plateforme.
Les données de la transaction peuvent être partagées avec quiconque souhaite vérifier les réserves. L’auditeur n’a qu’à importer les données dans son propre client _Proof of Reserves _pour confirmer la totalité des avoirs de la plateforme et les adresses associées. La solution est facile à utiliser et accessible par tous ceux qui savent lancer une application en CLI.
Les dernières technologies en action
Proof of Reserves est écrit en Rust et prend en charge le portefeuille de Bitcoin Core ainsi que celui de Trezor ; d’autres intégrations sont en cours (Ledger arrive bientôt !).
Proof of Reserves _a vu le jour grâce à l’utilisation de _Partially Signed Bitcoin Transactions (PSBT), une technologie conçue par notre équipe de recherche et nous en sommes très heureux.
Ce qu’il reste à faire
Actuellement, les preuves construites grâce à l’outil obligent les plateformes à révéler leur liste entière d’UTXO. Si elle est partagée publiquement, elle peut dévoiler trop d’informations sur les opérations financières de chaque plateforme. Cependant, avec Liquid, la somme de toutes les valeurs peut être prouvée et divulguée sans révéler le montant de chaque UTXO, grâce à l’utilisation de Confidential Transactions. Pour le moment, notre outil _Proof of Reserves _est destiné à la création de preuves dans le cadre d’audit des plateformes, et nous avons déjà quelques idées1 sur la façon d’améliorer sa confidentialité et de le rendre utilisable par tous à l’avenir.
S’impliquer
_Preuve de Réserves _va être déployé comme une fonctionnalité standard sur Liquid dans le but de prouver la possession de L-BTC. Nous fournirons aussi un support technique à tous les membres du réseau Liquid pour les aider à l’utiliser dans leurs opérations sur le réseau principal bitcoin. Envoyez-nous un email pour savoir comment devenir un membre du réseau Liquid.
Ressources
- Le projet sur Github: https://github.com/ElementsProject/reserves
- Référence du BIP : https://github.com/bitcoin/bips/pull/756
- Proposition originale sur la mailing list bitcoindev : https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-January/016633.html
- Rendre les plateformes d’échanges bitcoin transparentes - Christian Decker, James Guthrie, Jochen Seidel and Roger Wattenhofer. 20ème Symposium Européen sur la Recherche en Sécurité Informatique (ESORICS), Vienne, Autriche, septembre 2015. (en anglais). ↩