ZCash : la cryptomonnaie qui n’a rien à cacher
Mais ce n’est pas faute d’essayer – Le 8 mai 2018, une équipe de chercheurs de l’University College de Londres a publié une étude détaillée cherchant à analyser en détails le réel degré d’anonymisation et de confidentialité atteignable en pratique lors de l’utilisation de ZCash. De précédentes recherches semblaient démontrer qu’un niveau de confidentialité relativement élevé pouvait être atteint à l’aide de ZeroCoin, le nom de ZCash lors du fork initial avec Bitcoin.
Préambule à l’étude sur ZCash
Au delà des bases idéologiques qui justifieraient d’utiliser une cryptomonnaie à visée anonymisante – nous préférons le terme de cryptomonnaie sibylline – dans les dépenses courantes du quotidien, les auteurs de l’étude commencent par expliquer que les utilisations les plus documentées sont principalement de quatre types : les fondateurs de ZCash qui touchent à l’heure actuelle 20% des coingen (block reward), les mineurs qui touchent 80% des coingen, des organisations non-gouvernementales légales ou non (qui utilisent ZCash pour toucher des dons ou vendre des données), et plus communément les divers black markets. Pour les auteurs de l’étude, il faut noter que la plupart des utilisateurs de cryptomonnaies sibyllines sont plutôt attirés par la perspective de s’en servir lors d’achats de biens de seconde nécessité, avec la perspective de rendre leurs activités illégales plus difficilement traçables par les forces de l’ordre.
Pour rappel, la stratégie est pourtant rarement payante, comme l’illustre dernièrement la fermeture du forum de la Main Noire et l’arrestation, cassant les codes, de la mère de famille à priori administratrice du site. L’étude présentée se concentre sur ZCash, qui essaie d’atteindre la confidentialité par des moyens qui lui sont propres et que nous détaillerons en suivant, mais notons que d’autres cryptomonnaies visent le même but, parmi lesquelles il est possible de citer notamment DASH (techniques de dépenses en CoinJoin) ou encore Monero (avec ses ring-signatures, permettant de mixer les clés de différents utilisateurs au sein de leurs transactions pour les obscurcir).
Dans le cas de ZCash, la fonctionnalité furtive principale est la Shielded Pool dont nous parlerons plus en détail en suivant, mais que nous pouvons résumer comme suit : une pool commune où les utilisateurs de ZCash feraient transiter leurs ZEC avant de les dépenser, permettant de les obscurcir et de les dépenser ensuite sans révéler précisément quels ZEC tirés de la pool l’ont été. Une sorte de pare-feu anonymisant pour les transactions ZEC, en quelque sorte. Tout cela est donc sur le papier très intéressant, et encore mieux, à priori, cela fonctionne.
Si vous êtes déjà lecteur de mes articles, là, vous me voyez arriver gros comme une maison, et vous êtes en train de vous dire “Qu’est-ce qu’il va nous sortir encore, le gars ?”, et vous faites bien.
Alors je vais être abrupt et résumer le propos de l’article tout de go :
- La quasi totalité des transactions ZEC classiques ne sont pas plus anonymisées que des transactions BTC habituelles, étant seulement pseudonymiques elles-aussi, et seule une infime fraction des transactions ZEC sont réellement plus difficile à remonter et identifier, sans que ce soit en définitive réellement une gageure pour un intervenant motivé (probablement étatique) ;
- À l’aide d’heuristiques relativement simples, il est possible d’identifier à minima les différents groupes d’utilisateurs évoqués précédemment, par extension fort probablement d’identifier un utilisateur lambda dont les transactions ZEC seraient simplement classiques, et même d’arriver à identifier dans l’absolu un individu qui prendrait la peine d’utiliser tout le panel disponible en espérant s’assurer un total anonymat dans le cadre d’activités illégales.
Il est donc l’heure de rentrer dans le vif du sujet : mais comment ZCash fonctionne-t-il, et comment l’utilisation de ZEC est-elle censée être confidentielle ?
Fonctionnement de ZCash
Pour résumer sommairement, 4 types de transactions peuvent avoir lieu sur le réseau ZCash :
- Transparent (t-to-t) : la transaction a lieu entre deux adresses visibles, fonctionnant grosso modo comme une transaction libellée en bitcoins classique, avec un pseudonymat comme base, mais en clair pour les désignations de ces adresses et le montant de ZEC qui transite entre les deux adresses,
- Shielded (t-to-z) : la transaction d’entrée dans la Shielded Pool, qui communique toujours en clair le montant de ZEC envoyés ainsi que la t-address de l’expéditeur,
- Private (z-to-z) : au sein de la Shielded Pool, entre deux z-addresses, les z-addresses des expéditeur et récipiendaire sont donc théoriquement cachées, tout comme le montant transitant entre elles,
- Deshielded (z-to-t) : la transaction quitte la Shielded Pool pour rejoindre une t-address transparente, le montant de ZEC est initialement caché mais pas à l’arrivée, l’adresse transparente de réception du récipiendaire est forcément visible.
Simplement à partir de cette illustration, il est possible d’imaginer plusieurs façons de suivre des transactions illicites et/ou d’essayer de repérer des individus se servant des ZEC pour des actes illicites. Tout d’abord, toutes les transactions transparentes t-to-t sont aussi simplement traçables que n’importe quelle transaction Bitcoin, ce qui a déjà été maintes fois étudié et démontré, avec maintenant des entreprises qui se sont dédiées à ce genre d’activités, en collaboration plus ou moins étroite avec les forces de l’ordre. Ensuite, des heuristiques particulières, mises au point par l’équipe de l’University College de Londres (que nous détaillerons plus tard), vont montrer qu’il est possible de mettre à mal les autres types de transaction supposément plus sibyllines.
Et sous vos yeux ébahis, en modélisant les différentes transactions prenant place sur le réseau ZCash, observons déjà ceci : dans la pratique, presque personne n’utilise la Shielded Pool.
Répartitions et évolution en pourcentage des types de transaction depuis le genesis bloc
Les données disponibles montrent que près de 73,5% des transactions sont transparentes et donc tout aussi identifiables que n’importe quelle transaction Bitcoin.
Seules 0,3% des transactions sont réellement privées en prenant place intégralement et de bout en bout dans la Shielded Pool. Les transactions coingen sont un peu particulières, en ce qu’il s’agit du block reward partagé entre fondateurs et mineurs, et que les règles de consensus imposent que ces transactions transitent par la Shielded Pool avant d’être dépensées ensuite : elles sont donc partiellement privées, puisqu’elles sont plus difficiles à suivre, mais nous verrons plus tard qu’à cœur vaillant, rien d’impossible.
De plus, avec l’adoption grandissante de ZCash par de plus en plus d’utilisateurs, en partie du fait de la promesse d’anonymat, ces derniers utilisent le réseau quasi exclusivement en mode transparent, et l’évolution en cours se fait de manière exponentielle. Autrement dit, plus le temps passe et plus ZCash est utilisé, plus les transactions transparentes gagnent en volume par rapport aux transactions confidentielles résiduelles. Cela peut s’expliquer notamment parce que peu ou pas de wallets grand public ne prennent en charge par défaut les passages par la Shielded Pool, et ne diffusent que les transactions transparentes.
Clustering des adresses ZCash et typologie des attitudes des participants
En s’intéressant aux seules t-addresses, on remarque que seules 25% d’entre elles ont un solde non nul, ce qui limite le bruit ambiant pour l’analyse. En classant ces t-addresses par richesse, on observe de plus que le top 1% détient 78% des tous les ZEC en circulation (et donc sur des adresses transparentes). L’adresse la plus riche détient plus de 118000 ZEC. Les auteurs de l’étude se reposent sur un axiome afin d’identifier les adresses correspondantes : si plusieurs adresses apparaissent comme étant les inputs d’une même transaction, il est raisonnable d’envisager que ces adresses sont contrôlées par une même entité. À partir de cet axiome, les auteurs ont ciblé les adresses transparentes utilisées par les exchanges (après que les auteurs aient effectués des dépôts et des retraits de ZEC vers et depuis les exchanges en question), certaines entités comme ShapeShift, et les adresses publiques connues des fondateurs.
À l’aide cet heuristique simple, les auteurs de l’étude ont déjà été en mesure de lier et d’identifier 123 t-addresses comme appartenant aux fondateurs et 111000 t-addresses comme appartenant à des pools de minage, par exemple. Concernant les exchanges, qui gèrent donc 11,21% de toutes les transactions ZEC en clair, on peut parmi ces transactions repérer des adresses à la fois de mineurs individuels (qui vont retirer leurs fonds dès le coingen reçu, après qu’il soit passé par la Shielded Pool) mais aussi de certains fondateurs. Ces données pourront être utilisées plus tard pour aider à leur identification. Concernant les pools de minage et les fondateurs, à part les quelques t-addresses identifiées sur les exchanges, 99,8% de leurs ZEC sont expédiés directement vers la Shielded Pool. Concernant les ONG, il a été possible aux auteurs d’en identifier plusieurs, par exemple Wikileaks ou The Internet Archive, groupes dont la majorité des transactions ont lieu en clair par transactions transparentes.
Concernant cependant les transactions « shieldées », entrantes comme sortantes de la Shielded Pool, ce n’est pas exactement la même limonade. En agrégeant toutes les transactions récupérables sur la blockchain ZCash, les auteurs de l’étude ont pu quantifier le montant total de ZEC contenu dans la Shielded Pool, équivalant à 3,6% de la masse monétaire totale de ZEC en circulation lors de l’écriture de l’article.
À partir de l’étude des flux entre transactions protégées (dépôts vers Shielded Pool) et transactions dé-protégées (retraits vers des adresses transparentes), les auteurs ont identifié quatre événements particuliers : deux dépôts et deux retraits, massifs et coordonnés dans le temps, permettant de lever un peu le voile d’anonymat sur les transactions impliquées dans la Shielded Pool.
Concernant les fondateurs et les mineurs, il est facile d’identifier leurs dépôts, puisque paradoxalement, étant obligés de faire transiter leurs fonds par la Shielded Pool avant d’en disposer, ils tombent d’eux-même dans le piège de cette identification croisée en entrée et sortie de Shielded Pool. Les fondateurs sont principalement identifiées car certaines de leurs adresses sont précisées dans les règles de consensus et par la technique exposée précédemment ; tandis que les mineurs sont les seuls autres récipiendaires des coingen initiaux.
Notons donc qu’à partir de l’étude de la Shielded Pool, on observe que les principaux déposants de la pool sont les mineurs à 76,7%, tandis que les fondateurs font transiter le reste du volume, mais en quantités plus volumineuses et ponctuelles, ce qui explique les quatre événements repérés précédemment.
Par d’autres heuristiques, les auteurs arrivent à lier une partie des adresses transparentes ayant servi aux dépôts vers la Shielded Pool avec une partie des adresses transparentes ayant servi aux retraits depuis la Shielded Pool.
Les auteurs commencent par vérifier si des t-addresses sont utilisées à la fois comme déposant vers la pool et comme récipiendaire depuis la pool, ce qui est un essai très naïf, puisque cela semble presque un gâchis de passer par une pool commune pare-feu si c’est pour tout de suite transiter par les mêmes adresses transparentes. Pourtant, et de manière assez surprenante, cette technique simple permet déjà d’identifier 13,3% de la valeur totale de la Shielded Pool comme appartenant aux mineurs. Ensuite, à l’aide d’autres heuristiques plus poussées que nous ne développerons pas, les auteurs identifient 52% supplémentaires appartenant également aux mineurs et 13,5% appartenant aux fondateurs.
À ce moment de la procédure, notez donc bien qu’il ne reste plus que 30 à 35% des transactions private z-to-z de la Shielded Pool pouvant réellement être considérées comme privées, les autres pouvant donc être associées à un type d’utilisateur par certains procédés d’analyse spécifique à partir des transactions d’entrée t-to-z et de sortie z-to-t.
Ne restent donc comme réellement privées que 30 à 35% des 0,3% des transactions qui sont censées l’être pour l’ensemble du réseau.
En somme, seules 0,105% des transactions du réseau ZCash sont réellement confidentielles de bout en bout.
La spécificité des montants repérés et suivis pour chacun des groupes, ainsi que leurs mouvements (qui présentent des séquences identifiables sur le plan temporel), permettent aux auteurs de l’étude d’identifier plus encore les mouvements dans le détail, et de développer d’autres heuristiques, en lien avec les spécificités de la structure des transactions ZCash, qui comprennent un certain nombre d’inputs et d’outputs leurre, à la fois en t-address et en z-address, pour tromper un investigateur. Dans les faits, ces techniques sont alors loin d’être suffisantes pour faire perdre le fil à un investigateur acharné. Nous n’entrerons pas dans le détail de ces dernières heuristiques dans cet article, par souhait de simplification.
Shielded Pool et transactions ZCash internes z-to-z supposées private résiduelles
La structure évoquée auparavant concernant les transactions ZCash repose sur une sous-structure appelée vJoinSplits, qui permet de définir si une transaction est transparente, shieldée, deshieldée ou private, selon les variantes entre les différents paramètres contenus dans ces vJoinSplits. Concernant les transactions private z-to-z, c’est le point de faiblesse choisi par les auteurs de l’étude : ils ont sélectionné et investigué une série de près de 7000 transactions private contenant 8444 vJoinSplits au total. Les informations obtenues à partir de ces vJoinSplits sont diverses : la part de frais versés aux mineurs, l’heure de la transaction, et le nombre de vJoinSplits utilisés comme input.
Or… 93% des transactions private z-to-z n’ont qu’un seul vJoinSplit.
Du coup, vous me voyez encore arriver avec mes gros sabots : s’il n’y a qu’un seul input vJoinSplit sur ces transactions, ces transactions sont plus susceptibles d’être remontées. Et c’est le cas, en définitive : l’on constate que relativement peu d’utilisateurs au total utilisent cette fonction, et souvent vers les mêmes services, lesquels sont aussi repérables.
Je vous fais grâce des corrélations possibles entre toutes les heuristiques, qui pourront sans doute faire l’objet d’études supplémentaires, et finir de nous scotcher à notre siège devant un tel niveau de confidentialité effectif.
Étude de cas : The Shadow Brokers
L’étude se conclut avec une mise en application des diverses heuristiques exposées et testées au cours de l’étude, afin d’étudier le cas du groupe The Shadow Brokers, groupe célèbre de hackers ayant supposément pris pour cible puis revendu aux enchères au marché noir des outils de la NSA (en BTC puis en ZEC exclusivement).
Les auteurs, en repérant les transactions semblant correspondre au montant connu des enchères passées puis des prix fixes (500 ZEC) posés ensuite par TSB à partir d’Octobre 2017, ont réussi à identifier 34 clusters correspondant à 34 clients ayant procédé à un achat réglé auprès des TSB. Pour faire très simple, un de ces clients est un habitué ayant procédé à plusieurs achats auprès de TSB, après s’être fourni en ZEC contre monnaie fiat sur un exchange classique top tier, ayant donc dû satisfaire aux exigences de KYC. Vous imaginez donc ce qui peut se passer dans ces conditions : si des “simples” chercheurs sont en mesure d’identifier un client des TSB, dont les transactions ont transité par la Shielded Pool en transactions z-to-z private, combien faudrait-il de temps à une unité de cybercriminalité dédiée et experte pour remonter directement aux acheteurs et trouver leurs identités ?
Et par extension, si vous utilisez ZCash au quotidien sans pouvoir même emprunter le chemin semi-protégé de la Shielded Pool, vous considérez-vous réellement comme anonymes ?
Roadmap ZCash Fondation dans les suites de l’étude
Les auteurs de l’étude précisent avoir toujours communiqué avec la Fondation ZCash et ses membres, pour leur présenter leurs découvertes, et que des changements de comportement ont pu être observés par la suite concernant notamment les mouvements de fonds impliquant les fondateurs. La Fondation ZCash a depuis communiqué ici dans un souci de transparence à propos de modifications et d’évolutions futures pour ZCash, avec le but de permettre la généralisation de l’utilisation spontanée et systématique des transactions private z-to-z avec passage par la Shielded Pool, par exemple en incorporant ces transactions en utilisation par défaut dans des wallet grand public.
Également, la Fondation a annoncé des modifications des règles de consensus pour passer à une rémunération à 100% des mineurs à partir d’Octobre 2020 conformément à des précédentes annonces, et donc l’arrêt à cette date des récompenses aux fondateurs. Le futur s’annonce intéressant pour ZCash, certaines questions pouvant se poser notamment concernant l’attitude qu’adopteront les exchanges grand public ou encore les pouvoirs publics, si jamais les transactions private z-to-z venaient effectivement à se démocratiser largement.
[es_tradingview symbol= »zecusd » interval= »D » height= »350″ colors= »Light »]
Sources : AMBcrypto ; Zcash Blog ; GitHub ; arXiv.org || Images from Shutterstock