Glossaire / Adresses et clés
Code de chaîne maître
Aussi appelé Clé privée maître.
- Qu'est-ce que le code de chaîne maître ?
- Le code de chaîne maître est la moitié droite du hachage de 64 octets de votre phrase de récupération, le compagnon de la clé privée maître qui se situe à la profondeur zéro d'une arborescence de portefeuille HD.
Spécifié dans BIP-32.
Chaque clé que vous utiliserez un jour descend de cette seule paire. Une unique passe HMAC-SHA512 sur la seed, avec pour clé la chaîne ASCII Bitcoin seed, renvoie 64 octets : les 32 premiers deviennent la clé privée maître et les 32 derniers deviennent le code de chaîne maître. Copiez la phrase de récupération et vous avez copié tout ce qui se trouve en dessous, ce qui explique précisément qu'une sauvegarde soit une phrase plutôt qu'un classeur.
Comment cela fonctionne
La génération maître s'exécute exactement une fois, à la création du portefeuille. Le BIP-32 accepte une seed entre 128 et 512 bits, recommande 256, et la fait passer par le hachage à clé ci-dessus. La paire qui en sort est le nœud noté m au début de chaque chemin de dérivation, et rien ne se situe au-dessus.
Un test de validité se cache dans cette étape. Si les 32 octets de gauche ressortent à zéro, ou sous forme d'un nombre supérieur ou égal à l'ordre de la courbe secp256k1, le BIP-32 déclare la seed invalide et l'implémentation doit la rejeter. Les probabilités de tomber sur l'un ou l'autre cas sont inférieures à 1 sur 2 puissance 127, donc aucun portefeuille n'en a jamais signalé, mais c'est cette règle qui rend chaque seed acceptée utilisable sans ambiguïté.
Sérialisée, la racine s'annonce. Les clés étendues privées du réseau principal portent les octets de version 0x0488ADE4 et s'affichent sous la forme xprv, les publiques portent 0x0488B21E et s'affichent sous la forme xpub. À la racine, l'octet de profondeur est 0x00 et l'empreinte du parent comme le numéro de l'enfant sont quatre octets nuls, car il n'y a aucun parent vers lequel pointer.
Le nombre que vous manipulez réellement est l'empreinte, pas les octets bruts. Hacher la clé publique maître avec SHA-256 puis RIPEMD-160 et conserver les quatre premiers octets produisent une chaîne hexadécimale de huit caractères qui identifie un portefeuille sans rien révéler dont on puisse le déduire.
Où le voir
Les logiciels grand public masquent complètement la paire maître et affichent l'empreinte à la place. Sparrow l'imprime à côté de chaque keystore, Bitcoin Core ouvre chaque ligne de la sortie de listdescriptors avec cette empreinte entre crochets, et un Coldcard l'affiche sur l'écran d'accueil pour vous permettre de confirmer quelle phrase de récupération l'appareil détient actuellement. Quand un PSBT arrive, un appareil de signature compare l'empreinte du champ d'origine de la clé à la sienne avant de décider que la demande lui est même adressée.
C'est dans le multisig que l'identité de la racine cesse d'être anecdotique. Un portefeuille 2-sur-3 n'est pas récupérable à partir de trois phrases de récupération seules, car le reconstruire exige de connaître aussi l'empreinte et le chemin de chaque cosignataire. C'est pourquoi tout outil de multisig sérieux vous dit de conserver le descripteur du portefeuille à côté des mots, et pourquoi perdre le descripteur peut immobiliser des bitcoins qu'aucune phrase seule ne permet d'atteindre.
Le seul moment où vous touchez directement la clé privée maître est un import. Coller un xprv dans un logiciel remet toute l'arborescence : chaque objectif, chaque compte, chaque adresse future, sans moyen de limiter l'autorisation à une branche. Il n'existe pas de version partielle d'une racine, ce qui explique que les portefeuilles matériels refusent tout simplement d'en exporter une.
Code de chaîne maître vs phrase de récupération
La phrase vient d'abord et la paire maître vient ensuite, et elles relèvent de normes différentes. Le BIP-39 transforme 12 ou 24 mots en une seed de 512 bits en exécutant PBKDF2 pendant 2 048 tours ; le BIP-32 transforme ensuite cette seed en clé privée maître et en code de chaîne maître. Les couches restent suffisamment indépendantes pour qu'ajouter une phrase secrète change la seed, et donc change la paire maître et chaque adresse en dessous, tandis que les mots sur votre carte restent exactement les mêmes. Electrum démontre ce point dans l'autre sens : ses phrases de récupération ne sont pas du tout des BIP-39, et elles produisent malgré tout une racine BIP-32 ordinaire.