« Un des problèmes initiaux à tout système de paiement pair-à-pair est la double dépense. Comment éviter que des acteurs malveillants abusent du réseau de paiement, en dépensant plusieurs fois des mêmes unités compte, sans pour autant avoir recourt à une autorité centrale ?
Satoshi Nakamoto est venu résoudre ce problème avec son protocole Bitcoin, un réseau de paiement électronique pair-à-pair fonctionnant sans l’intervention d’une quelconque autorité centrale. Dans son White Paper, il nous explique que le seul moyen de confirmer l’absence d’une transaction, et donc de vérifier qu’il n’y a pas de tentative de double dépense, est d’être au courant de toutes les transactions effectuées sur le réseau de paiement distribué.
Pour que chaque utilisateur soit informé des transactions, celles-ci doivent être annoncées publiquement. Le système de paiement pair-à-pair proposé par le protocole Bitcoin a donc été rendu possible par une infrastructure complètement transparente et distribuée. Ainsi, quiconque dispose d’un nœud est en capacité de vérifier la chaine de signatures électroniques et l’historique de chaque pièce, depuis sa création par un mineur.
Cette transparence et cette distribution implique que chaque utilisateur du réseau Bitcoin est en capacité de retracer et d’observer les transactions de tous les autres usagers. La confidentialité n’est donc pas possible au niveau du paiement. Au lieu de cela, elle se fait au niveau de l’identification de la personne.
Au lieu d’associer chaque unité de compte à une identité (nom, prénom…), comme dans le système bancaire traditionnel, les bitcoins sont associés à une paire de clés. Les utilisateurs sont donc représentés anonymement par un identifiant cryptographique.
Ainsi, la perte de confidentialité sur Bitcoin s’opère lorsqu’un observateur est capable de faire un lien entre certains UTXO et certains utilisateurs. Lorsque ce lien est fait entre un usager et ses unités de compte, il est alors possible de suivre ses paiements et d’analyser l’histoire de ses bitcoins.
Le CoinJoin est une pratique qui permet de casser cet historique des UTXO afin d’apporter un certain niveau de confidentialité à l’utilisateur de Bitcoin.
Dans cet article nous allons étudier ensemble ce qu’est le CoinJoin, comment il fonctionne et comment l’utiliser de la bonne façon. Nous parlerons essentiellement de Whirlpool, l’implémentation de CoinJoin la plus efficace aujourd’hui selon moi, mais nous aborderons aussi les autres implémentations existantes. Je vais également vous parler des indicateurs permettant de calculer précisément le niveau de confidentialité de vos bitcoins. Pour ne pas rester uniquement dans la théorie, je vous montrerai concrètement comment réaliser une transaction CoinJoin de différentes manières. Enfin, nous étudierons les bonnes pratiques à observer pour ne pas perdre la confidentialité gagnée après une série de CoinJoin, et je vous présenterai les différents outils du portefeuille Samourai Wallet qui permettent cela. »
Article de Loïc Morel à lire sur pandul.fr