Glossar / Adressen und Schlüssel
Erweiterter Schlüssel
Auch bekannt als Extended key, xpub, xprv, Public extended key, Private extended key, erweiterter privater Schlüssel.
- Was ist ein erweiterter Schlüssel?
- Ein erweiterter Schlüssel kombiniert einen gewöhnlichen Bitcoin-Schlüssel mit einem 32 Byte langen Chain-Code, und dieses Paar ermöglicht es Software, einen ganzen Zweig von Schlüsseln darunter abzuleiten.
Spezifiziert im BIP-32.
Eine xpub ist kein öffentlicher Schlüssel. Sie ist eine Struktur aus 78 Bytes: Version, Tiefe, Fingerabdruck des übergeordneten Schlüssels, Kindindex, der 32 Byte lange Chain-Code und der Schlüssel selbst, in Base58Check verpackt, um eine Zeichenkette aus 111 Zeichen zu erzeugen. Geben Sie eine an einen Buchhalter, und er kann jede Adresse dieses Zweigs lesen und jeden Satoshi, den dieser Zweig jemals erhalten hat, ohne etwas ausgeben zu können.
Wie sie funktioniert
Ein erweiterter Schlüssel existiert, weil ein einzelner Schlüssel keine Kindschlüssel erzeugen kann. Die Ableitung in BIP-32 hasht den Chain-Code des übergeordneten Schlüssels zusammen mit seinem Schlüsselmaterial und einem Index, und der Chain-Code liefert die zusätzliche Entropie, die Geschwisterschlüssel unabhängig voneinander hält. Entfernen Sie ihn, bleibt nichts, woraus abgeleitet werden könnte.
Die Serialisierung ist fest auf 78 Bytes in einer strengen Reihenfolge festgelegt: 4 Versionsbytes, 1 Tiefenbyte, 4 Bytes Fingerabdruck des übergeordneten Schlüssels, 4 Bytes Kindindex, 32 Bytes Chain-Code und 33 Bytes Schlüsseldaten. Ein erweiterter privater Schlüssel füllt sein 32 Byte langes Geheimnis mit einer führenden Null auf, damit beide Formen dieselbe Breite einnehmen. Die Versionsbytes erzeugen das lesbare Präfix: 0x0488B21E schreibt xpub, 0x0488ADE4 schreibt xprv, und die Testnet-Entsprechungen schreiben tpub und tprv.
Auf diese Schlüssel wirken zwei Ableitungsfunktionen. Die öffentliche berechnet nicht gehärtete Kindschlüssel allein aus einer xpub, und so erzeugt ein Zahlungsabwickler Tausende Rechnungsadressen auf einem Webserver, der nichts Ausgebbares enthält. Die private berechnet alles, gehärtete Indizes eingeschlossen, und benötigt die xprv.
Sie werden auch auf ypub, zpub und vpub stoßen. Diese stammen aus SLIP-0132, einer Konvention, die dasselbe 78 Byte lange Layout mit anderen Versionsbytes wiederverwendet, um einen Skripttyp zu kennzeichnen. Bitcoin Core hat sie nie übernommen, und Output-Skript-Deskriptoren nach BIP-380 ersetzten die Idee ordentlich, indem sie den Skripttyp vollständig benennen, wie in wpkh([1a2b3c4d/84h/0h/0h]xpub.../0/*).
Warum das beim Bitcoin-Kauf wichtig ist
Ein erweiterter öffentlicher Schlüssel ist das Sensibelste, um dessen Weitergabe Sie jemals gebeten werden, ohne technisch ein Geheimnis zu sein, und die Bitte wirkt meist routinemäßig.
Drei legitime Gründe, einen zu exportieren, gibt es. Eine Watch-Only-Wallet einrichten, damit ein Smartphone den Bestand einer Hardware-Wallet anzeigen kann. Einem selbst gehosteten Zahlungsabwickler den Zweig übergeben, aus dem er Rechnungsadressen ziehen soll. Ein Multisig zusammenstellen, bei dem jeder Mitunterzeichner eine xpub beisteuert und alle davon benötigt werden, um die Wallet später wiederherzustellen, selbst wenn alle Seed-Phrasen erhalten bleiben.
Alles andere verdient Misstrauen. Keine auf dieser Website bewertete Kryptobörse benötigt einen erweiterten Schlüssel, um Ihnen eine Auszahlung zu senden; sie benötigt eine Adresse. Ein Support-Mitarbeiter, der eine xpub verlangt, um Ihre Wallet zu überprüfen, betreibt bestenfalls Profilbildung. Wer eine xprv verlangt, verlangt die Coins, und die richtige Antwort ist, das Gespräch zu beenden.
Die Offenlegung ist zudem auf eine Weise dauerhaft, die unterschätzt wird. Eine xpub offenbart nicht nur den heutigen Bestand, sondern jede Zahlung dieses Zweigs, vergangene und künftige, weil der Inhaber weiter neue Adressen ableiten kann, lange nachdem Sie aufgehört haben, mit ihm zu sprechen. Eine Rücknahme gibt es nicht. Sie rückgängig zu machen bedeutet, eine neue Seed-Phrase zu erzeugen und jeden Coin zu verschieben, wobei Sie für jeden Input, den Sie besitzen, eine Gebühr zahlen.
Eine Falle gehört genau hierher. Wenn jemand Ihren erweiterten öffentlichen Schlüssel besitzt und zusätzlich einen einzelnen nicht gehärteten privaten Kindschlüssel erlangt, kann er den übergeordneten erweiterten privaten Schlüssel rekonstruieren und den ganzen Zweig ausgeben. BIP-32 stellt dies in seinen eigenen Sicherheitshinweisen fest. Deshalb sind Kontoebenen gehärtet, und deshalb ist das Exportieren eines einzelnen Schlüssels aus einer modernen Wallet, was einige wenige Werkzeuge noch anbieten, eine gefährliche Bequemlichkeit und keine praktische.
Was ein Buchhalter mit Ihrer xpub tun kann und was nicht
Geben Sie einen erweiterten öffentlichen Schlüssel heraus, und die Grenze ist scharf. Angenommen, Sie exportieren den erweiterten öffentlichen Kontoschlüssel für m/84'/0'/0' aus einer Hardware-Wallet und senden ihn per E-Mail an die Person, die Ihre Steuern vorbereitet.
Sie kann jede Empfangsadresse und jede Wechselgeldadresse unter diesem Konto ableiten, jede davon in einem beliebigen Explorer nachschlagen und eine vollständige datierte Historie der ein- und ausgehenden Beträge rekonstruieren. Sie kann Ihren aktuellen Bestand bis auf den letzten Satoshi summieren und weiter beobachten, wie er sich ändert. Sie kann Adressen ableiten, die Sie noch nicht verwendet haben, und den Moment sehen, in dem Sie es tun.
Sie kann nichts signieren. Gehärtete Kindschlüssel sind von der öffentlichen Seite aus unerreichbar, daher bleibt ein Geschwisterkonto wie m/84'/0'/1' für sie unsichtbar, ebenso der Hauptschlüssel. Sie kann aus all dem keinen privaten Schlüssel wiederherstellen, es sei denn, Sie übergeben ihr zusätzlich einen der einzelnen Schlüssel darunter, was der oben beschriebene Fehlerfall ist.
Erweiterter Schlüssel vs. öffentlicher Schlüssel
Ein öffentlicher Schlüssel ist ein Punkt auf der secp256k1-Kurve, 33 Bytes komprimiert, und er verifiziert Signaturen. Ein erweiterter öffentlicher Schlüssel ist derselbe Punkt plus ein 32 Byte langer Chain-Code und vier Felder, die seine Position beschreiben, und er kann Milliarden weiterer öffentlicher Schlüssel erzeugen. Das Veröffentlichen eines öffentlichen Schlüssels legt die Information eines einzigen Outputs offen. Das Veröffentlichen eines erweiterten öffentlichen Schlüssels legt eine Wallet offen.
Erweiterter Schlüssel vs. Wallet Import Format
Eine xprv und eine Zeichenkette im Wallet Import Format kodieren beide Schlüsselmaterial in Base58, und dort endet die Ähnlichkeit. Eine WIF-Zeichenkette enthält einen privaten Schlüssel mit einem Netzwerkbyte und einer Prüfsumme, nützlich, um einen einzelnen Legacy-Schlüssel zu verschieben, und ihr Import stellt genau die Coins wieder her, die an diesen Schlüssel gebunden sind. Eine xprv enthält einen Schlüssel plus den Chain-Code und die Position, die es ihr ermöglichen, einen unbegrenzten Zweig neu zu erzeugen. Die Asymmetrie ist es, die Menschen hereinlegt: eine WIF in eine moderne Wallet zu sweepen ist Routinepflege, während das Einfügen einer xprv in unbekannte Software alles darunter auf einmal übergibt.