CoinJoin et opacité des transactions bitcoin

Le protocole Bitcoin consiste en des transactions entièrement publiques sur la blockchain, ainsi tout utilisateur peut connaître les adresses réceptrices et émettrices d’une transaction. Les utilisateurs n’ont pas nécessité de s’identifier mais reçoivent une clé publique visible sur la blockchain. L’utilisateur n’est alors connu publiquement que par son pseudonyme.

Deux points concernant la protection des information sont critiquable dans ce modèle.

  • Si certaines de ces adresses sont liées à des identités réelles, la nature de la transaction ainsi que l’identité des utilisateurs est révélée. Ceci représente un atteinte à la protection des ses données privées et digitales. Si il reste fort improbable de connaître l’identité d’une personne avec pour unique information sa clé publique, les gros acteurs pouvant implémenter de l’AI derrière nos activités web (Google en premier) peuvent plus facilement déduire des identités réelles.
  • Chaque transaction nécessite une ou plusieurs entrées et sorties, en référence aux adresses à partir desquelles les bitcoins sont envoyés. Les entrées symbolisent la provenance des fonds et les sorties leur destination. Cela pose un autre problème de confidentialité, car toutes les adresses d’entrée appartiennent généralement au même utilisateur : l’expéditeur de la transaction. Si il s’avérait que parmi l’ensemble d’adresse d’entrée, une liée à une identité réelle venait à être découverte, l’ensemble des adresses seraient alors connues. C’est pourquoi la bonne pratique serait d’utiliser une adresse unique pour chaque transaction.

Explication d’une transaction bitcoin classique sans CoinJoin

Lors d’une transaction, chaque entrée utilise la sortie d’une autre transaction. Si une sortie est considérée comme non utilisée alors elle représente des bitcoin en circulation. Le système de transactions de Bitcoin est entièrement basé sur les sorties non dépensées, appelées couramment UTXO (Unspent Transaction Outputs). Lorsque des bitcoin auparavant en circulation seront achetés, alors les UTXO seront consommés et de nouveaux UTXO vont être créés.

Transaction Bitcoin classique

Développons l’exemple d’une transaction classique entre un utilisateur A possédant 50 bitcoin et souhaitant en transférer 30 à un utilisateur B.

  • L’utilisateur A consomme un UTXO (entrée 1) de 50 bitcoins et créer deux UTXO : sortie 1 (30 bitcoin) et sortie 2 (20 bitcoin).
  • L’utilisateur B recevra alors les 30 bitcoin par la sortie A et l’utilisateur A récupérera ses 20 bitcoin par la sortie 2.

Le concept de CoinJoin

Annonce du lancement de CoinJoin sur le compte Twitter @blockchain

CoinJoin, proposé en 2013 par Gregory Maxwell, développeur de Bitcoin Core et Blockstream , est conçu pour résoudre ces deux problèmes. L’idée est de permettre de brouiller les pistes bitcoins et supprime l’hypothèse selon laquelle toutes les adresses d’entrée appartiennent au même utilisateur.

CoinJoin permet à plusieurs utilisateurs de regrouper les entrées et sorties de plusieurs transactions en une seule. Cette transaction dépense des bitcoins de différentes adresses à différentes adresses. Aucune des adresses d’envoi ne paye aucune des adresses de réception: il n’y a pas de lien entre elles.

Contrairement aux méthodes utilisées par Monero et par ZCash qui rendent les opérations totalement opaques par des opérations internes au protocole, CoinJoin agit en tant que surcouche et ne nécessite donc d’aucune modification des règles de consensus.

Transaction Bitcoin avec CoinJoin

Développons l’exemple d’une transaction CoinJoin entre un utilisateur A possédant 50 bitcoin et un utilisateur B possédant 30 bitcoin. Dans soucis d’anonymat de la transaction, trois entrées et trois sorties sont crées.

  • Entrée 1 : B envoie 20 bitcoin à A (sortie 1)
  • Entrée 2 : A envoie 30 bitcoin à B (sortie 2) et récupère 20 bitcoin (sortie 3)
  • Entrée 3 : B envoie 10 bitcoin à A (sortie 1)

Grâce à cette méthode, les transactions s’avèrent être brouillées comme en démontre les deux sorties de 30 bitcoins que rien ne différencient. Il convient d’admettre que plus l’opération est répétée à de multiples reprises avec de nombreux utilisateurs, plus les transactions sont brouillées.

Ainsi nous pouvons résumer les deux avantages principaux :

  • Réductions des frais, au lieu d’avoir n transactions il n’en existe qu’une, dont les frais sont partagés entre les différents participants.
  • Augmentation de la confidentialité, le regroupement de plusieurs participants permet de dissocier les origines, destinations et montants au sein de la transaction.

Wasabi Wallet, version décentralisée

L’équipe de Wasabi Wallet, en collaboration avec des utilisateurs de Reddit, a réalisé la plus grande transaction groupée sur Bitcoin (BTC). Ce sont ainsi 100 transactions qui ont été agrégées par « CoinJoin ».

Selon Adam Fiscor, le directeur technique (CTO) de zkSNACKs (qui a développé le Wasabi Wallet), c’est actuellement « le plus grand CoinJoin qui peut être fait sur le réseau bitcoin ».

Wasabi Wallet fut lancé en octobre 2018 dans le but de rendre CoinJoin plus accessible et pratique pour un utilisateur classique. Ajoutant des fonctionnalités de sécurité, de confidentialité et d’expérience utilisateur en avril 2019, les statistiques github du projet indiquent déjà plus de 33.000 téléchargements d’utilisateurs. La société affirme avoir rendu plus de 30.000 bitcoins échangeable via sa plate-forme, ce qui représente 281,2 millions de dollars au cours actuel, ces chiffres mettent en évidence l’importance croissante de CoinJoin.

Le Wasabi Wallet est la version décentralisée de CoinJoin, c’est ce qui en fait sa particularité et son autorisation.

Le 22 mai 2019, les autorités néerlandaises ont décidé de fermer le site Bestmixer.io dans le cadre d’une opération conjointe avec les services de police de plusieurs pays européens, notamment la France, la Lettonie et le Luxembourg. Suite aux préoccupations soulevées à l’origine par la société de sécurité en ligne McAfee en 2018, le FIOD a affirmé que le service avait été utilisé pour le blanchiment d’argent.

McAfee a également publié son propre rapport sur l’action de la FIOD contre Bestmixer, décrivant les connexions possibles du site avec la cybercriminalité et son utilisation comme un moyen facile de blanchir de l’argent.

La technique de «blanchiment de bitcoins» décrite par McAfee a été utilisée de la même manière que le protocole CoinJoin, qui permet à plusieurs utilisateurs de regrouper les transactions en un seul groupe, brouillant les fonds et masquant les liens entre les adresses d’envoi et de réception. La principale différence entre les deux réside dans le fait que Bestmixer était un service de garde centralisé et explicitement annoncé comme un moyen de blanchir des Bitcoin à des fins illégales, tandis que le mélange de CoinJoin est géré par l’utilisateur et présenté uniquement comme un mécanisme renforçant la confidentialité.

Quelques statistiques des transactions CoinJoin

Selon une étude publiée par Longhash le 29 avril 2019, l’utilisation relative de CoinJoin parmi toutes les transactions en bitcoins a triplé en un an, se situant actuellement à 4,09%.

La société est désormais responsable de plus d’une transaction sur 25 en bitcoin utilisant la technologie CoinJoin.

CoinJoin n’est pas la seule manière de faire circuler de crypto de manière privée. Nous listons ici quelques alternatives.

MimbleWimble

Mimblewimble se base sur les idées de Blockstream Confidential Transaction et ajoute, toujours pour le bitcoin, la possibilité de combiner les transactions les unes avec les autres, de supprimer les « outputs » qui ne sont plus dépensables (spent UTXO) pour ne garder que les « outputs » non dépensés réduisant de ce fait considérablement la taille totale de la chaîne.

Cette capacité à réduire la taille de la blockchain est nécessaire dans le cadre des transactions confidentielles : le fait de masquer le montant des transactions crée de nouvelles informations liées à la transaction et qui permettent de s’assurer que le montant de l’output ne se comporte pas comme un montant négatif. Ce qui permettrait une attaque visant à créer de la monnaie.

MimbleWimble permet donc aux nouveaux arrivants sur le réseau de ne pas télécharger l’historique des outputs passées (dépensées) et de supprimer les « inputs » pour ne conserver que les « unspent outputs » et les inputs de création monétaire.

Les solutions crypto à part entière : Monero et Zcash

Monero

Monero possède un ensemble de fonctionnalités qui en font une des crypto-monnaies les plus privée à ce jour. Voici ce qui rend Monero si privé : adresses discrètes, signatures ring (mélange les clés publiques des utilisateurs afin d’éliminer la possibilité d’identifier un utilisateur particulier), implémentation de Kovri I2P et équipe de développement de premier ordre.

Adresses discrètes

Les transactions sur le réseau Monero sont effectuées avec des adresses à usage unique conçues pour masquer la destination d’une transaction.

Disons qu’un utilisateur A envoie 15 XMR à l’adresse du portefeuille public de l’utilisateur B. Lorsqu’elle génère la transaction dans son portefeuille, le protocole Monero génère automatiquement une adresse unique (adresse d’intermédiaire anonyme) à laquelle envoyer les 15 XMR.

À ce stade, l’utilisateur B peut accéder aux 15 XMR dans l’adresse du portefeuille via la clé de dépense privée de son portefeuille.

Notez que les adresses de portefeuille de A et de B ne sont jamais directement liées dans cette transaction. C’est ainsi que les adresses discrètes fournissent des liens incompatibles entre l’émetteur et le destinataire.

Les signatures Ring

Pour masquer l’origine d’une transaction, le réseau Monero utilise des signatures ring pour effectuer le mélange des transactions. Lorsqu’une transaction Monero est générée, le protocole mélange automatiquement la transaction de l’expéditeur avec d’autres entrées de transaction utilisables sur le réseau.

Le nombre d’entrées mixtes, également appelé «niveau de mixage», peut être spécifié lors de la génération d’une transaction, et un niveau de mixage supérieur permet d’obtenir une transaction plus sécurisée avec des frais plus élevés.

Pour quelqu’un qui visualise la blockchain Monero, l’une de ces entrées peut être l’entrée de l’expéditeur réel. Monero va encore plus loin dans les signatures Ring avec Ring Ring (Ring Confidential Transactions).

RingCT masque le montant de XMR dans chaque transaction en appliquant une fonction mathématique de range proof à la transaction.

Dans ce système, les observateurs réseau et publics de la blockchain peuvent vérifier la validité du transfert XMR, mais seuls l’expéditeur et le destinataire peuvent voir le montant réel du transfert XMR. C’est ainsi que l’implémentation Ring Ring des signatures rend les transactions sur Monero introuvables.

L’implémentation Kovri I2P

Kovri est lié à I2P (Invisible Internet Project), une couche réseau open source permettant une utilisation hermétique du réseau, en acheminant le trafic vers des nœuds de volontaires à travers le monde.

Kovri est spécialement conçu pour chiffrer le trafic Monero et le router vers des nœuds I2P. En utilisant Kovri, l’adresse IP ne peut pas être liée aux transactions Monero, offrant ainsi un degré de confidentialité encore plus important.

Enfin, la caractéristique principale de Monero est le manque de confidentialité. Cela signifie que toutes les transactions sur le réseau Monero sont privées par défaut.

Décentralisation

Premièrement, Monero n’ayant pas réalisé d’ICO ni de pre-mine, les développeurs n’ont pas eu à miner avant d’ouvrir le projet au public. En conséquence, Monero a une distribution de token plus décentralisée que la plupart des autres crypto-monnaies.

Deuxièmement, Monero a programmé des forks rigides deux fois par an, ce qui permet aux développeurs du projet de modifier l’algorithme de consensus PoW pour contrer les mineurs ASIC. Les mineurs ASIC sont des puces matérielles optimisées pour hash un algorithme de consensus spécifique.

Monero rend ainsi risquée la centralisation de la puissance d’exploitation minière dans de grandes batteries de serveurs ASIC car elles pourraient être rendues obsolètes à la suite d’un nouvel algorithme de consensus. Monero incite les mineurs à créer des nœuds dans le monde entier, ce qui se traduit par une répartition géographique décentralisée du projet.

Zcash

Zcash est un fork du protocole Bitcoin avec l’ajout d’une couche de confidentialité via une preuve cryptographique appelée zk-SNARKs.

Privacy

Zcash assure la confidentialité via une implémentation de zk-SNARKs, qui signifie «Zero Knowledge Succinct Non-Interactive Argument of Knowledge».

Avec zk-SNARKs, Zcash peut vérifier les transactions sur la blockchain sans révéler leurs origines, destinations et montants transférés.

zk-SNARKS fonctionne comme une preuve mathématique qui permet à un «prouveur» de prouver l’authenticité d’une déclaration à un «vérificateur» sans révéler aucune information spécifique sur la déclaration autre son authenticité.

Fongibilité

Contrairement à Monero, Zcash possède deux types d’adresses : transparente et privée.

Les adresses de portefeuille transparentes commencent par t , alors que les adresses de portefeuille privées commencent par z .

Comme la fongibilité ne nécessite aucune connaissance de l’historique financier précédent, seules les transactions entre deux adresses z peuvent être considérées comme fongibles.

Notez que le déplacement d’une ZEC d’une adresse t vers une adresse z peut être utilisé comme une méthode de «protection» pour effacer l’essentiel de l’historique financier. Cela signifie que la ZEC peut devenir fongible après avoir été déplacée dans un portefeuille privé. Ainsi, Zcash peut être décrit comme une crypto-monnaie semi-fongible.

Décentralisation

Comme Monero, Zcash n’a pas réalisé d’ICO ni de pre-mine. Cependant, les fondateurs de Zcash ont crées une société appelée Zerocoin Electric Coin Company et ont reçu un financement à hauteur d’un million par des investisseurs privés.

Pour permettre aux investisseurs de la société d’avoir un ROI, Zcash distribue 20% des récompenses minières à ses fondateurs sur une période de quatre ans. La stratégie lucrative de la fondation Zcash est depuis longtemps critiquée pour sa structure centralisée.

Zcash est un fork de Bitcoin, mais utilise un algorithme de consensus PoW différent appelé Equihash. Bitmain a annoncé la publication d’un mineur d’ASIC compatible avec Equihash, qui ouvre l’avenir de Zcash à une centralisation similaire à celle de Bitcoin. Zcash a répondu avec l’intention d’étudier les effets potentiels de l’extraction minière d’ASIC sur le réseau.

Une révolution financière à venir…

Aujourd’hui, dans le cadre d’une transaction financière classique c’est à dire bancaire, PayPal etc… le service en charge est en mesure de tracer les données de la transaction, les habitudes d’achats ainsi que la balance bancaire finale.

Ainsi, dans ce système classique, l’utilisateur n’est qu’un gestionnaire de ses fonds mais n’en est pas le seul propriétaire.

L’idée développée par Wasabi Wallet et CoinJoin n’est donc pas de recréer la privacy traditionnelle des transactions bancaires mais plutôt de développer une privacy totale pour l’utilisateur contre Wasabi lui même. Ainsi, dans ce modèle, l’utilisateur rend sa transaction privée pour les autres utilisateurs mais aussi pour Wasabi qui se voit être incapable de tracer ni les montants, ni les destinataires.

Ce système autonome ouvre la voie à une nouvelle gouvernance économique : celle par l’utilisateur.

En effet, ce modèle où l’utilisateur est 100% autonome, propriétaire et gestionnaire de ses fonds sans qu’une entité puisse disposer d’un droit de regard sur son patrimoine est inédit. Cette amélioration du protocole Bitcoin permet ainsi de supprimer tout type d’intermédiaire entre deux utilisateurs. L’exchange classique ne dispose plus d’accès aux transactions de ses utilisateurs, les frais sont considérablement réduits et le dispositif est autonome.

Un risque averé est celui des attaques Sybil. Plusieurs participants à une transaction CoinJoin peuvent en réalité être une seule et même entité, surveillant un participant particulier. Si neuf entrées et sorties sur dix appartiennent à un seul agent NSA envoyant des bitcoins à lui-même, il sera en mesure relier la sortie restante à son destinataire

Toutefois, malgré quelque faiblesse nous pouvons dire que plus il y aura d’utilisateurs de CoinJoin, meilleure sera la privacy et plus rapides seront les transactions.

CoinJoin remet déjà en discussion le monde bancaire existant dans la validation d’une transaction entre deux utilisateurs. CoinJoin étant également open source, il est inévitable que des améliorations seront crées pour rendre son système de plus en plus autonome.

Néanmoins cette révolution pose le problème des règles KYC/AML. Un utilisateur étant à même d’envoyer ses fonds à un autre sans qu’un régulateur puisse en contrôler ni l’origine ni la provenance représente un danger. TEchniquement il peut être impossible ou très compliqué pour un état de bloquer ou interdire son utilisation .

Conclusion

Ce système (et les solutions similaires) sont potentiellment amenées à créer les bases d’une économie mondiale nouvelle où l’utilisateur est souverain et non l’organisme bancaire ou étatique. D’un point de vue strictement technique, sans rentrer dans des considérations légales, si cette technologie est utilisée de manière décentralisée elle est aussi virtuellement impossible à bannir. C’est là la seule condition.