Introduction
Bitcoin est souvent appelé argent numérique, mais il s’agit d’une comparaison discutable. Si Alice paie dix dollars en espèces à Bob, Bob n'a aucune idée d'où vient l'argent. S'il le donne plus tard à Carol, elle sera incapable de déduire qu'Alice en était autrefois en possession.
Bitcoin est différent en raison de sa nature publique inhérente. L’historique d’une pièce donnée (plus précisément, une sortie de transaction non dépensée ou UTXO) peut être observé de manière triviale par n’importe qui. C’est un peu comme écrire le montant de la transaction et les noms des participants sur une facture à chaque fois que celle-ci est utilisée.
Cela dit, le pseudonymat d’une adresse publique garantit que l’identité des utilisateurs ne sera pas facilement révélée. Pourtant, Bitcoin n’est pas complètement privé. L'analyse de la blockchain devient de plus en plus sophistiquée et est capable de relier de plus en plus efficacement les adresses aux identités. Parallèlement à d’autres techniques de surveillance, une entité dédiée peut désanonymiser les utilisateurs de crypto-monnaie. Pour remédier à cela, des techniques permettant de dissocier les transactions ont fait leur apparition au fil des années.
Qu’est-ce que le mélange de pièces ?
D'une manière générale, le mélange de pièces de monnaie pourrait faire référence à toute activité impliquant la dissimulation de fonds en les remplaçant par d'autres. Cependant, dans le domaine des crypto-monnaies, le mélange de pièces désigne généralement un service fourni par un tiers. En règle générale, les fournisseurs de services acceptent les pièces des utilisateurs (moyennant une somme modique) et renvoient les pièces qui n'ont aucun lien avec celles envoyées. Ces services sont également appelés gobelets ou mélangeurs.
La sécurité et l’anonymat de ces services centralisés sont bien entendu discutables. Les utilisateurs n’ont aucune garantie que leur argent leur sera restitué par le mélangeur ou que les pièces restituées ne seront pas entachées d’une manière ou d’une autre. Un autre aspect à prendre en compte lors de l’utilisation d’un mélangeur est que les adresses IP et Bitcoin peuvent être enregistrées par un tiers. En fin de compte, les utilisateurs abandonnent le contrôle de leurs fonds dans l’espoir de récupérer ceux qui ne sont pas liés.
Une approche sans doute plus intéressante existe sous la forme de transactions CoinJoin, qui créent un degré important de déni plausible. C’est-à-dire qu’après un CoinJoin, aucune preuve ne peut relier avec certitude un utilisateur à ses transactions précédentes. De nombreuses solutions CoinJoin offrent une alternative décentralisée aux mélangeurs. Même si un coordinateur peut être impliqué, les utilisateurs n’ont pas besoin de sacrifier la garde de leurs fonds.
Qu’est-ce qu’un CoinJoin ?
Les transactions CoinJoin ont été initialement proposées par le développeur Bitcoin Gregory Maxwell en 2013. Dans son fil de discussion, il donne un bref aperçu de la façon dont ces transactions sont structurées et de la manière dont des gains massifs en matière de confidentialité peuvent être obtenus sans aucune modification du protocole.
Essentiellement, un CoinJoin implique la combinaison des entrées de plusieurs utilisateurs en une seule transaction. Avant d’expliquer comment (et pourquoi), examinons la structure d’une transaction de base.
Les transactions Bitcoin sont constituées d’entrées et de sorties. Lorsqu'un utilisateur souhaite effectuer une transaction, il prend ses UTXO comme entrées, spécifie les sorties et signe les entrées. Il est important de noter que chaque entrée est signée indépendamment et que les utilisateurs peuvent définir plusieurs sorties (vers des adresses différentes).

Si nous examinons une transaction donnée composée de quatre entrées (0,2 BTC chacune) et de deux sorties (0,7 BTC et 0,09 BTC), nous pouvons faire différentes hypothèses. La première est que nous observons un paiement : l’expéditeur envoie l’un des résultats à quelqu’un et se rend de la monnaie. Puisqu’ils ont utilisé quatre entrées, la sortie la plus importante est probablement destinée au destinataire. Notez qu’il nous manque 0,01 BTC dans les sorties, ce qui correspond aux frais versés au mineur.
Il est également possible que l'expéditeur souhaite créer un grand UTXO à partir de plus petits, afin de consolider des entrées plus petites pour obtenir le résultat souhaité de 0,7 BTC.
Une autre hypothèse que nous pouvons faire est basée sur le fait que chaque entrée est signée indépendamment. Cette transaction pourrait avoir jusqu'à quatre parties différentes signant les entrées. Et c’est là que réside le principe qui rend CoinJoining efficace.
Comment fonctionne un CoinJoin ?
L’idée est que plusieurs parties se coordonneront pour créer une transaction, chacune fournissant les entrées et les sorties souhaitées. Comme toutes les entrées sont combinées, il devient impossible de dire avec certitude quelle sortie appartient à quel utilisateur. Considérez le schéma ci-dessous :

Ici, nous avons quatre participants qui souhaitent rompre le lien entre les transactions. Ils se coordonnent entre eux (ou via un coordinateur dédié) pour annoncer les entrées et sorties qu'ils souhaitent inclure.
Le coordinateur prendra toutes les informations, les transformera en une transaction et fera signer chaque participant avant de la diffuser au réseau. Une fois que les utilisateurs ont signé, la transaction ne peut plus être modifiée sans devenir invalide. Il n’y a donc aucun risque que le coordinateur se retrouve avec les fonds.
La transaction sert en quelque sorte de boîte noire pour mélanger les pièces. N'oubliez pas que nous détruisons efficacement les UTXO pour en créer de nouveaux. Le seul lien dont nous disposons entre les anciens et les nouveaux UTXO est la transaction elle-même, mais, bien sûr, nous ne pouvons pas faire de distinction entre les participants. Au mieux, nous pouvons dire qu'un participant a fourni l'une des entrées et est peut-être le nouveau propriétaire d'un résultat résultant.
Mais même cela n’est en aucun cas garanti. Qui peut dire, en regardant la transaction ci-dessus, qu’il y a quatre participants ? Est-ce qu'une seule personne envoie ses fonds à quatre de ses propres adresses ? Deux personnes effectuant deux achats distincts et renvoyant chacune 0,2 BTC à leur propre adresse ? Quatre personnes envoyant à de nouveaux participants, ou retournant à elles-mêmes ? Nous ne pouvons pas en être sûrs.
La vie privée par le déni
Le fait même que des implémentations de CoinJoin existent suffit à jeter le doute sur les méthodes utilisées pour analyser les transactions. Vous pouvez en déduire qu’un CoinJoin a eu lieu dans de nombreux cas, mais vous ne savez toujours pas à qui appartiennent les sorties. À mesure qu’ils gagnent en popularité, l’hypothèse selon laquelle les entrées appartiennent toutes au même utilisateur s’affaiblit – un grand pas en avant pour la confidentialité dans l’écosystème plus large.
Dans l’exemple précédent, nous disons que la transaction avait un niveau d’anonymat de 4 – le propriétaire d’une sortie pouvait être l’un des quatre participants impliqués. Plus l’ensemble d’anonymat est grand, moins il est probable que les transactions puissent être liées à leur propriétaire d’origine. Heureusement, les implémentations récentes de CoinJoin permettent aux utilisateurs de fusionner en toute confiance leurs entrées avec des dizaines d'autres, offrant ainsi un haut degré de déni. Récemment, une transaction impliquant 100 personnes a été exécutée avec succès.
Pensées finales
Les outils permettant de mélanger des pièces constituent un ajout important à l’arsenal de tout utilisateur soucieux de sa vie privée. Contrairement aux mises à niveau de confidentialité proposées (telles que les transactions confidentielles), elles sont compatibles avec le protocole tel qu’il est aujourd’hui.
Pour ceux qui font confiance à l’intégrité et à la méthodologie de tiers, les services de mixage sont une solution simple. Pour ceux qui préfèrent une alternative vérifiable et non dépositaire, les alternatives CoinJoin sont supérieures. Celles-ci peuvent être réalisées manuellement pour des utilisateurs techniquement compétents, ou à l'aide d'outils logiciels qui éliminent les mécanismes les plus complexes. Il existe déjà une poignée de ces outils dont la popularité ne cesse de croître à mesure que les utilisateurs s’efforcent d’obtenir une plus grande confidentialité.

