Je suis retombé sur ce sujet en feuilletant mes notes et j’ai eu envie de le partager.

Pour un virement bancaire, on s’appuie sur un numéro de compte, un mot de passe et les vérifications de la banque. Sur une blockchain, aucune institution ne vérifie votre identité : le réseau ne reconnaît qu’une seule chose, la signature numérique. La comprendre, c’est aussi comprendre pourquoi la clé privée est si importante.

Lors d’un transfert de $BTC , le portefeuille signe la transaction avec la clé privée, puis les nœuds du réseau vérifient cette signature à l’aide de la clé publique. Actuellement : 75 939,99 (24 h : -0,4 %).

Une paire de clés :

La signature numérique repose sur une paire de clés : la clé privée sert à créer la signature, et la clé publique à la vérifier. La clé privée est un grand nombre généré aléatoirement. La clé publique est calculée à partir de la clé privée au moyen d’opérations sur une courbe elliptique. Bitcoin et Ethereum utilisent tous deux la courbe secp256k1.

Cette opération est à sens unique : calculer la clé publique à partir de la clé privée est facile, mais retrouver la clé privée à partir de la clé publique est impossible en pratique. La clé publique et l’adresse qui en découle peuvent donc être rendues publiques, tandis que la clé privée doit rester sous votre contrôle.

Ce que prouve la signature :

Lorsque vous envoyez une transaction, votre portefeuille la signe avec la clé privée, puis les nœuds du réseau vérifient la signature à l’aide de la clé publique. Si la vérification réussit, cela prouve deux choses à la fois : la transaction provient bien de la personne qui détient la clé privée et son contenu n’a pas été modifié après la signature. Si le montant ou l’adresse du destinataire change ne serait-ce que d’un octet, la signature originale ne sera plus valide.

Attention : la signature ne chiffre pas le contenu de la transaction. Le montant et l’adresse d’une transaction sur la chaîne restent visibles par tous. La signature répond à la question « qui l’a envoyée et a-t-elle été modifiée ? », pas à la question « les autres peuvent-ils la voir ? ».

Empêcher qu’une transaction soit utilisée deux fois :

Chaque transaction Ethereum contient un nonce qui augmente à chaque fois. Un même nonce ne peut être inclus dans un bloc qu’une seule fois. La transaction contient également un identifiant de chaîne (EIP-155) : une transaction signée ne peut pas être rejouée sur une autre chaîne. Bitcoin, lui, empêche qu’une même somme soit dépensée deux fois grâce à la règle selon laquelle chaque sortie non dépensée ne peut être dépensée qu’une seule fois.

La signature ne sert pas qu’aux transferts :

Une demande de signature qui apparaît dans votre portefeuille ne concerne pas forcément un transfert. Il peut aussi s’agir d’une autorisation de jetons ou d’un message signé hors chaîne. Certaines signatures hors chaîne ont le même effet qu’une autorisation directe : leur destinataire peut s’en servir pour transférer vos jetons.

Avant de signer, vérifiez donc le type d’opération, l’adresse avec laquelle vous interagissez et le montant. Si vous ne comprenez pas, ne signez pas. Toute personne qui vous demande votre clé privée ou votre phrase de récupération pour « vérifier une signature » cherche à vous arnaquer.

Pour finir, quelques mots :

Sur la chaîne, la signature est comme votre « signature manuscrite », et la clé privée est le seul stylo qui puisse l’écrire. Si vous perdez ce stylo ou si quelqu’un vous le prend, aucune institution ne pourra annuler la signature. N’investissez que de l’argent dont la perte ne bouleverserait pas votre vie.

Dans quelle situation avez-vous compris tout cela ?

À lire par curiosité, ne faites pas pareil sans réfléchir et faites-vous votre propre opinion.