Qu'est-ce que le mixage de coins et CoinJoin ?

· 5 min read

On présente souvent le Bitcoin comme de la monnaie numérique, mais la comparaison prête à discussion. Si Alice règle 10 dollars en espèces à Bob, Bob ignore d'où vient cet argent. Et si Bob remet ensuite ce billet à Carol, celle-ci ne peut pas en déduire qu'il est d'abord passé entre les mains d'Alice.

Avec le Bitcoin, c'est tout l'inverse, en raison de sa nature ouverte. L'historique d'une pièce donnée – c'est-à-dire d'une sortie de transaction non dépensée, ou UTXO – peut être consulté sans difficulté par n'importe qui. Tout se passe comme si, à chaque utilisation d'un bitcoin, on inscrivait le montant et le nom du destinataire sur une facture.

Cela dit, l'absence de noms sur les adresses publiques empêche de révéler facilement l'identité des utilisateurs. Le Bitcoin n'est pas pour autant totalement privé. L'analyse de la blockchain devient de plus en plus sophistiquée et parvient à relier adresses et identités avec une efficacité croissante. Au-delà de ces techniques de surveillance, une cellule spécialement dédiée à cette tâche peut elle aussi démasquer les utilisateurs de cryptomonnaies. Pour s'en prémunir, des techniques permettant de couper le lien entre les transactions ont vu le jour au fil des années.

Qu'est-ce que le mixage de coins ?

De façon générale, le mixage de coins désigne les opérations visant à dissimuler des fonds en les échangeant contre d'autres fonds. Dans l'univers crypto, le terme renvoie toutefois le plus souvent à des services proposés par des tiers. Le prestataire récupère les coins de l'utilisateur (moyennant une petite commission) et lui renvoie d'autres coins, sans aucun lien avec ceux qui ont été envoyés. Ces services sont également appelés tumblers ou mixeurs.

La sécurité et la confidentialité de tels services centralisés soulèvent bien sûr des questions. Rien ne garantit que le mixeur restituera les fonds, ni que les coins reçus en retour ne traînent pas un historique de transactions problématique. Autre point à ne pas négliger : les adresses IP et les adresses Bitcoin peuvent être enregistrées par un tiers. Au final, l'utilisateur confie ses fonds à quelqu'un d'autre en espérant récupérer des coins sans passé.

L'approche des transactions CoinJoin est plus intéressante : elle crée un degré considérable de déni plausible. Autrement dit, une fois une transaction CoinJoin effectuée, il devient impossible de produire une preuve établissant avec certitude un lien entre un utilisateur et ses transactions antérieures. Beaucoup de solutions CoinJoin offrent ainsi une alternative plus décentralisée que les mixeurs : l'utilisateur n'a pas à renoncer à la garde de ses fonds, même si un coordinateur peut intervenir dans le processus.

Qu'est-ce que CoinJoin ?

Les transactions CoinJoin ont été présentées pour la première fois en 2013 par le développeur Bitcoin Gregory Maxwell. Dans son article, il décrivait brièvement la structure de ces opérations et la manière dont elles permettent un gain de confidentialité à grande échelle, sans aucune modification du protocole.

Sur le fond, CoinJoin consiste à réunir dans une seule transaction des entrées provenant d'utilisateurs différents. Avant d'expliquer comment (et pourquoi) cela fonctionne, revenons sur la structure de base d'une transaction.

Une transaction Bitcoin se compose d'entrées et de sorties. Lorsqu'un utilisateur veut effectuer une opération, il utilise ses UTXO comme entrées, définit les sorties et signe les entrées. Point important : chaque entrée est signée indépendamment, et l'utilisateur peut créer plusieurs sorties, c'est-à-dire envoyer des fonds vers différentes adresses.

Si l'on examine une transaction composée de quatre entrées (0,2 BTC chacune) et de deux sorties (0,7 BTC et 0,09 BTC), on peut formuler quelques hypothèses. La première : il s'agit d'un paiement, l'émetteur envoyant l'une des sorties à une autre personne et la monnaie à lui-même. Comme il mobilise quatre entrées, la sortie la plus élevée va probablement au destinataire. S'il manque 0,01 BTC dans le total, c'est qu'il s'agit des frais versés au mineur.

Il est tout aussi plausible que l'émetteur souhaite constituer un gros UTXO à partir de plusieurs petits : il regroupe alors les petites entrées pour atteindre les 0,7 BTC visés.

Une autre hypothèse découle du fait que chaque entrée est signée séparément. La transaction pourrait tout à fait avoir été construite de telle sorte que les entrées aient été signées par quatre parties distinctes. C'est précisément ce principe qui rend CoinJoin efficace.

Comment fonctionne CoinJoin ?

L'idée maîtresse est que plusieurs parties se coordonnent pour créer une transaction en communiquant leurs entrées et les sorties souhaitées. Une fois toutes les entrées regroupées, il devient impossible de dire avec certitude quelle sortie appartient à quel utilisateur. Le schéma ci-dessous illustre le processus :

Ici, quatre utilisateurs veulent rompre le lien entre leurs opérations. Ils se coordonnent entre eux (ou via un coordinateur) pour transmettre les entrées et les sorties qu'ils souhaitent inclure.

Le coordinateur rassemble toutes les informations, construit la transaction et la fait signer par chaque participant avant de la diffuser sur le réseau. Une fois signée, la transaction ne peut plus être modifiée sans être invalidée. Le risque que le coordinateur détourne les fonds est donc écarté.

La transaction fait office de boîte noire dans laquelle les coins sont mélangés. Pour créer de nouveaux UTXO, les anciens doivent être détruits. Le seul lien entre les anciens et les nouveaux est la transaction elle-même, mais à ce stade il n'est plus possible de distinguer les participants les uns des autres. Tout au plus peut-on affirmer que l'un d'eux a ajouté l'une des entrées et qu'il pourrait être le nouveau propriétaire de la sortie correspondante.

Même cela n'offre aucune certitude. Peut-on vraiment conclure de la transaction ci-dessus qu'il y a quatre participants ? Et si une seule personne envoyait des fonds vers quatre de ses propres adresses ? Ou si deux personnes réalisaient deux achats différents et se renvoyaient chacune 0,2 BTC ? Ou encore si quatre personnes envoyaient des fonds à des tiers ou à elles-mêmes ? Aucune de ces questions ne peut recevoir de réponse tranchée.

La confidentialité par le déni plausible

L'existence même des applications CoinJoin suffit à jeter le doute sur les méthodes utilisées pour analyser les transactions. On peut conclure que CoinJoin est employé dans de nombreuses opérations, mais on reste incapable de savoir à qui appartiennent les sorties. À mesure que ces applications ont gagné en popularité, l'hypothèse selon laquelle toutes les entrées appartiennent au même utilisateur s'est affaiblie – une avancée majeure pour la confidentialité dans l'ensemble de l'écosystème.

Dans l'exemple précédent, la transaction présente un ensemble d'anonymat de 4 : le propriétaire de la sortie peut être n'importe lequel des quatre utilisateurs impliqués. Plus cet ensemble est grand, plus il est difficile de relier une transaction à son propriétaire d'origine. Heureusement, grâce aux dernières implémentations de CoinJoin, les utilisateurs peuvent combiner leur entrée avec celles de dizaines d'autres sans avoir besoin de faire confiance à qui que ce soit, ce qui assure un niveau élevé de déni plausible. Récemment, une transaction réunissant 100 personnes a été menée à bien.

En résumé

Les outils de mixage de coins sont des instruments précieux, accessibles à tous les utilisateurs soucieux de leur vie privée. Contrairement à d'autres améliorations en matière de confidentialité (les Confidential Transactions, par exemple), ils peuvent être utilisés sans rien changer à l'état actuel du protocole.

Pour ceux qui font confiance à l'intégrité et aux méthodes de tiers, les services de mixage offrent une solution simple. Pour ceux qui préfèrent des alternatives vérifiables et sans dépôt de garde, CoinJoin est nettement supérieur. Ces opérations peuvent être réalisées manuellement par des utilisateurs à l'aise techniquement, ou confiées à des logiciels qui évitent d'avoir à manipuler des mécanismes complexes. Plusieurs outils de ce type existent déjà, et leur popularité grandit à mesure que les utilisateurs réclament davantage de confidentialité.