Anoma intègre MASP : un outil pour protéger votre vie privée sur une chaîne publique

Nous l’avons expliqué dans un article précédent, Anoma dispose d’un système appelé Ferveo pour cacher le contenu de vos transactions avant qu’elles soient publiées, afin de se prémunir contre la VEM. Cette dernière, après tout, n’existe que parce que votre vie privée n’est pas assez protégée pendant le procédé de publication des transactions.

Cependant, ce n’est pas le seul problème que l’on peut rencontrer à cause d’un manque de vie privée sur un réseau financier. Une fois que la transaction est publiée, il faudrait aussi pouvoir rester anonyme : autrement, on peut vite finir victime de la célèbre « $5 wrench attack » décrite par XKCD en 2009, même pour des sommes qui paraissent ridicules. Et tout particulièrement si le grand public finit par adopter la cryptomonnaie.

Bien sûr, si l’on souhaite bénéficier d’un meilleur anonymat, on peut toujours se diriger vers les chaînes les plus connues du secteur comme Monero. Cependant, elles ne disposent pas des fonctionnalités qu’apporte Anoma. Alors comment faire pour protéger sa vie privée sur Anoma ?

Pour faire simple, plutôt que de conserver ses actifs dans son portefeuille, qui restera public, il faudra les placer dans une sorte de coffre-fort virtuel qui permet de rester anonyme. Ce coffre-fort, c’est tout simplement une réserve de liquidités, un concept que vous connaissez certainement déjà puisque la quasi-totalité des plateformes d’échange décentralisées utilisent des réserves de liquidités, ou liquidity pools, pour fonctionner. 

La différence ici, c’est que ces réserves de liquidité trouvées sur Anoma seront conçues pour protéger votre anonymat : c’est le système MASP, ou Multi-Asset Shielded Pool. Vous pouvez y mettre tous les actifs que vous voulez, et ils seront « invisibles » tant qu’ils restent à l’intérieur.

Ce système fonctionne sur le même principe de base que Zcash et Monero : rassembler des transactions et les chiffrer pour brouiller les pistes. Lorsque le montant, l’envoyeur et le receveur sont chiffrés et que tout est mélangé, on ne peut pas facilement savoir ce qui s’est passé. Et, c’est un système qui fonctionne de mieux en mieux lorsque le nombre de participants augmente. L’inconvénient, c’est que l’inverse est vrai aussi : s’il n’y a que deux personnes qui participent, il est moins compliqué de savoir ce qui s’est passé.

Principe de base du système MASP

Lorsque deux personnes souhaitent s’envoyer des actifs en protégeant leur vie privée, sur Anoma, il faudra d’abord qu’ils choisissent la réserve de liquidité anonymisée qu’ils préfèrent. Plus elle a d’utilisateurs, plus elle sera efficace pour protéger leur anonymat. En principe, il n’y aura donc pas réellement de raison de choisir autre chose que la plus grosse.

Maintenant, la question qui se pose, c’est : qu’est-ce que c’est exactement, cette réserve de liquidité anonymisée, en pratique ? En fait, c’est très simple, elle est comparable à ce que l’on pourrait avoir sur Ethereum avec des systèmes comme Tornado Cash (et plus spécifiquement leur offre Nova Pool). Cette réserve, c’est une adresse Anoma, comparable à n’importe quelle réserve de liquidité Uniswap sur Ethereum, mais sur laquelle un prédicat de validité bien spécifique a été publié. Et, comme pour Tornado Cash sur Ethereum, le solde de compte total de la réserve de liquidité, c’est-à-dire le montant combiné des actifs de l’ensemble des utilisateurs de cette réserve, est public. C’est tout ce qui se passe à l’intérieur qui reste privé.

Le prédicat de validité publié sur cette adresse doit avoir les fonctions suivantes :

  • Accepter les transactions en clair qui concernent un envoi ou un retrait d’actifs,
  • Accepter les transactions shielded-to-shielded, c’est-à-dire les transactions d’une adresse anonymisée à une autre, qui permettent de déplacer des actifs à l’intérieur de la réserve sans modifier son solde public.
  • Publier les informations nécessaires pour que le système fonctionne (note commitment et nullifier reveal Merkle tree).

Tout cela n’est possible que si le réseau permet quelque chose ayant la même fonctionnalité que les prédicats de validité.

Quant aux utilisateurs, ils doivent également pouvoir faire certaines choses, bien que ça ne soit rien de très exceptionnel :

  • Publier des transactions avec un envoyeur et/ou destinataire shielded (anonymisés),
  • Analyser la chaîne et déterminer quels sont les actifs anonymisés qu’ils possèdent,
  • Générer des adresses de paiement à partir d’une viewing key ou d’une spending key.

Lorsque ces conditions (et quelques autres) sont réunies, on obtient un système qui permet d’échanger des actifs de manière « plutôt anonyme » même si le réseau est public. Et ceci, peu importe les actifs utilisés… En théorie. Car il peut exister des réserves MASP dont les prédicats de validité ne permettent pas l’utilisation de certains actifs, et des actifs dont les propres prédicats de validité interdisent leur utilisation dans certaines réserves.

En d’autres mots, par exemple, la société Circle (émettrice de l’USDC) pourrait très bien mettre en place sur l’USDC un prédicat de validité qui empêche quiconque de l’envoyer vers une réserve de liquidité anonymisée. Ce qui ferait que l’USDC ne pourrait pas être anonymisé sur Anoma avec le système MASP.

Cela étant dit, ce genre de cas devrait rester extrêmement rare. La vaste majorité des actifs seront compatibles avec toutes les réserves de liquidité anonymisées. Et concrètement, qu’est-ce que ça donnerait ?

Exemples de transferts d’actifs en l’utilisant

a)      Transferts normaux d’actifs

Par défaut, voilà à quoi ressemble un transfert d’actifs via MASP : imaginons qu’Alice souhaite envoyer à Bob un actif quelconque, en passant par une réserve anonymisée pour que personne ne sache à qui elle envoie cet actif. Idéalement, il s’agira d’une réserve de liquidité très utilisée. En effet, plus il y a d’utilisateurs, plus il est difficile d’analyser les mouvements de fonds au sein d’une réserve de liquidité MASP.

Une fois la réserve anonymisée choisie par Alice, Alice et Bob devront tous deux générer une adresse anonymisée et la clé de paiement associée. Pour commencer le transfert, Alice devra publier une transaction dans laquelle elle transfèrera les actifs présents sur son adresse publique vers l’adresse de la réserve. Cette transaction, une fois réalisée, confèrera à la spending key, générée par Alice, le droit de transférer anonymement les actifs déposés sur son adresse au sein de la réserve.

La transaction confère la soending Key

La première partie de la transaction est donc publique : tout le monde peut voir qu’Alice a transmis ses actifs vers la réserve de liquidité MASP. Mais, ce qui se passe après demeurera invisible pour tout le monde sauf Alice et Bob.

Une fois que cette première transaction a été faite, Alice publiera une transaction contenant à la fois sa spending key et l’adresse anonymisée de Bob. Et, elle n’est pas obligée de faire une transaction rien que pour ça. Ainsi, il est possible d’inclure le message chiffré dans une transaction toute à fait normale qui n’a aucun rapport avec cette réserve de liquidité.

Pour le public, le seul changement apparent correspondra aux frais de gas payés par Alice pour publier le message chiffré au sein de cette transaction. Les tiers sauront qu’Alice a fait quelque chose, mais ils ignoreront quoi. Et, à l’intérieur de la réserve MASP, les actifs seront déplacés vers l’adresse anonymisée de Bob, qui pourra ensuite utiliser sa propre spending key pour les déplacer de nouveau, ou les faire sortir.

Bob déplace ces fonds

À partir de là, deux options sont offertes :

  • soit Bob utilise sa spending key pour déplacer les actifs au sein de la réserve de liquidité ;
  • soit il les fait sortir.

S’il a simplement envie de les déplacer, par exemple vers une autre adresse anonyme qui lui appartient aussi, personne ne pourra le savoir. Tout ce que le grand public peut savoir, c’est que l’adresse de Bob a fait quelque chose dans cette réserve de liquidité, tout comme c’était le cas pour Alice. Éventuellement, si aucun actif ne sort de la réserve après qu’il ait publié sa transaction, on peut en déduire que Bob a transmis ses actifs à une autre adresse anonyme, mais c’est tout. On ne peut déduire ni le montant, ni la destination, ni l’actif concerné. Donc qu’il s’agisse d’un déplacement entre deux de ses adresses, ou entre une adresse qui lui appartient et celle d’un ami… Impossible de savoir ce qui s’est passé, même si l’on sait qu’il s’est passé quelque chose.

Enfin, l’autre possibilité, c’est que Bob ait décidé de faire sortir ses actifs de la réserve de liquidité, auquel cas il devra publier une transaction appropriée dans laquelle il fait usage de sa spending key en indiquant publiquement à quelle adresse il veut que les fonds soient envoyés.

Il faudra un message chiffré pour valider le retrait de l'ANOMA

À ce moment-là, faisons très attention. Si Bob décide d’envoyer les fonds à une adresse d’un ami, les autres utilisateurs du réseau pourront savoir que c’est Bob qui a transmis ces fonds à son ami, même s’ils sortent d’une réserve MASP. Pour rester anonyme, il faut uniquement se servir de ces transactions pour envoyer de l’argent sur l’adresse qui effectue le retrait !

Si Bob souhaite envoyer de l’argent à son ami anonymement, il faut absolument qu’il fasse comme Alice, et qu’il envoie les fonds à l’adresse anonymisée de son ami. L’ami en question pourra ensuite publier lui-même la transaction de retrait des fonds, auquel cas aucun lien ne pourra facilement être établi entre Bob et son ami.

b)      Transfert d’actifs peu usités

Et ce qui est génial avec ce système, c’est que comme nous l’avions expliqué un peu avant, les MASP ne discriminent pas en ce qui concerne les actifs, en principe. Ainsi, elles permettent également d’anonymiser les actifs peu connus, tant que l’on prend quelques précautions.

Si, par exemple, il existe une nouvelle chaîne basée sur Cosmos/Tendermint, avec une intégration IBC et aucune fonctionnalité de protection de l’anonymat, Alice peut simplement transférer cet actif sur Anoma avec le protocole IBC, l’envoyer sur une réserve de liquidité MASP, et le transférer anonymement sur l’adresse anonyme de Bob. Peu importe si cette chaîne est trop récente pour être fréquentée par beaucoup d’utilisateurs : de cette manière, tant que l’actif reste dans la réserve MASP, personne ne peut savoir qui en est le nouveau propriétaire.

Cependant, dès lors qu’il s’agit d’un actif avec un nombre très limité d’utilisateurs, si Bob le fait sortir trop vite de la réserve de liquidité, il sera vite désanonymisé. Pourquoi ? Tout simplement parce que le retrait est rendu public…

Prenons un cas extrême : Alice et Bob sont littéralement les deux seuls utilisateurs de cette chaîne qui sont aussi utilisateurs d’Anoma. Lorsqu’Alice déposera ses jetons dans la réserve de liquidité, elle sera la première et la seule utilisatrice à avoir apporté cet actif à la réserve de liquidité. Donc, toute personne qui retirerait immédiatement cet actif de la réserve en question sera aisément suspecté d’être le destinataire auquel Alice a envoyé ces actifs. On ne peut pas en être 100% sûr, mais il y aura une forte probabilité que ce soit le cas.

Pour éviter d’être suspecté, il n’y a pas 36 solutions.

D’abord, Bob peut choisir de conserver ces actifs dans la réserve de liquidité pendant des années. Personne ne pourra savoir qu’il en est propriétaire pendant tout ce temps ; et avec un peu de chance, quelques années plus tard, plein de gens seront dans le même cas que lui. Il pourra donc retirer ses actifs sans qu’il soit aussi facile d’établir un lien entre Alice et lui. L’inconvénient, c’est que pendant tout ce temps, il ne peut pas se servir de cet actif.

Si c’est dérangeant, voilà l’autre solution : Bob peut simplement créer un deuxième portefeuille, et y envoyer anonymement le nécessaire pour payer les frais de gas. Cette première étape sera la plus difficile, puisqu’à priori, il ne pourra pas recourir à la réserve MASP sans établir de lien entre ce nouveau portefeuille et l’ancien. Pour effectuer un transfert anonyme de jetons Anoma, il faudra peut-être avoir recours à un autre subterfuge :

  • Passer par une plateforme d’échange, vraiment pas idéal, mais rapide et accessible à tous,
  • Acheter des jetons Anoma entre particuliers, par exemple, sur un site comme Localbitcoins, pas génial pour des raisons de sécurité,
  • Avoir recours à un contrat intelligent conçu pour, à l’image de TornadoCash et son système de relais qui prélevaient une partie de la somme transférée pour émettre la transaction à votre place. Clairement la meilleure solution.

Une fois que cette première étape sera franchie, Bob devra utiliser les jetons reçus pour payer les frais de gas, et publier une transaction permettant de retirer l’actif gênant de la réserve MASP vers ce nouveau portefeuille qui n’a aucun lien apparent avec lui.

De cette manière, Bob peut utiliser cet actif, par exemple dans des applications DeFi, sans que son ancien portefeuille puisse être relié au nouveau.

Avec les réserves de liquidité de type MASP, Anoma dispose d’un moyen de protéger l’anonymat de la majorité des utilisateurs. Elles ne sont pas parfaites, et il y a certains cas dans lesquels elles fonctionnent moins bien, mais elles sont aussi beaucoup plus résistantes aux pressions gouvernementales que des applications dédiées comme Tornado Cash.

En effet, le système MASP étant directement intégré à Anoma :

  • Il sera beaucoup plus difficile d’en interdire l’accès, parce que certains portefeuilles permettront sans doute d’interagir avec sans avoir recours à un site Web,
  • Cette intégration au réseau rendra beaucoup plus difficile l’utilisation de l’argumentaire « c’est fait exprès pour les criminels et personne d’autre s’en sert », que les politiciens américains ont notamment utilisé pour justifier la mise hors-ligne de Tornado Cash.

C’est donc une alternative très intéressante aux applications utilisées sur les réseaux traditionnels jusqu’à maintenant, et qui ne nécessite pas pour autant la mise en place d’un réseau totalement anonymisé. Et si vous voulez en savoir plus, n’hésitez pas à aller faire un tour sur les docs Anoma ou sur le GitHub MASP, puisqu’ils vous apprendront absolument tout ce qu’il y a à savoir sur le système MASP.

Benjamin Martin

Dans la crypto depuis quelques années maintenant, je suis un passionné de nouvelles technologies en général, et plus particulièrement de tous les nouveaux projets crypto qui s’apparentent à la philosophie originelle du Bitcoin. C’est un peu ma quête du Graal, mais avec moins de récipients et de pierres incandescentes.