Mixage de pièces et CoinJoins expliqués
Table des matières
Introduction
Qu'est-ce que le mixage de pièces ?
Qu'est-ce qu'un CoinJoin ?
Comment fonctionne un CoinJoin ?
La confidentialité par la possibilité de déni
Pour conclure
Mixage de pièces et CoinJoins expliqués
Accueil
Articles
Mixage de pièces et CoinJoins expliqués

Mixage de pièces et CoinJoins expliqués

Avancé
Publié(e) Mar 25, 2020Mis à jour Feb 23, 2022
5m

Introduction

Le Bitcoin est souvent appelé argent numérique, mais il s'agit d'une comparaison approximative. Si Alice paie 10 dollars en liquide à Bob, ce dernier n'a aucune idée de l'origine de cet argent. S'il le donne ensuite à Carol, elle ne pourra pas savoir qu'Alice l'a eu en sa possession.
Le Bitcoin est différent en raison de sa nature publique. L'historique d'une pièce donnée (plus précisément, une sortie de transaction non dépensée ou UTXO) peut être trivialement consulté par quiconque. C'est un peu comme écrire le montant de la transaction et les noms des participants sur une facture à chaque fois qu'elle est utilisée.
Cela dit, le pseudonymat d'une adresse publique garantit que les identités des utilisateurs ne sont pas facilement révélées. Néanmoins, le bitcoin n'est pas complètement privé. L'analyse de la blockchain est 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 cryptomonnaies. Pour remédier à ce problème, des techniques permettant de dissocier les transactions ont fait surface au fil des ans.


Qu'est-ce que le mixage de pièces ?

D'une manière générale, le mixage de pièces peut faire référence à toute activité impliquant l'obfuscation des fonds en les substituant à d'autres. Cependant, dans l'espace des cryptomonnaies, le mixage de devises indique généralement un service fourni par un tiers. En général, les fournisseurs de services prennent les fonds des utilisateurs (et une petite commission) et renvoient des fonds qui n'ont aucun lien avec celles qui ont été envoyées. Ces services sont également connus sous le nom de tumblers ou mixers.

La sécurité et l'anonymat de ces services centralisés sont bien sûr discutables. Les utilisateurs n'ont aucune garantie que leur argent leur sera rendu par le mélangeur ou que les pièces rendues ne sont pas altérées d'une manière ou d'une autre. Un autre aspect à prendre en compte lors de l'utilisation d'un mixeur 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 recevoir en retour des fonds non liés.

Une approche probablement plus intéressante existe sous la forme de transactions CoinJoin, qui créent un degré significatif de déni plausible. Cela signifie qu'après un CoinJoin, aucune preuve ne peut lier un utilisateur avec certitude à ses transactions précédentes. De nombreuses solutions CoinJoin offrent une alternative décentralisée aux mélangeurs. Bien qu'il puisse y avoir un coordinateur 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 de Bitcoin Gregory Maxwell en 2013. Dans son fil de discussion, il donne un bref aperçu de la structure de ces transactions et de la façon dont les gains massifs en matière de confidentialité peuvent être réalisés sans aucune modification du protocole.
En substance, 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 veut 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 (allant à des adresses différentes).



Si nous considérons 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 quelques hypothèses différentes. Tout d'abord, nous verrons qu'un paiement a lieu : l'expéditeur envoie l'une des sorties à quelqu'un et se renvoie la différence. Comme ils ont utilisé quatre entrées, la sortie la plus importante est probablement pour le destinataire. Notez qu'il manque 0,01 BTC dans les sorties, ce qui correspond aux frais donnés au mineur.

Il est également possible que l'expéditeur veuille créer un grand UTXO à partir de petits UTXO, et qu'il consolide les petites entrées 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 peut comporter jusqu'à quatre parties différentes qui signent les entrées. Et là c'est le principe qui rend les CoinJoins efficaces.


Comment fonctionne un CoinJoin ?

L'idée est que plusieurs parties vont se coordonner pour créer une transaction, chacune fournissant des entrées et des sorties souhaitées. Comme toutes les entrées sont combinées, il devient impossible de dire avec certitude à quel résultat appartient l'utilisateur. Examinez le diagramme ci-dessous :



Nous avons ici quatre participants qui souhaitent rompre le lien entre les transactions. Ils coordonnent entre eux (ou par l'intermédiaire d'un coordinateur dédié) pour annoncer les entrées et sorties qu'ils souhaitent inclure.

Le coordinateur prendra toutes les informations, les transformera en transaction et demandera à chaque participant de signer avant de les diffuser sur le réseau. Une fois que les utilisateurs ont signé, la transaction ne peut pas être modifiée sans devenir invalide. Il n'y a donc aucun risque que le coordinateur s'enfuie 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 les UTXO pour en créer de nouveaux. Le seul lien entre l'ancien et le nouveau UTXO que nous avons est la transaction elle-même, mais bien sûr, nous ne pouvons pas distinguer les participants. Au mieux, nous pouvons dire qu'un participant a fourni l'une des entrées et qu'il est peut-être le nouveau propriétaire d'une sortie résultante.

Mais ce n'est en aucun cas garanti. Qui peut dire, lorsqu'il s'agit de la transaction ci-dessus, qu'il y a quatre participants ? Est-ce une seule personne qui 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 envoient de l'argent à de nouveaux participants ou reviennent à eux-mêmes ? On ne peut pas en être sûr.


La confidentialité par la possibilité de déni

Le simple fait que des implémentations de CoinJoin existent suffit à mettre en doute les méthodes utilisées pour analyser les transactions. Vous pouvez déduire qu'un CoinJoin a eu lieu dans de nombreux cas, mais vous n'êtes toujours pas en capacité de savoir qui possède les sorties. Au fur et à mesure qu'ils gagnent en popularité, l'hypothèse selon laquelle les entrées sont toutes détenues par le même utilisateur est affaiblie, impliquant une augmentation massive de la confidentialité dans l'écosystème dans son ensemble.

Dans l'exemple précédent, nous disons que la transaction avait un jeu d'anonymat de 4. Le propriétaire d'une sortie pourrait être n'importe lequel des quatre participants impliqués. Plus le jeu d'anonymat est grand, moins il est probable que les transactions puissent être liées à leur propriétaire initial. Heureusement, les récentes mises en œuvre de CoinJoin permettent aux utilisateurs de fusionner de manière fiable leurs entrées avec des dizaines d'autres, offrant ainsi un haut degré d'anonymat. Récemment, une transaction à 100 personnes a été exécutée avec succès.


Pour conclure

Les outils permettant de mélanger les pièces sont un ajout important à l'arsenal de tout utilisateur soucieux de sa vie privée. Contrairement aux améliorations proposées en matière de confidentialité (telles que les transactions confidentielles), elles sont compatibles avec le protocole tel qu'il existe aujourd'hui.

Pour ceux qui font confiance à l'intégrité et à la méthodologie de tiers, les services de mixage constituent une solution facile. Pour ceux qui préfèrent une alternative vérifiable et non custodial, les alternatives CoinJoin sont supérieures. Cela peut être fait à la main pour les utilisateurs techniquement compétents, ou en utilisant des outils logiciels qui résument les mécanismes les plus complexes. Il existe déjà une poignée de ces outils qui ne font qu'augmenter leur popularité à mesure que les utilisateurs s'efforcent d'améliorer leur confidentialité.