Un aperçu des techniques d'analyse de la blockchain anonyme

Dans l'un des articles précédents , nous avons passé en revue les technologies des crypto-monnaies anonymes. Aujourd'hui, nous examinons le problème de l'anonymisation d'un autre côté et donnons un aperçu des méthodes les plus célèbres pour analyser les blockchains anonymes aujourd'hui. Dans cet article, nous nous concentrerons sur l'analyse des transactions blockchain elles-mêmes, en contournant la possibilité de connecter les adresses de portefeuille avec leurs adresses IP au niveau du protocole p2p, car dans ce cas, les techniques sont assez monotones. Pour comprendre cet article, une connaissance superficielle de l'appareil des crypto-monnaies populaires suffit au niveau de la compréhension des entrées et sorties d'une transaction.

image

En 2009, lorsque le bitcoin vient d'apparaître, il était considéré comme un moyen de transferts anonymes, car il n'était pas possible de comparer la clé publique du portefeuille avec son propriétaire. Mais ces temps sont passés, et aujourd'hui les techniques sont connues pour analyser le graphique de paiement et identifier les pools d'adresses de presque tous les sites du réseau: échanges, pools d'exploration de données, échangeurs et marchés darknet.

Presque toutes ces techniques utilisent les mêmes approches - d'abord, à l'aide d'heuristiques simples, les adresses sont combinées en grappes, puis déterminées empiriquement si chaque grappe appartient à un site particulier. Vous pouvez en savoir plus à ce sujet dans Une poignée de Bitcoins: caractériser les paiements entre hommes sans nom .

Étant donné que la confidentialité des transferts n'est toujours pas l'objectif principal du bitcoin, une demande a commencé à apparaître pour trouver des moyens de garder secret le graphique de leurs paiements. Les premières tentatives ont été des «commutateurs à bascule» - des services qui envoient des transactions au nom de plusieurs utilisateurs, ce qui nécessitait la confiance dans le mélangeur lui-même. Pour réduire les risques liés à la confiance dans les services centralisés, le célèbre protocole CoinJoin est apparu, qui ne permettait pas à un tiers (à savoir le mélangeur lui-même) de prendre le contrôle de l'argent des utilisateurs. Au fur et à mesure que le développement de cette idée a commencé à apparaître, les crypto-monnaies, pour lesquelles l'essentiel est la confidentialité des transferts. Dans Coinmarketcap, vous pouvez maintenant en trouver trois - Monero, Dash et ZCash, dont la capitalisation totale au moment de la rédaction est d'environ 1,8 milliard de dollars. Ensuite, nous examinerons de plus près les moyens d'analyser ces chaînes de blocs.

Coinjoin


Le protocole CoinJoin a été proposé par Greg Maxwell en 2013 en remplacement des mélangeurs existants, qui ne nécessitent pas le transfert de leurs bitcoins à un tiers. L'essence du protocole est que plusieurs utilisateurs sont rejetés pour effectuer leurs paiements en une seule transaction.

image

Dans cet exemple, Ernie et Barack décident d'intervenir et d'effectuer des virements vers Charlie et Donald avec une transaction conjointe. Comme on le voit sur la photo, il devient difficile de comprendre qui a décidé de payer pour la campagne de Donald-Ernie ou Barack.

Mais dans ce cas, «difficile» ne signifie pas «impossible». L'une des premières techniques (et assez réussie) pour désanonymiser les transactions CoinJoin était CoinJoin sudoku . L'auteur suggère d'analyser différentes combinaisons d'entrées et de sorties, qui au total donnent la même valeur, en supposant qu'elles peuvent correspondre à un paiement. En pratique, cela peut ressembler à ceci (Source - https://www.coinjoinsudoku.com/advisory/ ):

image

Dans l'ouvrage «Privacy-Enhancing Overlays in Bitcoin», les auteurs sont allés plus loin et ont examiné l'attaquant - un attaquant qui était activement impliqué dans les transactions. Si l'attaquant a participé à un certain nombre de transactions conjointes, il peut exclure ses entrées et sorties, ce qui le rend plus facile à analyser.

Mais le principal point de «méfiance» dans ce schéma est sa nature centralisée. Les utilisateurs doivent choisir un service «de confiance» à ces fins, qui peut simplement enregistrer les journaux de pétrissage qui le traversent (bien qu'il ne puisse pas voler d'argent).

Entre autres choses, l'utilisateur lui-même doit également prendre des mesures pour réduire le risque de désanonymisation de son paiement. Il est extrêmement important de ne pas utiliser la même adresse pour les paiements plus d'une fois, car cela facilitera grandement l'analyse de l'attaquant de la chaîne de transactions.

Cependant, bien que ce soit l'une des premières tentatives et que le modèle d'anonymat soit plutôt faible, au cours de l'année écoulée, le nombre de ces transactions a triplé et a atteint 4,09% du nombre total de paiements (selon longhash.com ), ce qui indique une demande croissante de confidentialité dans Réseaux Bitcoin.

Dash


Dash (anciennement DarkCoin) → fork de Bitcoin. Les transactions dans Dash ne sont pas privées par défaut, pour effectuer des paiements privés dans Dash, il existe une fonction d'envoi privé. Elle a hérité du principe de CoinJoin, ainsi que de la plupart de ses défauts.

Dash divise les exits utilisateur en deux types: réguliers et privés. Les premiers peuvent être utilisés pour effectuer une transaction transparente et les seconds sont nécessaires pour participer au mixage. Lors de la conversion des sorties ordinaires, la transaction qui les dépense les décompose en dénominations de la forme 1.00001 DASH, 0.100001 DASH, etc., et transfère les adresses uniques aux adresses contrôlées par l'utilisateur. Après cela, l'expéditeur sélectionne le masternode avec lequel la transaction sera liée. Lorsqu'un nombre suffisant de participants est recruté, une transaction est formée et envoyée à la signature de chacun des expéditeurs. Après cela, elle est prête à envoyer au réseau.

Un exemple de transaction PrivateSend dans Dash qui utilise trois adresses d'expéditeur et de destinataire différentes. Source - Dash détaillé :

image

Contrairement à CoinJoin, l'utilisateur se débarrasse de la nécessité de s'assurer que sa clé publique n'apparaît pas deux fois dans l'une de ces confusions. Cependant, cela protège faiblement contre le suivi des sources - vous pouvez suivre de manière banale la chaîne des "conversions" jusqu'à une sortie réelle, d'où vous pouvez utiliser l'une des méthodes standard pour analyser les sources de transactions pour le bitcoin. Empiriquement, il a été révélé que si les sorties ont un ancêtre commun, il s'agit très probablement de l'expéditeur lui-même.

La dénomination des sorties de transactions privées complique les attaques comme CoinJoin sudoku, mais ne les protège pas complètement. Avec certaines heuristiques, cet avantage peut être annulé.

Le fait que le protocole de mixage fasse partie de Dash et élimine le besoin d'utiliser des services tiers n'élimine pas le besoin de confiance dans les masternodes sélectionnés. Personne ne peut garantir que le propriétaire de l'un des masternodes ne collecte pas de journaux sur les demandes de transaction de son côté.

Comme avec CoinJoin, l'utilisateur peut rencontrer un manque de liquidités pour pétrir son transfert. Dans ce cas, il a été conseillé aux utilisateurs de sélectionner plusieurs masternodes pour la formation de la transaction, mais cela n'augmente que le risque de tomber sur un propriétaire sans scrupules.

Maintenant, le Web critique activement le modèle de confidentialité de Dash. Vous pouvez trouver des messages sur Reddit sur la façon dont quelqu'un a réussi à deanonymiser une partie des transactions d'envoi privées. Par exemple, dans ce billet, l' auteur affirme qu'au cours des 15 derniers jours, il a réussi à suivre environ 13% des transactions jusqu'à leur source.

ZCash


ZCash est apparu en 2016 en tant qu'implémentation du protocole ZeroCash et est devenu connu de tous grâce à l'utilisation de zkSNARKs de preuve de connaissance zéro. ZCash n'oblige pas à n'utiliser que des transactions confidentielles - la plupart des transactions sur son réseau sont transparentes et ont hérité leur appareil du bitcoin.

Pour utiliser la fonction de paiement confidentiel, l'utilisateur doit transférer la partie nécessaire des fonds vers le pool dit protégé. Ainsi, les transactions sécurisées peuvent être divisées en trois types, selon le stade du pool protégé:

  • Transaction de blindage. Transaction de l'espace public à la piscine protégée. Ici, l'expéditeur, contrairement au destinataire, ne se cache pas, mais vous pouvez voir combien d'argent va «dans l'ombre».
  • Transaction privée. Transaction à l'intérieur d'une piscine blindée. Ici, ni l'expéditeur, ni le destinataire, ni le montant du virement ne sont connus. En fait, on sait seulement que des fonds sont dépensés dans cette transaction qui «ont déjà été dans le pool».
  • Transaction de blindage. Une transaction retirant des fonds d'un pool. On ne sait pas qui les affiche, mais on sait à qui et combien.

Illustration de différents types de transaction. De gauche à droite: transaction transparente régulière, transaction de blindage, transaction privée, transaction de blindage. Source - "Une analyse empirique de l'anonymat dans Zcash" :

image

Il est important de noter que le réseau exige que toutes les pièces générées (récompenses en bloc) tombent dans le pool protégé, augmentant ainsi efficacement l'anonymat défini pour le mélange des transactions.

L'analyse empirique des transactions publiques dans ZCash (elles représentaient début 2018 73% du nombre total de transactions) n'est pas particulièrement difficile et est soumise aux mêmes techniques que Bitcoin lui-même. Cependant, il est beaucoup plus difficile d'obtenir des statistiques sur qui et combien d'argent a été retiré du pool protégé. L'une des premières tentatives d'analyse des transactions sécurisées en 2018 a été l'ouvrage «Une analyse empirique de l'anonymat dans Zcash» . Ses auteurs ont étudié les paiements sur la base de plusieurs heuristiques - observations basées sur le comportement des utilisateurs:

  • Si une transaction dépense deux sorties transparentes ou plus (indépendamment du fait que la transaction soit transparente, protégée ou mixte), ces sorties appartiennent très probablement au même membre du réseau.
  • Si un seul destinataire est indiqué dans un virement transparent (c'est-à-dire sans changement), il est fort probable que toutes les sources de fonds pour cette transaction appartiennent au destinataire.
  • Tout retrait du pool protégé d'un montant de 250 0001 ZEC (il y a eu beaucoup de tels transferts) appartient aux fondateurs du réseau. Cela équivaut à peu près à la récompense de 100 blocs.
  • S'il y a plus de 100 sorties dans une transaction de blindage, dont l'une appartient à un pool minier bien connu, alors nous pouvons conclure qu'il s'agit d'un retrait de fonds des mineurs. Toutes les autres sorties peuvent être désignées comme appartenant aux mineurs.
  • S'il existe une paire de transactions de blindage et de blindage avec un montant unique et une différence de plusieurs blocs, et que la transaction de blindage s'est produite plus tôt, alors ces transactions sont interconnectées. Ceci est décrit dans Sur la liaison des transactions Zcash .

Les illustrations ci-dessous montrent quelques analyses que les auteurs de l'ouvrage ont pu construire à partir de ces heuristiques:

image

image

image

Les auteurs ont pu identifier 65,6% des transactions retirant des fonds du pool. Des succès importants dans l'identification des paiements au sein du pool n'ont pas pu être atteints.

Dans un travail récent, «Confidentialité et lien de l'exploitation minière à Zcash», des chercheurs de l'Université du Luxembourg ont analysé les performances des pools de minage et identifié deux modèles lors du paiement des récompenses:

  • Le pool minier affiche la récompense de bloc à son adresse publique et à partir de là, il distribue la récompense aux mineurs. Ils l'ont appelé Pattern T.
  • Le pool minier stocke les pièces extraites dans le pool blindé et à un moment donné donne des récompenses aux mineurs de là à leurs adresses publiques. Ce motif a été appelé motif Z.

Il n'a pas été difficile d'établir la propriété des transactions pour des pools spécifiques - les chercheurs ont simplement comparé les adresses publiques de paiement des récompenses avec les adresses des meilleurs mineurs publiées sur les sites Web des pools eux-mêmes.

En suivant cette approche, les chercheurs ont réussi à augmenter la part des paiements de pool identifiés de 65,6% dans les travaux précédents à 84,1% sur les mêmes données.

Cependant, cette approche a ses inconvénients:

  • Il peut être appliqué à un intervalle de temps assez étroit d'environ 2 000 blocs (environ quatre jours), car les mineurs ont tendance à changer de bassin minier;
  • Il est très difficile d'identifier les transactions appartenant à de petits pools qui n'ont trouvé que quelques blocs, car leurs transactions payées ne correspondent pas au modèle général avec de grands pools en raison du petit nombre de sorties vers celles-ci.

Les résultats de l'analyse sont présentés dans l'illustration:

image

Sur la base de ces données, les auteurs concluent que 95,6% de toutes les transactions ZCash sont potentiellement «divulguées», ce qui rapproche la confidentialité de ZCash du niveau de bitcoin.

Comme nous pouvons le voir, malgré une forte protection cryptographique, de nombreuses données pour l'analyse et les conclusions peuvent être obtenues à partir d'informations ouvertes dans la blockchain.

Monero


Monero a été lancé en avril 2014 et est la mise en œuvre la plus populaire du protocole CryptoNote . Au lieu des adresses publiques des destinataires des fonds, Monero utilise des adresses uniques dans chaque paiement, donc pour l'observateur extérieur, il n'y a aucun moyen de faire correspondre cryptographiquement l'adresse unique du destinataire avec son adresse publique. Pour masquer l'expéditeur, cette technologie utilise l'idée de pétrir, mais le fait d'une manière différente de CoinJoin. Dans Monero, l'expéditeur n'a pas besoin de chercher un autre candidat pour conclure une transaction conjointe. Au lieu de cela, le portefeuille lui-même recueille des sorties arbitraires de la blockchain, cache parmi eux le débouché qu'il veut dépenser et attache le tout avec une signature en anneau. La signature en anneau sert ici à convaincre le validateur de transaction que l'expéditeur possède réellement l'une des sorties de pétrissage et qu'elle n'est pas dépensée. Cela atteint un degré élevé d'incertitude lors de la tentative de suivi d'un paiement à son destinataire. Un exemple que nous pouvons voir dans l'illustration:

image

Il s'avère que le "degré de confidentialité" d'une transaction dépend de la taille de sa signature en anneau - plus les sorties aléatoires sont utilisées pour le mixage, plus il est difficile de le suivre.

Jusqu'en 2016, le mixage dans le réseau Monero était facultatif, puis la taille minimale de la signature en anneau a été portée à 3. Elle a donc augmenté chaque année et est désormais de 11.

En 2017, dans un travail intitulé «Une analyse empirique de la traçabilité dans la chaîne de blocs Monero», un groupe de chercheurs a souligné deux faiblesses du protocole de crypto-monnaie (il convient de noter qu'ils n'étaient pas les premiers à en parler, mais ils ont pu fournir les résultats de l'analyse des transactions dans la pratique )

La première vulnérabilité fait référence à l'effet négatif de l'utilisation de transactions précédemment valides avec zéro pétrissage. Elle est également appelée analyse de «réaction en chaîne». Les auteurs ont montré dans la pratique que s'appuyer uniquement sur l'anonymisation à l'aide d'adresses uniques est non seulement inutile, mais conduit également à la désanonymisation d'autres paiements utilisant ces sorties comme des pétrins - on sait déjà où ils ont été dépensés. Avec un petit nombre de fausses sorties dans une transaction, les vraies peuvent être calculées avec un haut degré de probabilité par la méthode d'exclusion. Ainsi, les chercheurs ont pu suivre environ 62% des transactions effectuées avant février 2017.

La deuxième vulnérabilité est liée à la façon dont le portefeuille a choisi les sorties pour le mixage. Le fait est que les fausses sorties ont été sélectionnées de manière égale dans la blockchain, ce qui à l'époque ne reflétait pas les modèles de comportement des utilisateurs de crypto-monnaie. Les auteurs ont noté que l'utilisateur dépense le plus souvent l'argent reçu dans un délai de deux à trois mois. Ainsi, dans la plupart des cas, les sorties les plus récentes ont été réellement dépensées. Voici des exemples de distribution des âges de sortie dans les transactions:

image

image

En utilisant cette heuristique à cette époque, les auteurs ont réussi à révéler environ 80% des sources de transactions.

Cependant, maintenant ces techniques sont d'un intérêt plus académique, car les développeurs ont déjà corrigé ces faiblesses - ils ont élevé le mixin minimum à 11, la loi de distribution, selon laquelle les sorties pour le mixage sont rassemblées, remplacées par une réalité plus approximative et mis en œuvre un protocole de transactions confidentielles.

Dans un autre ouvrage, intitulé «Nouvelle analyse de traçabilité empirique des chaînes de blocs de style CryptoNote», les chercheurs tentent d'analyser les transactions Monero en utilisant des «ensembles fermés».

Expliquons avec un exemple. Supposons que nous ayons quatre sorties pk1, pk2, pk3 et pk4. Maintenant, nous devons trouver quatre de ces transactions où elles seront utilisées exclusivement:

image

Dans notre cas, nous pouvons conclure que ces quatre sorties sont toutes dépensées dans ces quatre transactions, et la prochaine fois que nous rencontrons une transaction qui pétrit au moins une de ces sorties, nous pouvons les exclure de l'ensemble d'anonymat comme sciemment fausses.

Les auteurs ont mené des expériences sur la blockchain Monero avec des transactions confidentielles déjà incluses et une taille minimale de la signature en anneau 5. Cependant, comme ces ensembles sont un phénomène assez rare, ils n'ont réussi à suivre que 0,084% des sorties, et cette technique peut être considérée comme un ajout à d'autres méthodes d'analyse. Ce résultat nous permet de conclure que le Monero moderne offre des garanties de confidentialité assez solides.

Quel est le résultat


Nous avons mené une étude assez large des moyens d'analyser les chaînes de blocs anonymes. Bien que personne n'essaie même de pirater la cryptographie, certains d'entre eux ont un point faible dans la nature centralisée des services d'anonymisation et d'autres dans la capacité de mener des transactions transparentes. À notre avis, Monero offre les meilleures garanties de confidentialité pour aujourd'hui (avec des vulnérabilités fixes trouvées précédemment), car des études récentes ne donnent aucun résultat significatif de traçabilité des transactions.

Source: https://habr.com/ru/post/fr471640/


All Articles