Aller au contenu
buybitcoinsmart

Glossaire / Portefeuilles et conservation

Seed de portefeuille HD

Aussi appelé Root seed.

Qu'est-ce que Seed de portefeuille HD ?
Le seed d'un portefeuille HD est le nombre binaire brut, de 128 à 512 bits, que le BIP-32 passe dans une fonction de hachage pour produire la clé maîtresse et le code de chaîne d'un portefeuille.

Spécifié dans BIP-32.

Les portefeuilles parlent de mots parce qu'une personne peut copier des mots à la main, mais le BIP-32 ne voit jamais de mots. Il consomme une chaîne d'octets et produit une clé maîtresse en une seule passe de HMAC-SHA512, avec le texte fixe « Bitcoin seed » comme clé. Les mots sont un encodage répandu de cette chaîne d'octets, et non le seul utilisé.

Comment cela fonctionne

Le BIP-32 spécifie un seed de 128 à 512 bits, recommande 256 bits et ne dit rien sur l'origine de ces bits. Le seed entre dans HMAC-SHA512 comme message, avec la chaîne ASCII « Bitcoin seed » comme clé. La fonction renvoie 64 octets. Les 32 de gauche deviennent la clé privée maîtresse ; les 32 de droite deviennent le code de chaîne maître, le secret supplémentaire qui empêche une clé enfant divulguée d'exposer ses clés sœurs. Tout le reste dans un portefeuille, chaque compte, chaque adresse, chaque sortie de monnaie, descend de cette paire en répétant un hachage similaire avec un numéro d'index.

La spécification comporte un cas limite qui ne se produit jamais en pratique. Si ces 32 octets de gauche ressortent à zéro, ou à une valeur égale ou supérieure à l'ordre de la courbe secp256k1, le seed est invalide et le portefeuille doit réessayer. La probabilité est d'environ une sur 2 puissance 127, si bien qu'aucune implémentation n'a jamais signalé l'avoir rencontrée.

L'origine des bits est une couche distincte, et il existe plusieurs réponses. Le BIP-39 produit toujours exactement 512 bits en faisant passer la phrase mnémonique dans PBKDF2. Electrum fait passer sa propre phrase dans PBKDF2 avec un sel différent et obtient un seed qu'aucun outil conforme au BIP-39 ne reproduira jamais à partir des mêmes mots. Un portefeuille peut aussi tirer 256 bits directement d'un générateur de nombres aléatoires matériel et ne jamais afficher de phrase, ce que fait Bitcoin Core.

Le sens de la conversion compte. Les mots deviennent un seed ; un seed ne redevient pas des mots. Une fois qu'un portefeuille ne détient plus que la valeur brute, aucun logiciel ne lui imprimera de phrase mnémonique, et c'est pourquoi exporter « le seed » ne remplace pas la conservation de la phrase qui l'a produite.

Où cela se voit

Interrogez Bitcoin Core au sujet d'un portefeuille : il indique un hdseedid, une empreinte du seed, plutôt qu'une phrase, car Core n'a jamais implémenté le BIP-39. La commande RPC sethdseed, ajoutée dans la version 0.17.0, pouvait installer un seed précis dans un portefeuille hérité, et les portefeuilles à descripteurs sont devenus la valeur par défaut des portefeuilles nouvellement créés dans Bitcoin Core 23.0.

La documentation pour développeurs est l'autre endroit où cela apparaît au grand jour. Le BIP-32 et le BIP-39 publient tous deux des vecteurs de test qui présentent le seed sous forme de 128 caractères hexadécimaux à côté de la phrase mnémonique qui l'a produite, ce qui illustre le plus clairement possible qu'il s'agit de deux objets différents.

Le moment pratique où cela pose problème est la migration entre outils. Certains portefeuilles et certaines spécifications, dont les sauvegardes de seed de Coldcard et divers utilitaires pour développeurs, importent ou exportent la valeur brute plutôt que des mots. Fournir un seed brut à un outil qui attend une phrase mnémonique, ou l'inverse, produit soit une erreur, soit, pire, un portefeuille valide mais vide. Vérifiez quelle couche un champ demande avant d'y coller quoi que ce soit.

Seed de portefeuille HD vs phrase de récupération

Le seed est un nombre ; la phrase mnémonique est une façon de noter ce nombre. Garder les deux distincts explique plusieurs choses qui, sinon, ressemblent à de la magie. C'est pourquoi l'ajout d'une phrase secrète facultative change le seed sans toucher à vos mots. C'est pourquoi la phrase d'Electrum et une phrase conforme au BIP-39 peuvent toutes deux compter douze mots anglais et ouvrir malgré tout des portefeuilles différents. Et c'est pourquoi un portefeuille qui annonce une « importation de seed » peut désigner une phrase mnémonique, une chaîne hexadécimale ou une clé privée étendue, trois entrées qui partagent un surnom et rien d'autre.

À ne pas confondre avec

Questions fréquentes

Puis-je retrouver mes mots à partir d'un seed brut ?

Non. La conversion ne s'effectue que dans un sens, de la phrase mnémonique vers le seed, et le hachage ne peut pas être inversé. Un portefeuille qui ne détient que la valeur brute peut continuer à dépenser vos bitcoins mais ne pourra jamais imprimer de phrase, et c'est pourquoi les mots sont la sauvegarde qu'il vaut la peine de conserver.

Pourquoi Bitcoin Core ne m'affiche-t-il pas 12 mots ?

Core n'a jamais implémenté le BIP-39. Il génère un seed directement à partir du hasard du système et l'identifie par un hdseedid, si bien que sa sauvegarde est le fichier de portefeuille ou un export de descripteurs plutôt qu'une phrase mnémonique.

Termes associés

Plus de termes : Portefeuilles et conservation

Lire cette page en anglais