Aller au contenu
buybitcoinsmart

Glossaire / Adresses et clés

Clé enfant

Aussi appelé Clé publique enfant, Clé privée enfant, child key.

Qu'est-ce qu'une clé enfant ?
Une clé enfant provient d'une étape de dérivation et non d'un générateur de nombres aléatoires ; elle est identifiée par l'index que son parent a utilisé pour la produire.

Spécifié dans BIP-32.

Rien dans une clé enfant n'est plus faible que la clé située au-dessus d'elle. Une clé enfant est une clé privée complète de 256 bits, dotée de son propre code de chaîne, capable de signer des transactions et d'avoir à son tour des enfants. Le mot décrit une position dans un arbre, et dans un portefeuille standard les clés qui détiennent réellement vos bitcoins se trouvent cinq niveaux sous la racine.

Comment cela fonctionne

Dériver une clé enfant demande un hachage et une addition. Le code de chaîne du parent devient la clé de HMAC-SHA512, les données sont la matière de clé du parent suivie d'un index de quatre octets, et le résultat de 64 octets se coupe en deux. Les 32 octets de droite deviennent le code de chaîne de l'enfant. Les 32 octets de gauche sont ajoutés à la clé privée du parent, modulo l'ordre de la courbe secp256k1, et la somme est la clé privée de l'enfant.

C'est cette addition qui rend possible la dérivation publique. Ajouter un nombre à une clé privée équivaut à ajouter un point à la clé publique, si bien qu'un logiciel qui ne détient que la partie publique peut calculer la même clé publique enfant sans jamais voir un secret. Le BIP-32 traite aussi le cas où la sortie du hachage tombe hors de la plage valide, ce qu'il situe à une probabilité inférieure à 1 sur 2 puissance 127, et la consigne est de sauter cet index et de passer au suivant.

Les frères et sœurs ne révèlent rien. Deux enfants d'un même parent ne partagent rien qu'un observateur puisse repérer depuis leurs adresses, ce qui justifie d'utiliser une adresse neuve pour chaque paiement. La relation n'est reconstructible que par quelqu'un qui détient la clé publique étendue du parent.

Où vous le rencontrez

Les clés enfants constituent la matière même d'un portefeuille, vous les rencontrez donc sous forme de numéros d'index plutôt que de clés.

Ouvrez un écran de contrôle des pièces dans Sparrow ou Electrum et chaque adresse porte son chemin : m/84'/0'/0'/0/7 est la huitième adresse de réception du premier compte, en comptant à partir de zéro. Confirmez un retrait sur un Trezor ou un Ledger et l'appareil affiche ce même chemin à côté de l'adresse, ce qui permet de vérifier que la destination appartient à votre propre arbre et non à celui qui a compromis l'ordinateur.

La profondeur mérite aussi d'être lue. La clé maîtresse se situe à la profondeur 0, et sous un chemin de style BIP-44 la clé qui signe un paiement se situe à la profondeur 5. Chaque niveau entre les deux est un enfant de celui du dessus et un parent de celui du dessous, si bien que les deux mots décrivent une relation et non un rang.

Une habitude en découle. N'exportez jamais une clé privée enfant isolée depuis un portefeuille HD, sauf si vous avez l'intention d'abandonner entièrement la branche. Une clé privée enfant non renforcée combinée à la clé publique étendue du parent révèle la clé privée étendue du parent, si bien qu'un seul export imprudent peut livrer un compte entier plutôt qu'une adresse.

Clé enfant vs clé parent

Une clé enfant et une clé parent sont le même type d'objet vu depuis les deux extrémités d'une même étape de dérivation. Toute clé, sauf la maîtresse, est l'enfant de quelqu'un, et toute clé dont une autre a été dérivée est le parent de quelqu'un, si bien qu'un nœud en m/84'/0'/0' est les deux à la fois. L'asymétrie tient à ce que chacune peut calculer. Un parent dérive ses enfants sans fin, tandis qu'une clé enfant seule ne dit rien de la clé située au-dessus d'elle. Cette propriété à sens unique constitue tout le modèle de sécurité de l'arbre, et c'est la dérivation renforcée qui la maintient à sens unique.

À ne pas confondre avec

Questions fréquentes

Une clé enfant est-elle moins sûre que la clé maîtresse ?

Non. Une clé enfant est une clé privée complète de 256 bits et signer avec elle est tout aussi robuste. La différence est de position : une clé enfant peut être régénérée à partir de son parent, tandis que le parent ne peut pas être régénéré à partir de l'enfant.

Puis-je exporter une seule clé enfant pour déplacer une seule adresse ?

C'est possible, et il ne faut pas le faire. Une clé privée enfant non renforcée remise à quelqu'un qui détient aussi la clé publique étendue du parent lui permet de reconstituer la clé privée du parent et de dépenser toute la branche.

Termes associés

Plus de termes : Adresses et clés

Lire cette page en anglais