Cryptonote : un protocole de transactions anonymes
Analyse de CryptoNote, un protocole qui depuis 2013, permet d’augmenter la confidentialité des transactions grâce à l’utilisation d’adresses uniques et des ring signatures.
Cet article est le second d’une série d’articles consacrée aux protocoles assurant l’anonymat des cryptomonnaies.
Les origines de CryptoNote
CryptoNote a été proposé par Nicolas van Saberhagen à travers le whitepaper « CryptoNote V2.0 » en octobre 2013. Plusieurs publications à ce sujet avaient déjà été réalisées par Saberhagen depuis décembre 2011.
À la différence de Coinjoin, l’idée ici est de réaliser un nouveau protocole palliant aux faiblesses du Bitcoin tout en ajoutant des fonctionnalités assurant l’anonymat et la confidentialité de ses utilisateurs. L’objectif du protocole est de répondre à deux conditions pour les transactions :
- Impossibilité de traçabilité : pour chaque transaction entrante, tous les expéditeurs possibles sont équitablement probables.
- Non-associativité : pour deux transactions sortantes, il est impossible de prouver qu’elles ont été envoyées à la même personne.
Seule la seconde condition peut être remplie sur Bitcoin en utilisant Coinjoin. À travers son whitepaper, Nicolas van Saberhagen expose un schéma de transactions entièrement anonymes satisfaisant à la fois les conditions d’impossibilité de traçabilité et de non-associativité.
Pour réaliser les deux conditions présentées précédemment, plusieurs technologies ont été utilisées et combinées afin de travailler dans un but commun.
Utilisation d’adresses uniques
La première est l’utilisation de clés publiques uniques. Ces clés publiques sont dérivées de l’adresse du destinataire et de données aléatoires de l’expéditeur, ce qui permet de pallier au problème de réutilisation d’adresses.
En effet, la réutilisation d’adresses pose un grand problème d’anonymat. Lorsque l’on connait l’adresse publique d’un utilisateur – comme dans le cas de Bitcoin – il est possible d’accéder à l’historique des transactions.
Ainsi aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse spécifique ou relier deux adresses ensemble.
Les ring signature
En plus de cela, CryptoNote utilise les One-time ring signature – Signature de cercle – permettant d’assurer l’intraçabilité. Cette approche est dans un sens comparable au fonctionnement de Coinjoin : une ring signature permet de signer une transaction avec N clés publiques et une seule clé privée correspondant à l’une des N clés publiques. Ces clés publiques sont sélectionnées parmi toutes les sorties de la blockchain ayant le même montant que la sortie dépensée.
Un observateur externe peut vérifier la signature, et affirmer que l’une des clés publiques présentes dans la transaction correspond à la clé privée qui a signé le message. Cependant, il lui est impossible de savoir laquelle.
Dans le schéma ci-dessous, Alice, Bob et Carol ont signé le message, cependant, l’observateur n’a aucun moyen de savoir qui des trois est réellement à l’origine de la transaction.
Une fois encore, plus le nombre de clés publiques N utilisées est grand moins la probabilité que vous en soyez à l’origine est grande et de ce fait votre anonymat est renforcé.
Conclusion sur CryptoNote
CryptoNote est utilisé dans de nombreuses cryptomonnaies telles que Monero ou Bytecoin, tout en connaissant quelques variantes d’implémentations. Par exemple, dans le cas de Monero le protocole a été amélioré en janvier 2017 afin d’intégrer Ring CT. Ceci améliore les ring signatures en permettant de dissimuler les montants, les origines et les destinations des transactions avec une efficacité raisonnable.