Monero – La confidentialité des transactions au centre du code
Monero, qui signifie « monnaie » en Esperanto, est l’une des plus anciennes cryptomonnaies. Pourtant, sa substance reste peu connue du public. Son protocole résout un des plus gros défis auquel les développeurs de cryptomonnaies sont confrontés : réaliser des transactions confidentielles.
Monero s’appuie sur le protocole CryptoNote. Il utilise différents outils afin de garantir un haut niveau de confidentialité des transactions : les signatures de cercle et les adresses furtives.
Créé par un développeur sous pseudonyme, comme Bitcoin, Monero est aujourd’hui développé conjointement par une équipe composée d’experts en cryptographie. Plus de 200 personnes ont collaboré à ce projet.
Les créateurs de Monero souhaitent pallier certaines faiblesses que comportent de nombreuses blockchains ouvertes. Elles ont une fâcheuse tendance à nuire à la vie privée de leurs utilisateurs.
Le problème de la fongibilité
La notion de fongibilité qualifie le caractère interchangeable d’un actif. Dans le cas de la monnaie, cela signifie que toutes les unités de compte doivent être égales. Ainsi, un billet de cent euros vaut toujours la même valeur qu’un autre billet de cent euros ou que deux billets de cinquante.
Sur le réseau Bitcoin, la fongibilité signifie que tous les bitcoins doivent avoir la même valeur indépendamment de leur historique, ou de l’entité qui les possède.
Cette propriété n’est pas garantie dans le cas des cryptomonnaies décentralisées. Sur Bitcoin, la traçabilité des transactions inscrites dans la blockchain pose des problèmes de fongibilité. Certains coins sont jugés « sales », lorsque l’historique des transactions associées comporte des opérations illégales (bitcoins volés, ou ayant servi à acheter des produits illicites). Par exemple, Coinbase refuse automatiquement les coins qui sont passés par certains dark markets, ou ayant servi à jouer en ligne.
Cela pose un gros problème quant au bon fonctionnement du réseau décentralisé, car tous les coins ne sont pas égaux. Certains utilisateurs sont même prêts à payer des frais supplémentaires pour « blanchir » leurs coins en utilisant des services de mixage.
La confidentialité des transactions
La confidentialité des transactions est donc nécessaire pour assurer la fongibilité d’une monnaie décentralisée. Elle l’est également pour permettre à des entreprises d’utiliser ce nouveau type de monnaie sans divulguer des données sensibles. Certaines entreprises n’ont aucune envie de communiquer le détail de leurs opérations financières à leurs concurrents. De même, le particulier ne ressent pas forcément le besoin de communiquer au monde entier la nature et le montant des achats qu’il effectue.
Les chercheurs du réseau Bitcoin proposent régulièrement de nouvelles solutions. Monero fut créé dès le départ dans le but d’assurer un haut niveau de confidentialité des transactions, via différents procédés. Le succès de cette cryptomonnaie est dû à cette propriété essentielle.
Le protocole CryptoNote
Il s’agit du préalable cryptographique à la genèse de Monero.
CryptoNote est un protocole open-source permettant d’assurer l’anonymat des contreparties et la confidentialité des transactions. Il a servi de base à plusieurs cryptomonnaies. Contrairement au réseau Bitcoin, une blockchain administrée via CryptoNote ne révèle pas l’origine ou la destination des unités de compte.
- Anonymat de l’émetteur : il est assuré en utilisant plusieurs clefs publiques pour signer une transaction (signatures de cercle). Les nœuds du réseau peuvent prouver que la transaction a bien été signée par l’émetteur ; mais sans être en mesure d’identifier la clef utilisée.
- Anonymat du récepteur : le protocole permet de générer une paire de clefs à usage unique pour chaque transaction (adresses furtives). Il est alors impossible pour une tierce partie de déterminer si certaines transactions sont envoyées au même récepteur.
- Protection contre les doubles dépenses : l’ancêtre des signatures de cercle s’appelle les signatures de groupe. Il faut s’appuyer sur une tierce partie pour protéger le système contre les double dépenses. Désormais, chaque adresse furtive laisse une empreinte dans la blockchain. Le protocole rejette alors toute transaction impliquant une adresse furtive qui a déjà été utilisée.
- Preuve de travail « égalitaire » : le système souhaite assurer la linéarité entre l’investissement financier et la puissance de hachage correspondante, quel que soit le matériel utilisé pour miner, qu’il s’agisse des GPUs/FPGA/ASICs ou des CPUs.
CryptoNote fut le premier protocole à implémenter les signatures de cercle et les adresses furtives. Plusieurs hard forks de Monero permirent d’implémenter des améliorations, inspirées notamment par le développeur de Bitcoin Core Gregory Maxwell.
Le livre blanc de CryptoNote est disponible sur WebArchive.
Les signatures de cercle (ring signatures)
Il existe plusieurs versions de ce tour de passe-passe cryptographique, mais le but est toujours le même. Il faut cacher la clef publique associée à la clef privée ayant servi à signer une transaction, tout en étant en mesure de prouver que la signature est bien authentique. Dans le cas de Monero, le protocole s’appuie sur les travaux d’Eiichiro Fujisaki et de Koutarou Suzuki. Pour avoir plus de détails sur les transactions confidentielles basées sur les signatures de cercle (Ring CT), lire ce papier de Shen Noether.
Une signature de cercle permet de signer un message au nom d’un ensemble de clefs publiques. Il est alors impossible d’identifier l’auteur de la signature parmi l’ensemble des signataires (il y a équiprobabilité des émetteurs de la transaction parmi les signataires). Les nœuds du réseau peuvent juste s’assurer que la signature est correcte : il faut obligatoirement posséder une clef privée associée à l’une des clefs publiques utilisées pour que la signature soit correcte, mais il est impossible de lier une signature à l’adresse publique de l’émetteur de la transaction.
Chaque émetteur d’un paiement doit obligatoirement prouver qu’il dépense des sorties non dépensées (UTXOs) comme dans le cas de Bitcoin, mais ces UTXOs n’ont pas à être connues pour effectuer la vérification. Dans la pratique, cela signifie que lorsqu’un utilisateur souhaite effectuer une transaction de 50 XMR, il utilisera, par exemple, (22 XMR + 10 XMR + 3.8 XMR + 6.7 XMR + 6.5 XMR) provenant de différentes adresses inconnues.
Les adresses furtives (stealth adresses)
Chaque compte Monero possède :
- Une adresse publique ;
- Une clef de dépense privée (spend key) : cette clef privée permet d’émettre le paiement,
- Une clef d’observation (view key) qui permet de visualiser les transactions entrantes vers le compte. Privée par défaut, elle peut être partagée afin de divulguer le solde d’un compte Monero.
Le système des adresses furtives permet à l’émetteur d’une transaction de créer des adresses à usage unique, aléatoires, pour le compte du récepteur. La clef privée de ces adresses est également liée au compte du récepteur, mais il est impossible d’identifier son adresse publique associée pour une tierce partie sans connaître sa clef d’observation. Par ce procédé cryptographique, seules les contreparties impliquées peuvent avoir connaissance de la transaction.
Monero dans la pratique
Il est évident que la confidentialité des transactions effectuées sur le réseau Monero n’attire pas que des entités menant des activités légales. Monero est de plus en plus utilisé sur les dark markets. Cependant, un haut niveau de confidentialité offre aussi de nombreux avantages à ceux qui respectent la loi, mais souhaitent protéger des informations sensibles. Par exemple, un commerçant ne souhaite pas forcément divulguer l’identité de ses clients, ou le montant des transactions effectuées.
Le minage de Monero
La preuve de travail utilisée sur Monero reposa longtemps sur l’algorithme CryptoNight. Depuis novembre 2019, il s’agit de RandomX. Il est optimisé pour le minage par CPU et emploie différentes techniques rendant le minage par ASIC (puces spécialisées) moins efficace. L’idée est de garder le minage décentralisé, ainsi que d’avoir une distribution plus égalitaire des récompenses de bloc.
Émission et réception d’une transaction
Plusieurs wallets multi-devises gèrent Monero. Cependant, afin de bénéficier de l’ensemble des fonctionnalités offertes par le protocole, il est nécessaire d’installer le logiciel client complet sur son ordinateur. Les sources sont disponibles ici, et de nombreuses langues sont supportées, dont le français.
Après installation du logiciel client, il faudra télécharger l’intégralité de la blockchain sur son disque dur. Sa taille est d’environ 64 Go. Afin de lancer la synchronisation avec le réseau, il faut lancer l’exécutable « monerod.exe » présent à la racine du dossier. Il est possible de modifier le chemin d’accès à la blockchain, qui se trouve par défaut dans le répertoire C:\ProgramData\bitmonero\lmdb :
- Soit en passant par l’invite de commande :
{cmd.exe, touche Windows + R} et en ajoutant "--data-dir N:\nouveau\chemin\d'accès"
- Soit en modifiant le champ « Daemon startup flags » (« Options de démarrage » en français) de l’onglet « Settings » (« Réglages ») dans l’interface graphique utilisateur.
La création d’un nouveau portefeuille est tout à fait classique. La graine (phrase mnémonique, seed) peut comporter jusqu’à 25 mots.
La réception d’un paiement (via une adresse publique) est également triviale : son format est « humain-compatible » et le QR code associé s’affiche en grand format.
L’émission d’une transaction, en revanche, doit être configurée en fonction du niveau de confidentialité souhaité, c’est-à-dire qu’il est possible d’augmenter la taille du cercle de signataires à sa guise. Bien évidemment, cela augmente les frais.
Je suis un citoyen honnête. Pourquoi aurais-je besoin de transactions anonymes ?
La confidentialité des transactions est indispensable à cause de l’asymétrie de l’information. Elle se produit lorsque certains participants à un échange disposent d’informations pertinentes que d’autres n’ont pas :
- Certaines entités accaparent une quantité très largement supérieure d’informations aux dépens des autres, notamment les données financières des simples citoyens.
- Les marchés ne seront jamais libres si les conditions de concurrence pure et parfaite ne seront jamais remplies.
- Les corporations ont un énorme avantage face au consommateur lambda. En effet, elles possèdent beaucoup plus d’informations que lui. Cela l’empêche de faire ses choix en connaissance de cause ou de proposer un business compétitif. La divulgation des données financières des consommateurs accroît grandement ces inégalités.
- Les entreprises peuvent utiliser les données financières de leurs utilisateurs afin de manipuler les marchés. Elle peuvent aussi vendre ces données à des tierces parties ou se les faire subtiliser.
- Les entreprises ayant accès au Big Data peuvent influencer les consommateurs ou ajuster leurs tarifs à leur guise.
- Au-delà de la simple perte ou vol de données, cela peut créer des problèmes de sécurité physique. C’est le cas dans le contexte des objets connectés (exemple : voitures autonomes).
- L’histoire est remplie d’exemples montrant que les gouvernements ont une fâcheuse tendance à utiliser les données financières de leurs citoyens pour justifier, à discrétion, des restrictions de libertés individuelles élémentaires.
Monero n’est pas une solution parfaite, et certains lui préfèreront les cryptomonnaies basées sur les preuves à divulgation nulle de connaissance. Cependant, Monero peut compter sur une équipe de développement solide et une base d’utilisateurs étendue.