Glossaire / Adresses et clés
Clé publique
- Qu'est-ce qu'une clé publique ?
- Une clé publique est le point sur la courbe secp256k1 dérivé de votre clé privée, publiable sans risque, et la valeur à laquelle une signature est confrontée lorsque vous dépensez.
Multiplier la clé privée par un point fixe de la courbe produit la clé publique, et aucune méthode connue n'inverse cette étape. Les clés compressées occupent 33 octets, et Taproot les a encore réduites à la forme x-only de 32 octets définie dans le BIP-340. Vous en voyez rarement une en tant qu'utilisateur, car la plupart des adresses ne publient qu'un hachage de la clé et ne révèlent la clé elle-même que lorsque les pièces finissent par bouger.
Comment cela fonctionne
Les clés publiques proviennent d'une courbe précise, et son arithmétique fait tout le travail. Bitcoin utilise secp256k1, définie par l'équation y au carré égale x au cube plus 7 sur un grand corps premier, avec un point de départ convenu appelé générateur. Additionner ce générateur à lui-même autant de fois que l'indique la clé privée produit un autre point de la courbe, et ce point est la clé publique. L'opération est rapide dans un sens et, avec toutes les techniques connues aujourd'hui, irréalisable dans l'autre, ce qui est tout le fondement de la propriété du bitcoin.
Trois encodages apparaissent en pratique. La forme non compressée d'origine utilise 65 octets pour écrire les deux coordonnées derrière un préfixe 0x04. La forme compressée ne conserve que la coordonnée x et un octet de parité, soit 33 octets au total, et est la forme par défaut depuis bien plus d'une décennie. Taproot va plus loin avec des clés x-only d'exactement 32 octets, en abandonnant l'octet de parité car le BIP-340 fixe la convention à la place.
L'endroit où la clé apparaît sur la chaîne dépend du type de sortie. Une sortie legacy ou SegWit version 0 s'engage sur un hachage de 20 octets de la clé publique, de sorte que la chaîne montre le hachage et rien d'autre tant que les pièces ne sont pas dépensées, moment auquel le dépensier doit révéler la clé qui correspond à ce hachage. Une sortie Taproot est différente : la clé de sortie de 32 octets se trouve dans l'adresse elle-même, visible dès l'arrivée des fonds.
Pourquoi cela compte lorsque vous achetez du bitcoin
Deux situations pratiques placent une clé publique devant un acheteur ordinaire, et toutes deux sont faciles à mal gérer.
La première consiste à prouver qu'une adresse est la vôtre. En vertu du règlement de l'UE sur les transferts de fonds, une plateforme d'échange doit vérifier qu'une adresse auto-hébergée appartient réellement à son client avant d'y envoyer plus de 1 000 euros, et des vérifications comparables s'appliquent dans plusieurs autres juridictions couvertes dans nos guides pays. La preuve standard est un message signé : votre portefeuille signe un défi avec la clé derrière l'adresse, et la plateforme le vérifie au moyen de la clé publique. Rien de secret ne quitte votre appareil, donc cette demande peut être satisfaite sans risque, contrairement à une demande de la clé elle-même.
La seconde est la clé publique étendue, le xpub que votre portefeuille peut exporter. Un xpub n'est pas un identifiant de dépense, et le transmettre ne peut pas vous coûter des pièces directement. Il transmet en revanche votre historique financier : quiconque le détient peut générer toutes les adresses que ce portefeuille utilisera un jour, passées et futures, et lire le solde et chaque transaction qui y est rattachée. Les outils de suivi de portefeuille, les outils fiscaux et les comptables demandent des xpub en routine. N'en donnez un que là où vous seriez à l'aise de remettre un relevé bancaire de toute une vie, et utilisez un compte ou un portefeuille distinct là où ce ne serait pas le cas.
Suivre une clé jusqu'à la blockchain
Prenez un portefeuille utilisant le chemin natif SegWit standard, m/84'/0'/0'/0/0. La clé à ce chemin est de 33 octets compressés. Le portefeuille la hache, d'abord avec SHA-256 puis avec RIPEMD-160, produisant 20 octets, et encode ces octets sous forme d'adresse bc1q. Tout ce qui est envoyé à cette adresse est désormais verrouillé sur un hachage, et le réseau n'a jamais vu la clé.
Lorsque vous dépensez, le champ witness porte deux éléments : une signature et la clé publique de 33 octets. Chaque nœud hache la clé, vérifie que le résultat correspond aux 20 octets exigés par la sortie, puis vérifie la signature au moyen de la clé. Ce n'est que si les deux tiennent que la dépense est valide. À partir de ce bloc, la clé est publique, ce qui est une bonne raison de ne pas laisser un solde sur une adresse depuis laquelle vous avez déjà dépensé.
Clé publique vs clé privée
La clé privée est choisie au hasard et la clé publique est calculée à partir d'elle, jamais l'inverse. Cette asymétrie décide de la façon dont chacune est traitée : publier une clé publique est une opération courante et ne vous coûte rien, tandis que publier une clé privée livre les pièces immédiatement et irréversiblement. Les sauvegardes protègent le côté privé, car la clé publique peut toujours être recalculée à partir d'elle en microsecondes. La vérification utilise le côté public, c'est pourquoi des inconnus et des nœuds peuvent vérifier votre signature sans jamais se voir confier quoi que ce soit.