Xpub: Was der öffentliche Schlüssel deiner Bitcoin-Wallet verrät
Mit einem xpub lassen sich alle Adressen eines Bitcoin-Kontos finden und damit seine ganze Historie, ohne etwas ausgeben zu können. Was er verrät, sein Risiko und wem du ihn gibst.
Ein xpub (erweiterter öffentlicher Schlüssel) ist der öffentliche Schlüssel eines Bitcoin-Wallet-Kontos, aus dem alle seine Adressen abgeleitet werden: Wer ihn hat, sieht jede Zahlung, die dieses Konto empfängt und sendet, kann aber nichts ausgeben.
Was ein xpub enthält
Der Standard BIP32 beschreibt hierarchisch deterministische Wallets: Ein einziger Seed erzeugt einen ganzen Baum von Schlüsseln. Ein erweiterter Schlüssel ergänzt den Schlüssel um einen Kettencode (Chain Code), mit dem seine Kind-Schlüssel berechnet werden. Laut BIP32 lassen sich mit einem erweiterten öffentlichen Schlüssel alle seine nicht gehärteten (non-hardened) öffentlichen Kind-Schlüssel rekonstruieren.
Wallets ordnen diese Schlüssel nach dem Pfad von BIP44: m / purpose' / coin_type' / account' / change / address_index. Der xpub, den eine Wallet anzeigt, ist der der Ebene account'. Er umfasst zwei Adressketten: 0 für die Empfangsadressen, 1 für die Change-Adressen, die das Wechselgeld deiner eigenen Zahlungen erhalten.
xpub, ypub oder zpub
Das Präfix zeigt, welchen Adresstyp das Konto verwendet:
| Präfix | Standard | Pfad des ersten Kontos | Adressen |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Alte Adressen (Legacy), beginnend mit 1 |
ypub | BIP49 | m/49'/0'/0' | Nested SegWit, beginnend mit 3 |
zpub | BIP84 | m/84'/0'/0' | Native SegWit, beginnend mit bc1q |
Alle drei sind dieselbe Art von Schlüssel: Nur ihre Versionsbytes ändern sich und damit ihre ersten Buchstaben.
Was ein xpub verrät
- Alle Adressen des Kontos, vergangene und künftige: Sie werden eine nach der anderen abgeleitet, ohne Grenze.
- Die ganze Historie: jeder Eingang, jede Zahlung, jeder Betrag, denn die Blockchain ist öffentlich.
- Das Guthaben des Kontos, jederzeit.
- Nichts zum Ausgeben: Ohne privaten Schlüssel lässt sich keine Transaktion signieren.
BIP32 nennt selbst diese Verwendung: Wer den erweiterten öffentlichen Schlüssel eines Kontos einem Prüfer gibt, lässt ihn alle eingehenden und ausgehenden Zahlungen sehen, ohne Zugriff auf einen geheimen Schlüssel. Wer deinen xpub hat, hat die Sicht dieses Prüfers, für immer: Ein xpub lässt sich nicht widerrufen.
Das Risiko, das du kennen solltest
Ein xpub allein kann nichts ausgeben. Aber BIP32 warnt: Wer einen erweiterten öffentlichen Schlüssel und irgendeinen davon abstammenden, nicht gehärteten privaten Schlüssel kennt, kennt damit auch den übergeordneten erweiterten privaten Schlüssel. Anders gesagt: Dein xpub und der private Schlüssel einer einzigen deiner Adressen reichen aus, um das ganze Konto auszugeben.
Die Ebene account' ist gehärtet: Ein solches Leck bleibt auf das betroffene Konto beschränkt und erreicht die anderen Konten desselben Seeds nicht. Exportiere also einen xpub, nie den privaten Schlüssel einer Adresse, und gib nie deine Wiederherstellungsphrase heraus.
Wie eine Software die Adressen findet
Eine Software, die einen xpub liest, leitet die Adressen der Reihe nach ab und hört nach einer Folge nie benutzter Adressen auf: BIP44 legt diese Grenze (Gap Limit) auf 20 fest. Hast du mehr als 20 Adressen hintereinander erstellt, ohne sie zu nutzen, sieht eine Software, die dieser Regel folgt, die nachfolgenden nicht.
Um die Guthaben zu lesen, fragt die Software dann einen Server oder einen Node ab, Adresse für Adresse. Dieser Server erfährt so alle deine Adressen und kann sie miteinander verknüpfen: Das ist das andere Leck, das nicht vom xpub selbst kommt, sondern von der Art, wie er gelesen wird.
Bevor du deinen xpub weitergibst
- Frag dich, wer ihn speichert: Eine App, die deinen xpub auf ihren Servern speichert, kennt dein Konto genauso lange, und ein Datenleck bei ihr legt es offen.
- Lies ihn lieber lokal: Eine Wallet, die mit deinem eigenen Node verbunden ist, oder ein Tool, das die Adressen auf deinem Gerät ableitet, vertraut den xpub niemandem an.
- Ein Konto pro Zweck: Ein anderes Konto (das nächste
account') hat einen anderen xpub, der nichts über die anderen Konten verrät.
Wie CentraFIN deinen xpub liest
CentraFIN liest deinen xpub auf deinem Gerät: Dein Browser leitet die Adressen ab, liest ihre Guthaben über eine Ende-zu-Ende-verschlüsselte Verbindung und bewahrt alles in einem Tresor auf, den er selbst verschlüsselt. Der Server von CentraFIN sieht nie deinen xpub, eine Adresse oder ein Guthaben. Jede Adresse wird immer vom selben, zufällig gezogenen Node gelesen, damit kein Node das ganze Konto sieht. Die Details stehen auf der Seite Bitcoin.
Quellen
- BIP32: hierarchisch deterministische Wallets
- BIP44: Ableitungspfad und Gap Limit
- BIP49: ypub, Nested SegWit
- BIP84: zpub, Native SegWit
Häufige Fragen
Kann man mit einem xpub Bitcoin stehlen?
Nicht mit dem xpub allein: Er kann nicht signieren. Kommt der private Schlüssel einer der Adressen des Kontos dazu, ja: das ganze Konto.
Reicht ein xpub, um mein Guthaben zu sehen?
Ja. Er liefert alle Adressen des Kontos, und die Blockchain liefert ihre Guthaben und Transaktionen.
Was tun, wenn mein xpub geleakt ist?
Er lässt sich nicht widerrufen: Wer ihn hat, sieht dieses Konto für immer. Nutze künftig ein neues Konto, dessen xpub nie geteilt wurde. Die Übertragung vom alten Konto bleibt allerdings sichtbar.
Was ist der Unterschied zwischen xpub, ypub und zpub?
Der Adresstyp des Kontos: Adressen, die mit 1 beginnen, bei xpub, mit 3 bei ypub (Nested SegWit), mit bc1q bei zpub (Native SegWit).
Übernimm die Kontrolle über dein Vermögen
Dein Konto ist in einer Minute bereit, ohne Passwort.