Catégories
FAQ

Qu’est-ce que Monero?

Monero est un système monétaire sécurisé, privé et introuvable. Monero utilise un type de cryptographie spécial pour garantir que toutes ses transactions restent 100% non liées et introuvables. Dans un monde de plus en plus transparent, vous pouvez voir pourquoi quelque chose comme Monero peut devenir si désirable. Dans ce guide, nous verrons les mécanismes derrière Monero et verrons ce qui le rend si spécial.

Les origines

En juillet 2012, Bytecoin, la première implémentation réelle de CryptoNote, a été lancée. CryptoNote est le protocole de couche applicative qui alimente diverses devises décentralisées. Bien qu’il soit similaire à la couche applicative qui exécute le bitcoin à bien des égards, il existe de nombreux domaines où les deux diffèrent l’un de l’autre.

Alors que le bytecoin était prometteur, les gens ont remarqué que beaucoup de choses louches se passaient et que 80% des pièces étaient déjà publiées avant la mise en oeuvre du réseau public. Ainsi, il a été décidé que la blockchain bytecoin sera bifurquée (forkée) et les nouvelles pièces de la nouvelle chaîne seront appelées Bitmonero, qui a finalement été renommée Monero signifiant «pièce» en espéranto. Dans cette nouvelle blockchain, un bloc sera extrait et ajouté toutes les deux minutes.

Monero est dirigé par un groupe de 7 développeurs dont 5 ont choisi de rester anonymes tandis que deux sont sortis ouvertement en public. Ce sont: David Latapie et Riccardo Spagni alias «Fluffypony». Le projet est open source et financé par la communauté par le biais de crowdfunded.

Particularités

Alors, qu’est-ce qui fait que Monero le rend si tendance et si demandé? Quelles sont les propriétés uniques que l’algorithme CryptoNote lui confère? Regardons ça ensemble.

Propriété n °1: votre devise est la vôtre

Vous avez un contrôle total sur vos transactions. Vous êtes responsable de votre argent. Parce que votre identité est privée, personne ne pourra voir à quoi vous dépensez votre argent.

Propriété n °2: elle est fongible

Une autre propriété intéressante que le Monero a par rapport à Bitcoin, c’est son intimité, et qu’elle est vraiment fongible. Qu’est-ce que la fongibilité? La fongibilité est définie comme suit:

« La fongibilité est l’interchangeabilité d’un bien ou d’un actif avec d’autres biens ou actifs individuels du même type. »

Investopedia

Alors, qu’est-ce qui est fongible et qu’est-ce qui n’est pas fongible ?

Supposons que vous ayez emprunté 20€ à un ami. Si vous lui retournez l’argent avec un autre billet de 20€, c’est parfait. En fait, vous pouvez même leur rendre l’argent sous la forme d’1 billet de 10€ et de 2 billets de 5€. C’est aussi acceptable. L’Euro a des propriétés fongibles (mais pas toujours cependant).

Cependant, si vous deviez emprunter la voiture de quelqu’un pour le week-end et revenir et lui donner une autre voiture en retour, alors cette personne ne sera très probablement pas satisfaite. En fait, si vous êtes parti avec une Ferrari rouge et que vous êtes revenu avec une autre Ferrari rouge, ce n’est même pas suffisant. Les voitures, dans cet exemple, sont un actif non fongible.

Alors, quel est le problème de la fongibilité en ce qui concerne la crypto-monnaie?

Regardons le bitcoin par exemple. Bitcoin est fier d’être un grand livre ouvert et un livre public. Mais cela signifie également que tout le monde peut y voir les transactions et, plus important encore, tout le monde peut voir la trace de cette transaction. Cela signifie essentiellement que supposons que vous possédez un bitcoin qui a déjà été utilisé dans une transaction illégale, par exemple un achat de médicaments; il serait à jamais lié à cette transaction. Ce que cela fait en substance, c’est qu’il entache votre bitcoin. On parle de jeton teinté.

Dans certains fournisseurs de services Bitcoin et échanges, ces jetons ou pièces viciées ne valent jamais autant que des pièces propres. Cela tue la fongibilité et est l’une des critiques les plus souvent utilisées contre le bitcoin. Après tout, pourquoi devriez-vous souffrir si l’un des précédents propriétaires de votre bitcoin l’utilisait pour effectuer des achats illégaux?

C’est là qu’intervient Monero. Étant donné que toutes les données et transactions sont privées, personne ne peut savoir quelles transactions en Monero vous avez déjà effectuées et personne ne peut non plus savoir ce qui a été utilisé pour acheter avec vos Monero. Étant donné que son historique de transactions ne peut jamais être connu, cela signifie également que traquer les transactions n’est pas possible. En conséquence, le concept de Monero «contaminé» et de Monero «propre» n’existe pas, et donc ils sont fongibles!

Propriété n°3: évolutivité dynamique

Le problème d’évolutivité de Bitcoin a été un sujet très chaud dans les cercles de cryptographie au cours des derniers mois. Donc, pour vous donner un aperçu de la situation, Bitcoin a été créé avec une limite de taille de bloc de 1 Mo auto-imposée. Dans ses premiers développements, le bitcoin n’avait pas de limite de taille de bloc, cependant, afin d’empêcher les transactions de spam, la limite de taille a été appliquée.

Monero, d’autre part, n’a pas de limite de taille prédéfinie, mais cela signifie également que les mineurs malveillants peuvent obstruer le système avec des blocs énormément disproportionnés. Pour éviter que cela ne se produise, une pénalité de récompense en bloc est intégrée au système.

Voilà comment cela fonctionne:

Tout d’abord, la taille médiane des 100 derniers blocs est prise, appelée M100. Supposons maintenant que les mineurs aient extrait un nouveau bloc et qu’il ait une taille particulière qui est appelée «NBS», alias New Block Size.

Si NBS> M100, la récompense de bloc est réduite en dépendance quadratique de la quantité de NBS supérieure à M100.

Cela signifie que si NBS est [10%, 50%, 80%, 100%] supérieur à M100, la récompense en bloc est réduite de [1%, 25%, 64%, 100%].

En règle générale, les blocs supérieurs à 2 * M100 ne sont pas autorisés et les blocs <= 60 Ko sont toujours exempts de pénalités de récompense de bloc.

Propriété #4: Résistant aux ASIC (Application Specific Integrated Circuit)

Avant de commencer, essayons de ne pas en parler. Monero n’est pas exactement «résistant aux ASIC», mais le coût de fabrication des ASIC pour Monero serait si élevé qu’il n’en vaut tout simplement pas la peine. Pourquoi est-ce le cas? Rappelez-vous que quand nous avons dit que Monero était basé sur le système CryptoNote, cela le rend nettement différent des bitcoins? Eh bien, l’algorithme de hachage utilisé dans les systèmes basés sur CryptoNote est appelé «CryptoNight».

Cryptonight a été créé pour construire un système monétaire plus juste et plus décentralisé. Les crypto-monnaies qui incorporent Cryptonight ne peuvent pas être extraites à l’aide. On espérait que cela empêcherait la création de pools miniers et rendrait la monnaie plus également répartie.

Quelles sont donc les propriétés de CryptoNight qui le rendent résistant à l’ASIC? (Ce qui suit est tiré de la réponse «user36303» dans monero.stackexchange.com).

  • Cryptonight nécessite 2 Mo de mémoire rapide pour fonctionner. Cela signifie que la parallélisation des hachages est limitée par la quantité de mémoire pouvant être saturée dans une puce tout en restant suffisamment bon marché pour en valoir la peine. 2 Mo de mémoire prennent beaucoup plus de silicium que les circuits SHA256.
  • Cryptonight est conçu pour être compatible CPU et GPU car il est conçu pour tirer parti des jeux d’instructions AES-Ni. Fondamentalement, une partie du travail effectué par Cryptonight est déjà effectuée dans le matériel lors de l’exécution sur des machines grand public modernes.
  • Il a été question de faire passer Monero de l’algorithme de preuve de travail au Cuckoo Cycle (une autre forme de hachage de preuve de travail). Si un tel changement se produit, alors la quantité de travail dépensée dans la R&D des ASIC conviviaux Monero n’aurait aucun sens.

Cuckoo Cycle est la première preuve de travail théorique sur les graphes et la plus liée à la mémoire, mais avec une vérification instantanée. Contrairement à Hashcash, Cuckoo Cycle est immunisé contre l’accélération quantique par l’algorithme de recherche de Grover.

Propriété # 5: plusieurs clés

L’un des aspects les plus déroutants de Monero est ses multiples clés. Dans Bitcoin, Ethereum, etc., vous n’avez qu’une clé publique et une clé privée. Cependant, dans un système comme Monero, ce n’est pas aussi simple que cela.

View keys (Clés de vue) : Monero a une view key publique et une view key privée.

  • La clé de vue publique est utilisée pour générer l’adresse publique furtive unique où les fonds seront envoyés au destinataire ( on en parleraplus à ce sujet plus tard)
  • La clé de vue privée est utilisée par le récepteur pour scanner la blockchain afin de trouver les fonds qui lui sont envoyés.

C’est l’aperçu général du processus.

La clé de vue publique constitue la première partie de l’adresse Monero.

Spend Keys (Clés de dépenses)

Si la clé de vue est principalement destinée au destinataire d’une transaction, la clé de dépenses concerne uniquement l’expéditeur. Comme ci-dessus, il existe deux clés de dépenses: la clé de dépenses publique et la clé de dépenses privée.

La clé de dépense publique aidera l’expéditeur à participer aux transactions en signature en anneaux (Ring signature) et vérifiera également la signature de l’image clé. (On verra plus à ce sujet plus tard). La clé de dépense privée aide à créer cette image clé qui leur permet d’envoyer des transactions.

La clé de dépenses publiques constitue la deuxième partie de l’adresse Monero.

L’adresse Monero est une chaîne de 95 caractères composée de la clé de dépenses publiques et de vue publique ( public spend et public view key).

Cela peut être très déroutant, mais gardez simplement ces informations dans votre tête, et cela deviendra plus clair avec les sections suivantes.

Quelle est la cryptographie impliquée dans Monero?

Comment fonctionne une transaction dans une crypto-monnaie?

Chaque transaction a deux côtés, le côté entrée et le côté sortie. Supposons qu’Alice ait besoin d’envoyer des bitcoins à Bob à quoi cela ressemblera-t-il?

Entrée de transaction (transaction Input)

Afin de réaliser cette transaction, Alice doit obtenir des bitcoins qu’elle a reçus de diverses transactions précédentes. N’oubliez pas, comme nous l’avons dit précédemment, en bitcoins, chaque pièce est comptabilisée via un historique des transactions. Ainsi, Alice peut faire des sorties de ses transactions précédentes l’entrée de la nouvelle transaction. Plus tard, lorsque nous parlons de «sorties», en particulier dans la section de signature de cercle, nous entendons les sorties de l’ancienne transaction qui deviennent les entrées de la nouvelle transaction.

Supposons donc qu’Alice ait besoin d’extraire des bitcoins des transactions suivantes que nous nommerons TX (0), TX (1) et TX (2). Ces trois transactions seront additionnées et cela vous donnera la transaction d’entrée que nous appellerons TX (Input).

Donc, c’est tout du côté entrée, voyons à quoi ressemblera le côté sortie.

Sortie de transaction (Transaction Output)

La sortie aura essentiellement un certain nombre de bitcoins que Bob possédera après la transaction et tout changement restant qui sera ensuite renvoyé à Alice. Ce changement devient alors sa valeur d’entrée pour toutes les transactions futures.

Une représentation imagée du côté sortie ressemble à ceci:

Ceci était une transaction très simple qui n’a qu’une seule sortie (en dehors du CHANGE, qui est la différence entre l montant initial et ce que l’on a envoyé), mais il y a des transactions qui sont possibles avec plusieurs sorties.

Qu’est-ce que Monero? Le guide ultime pour les débutants

Les transactions Bitcoin se produisent en raison de la cryptographie à clé publique. Pour avoir une compréhension très basique de la façon dont cela fonctionne, consultez cet organigramme:

Un utilisateur de bitcoin choisit d’abord sa clé privée. La clé publique est alors mathématiquement dérivée de la clé privée. La clé publique est ensuite hachée pour créer une adresse publique ouverte sur le monde. Donc, si Alice devait envoyer à Bob des BTC, elle devait simplement les envoyer à son adresse publique.

Maintenant, il y a un problème avec ce système. L’adresse publique est bien… publique! Quelqu’un sur la blockchain peut savoir à qui appartient cette adresse et, par conséquent, consulter l’intégralité de son historique de transactions et également un certain nombre de bitcoins dont elle est propriétaire! Bien que Bitcoin fasse un excellent travail en tant que crypto-monnaie décentralisée, il ne fait pas vraiment un excellent travail en tant que système de monnaie privée.

Voici le «triangle du cash électronique», comme le dit l’équipe Monero:

Comme ils le disent, une monnaie électronique idéale devrait remplir trois conditions:

Elle devrait être électronique.
Elle devrait être décentralisée.
Elle devrait être privée.

Avec Monero, ils tentent de répondre à tous ces 3 critères.

La philosophie sous-jacente derrière Monero est l’intimité et l’opacité.

  • La confidentialité de l’expéditeur est maintenue par les signqtures en anneaux (Ring Signatures).
  • La confidentialité du destinataire est maintenue par des adresses confidentielles.
  • La confidentialité de la transaction est maintenue par Ring CT alias Ring Confidential Transactions.

Monero Cryptography # 1: Signatures d’anneau

Afin de comprendre ce que sont les signatures d’anneau et comment elles contribuent à préserver la confidentialité de l’expéditeur, prenons un exemple hypothétique réel. Lorsque vous envoyez un chèque à quelqu’un, vous devez le signer avec votre signature, n’est-ce pas? grâce à cela, toute personne qui voit votre chèque (et sait à quoi ressemble votre signature) peut dire que vous êtes la personne qui l’a envoyé.

Pensez-y maintenant.

Supposons que vous choisissiez 4 personnes au hasard dans la rue, et que vous fusionnez vos signatures avec ces 4 personnes pour créer une signature unique. Personne ne pourra savoir si c’est vraiment votre signature ou non.

C’est essentiellement ainsi que fonctionne la signature d’anneau. Voyons son mécanisme dans le contexte de Monero.

Supposons qu’Alice doit envoyer 1000 XMR (XMR = Monero) à Bob, comment le système utilisera-t-il les signatures d’anneau pour cacher son identité? (Par souci de simplicité, nous prenons un cas d’implémentation pré-annulaire … plus à ce sujet plus tard).

Tout d’abord, elle déterminera sa «taille de bague». La taille de l’anneau est une sortie aléatoire tirée de la blockchain qui a la même valeur que sa sortie aka 1000 XMR. Plus la taille de la bague est grande, plus la transaction est importante et donc les frais de transaction plus élevés. Elle signe ensuite ces sorties avec sa clé de dépenses privée et l’envoie à la blockchain. Autre chose à noter, Alice n’a pas besoin de demander aux propriétaires de ces transactions précédentes leur permission d’utiliser les sorties.

Donc, supposons qu’Alice choisisse une taille d’anneau de 5, c’est-à-dire 4 sorties leurres et sa propre transaction, pour un étranger, voici à quoi cela ressemblera :

Dans une transaction de signature d’anneau, l’un des leurres est aussi susceptible d’être une sortie que la sortie réelle grâce à laquelle un tiers non intentionnel (y compris les mineurs) ne pourra pas savoir qui est l’expéditeur.

Maintenant, cela nous amène à un problème.

L’un des nombreux rôles importants que jouent les mineurs est la prévention de la «double dépense». Doubler les dépenses signifie essentiellement dépenser exactement la même pièce sur plus d’une transaction à la fois. Ce problème est contourné à cause des mineurs. Dans une blockchain, les transactions ne se produisent que lorsque les mineurs placent les transactions dans les blocs qu’ils ont extraits.

Supposons donc que A devait envoyer 1 bitcoin à B puis qu’il envoie la même pièce à C, les mineurs effectueraient une transaction à l’intérieur du bloc et, dans le processus, écraseraient l’autre, empêchant ainsi les dépenses doubles dans le processus. Mais cela n’est possible que lorsque les mineurs peuvent réellement voir ce que sont réellement les entrées de la transaction et qui est l’expéditeur. Dans Monero, tout cela est caché et masqué grâce aux signatures d’anneau. Alors, comment empêchent-ils les doubles dépenses?

La réponse réside dans une cryptographie plus ingénieuse.

Chaque transaction dans Monero est accompagnée de sa propre image clé unique. (nous verrons les mathématiques derrière l’image clé plus tard). Étant donné que l’image clé est unique pour chaque transaction, les mineurs peuvent simplement la vérifier et savoir si une pièce Monero est dépensée deux fois ou non.

C’est ainsi que Monero maintient la confidentialité de l’expéditeur en utilisant les transactions en anneau. Ensuite, nous verrons comment Monero protège l’identité de son destinataire en utilisant des adresses furtives.

Monero Cryptography # 2: Adresses furtives

L’un des plus grosse promesse de Monero est la dissociabilité des transactions. Fondamentalement, si quelqu’un vous envoie 200 XMR, personne ne devrait savoir que cet argent arrive à votre adresse. Fondamentalement, si Alice devait envoyer de l’argent à Bob, seule Alice devrait savoir que Bob est le destinataire de son argent et personne d’autre.

Alors, comment Monero garantit-il la confidentialité de Bob?

N’oubliez pas que Bob a 2 clés publiques, la clé de vue publique (public view key) et la clé d’envoi publique (public send key). Pour que la transaction soit conclue, le portefeuille d’Alice utilisera la clé de vue publique de Bob et la clé de dépense publique pour générer une clé publique unique et unique.

Il s’agit du calcul de la clé publique unique (P).

P = H(rA) G + B

Dans cette équation:

r = scalaire aléatoire choisi par Alice.
A = clé publique de Bob.
G = Constante cryptographique.
B = clé de dépenses publiques de Bob.
H() = L'algorithme de hachage Keccak utilisé par Monero.

Le calcul de cette clé publique unique génère une adresse publique unique appelée «adresse furtive» dans la chaîne de blocs où Alice envoie son Monero destiné à Bob. Maintenant, comment Bob va-t-il déverrouiller son Monero de la distribution aléatoire des données?

Rappelez-vous que Bob a également une clé de dépenses privée.

C’est là que cela entre en jeu. La clé de dépense privée aide essentiellement Bob à scanner la blockchain pour sa transaction. Lorsque Bob rencontre la transaction, il peut calculer une clé privée qui correspond à la clé publique unique et récupère son Monero. Alice a donc payé Bob à Monero sans que personne ne le sache.

Le calcul des images clés (un léger détour)

Avant de continuer, revenons aux images clés. Alors, comment une image clé (I) est-elle calculée?

Nous savons maintenant comment la clé publique à usage unique (P) a été calculée. Et nous avons la clé de dépenses privée de l’expéditeur que nous appellerons «x».

I = xH (P).

Choses à noter à partir de cette équation.

  • Il est impossible de dériver l’adresse publique unique P de l’image clé « I » (c’est une propriété de la fonction de hachage cryptographique) et donc l’identité d’Alice ne sera jamais exposée.
  • P donnera toujours la même valeur lorsqu’il est haché, ce qui signifie que H (P) sera toujours le même. Cela signifie que, puisque la valeur de « x » est constante pour Alice, elle ne pourra jamais générer plusieurs valeurs de « I ». Ce qui rend l’image clé unique pour chaque transaction.

Monero Cryptography # 3: Ring Transactions confidentielles

Donc, maintenant, nous avons vu comment l’émetteuir (celuis qui dépense) peut être gardé anonyme et nous avons vu comment le récepteur est gardé anonyme. Mais qu’en est-il de la transaction elle-même? Existe-t-il un moyen de s’assurer que le montant de la transaction lui-même est masqué?

Avant l’implémentation de Ring CT, les transactions se produisaient comme suit:

Si Alice devait envoyer 12,5 XMR à bob, la sortie sera divisée en 3 transactions de 10,2 et 0,5. Chacune de ces transactions obtiendra sa propre signature d’anneau, puis sera ajoutée à la blockchain:

Bien que cela garantisse la confidentialité de l’expéditeur, il a rendu les transactions visibles pour tout le monde.

Pour résoudre ce problème, Ring CT a été mis en œuvre sur la base des recherches effectuées par Gregory Maxwell. Ce que fait RingCT est simple, il cache les montants des transactions dans la blockchain. Cela signifie également que toutes les entrées de transaction n’ont pas besoin d’être décomposées en dénominations connues, un portefeuille peut désormais récupérer les membres de l’anneau à partir de toutes les sorties Ring CT.

Pensez à ce que cela fait à la confidentialité de la transaction.

Puisqu’il y a tellement plus d’options pour choisir des anneaux et que la valeur n’est même pas connue, il est désormais impossible d’être au courant d’une transaction particulière.

Ces 3 facteurs fonctionnent en harmonie pour créer un système où l’intimité totale est assurée. Mais cela n’était pas encore suffisant pour les développeurs de Monero. Ils avaient besoin d’une couche de sécurité supplémentaire.

Kovri et I2P

I2P ou le Projet Internet Invisible est un système de routage qui permet aux applications de s’envoyer des messages en privé sans aucune interférence extérieure. Kovri est une implémentation en C++ d’I2P qui est censée être intégrée au code Monero.

Si vous utilisez Monero, Kovri masquera votre trafic Internet de manière à ce que la surveillance passive du réseau ne révèle pas du tout que vous utilisez Monero. Pour que cela fonctionne, tout votre trafic Monero sera crypté et acheminé via les nœuds I2P. Les nœuds sont comme des portiers aveugles. Ils sauront que vos messages transitent mais n’auront aucune idée d’où ils vont exactement et quel est le contenu des messages.

On espère que la relation entre I2P et Monero est parfaite car:

Monero bénéficiera d'une couche de protection supplémentaire.
Le nombre de nœuds utilisés dans I2P augmentera considérablement après la mise en œuvre.

Kovri est encore au stade de développement (au moment de la rédaction) et n’a pas encore été mis en œuvre.