Dérivation normale
La dérivation normale (non-hardened) permet de générer des clés filles publiquement à partir d'une xpub. Pratique pour les watch-only et marchands. Mais dangereuse si combinée avec la fuite d'une clé fille privée. À l'usage exclusif des branches « adresse » sous un compte hardened.
Définition
La dérivation normale (non-hardened) est l'une des deux modes de dérivation définis par BIP-32. Elle permet de générer une clé fille à partir d'une clé parente en utilisant un index inférieur à 2^31 (par exemple m/0/3, sans apostrophe). Particularité importante : à partir de la clé publique parente seule (xpub), on peut dériver toutes les clés publiques filles, sans connaître la clé privée parente. C'est ce qui rend possible les wallets watch-only.
L'avantage : watch-only et marchands
Cette propriété est précieuse pour plusieurs cas d'usage :
- Marchands : un site e-commerce peut générer une nouvelle adresse de réception pour chaque client à partir d'une xpub stockée en clair sur le serveur, sans risque que la compromission du serveur n'entraîne le vol des fonds.
- Wallets watch-only : suivre le solde et les transactions d'un cold wallet sans manipuler les clés privées.
- Comptables : vérifier que les fonds entrent bien sur les bonnes adresses sans pouvoir les déplacer.
Le piège majeur : combinaison xpub + clé fille privée
Voici la vulnérabilité de la dérivation normale. Si un attaquant obtient :
- La clé publique étendue parente (xpub).
- Une seule clé privée fille (n'importe laquelle).
Alors il peut, par soustraction modulaire dans la courbe elliptique, retrouver la clé privée parente, puis dériver toutes les autres clés privées filles. La compromission d'une seule clé fille emporte donc tout le wallet. Ce scénario peut se produire si vous exportez la clé privée d'une adresse pour signer un message, et qu'elle fuit, alors que la xpub est partagée publiquement.
Hardened vs normal
| | Dérivation normale | Dérivation hardened |
|---|---|---|
| Notation | m/0/3 | m/0'/3' |
| Index | < 2^31 | ≥ 2^31 |
| xpub permet de dériver des clés publiques filles ? | Oui | Non |
| Compromission d'une clé fille privée | Compromet le parent | N'affecte pas le parent |
| Utilisation recommandée | Branches d'adresses sous un compte | Comptes et niveaux supérieurs |
La règle BIP-44
BIP-44 et ses successeurs (BIP-49, 84, 86) appliquent cette logique : tout ce qui précède le niveau « account » est hardened, et les niveaux « change » et « address_index » sont en dérivation normale. Cela permet d'isoler chaque compte tout en bénéficiant des avantages watch-only au niveau des adresses.
À retenir
La dérivation normale n'est pas dangereuse en soi : elle est dangereuse mal utilisée. Tant que vous restez dans les chemins standardisés (BIP-44/49/84/86), la séparation entre niveaux hardened (comptes) et non-hardened (adresses) protège vos fonds. Voir aussi dérivation endurcie.
Termes lies
- Dérivation HDLa dérivation HD (Hierarchical Deterministic) génère un arbre de clés à partir d'une seed unique (BIP-32). Elle suit un chemin standardisé (BIP-44/49/84/86). Elle permet de gérer milliers d'adresses sans nouvelle sauvegarde. C'est la technologie qui sauve les utilisateurs de la fastidieuse gestion par adresse.
- Dérivation endurcie (hardened)La dérivation endurcie (notée par une apostrophe ou « h ») empêche de retrouver la clé parente même en connaissant la xpub fille. Elle est marquée par un index ≥ 2³¹. Indispensable pour isoler les comptes (BIP-44 niveau account). Sans elle, fuiter une xpub pourrait mener à découvrir d'autres branches.
- BIP-32BIP-32 définit les wallets HD : dérivation hiérarchique déterministe à partir d'une seed. Pierre angulaire des wallets modernes. Permet des arbres de clés sans nouvelles sauvegardes.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.