Logo Zéphyrnet

Naviguer dans les différentes implémentations de CoinJoin

Date :

Ceci est un éditorial d'opinion de Thibaud Maréchal, contributeur au projet de portefeuille Bitcoin axé sur la confidentialité Wasabi Wallet.

"Diviser pour régner" est une stratégie militaire éprouvée pour diviser un groupe de personnes en les mettant en désaccord et en les combattant au lieu de s'unir contre un ennemi commun. Wasabi et Samourai, deux portefeuilles bitcoin populaires avec différentes implémentations CoinJoin se battent depuis de nombreuses années. JoinMarket, une troisième implémentation de CoinJoin, a également été impliqué dans des débats animés avec d'autres développeurs de confidentialité.

En savoir plus sur la confidentialité des bitcoins et les CoinJoins est devenu assez difficile avec le drame en cours. A qui faire confiance ? Comment peut-on vérifier par soi-même ? Tout est très flou. Qu'est-ce que cela apporte aux precoiners, aux bitcoiners occasionnels et aux puristes ? Confusion, peur, incertitude et doute (FUD). L'état de la confidentialité des bitcoins est embarrassant avec tout ce drame perpétuel qui effraie les nouveaux utilisateurs. Un temps précieux est perdu par les développeurs, les éducateurs et les utilisateurs réguliers qui feraient probablement mieux de faire autre chose que d'essayer de suivre le drame.

Il est évident que personne ne s'accorde sur "comment faire correctement les CoinJoins", et encore moins sur la manière dont les CoinJoins doivent être mis en œuvre pour optimiser la confidentialité des utilisateurs et bloquer l'efficacité de l'espace sur le réseau Bitcoin ? Quels sont les compromis entre les différentes implémentations ? Certaines implémentations sont-elles carrément défectueuses ? Comment les CoinJoins « traversent-ils le gouffre » des premiers utilisateurs aux utilisateurs grand public alors que des milliards de personnes se tourneront vers le bitcoin dans les années à venir ?

Examinons maintenant CoinJoins en posant des questions fondamentales et en soulevant certaines hypothèses pour construire une sorte de modèles mentaux, qui seront utiles pour évaluer différentes implémentations dans de futurs articles.

Tous les CoinJoins ne sont pas égaux

L'efficacité de Blockspace doit être prise en compte pour s'assurer que les transactions CoinJoin évoluent à mesure que Bitcoin est utilisé par davantage de personnes à travers le monde. Ceci est rarement considéré comme une priorité absolue. Toute conception de CoinJoin qui ignore la rareté de l'espace de bloc spamme inutilement la chaîne de blocs tout en accumulant une dette technique, qui sera difficile à rembourser à mesure que de plus en plus d'utilisateurs CoinJoin à l'avenir. Avoir une empreinte minimale sur la blockchain est un objectif qui semble très raisonnable à viser : un petit nombre de transactions pour atteindre un niveau d'anonymat acceptable semble idéal.

  • Quel est le niveau d'anonymat acceptable ?
  • Que signifie même l'anonymat dans le contexte de la confidentialité des bitcoins ?
  • Comment les conceptions particulières de CoinJoin gèrent-elles la rareté de l'espace de bloc ?

Récupérez votre vie privée

L'anonymat dans le bitcoin signifierait qu'il n'y a pas de caractéristiques exceptionnelles ou inhabituelles qui rendraient une transaction donnée remarquable par rapport aux autres transactions du grand livre. Cela, bien sûr, n'est pas intentionnel sur le réseau Bitcoin, qui est un système pseudonyme où les pièces (UTXO, qui signifie Unspent Transaction Output en termes techniques) ne sont par défaut pas fongibles en raison de l'historique unique des transactions.

Les CoinJoins ajoutent un niveau d'anonymat au réseau bitcoin en rompant les liens entre les entrées et les sorties des transactions, ce qui rend principalement les UTXO résultants indiscernables les uns des autres. Il existe d'autres heuristiques que les sociétés d'analyse de chaîne utilisent pour surveiller le réseau bitcoin, telles que la propriété commune des intrants, les dépenses personnelles, les montants arrondis ou l'analyse temporelle, pour n'en nommer que quelques-unes, qui peuvent ou non être masquées par les CoinJoins.

Les CoinJoins aident les bitcoiners à récupérer leur vie privée mais ne sont pas la solution à tout. Si la confidentialité est comprise comme le choix de partager des informations sur soi-même, une grande confidentialité peut être obtenue grâce aux CoinJoins, mais il est essentiel de choisir la bonne implémentation.

  • Quel est mon objectif de confidentialité en utilisant CoinJoins ?
  • De quelle heuristique une implémentation CoinJoin me protège-t-elle ?
  • Quels sont les risques que je veux éviter ?

Nombre de participants

Les implémentations CoinJoin existantes ont des manières très différentes d'améliorer la confidentialité. Indépendamment de chaque conception d'implémentation de CoinJoin, l'ensemble d'anonymat (une mesure du niveau d'anonymat) semble être le moyen le plus traditionnel d'évaluer le degré de confidentialité que l'on obtient d'un CoinJoin. Il existe d'autres moyens qui seront abordés dans d'autres articles. Les hypothèses sont qu'un ensemble d'anonymat élevé est atteint avec une grande transaction CoinJoin ou qu'il est atteint sur plusieurs transactions CoinJoin plus petites. Ces deux paramètres sont tous les deux importants, mais y en a-t-il un qui est plus important que l'autre ?

En termes d'efficacité de l'espace de blocs, l'hypothèse serait que la réalisation d'un grand ensemble d'anonymat avec une seule très grande transaction qui compte de nombreux participants est meilleure que plusieurs très petites transactions avec quelques participants.

  • Un seul grand CoinJoin ou plusieurs petits CoinJoins sont-ils meilleurs pour la confidentialité ?
  • Comment cela peut-il être vérifié honnêtement et rigoureusement ? À quel point est-ce trop petit pour un CoinJoin ?
  • Quelle est la bonne métrique pour évaluer le degré de confidentialité que vous pouvez obtenir d'un CoinJoin ?
  • Quel est l'espace de bloc le plus efficace en ce qui concerne la taille et le nombre de CoinJoins pour récupérer votre vie privée ?
  • Est-il réaliste de s'attendre à ce que les coins participent à plusieurs CoinJoins au fil du temps alors que de plus en plus de personnes commencent à utiliser les CoinJoins ? Combien de tours CoinJoin est-ce suffisant ou trop ?

En termes simples, les CoinJoins permettent aux bitcoiners de récupérer leur vie privée en leur donnant un déni plausible. La plausibilité est une mesure de probabilité. Quelle est la probabilité que vos bitcoins aient été dépensés ou simplement déplacés vers une autre adresse que vous contrôlez toujours ? Quelle est la probabilité qu'une entrée soit liée à une sortie donnée ?

De toute évidence, plus les probabilités sont faibles pour de nombreuses options, plus le déni plausible que vous obtenez en tant que hodler est meilleur. Le déni plausible est difficile à préserver car les erreurs sont faciles à commettre. Les sorties de changement sont souvent problématiques pour les bitcoiners qui se soucient de la confidentialité et sont souvent une source de discussions controversées et de critiques. Pourquoi la sortie de changement est-elle un sujet si controversé dans CoinJoins ?

Modifier la sortie

Il s'agit de liens déterministes. Si les transactions bitcoin avaient un spectre de confidentialité, à une extrémité se trouverait une transaction avec un déni plausible absolu, ce qui signifie 0% de chance de connaître le lien entre les entrées et les sorties. Ceci est également appelé caractère aléatoire ou entropie dans un CoinJoin. L'hypothèse est que plus l'entropie est aléatoire ou élevée, mieux c'est. À l'autre extrémité, il y aurait une transaction avec des liens déterministes à 100 % entre sa seule entrée et sa seule sortie.

De manière non intuitive, une entropie élevée ne signifie pas nécessairement qu'une transaction offre une bonne confidentialité. Une transaction avec trois entrées et trois sorties de montants égaux a techniquement une entropie de 100 %, ce qui signifie qu'il n'y a aucun moyen de distinguer chaque sortie les unes des autres ; et pourtant, il y a 33.33 % de chances que chaque entrée soit liée à une sortie particulière. Une entropie élevée ne signifie pas nécessairement un bon déni plausible.

Le changement a presque toujours un lien déterministe très élevé avec sa transaction précédente. En d'autres termes, il ne fait guère de doute qu'une sortie de changement n'est pas liée à la transaction précédente qui l'a dépensée. Cela peut être un problème de confidentialité considérable si une sortie de modification donnée devait être dépensée conjointement avec d'autres entrées anonymes après CoinJoins (bien que des exceptions puissent s'appliquer dans certains cas). Ceci est généralement appelé consolidation UTXO et peut être fatal à votre vie privée s'il est fait naïvement.

Les sorties de changement peuvent anonymiser les sorties qui ont acquis un certain déni plausible de CoinJoins si elles sont dépensées ensemble. Les erreurs sont courantes pour les bitcoiners et parfois la réalisation arrive trop tard, annulant des années d'améliorations diligentes de la confidentialité en une seule dépense. Comment se débarrasser de ce problème de sortie de changement?

Les implémentations CoinJoin existantes ont trois façons de gérer les sorties de changement : isoler la modification dans un autre portefeuille qui n'est pas CoinJoining, inclure la sortie de modification dans le même portefeuille qui est CoinJoining ou se débarrasser de la sortie de modification en n'ayant aucune sortie de modification. Cette dernière semble être la plus recommandée en termes de confidentialité et d'efficacité de l'espace de bloc, mais des recherches supplémentaires sont nécessaires pour valider ou rejeter cette hypothèse.

  • Un score d'entropie élevé est-il suffisant pour qualifier un CoinJoin comme bon pour votre vie privée ?
  • Est-il préférable d'isoler les sorties de changement dans un autre portefeuille ou doit-il être entièrement supprimé ?
  • Une sortie de changement est-elle toujours mauvaise pour votre vie privée ?

Dénominations des pièces

Se débarrasser des sorties de changement dans CoinJoins nécessite que les dénominations des pièces soient variables dans un CoinJoin. En d'autres termes, les entrées enregistrées dans un CoinJoin donné ne peuvent pas avoir une taille fixe comme 0.1 BTC, sinon il devient impossible (ou du moins très difficile) de consommer des entrées sans créer de sorties de changement car la plupart des UTXO n'ont pas de nombres ronds (c'est-à-dire 0.19572394 BTC où 0.09572394 BTC serait le changement dans une dénomination de pièce fixe de 0.1 BTC CoinJoin).

Changer les sorties peut être dangereux pour votre vie privée, n'oubliez pas ? Avoir plusieurs tailles pour les entrées et les sorties dans un CoinJoin semble être une mauvaise idée car cela nous rapproche des liens déterministes entre les entrées et les sorties, n'est-ce pas ? Eh bien, oui et non. Ça dépend. Si un CoinJoin a un petit nombre de participants (c'est-à-dire peu d'entrées et peu de sorties), alors différentes dénominations sont une mauvaise idée. Mais que se passe-t-il si un grand nombre d'entrées et de sorties sont incluses dans un CoinJoin donné ?

Dans un grand CoinJoin, plusieurs dénominations peuvent apporter un niveau élevé de déni plausible à chaque sortie résultante sans créer de sorties de changement et nécessiter des transactions supplémentaires, ce qui est une utilisation très efficace de l'espace de bloc. Il semble que de nombreuses cases pourraient être cochées à ce stade.

  • Est-il préférable d'avoir des dénominations de pièces fixes ou variables dans un CoinJoin ?
  • Quelle doit être la taille d'un CoinJoin pour que les dénominations variables aient un sens ?
  • Les dénominations de pièces variables sont-elles le meilleur moyen de se débarrasser de la sortie de changement dans CoinJoins ?

Il va sans dire que l'interconnectivité des tours CoinJoin ne devrait en aucun cas être tolérable, que les dénominations des pièces soient différentes ou que le CoinJoin soit une transaction grande ou petite, n'est-ce pas ? Bon, là encore, il y a une nuance importante à comprendre.

Interconnectivité des rondes Coinjoin

Il est affirmé que l'enregistrement des entrées d'anciens CoinJoins partagés dans de nouveaux CoinJoins est déconseillé dans tous les cas. Les participants d'anciens CoinJoins mutuellement partagés ne semblent pas bénéficier du mélange dans d'autres CoinJoins. Cela semble préjudiciable à la vie privée et est souvent critiqué.

Que se passe-t-il si un CoinJoin est volumineux et que certaines entrées enregistrées proviennent de plusieurs autres CoinJoins, chacun étant également en aval de plusieurs autres CoinJoins ? Dans un tel cas, les participants qui remixent ensemble améliorent encore leur vie privée malgré leur passé partagé CoinJoin. Si chaque CoinJoin est suffisamment grand, les participants ne sont pas tenus de remixer plusieurs fois, bien qu'ils le puissent s'ils souhaitent augmenter davantage leurs ensembles d'anonymat.

Si de nombreux grands CoinJoins entrelacés sont impliqués, l'ensemble d'anonymat qui en résulte devrait fournir de nombreux démentis plausibles, malgré le partage d'anciens CoinJoins comme origine des fonds.

  • L'interconnectivité des tours CoinJoin, qui partage les anciens CoinJoins mutuels, est-elle une mauvaise chose en soi ?
  • Quelle doit être la taille d'un CoinJoin pour qu'un remix avec d'autres entrées passées soit considéré comme sûr ?

Nœud complet personnel

Devriez-vous exécuter votre propre nœud complet bitcoin lorsque vous participez à CoinJoins ? En surface, cela semble être une excellente idée, et c'est généralement le cas. Certaines implémentations de CoinJoin le permettent, tandis que d'autres l'exigent carrément. D'autres ne vous permettront même pas d'utiliser votre propre nœud complet. Est-ce à condamner absolument ? Si vous avez lu jusqu'à présent, vous devez savoir que la réponse est nuancée et ouvre un trou de lapin profond à explorer plus tard.

L'exécution de votre propre nœud complet entraîne des compromis en termes de convivialité et peut ne pas ajouter beaucoup de protection de la vie privée si tous les utilisateurs ne le font pas. L'exécution de votre propre nœud peut même vous donner un faux sentiment de sécurité et de confidentialité si peu de participants CoinJoin le font, ce qui peut être profondément nocif. Si Tor est utilisé comme moyen anonyme de CoinJoin (et nous le laisserons comme ça pour l'instant), alors l'utilisation d'un nœud complet de confiance pour diffuser la transaction CoinJoin peut convenir par défaut. Beaucoup de nuances, et bien sûr, ne vous fiez pas, vérifiez.

Il y a quelques questions essentielles à se poser pour ne pas tomber dans le piège du signalement des vertus de la vie privée.

  • L'implémentation de CoinJoin permet-elle d'exécuter des nœuds complets, les exige-t-elle par défaut ou ne les autorise-t-elle pas ?
  • Si les nœuds complets personnels ne sont pas obligatoires, quels sont les boucliers de confidentialité en place ? c'est-à-dire Tor, filtres de blocs, etc…
  • Si j'exécute mon propre nœud complet, mais que je m'attends à ce que la plupart des utilisateurs utilisent un nœud de confiance par défaut pour CoinJoin, comment cela affecte-t-il ma confidentialité ? Le coordinateur peut-il me désanonymiser ?

En matière de confidentialité, il est toujours important de comprendre ce que vous essayez de protéger et contre qui. Exécuter un nœud complet et l'utiliser avec votre propre portefeuille est la bonne façon d'utiliser le bitcoin car il vous permet de vérifier le solde de votre portefeuille et de diffuser des transactions sur le réseau sans faire confiance à personne. Mais quand il s'agit de CoinJoins, il y a généralement un coordinateur en charge. Que fait le coordinateur et comment est-il sélectionné ? Continuer à lire.

Le coordonnateur

Le coordinateur CoinJoin est chargé de faire enregistrer par chaque participant ses entrées et sorties, et de signer la transaction collaborative avant de la diffuser. La plupart des implémentations de CoinJoin utilisent par défaut un coordinateur central, qui est un point de défaillance unique. Jusqu'à présent, cela a été un compromis accepté dans la plupart des communautés bitcoin. Un coordinateur CoinJoin central peut-il échouer ? Absolument. D'autres implémentations permettent à n'importe qui d'être un coordinateur pour chaque CoinJoin différent, bien qu'il existe d'autres ensembles de compromis ici qui seront discutés plus tard.

Les coinjoins étant non dépositaires, aucune perte de fonds ne pourrait survenir si un coordinateur faisait défaut. Le coordinateur ne doit jamais en savoir plus que ce que tout le monde sait publiquement sur le réseau bitcoin. Pourquoi? Si un coordinateur en sait plus que ce qui est publiquement disponible, un coordinateur CoinJoin devient un pot de miel avec des données hautement sensibles qui peuvent être exploitées contre les bitcoiners faisant confiance au service.

Vous ne devriez jamais faire confiance à un coordinateur CoinJoin. Si un coordinateur CoinJoin ne peut pas être mauvais, bon. Si cela peut être mal, ce sera finalement, par erreur, omission, coercition ou malhonnêteté pure et simple.

Un exemple de données utilisateur sensibles serait les XPUB, qui divulguent indéniablement toutes les informations sur un portefeuille, ses adresses, y compris les transactions bitcoin passées, actuelles et futures. Un autre exemple serait le rapport entre les utilisateurs exécutant leurs propres nœuds complets et les utilisateurs faisant confiance au nœud complet du coordinateur pour diffuser des CoinJoins, car cela pourrait anonymiser les utilisateurs exécutant leurs propres nœuds, et donc connaître de manière déterministe les liens entre leurs entrées et leurs sorties. C'est encore un autre sujet nuancé, qui nécessiterait une enquête et une discussion plus approfondies.

  • Le coordinateur en sait-il plus que ce qui est publiquement disponible sur le réseau bitcoin ?
  • Les utilisateurs divulguent-ils des données sensibles au coordinateur, telles que leur XPUB ou exécutent-ils ou non leurs propres nœuds complets ?
  • Le coordinateur affirme-t-il que les utilisateurs devraient lui faire confiance en utilisant des mécanismes de défense juridique ? (ie warrant canaries, arbitrage réglementaire, etc…)

Frais

En bout de ligne, qui paie quoi dans CoinJoins ? Ces transactions bitcoin peuvent être coûteuses et parfois les structures de frais ne sont pas claires pour les bitcoiners. Il est difficile de savoir combien vous coûtera une bonne confidentialité ou même si vous en retirez de la confidentialité. Certaines implémentations de CoinJoin permettent à une seule entrée d'acheter sa confidentialité à d'autres entrées qui ne participent que gratuitement pour augmenter leur propre ensemble d'anonymat. Être payé à CoinJoin ? Avec patience, oui.

Certains modèles reposent sur des frais partagés où seuls certains UTXO paient des frais tandis que d'autres ne le font pas. D'autres modèles reposent sur l'invitation d'un nombre toujours croissant de nouvelles entrées claires (pas encore mélangées) pour financer les CoinJoins existants afin de remixer les entrées qui n'ont pas des niveaux d'anonymat suffisamment élevés. Certains modèles semblent insoutenables à long terme tandis que d'autres sont naïfs ou bien trop chers pour la plupart des utilisateurs.

Et de quels frais parle-t-on ? Eh bien, généralement, les entrées participant à CoinJoins paient à la fois des frais de coordinateur ou des frais de preneur (les frais de service pour obtenir un certain niveau d'anonymat) et les frais du réseau bitcoin. En particulier les modèles CoinJoin, ces frais sont supprimés dans certaines circonstances. L'économie de CoinJoins est un terrier de lapin profond qui nécessite une enquête plus approfondie pour une compréhension beaucoup plus approfondie.

  • Qui paie quoi dans un CoinJoin ? Quels sont tous les frais ?
  • Quelles sont les motivations du coordinateur CoinJoin ?
  • Tous les tours CoinJoin sont-ils payés ou y a-t-il un remix gratuit ?

Après avoir lu jusqu'à présent, l'espoir est que les bitcoiners qui recherchent des CoinJoins n'auraient pas nécessairement toutes les réponses, mais les bonnes questions à poser. Un modèle mental ou un cadre pour évaluer différentes implémentations de CoinJoin peut être très utile pour quiconque envisage d'utiliser CoinJoins pour récupérer sa vie privée sur Bitcoin. Faire le tri dans le bruit des médias sociaux nécessite une honnêteté intellectuelle et le bon système d'évaluation rigoureusement appliqué.

Ceci est un article invité de Thibaud Maréchal. Les opinions exprimées sont entièrement les leurs et ne reflètent pas nécessairement celles de BTC Inc ou Magazine Bitcoin

spot_img

Dernières informations

spot_img