Pour effectuer un virement bancaire, il faut un numéro de compte, un mot de passe et une vérification par 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. Comprendre son fonctionnement, c’est aussi comprendre pourquoi la clé privée est si importante.

Cryptomonnaie associée : $BTC à 83 237,29 (+2,3 % sur 24 h).

▍Une paire de clés

La signature numérique repose sur une paire de clés : la clé privée sert à générer 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 : il est facile de calculer la clé publique à partir de la clé privée, mais il est impossible, en pratique, de retrouver la clé privée à partir de la clé publique. 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 garde.

▍Que prouve une signature ?

Lorsqu’une transaction est envoyée, le portefeuille signe son contenu 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 vient bien de la personne qui détient la clé privée, et son contenu n’a pas été modifié après la signature. Il suffit de changer un seul octet du montant ou de l’adresse du destinataire pour que la signature d’origine ne soit plus valide.

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

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

Chaque transaction Ethereum comporte un nonce qui augmente au fil du temps ; un même nonce ne peut être inclus qu’une seule fois dans un bloc. Les transactions contiennent également un identifiant de chaîne (EIP-155), ce qui empêche de rejouer sur une autre chaîne une transaction déjà signée. Bitcoin, de son côté, empêche de dépenser deux fois les mêmes fonds grâce à la règle selon laquelle chaque sortie non dépensée ne peut être utilisée qu’une seule fois.

▍Les signatures ne servent pas qu’aux transferts

Une demande de signature affichée par un 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 peuvent avoir le même effet qu’une autorisation directe : la personne qui les détient 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 escroquer.

▍En résumé

Sur la blockchain, une signature est comme votre « signature manuscrite », et la clé privée est le seul stylo qui puisse la tracer. Si vous perdez ce stylo ou si quelqu’un vous le prend, aucune institution ne peut vous aider à annuler la signature. Prenez le temps de comprendre les principes avant d’agir, et ne prenez pas de décisions au hasard.

Qu’en pensez-vous ? Venez en discuter dans les commentaires.