Xpub : ce que révèle la clé publique de ton wallet Bitcoin

Une xpub permet de retrouver toutes les adresses d'un compte Bitcoin, et donc tout son historique, sans pouvoir dépenser. Ce qu'elle révèle, son risque et à qui la donner.

Une xpub (clé publique étendue) est la clé publique d'un compte de wallet Bitcoin dont on dérive toutes ses adresses : qui la détient voit chaque paiement reçu et envoyé par ce compte, mais ne peut rien dépenser.

Ce que contient une xpub

Le standard BIP32 décrit les wallets hiérarchiques déterministes : une seule graine produit tout un arbre de clés. Une clé étendue ajoute à la clé un code de chaîne (chain code), qui sert à calculer ses clés enfants. Selon BIP32, connaître une clé publique étendue permet de reconstruire toutes ses clés publiques enfants non renforcées (non hardened).

Les wallets rangent ces clés selon le chemin de BIP44 : m / purpose' / coin_type' / account' / change / address_index. La xpub qu'affiche un wallet est celle du niveau account'. Elle couvre deux chaînes d'adresses : 0 pour les adresses de réception, 1 pour les adresses de change, qui reçoivent la monnaie rendue par tes propres envois.

xpub, ypub ou zpub

Le préfixe dit quel type d'adresse le compte utilise :

PréfixeStandardChemin du premier compteAdresses
xpubBIP44m/44'/0'/0'Anciennes adresses, qui commencent par 1
ypubBIP49m/49'/0'/0'SegWit imbriqué, qui commencent par 3
zpubBIP84m/84'/0'/0'SegWit natif, qui commencent par bc1q

Les trois sont la même sorte de clé : seuls changent ses octets de version, et donc ses premières lettres.

Ce qu'une xpub révèle

  • Toutes les adresses du compte, passées et futures : on les dérive une à une, sans limite.
  • Tout l'historique : chaque réception, chaque envoi, chaque montant, puisque la blockchain est publique.
  • Le solde du compte, à tout moment.
  • Rien pour dépenser : sans clé privée, aucune transaction ne peut être signée.

BIP32 donne lui-même cet usage : remettre la clé publique étendue d'un compte à un auditeur lui laisse voir tous les paiements entrants et sortants, sans accès à aucune clé secrète. Qui a ta xpub a la vue de cet auditeur, pour toujours : une xpub ne se révoque pas.

Le risque à connaître

Une xpub seule ne permet pas de dépenser. Mais BIP32 prévient : connaître une clé publique étendue et n'importe quelle clé privée non renforcée qui en descend revient à connaître la clé privée étendue parente. Autrement dit, ta xpub et la clé privée d'une seule de tes adresses suffisent pour dépenser tout le compte.

Le niveau account' est renforcé : une telle fuite reste limitée au compte concerné et n'atteint pas les autres comptes de la même graine. Exporte donc une xpub, jamais la clé privée d'une adresse, et ne donne jamais ta phrase de récupération.

Comment un logiciel retrouve les adresses

Un logiciel qui lit une xpub dérive les adresses dans l'ordre et s'arrête après une suite d'adresses jamais utilisées : BIP44 fixe cette limite (gap limit) à 20. Si tu as créé plus de 20 adresses d'affilée sans t'en servir, un logiciel qui suit cette règle ne verra pas celles d'après.

Pour lire les soldes, le logiciel interroge ensuite un serveur ou un nœud, adresse par adresse. Ce serveur apprend alors toutes tes adresses et peut les relier entre elles : c'est l'autre fuite, qui ne vient pas de la xpub elle-même mais de la façon de la lire.

Avant de donner ta xpub

  • Demande-toi qui la garde : une application qui garde ta xpub sur ses serveurs connaît ton compte aussi longtemps, et une fuite de ses données l'expose.
  • Préfère une lecture locale : un wallet relié à ton propre nœud, ou un outil qui dérive les adresses sur ton appareil, ne confie la xpub à personne.
  • Un compte par usage : un autre compte (le account' suivant) a une autre xpub, qui ne révèle rien des autres comptes.

Comment CentraFIN lit ta xpub

CentraFIN lit ta xpub sur ton appareil : ton navigateur dérive les adresses, lit leurs soldes par une connexion chiffrée de bout en bout et garde le tout dans un coffre qu'il chiffre lui-même. Le serveur de CentraFIN ne voit jamais ta xpub, une adresse ni un solde. Chaque adresse est toujours lue sur le même nœud, tiré au hasard, pour qu'aucun nœud ne voie l'ensemble du compte. Le détail est sur la page Bitcoin.

Sources

Questions fréquentes

Peut-on voler des bitcoins avec une xpub ?

Pas avec la xpub seule : elle ne permet pas de signer. Avec en plus la clé privée d'une des adresses du compte, oui : tout le compte.

Une xpub suffit-elle pour voir mon solde ?

Oui. Elle donne toutes les adresses du compte, et la blockchain donne leurs soldes et leurs transactions.

Que faire si ma xpub a fuité ?

Elle ne se révoque pas : qui l'a verra toujours ce compte. Pour la suite, utilise un nouveau compte dont la xpub n'a jamais été partagée. Le transfert depuis l'ancien compte, lui, restera visible.

Quelle différence entre xpub, ypub et zpub ?

Le type d'adresse du compte : des adresses qui commencent par 1 pour xpub, par 3 pour ypub (SegWit imbriqué), par bc1q pour zpub (SegWit natif).

Prends le contrôle de ton patrimoine

Ton compte est prêt en une minute, sans mot de passe.