Aller au contenu principal
Cryptographie

Clé étendue (xprv/xpub)

Une clé étendue est la concaténation d'une clé (privée ou publique) et de son code de chaîne. Elle permet de dériver toute une descendance de clés. Exposer une xpub permet de générer toutes les adresses publiques d'un compte. Il faut donc la traiter comme une donnée privée.

Définition formelle

Une clé étendue, définie par le BIP-32 de Pieter Wuille (2012), est l'association d'une clé (publique ou privée) sur secp256k1 et d'un code de chaîne de 32 octets. Elle constitue le nœud d'un arbre de dérivation hiérarchique déterministe (HD). À partir d'une clé étendue, on peut générer toute la descendance de clés filles sans connaître les ancêtres.

xprv vs xpub

| Type | Préfixe | Contenu | Permet de signer ? | |------|---------|---------|--------------------| | xprv | xprv (mainnet legacy) | privkey + chain code | Oui | | xpub | xpub (mainnet legacy) | pubkey + chain code | Non | | yprv/ypub | (BIP-49) | Pour P2SH-P2WPKH | — | | zprv/zpub | (BIP-84) | Pour P2WPKH natif | — | | vprv/vpub | (testnet) | Testnet | — |

La xpub permet de dériver les clés publiques filles et donc de générer les adresses, mais sans pouvoir signer. C'est la base du wallet watch-only.

Encodage Base58Check

Une clé étendue est sérialisée en 78 octets, comprenant :

  1. Version (4 octets) - détermine le préfixe
  2. Profondeur dans l'arbre (1 octet)
  3. Empreinte du parent (4 octets)
  4. Index du nœud (4 octets)
  5. Code de chaîne (32 octets)
  6. Clé (33 octets pour pubkey compressée, 33 octets pour privkey préfixé 0x00)

Puis encodage Base58Check qui produit la chaîne lisible commençant par xprv/xpub.

Sensibilité de la xpub

Beaucoup d'utilisateurs pensent que la xpub est inoffensive parce qu'elle ne signe pas. C'est techniquement vrai mais opérationnellement faux : avec une xpub, un observateur peut :

  • Lister toutes les adresses passées et futures du compte
  • Calculer le solde exact en temps réel
  • Surveiller chaque transaction
  • Corréler avec d'autres données externes (KYC, partenaires)

C'est pourquoi confier sa xpub à un exchange est une fuite massive de vie financière, même sans risque de vol direct.

Hiérarchie standard BIP-44/49/84/86

Les wallets HD modernes utilisent une hiérarchie :

m / purpose' / coin_type' / account' / change / address_index

| Purpose | Type d'adresse | |---------|----------------| | 44' | Legacy P2PKH (commence par 1) | | 49' | P2SH-P2WPKH (commence par 3) | | 84' | Bech32 P2WPKH (commence par bc1q) | | 86' | Taproot P2TR (commence par bc1p) |

Chaque type a sa xpub/xprv séparée.

Limites et pièges

  • Mélanger des clés étendues entre wallets peut casser la confidentialité
  • Un descripteur de wallet contient parfois plusieurs xpubs (multisig)
  • La perte d'une xprv = perte des fonds ; sa fuite = vol immédiat
  • Le code de chaîne seul fuité est moins grave mais facilite certains scénarios

À retenir

Les clés étendues sont l'ossature de tous les wallets HD modernes. Traitez la xprv comme une seed, et la xpub comme une donnée privée (pas publique). Comprendre BIP-32 ouvre la porte au multisig, aux descripteurs et à toute la self-custody sérieuse.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.