Xpub : ce que révèle la clé publique de votre portefeuille 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 portefeuille 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 portefeuilles 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 portefeuilles rangent ces clés selon le chemin de BIP44 : m / purpose' / coin_type' / account' / change / address_index. La xpub qu'affiche un portefeuille 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 vos propres envois.
xpub, ypub ou zpub
Le préfixe indique quel type d'adresse le compte utilise :
| Préfixe | Standard | Chemin du premier compte | Adresses |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Anciennes adresses, qui commencent par 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit imbriqué, qui commencent par 3 |
zpub | BIP84 | m/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 chaîne de blocs 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 vérificateur lui permet de voir tous les paiements entrants et sortants, sans accès à aucune clé secrète. Qui a votre xpub a la vue de ce vérificateur, 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, votre xpub et la clé privée d'une seule de vos 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. Exportez donc une xpub, jamais la clé privée d'une adresse, et ne donnez jamais votre 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 vous avez créé plus de 20 adresses d'affilée sans vous 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 vos 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 votre xpub
- Demandez-vous qui la garde : une application qui garde votre xpub sur ses serveurs connaît votre compte aussi longtemps, et une fuite de ses données l'expose.
- Préférez une lecture locale : un portefeuille relié à votre propre nœud, ou un outil qui dérive les adresses sur votre 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 votre xpub
CentraFIN lit votre xpub sur votre appareil : votre 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 votre 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 se trouve à la page Bitcoin.
Sources
- BIP32 : portefeuilles hiérarchiques déterministes
- BIP44 : chemin de dérivation et gap limit
- BIP49 : ypub, SegWit imbriqué
- BIP84 : zpub, SegWit natif
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 chaîne de blocs 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, utilisez 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).
Prenez le contrôle de votre patrimoine
Votre compte est prêt en une minute, sans mot de passe.