Analyse du protocole Zerocoin
Analyse de Zerocoin, un protocole qui permet d’assurer la confidentialité des utilisateurs, avec des mécanismes d’anonymats réalisés grâce à l’utilisation de deux « tokens » : le basecoin et le zerocoin.
Cet article est le troisième d’une série d’articles consacrée aux protocoles assurant l’anonymat des cryptomonnaies.
Les origines de Zerocoin
Zerocoin a d’abord été conçu comme un outil destiné à Bitcoin permettant de mixer les coins. Cependant, ces concepteurs, en association avec des cryptographes du MIT, The Technion, et l’université de Tel-Aviv ont conclu que l’implémenter au Bitcoin serait compliqué.
Ils ont alors décidé de mettre au point un nouveau protocole focalisé sur l’anonymat total des utilisateurs. C’est ainsi qu’est né le protocole Zerocash (plus largement appelé Zerocoin).
Ce protocole permet la création de cryptomonnaies qui, contrairement à Bitcoin, permettent de réaliser des transactions préservant l’anonymat en ne révélant :
- ni l’origine
- ni la destination
- ni le montant
Comparé à CoinJoin – qui peut être implémenté directement sur Bitcoin – ou encore CryptoNote, ZeroCoin a une meilleure obfuscation des montants. Au lieu de rendre le montant dur à déterminer, celui-ci devient impossible à déterminer, car la donnée n’est pas publique.
Les deux coins de Zerocoin
Pour assurer l’anonymat le protocole utilise deux coins qui cohabitent et qui sont interchangeables, ce sont le zerocoin et le basecoin. Ces deux coins se distinguent de la manière suivante :
- Basecoin : Crytpomonnaie qui est échangé entre les utilisateurs, dont on souhaite que les transactions soient anonymes.
- Zerocoin : Preuve cryptographique de la possession d’un basecoin.
Le zerocoin est une preuve cryptographique qu’un utilisateur détient un basecoin et que celui-ci est devenu non dépensable. Il donne également le droit d’échanger ce zerocoin contre un basecoin.
Une transaction Zerocoin
Dans l’exemple que nous allons utiliser, Alice souhaite envoyer 1 JDC à Bob, et ce de manière anonyme. Évidemment, ce token n’existe pas, mais nous allons l’utiliser à titre d’exemple. Celui-ci fait office de basecoin.
- Alice veut envoyer 1 JDC à Bob. Pour se faire, elle va émettre un nouveau zerocoin en échange de son JDC et ainsi le rendre non dépensable (on peut visualiser cela comme si le token était « transféré » dans une réserve de token non dépensable).
- Une fois le zerocoin en sa possession elle peut l’envoyer à Bob, le transfert de zerocoin est anonymes et la transaction n’est pas écrite dans la blockchain. Alice a uniquement transmis son droit de récupérer un JDC à Bob (pour rappel le zerocoin n’est qu’une preuve de possession)
- Une fois le zerocoin en la possession de Bob, il peut utiliser cette preuve – réalisée en zero knowledge proof – pour récupérer un JDC (comme si celui-ci était déplacé depuis la réserve de token non dépensable).
Je l’accorde ce n’est pas forcément trivial à comprendre, et comme le dis l’adage : un dessin vaut mieux qu’un long discours, et dans notre cas ce sera un GIF.
[arve model= »gif » url= »https://journalducoin.com/app/uploads/2019/03/zerocoin.mp4″ align= »center » promote_link= »no » autoplay= »yes » maxwidth= »480″ controlslist= »nodownload » controls= »no » loop= »yes » muted= »yes » /]
Conclusion sur Zerocoin
L’avantage du zerocoin est que l’anonymat est réalisé au niveau protocolaire, ainsi il ne dépend pas d’un parti tiers. Il rend les transactions intraçables et obfusque les montants. Cependant, contrairement à CryptoNote, il n’utilise pas d’adresses uniques par défauts.
Ce protocole a été implémenté dans de nombreuses cryptomonnaies, dont PIVX, Zcoin ou SmartCash. Cependant, chaque implémentation présente ses spécificités et des modifications ont été apportées au protocole de base.