Glossar / Adressen und Schlüssel
Parent-Key
Auch bekannt als Parent key, Übergeordneter öffentlicher Schlüssel, Parent public key.
- Was ist Parent-Key?
- Der übergeordnete Schlüssel steht in der Baumstruktur einer HD-Wallet eine Ebene direkt über einem anderen Schlüssel, und jeder erweiterte Schlüssel trägt vier Bytes, die seinen eigenen übergeordneten Schlüssel per Fingerabdruck kennzeichnen.
Spezifiziert im BIP-32.
Die Eltern-Kind-Beziehung in BIP-32 ist eine Relation, kein Rang. Der Hauptschlüssel ist der einzige Schlüssel ohne übergeordneten Schlüssel, und er hält diese Tatsache mit einem Fingerabdruck des übergeordneten Schlüssels aus vier Nullbytes und einer Tiefe von 0 fest. Alle anderen benennen ihren übergeordneten Schlüssel in den ersten Bytes ihrer eigenen Serialisierung, und so ermittelt Software, wohin ein einzelner Schlüssel gehört.
Wie es funktioniert
Ein übergeordneter Schlüssel wird über einen Fingerabdruck identifiziert, nicht über den Schlüssel selbst. Man nimmt den komprimierten öffentlichen Schlüssel des übergeordneten Schlüssels, berechnet darauf SHA-256 und anschließend RIPEMD-160 und behält die ersten vier Bytes des Ergebnisses. Diese vier Bytes stehen im erweiterten Schlüssel von 78 Bytes des Kindes an einer festen Position, unmittelbar nach dem Tiefenbyte und vor dem Kindindex.
Vier Bytes sind 4.294.967.296 mögliche Werte, was den Fingerabdruck zu einer Kennzeichnung und nicht zu einem Beweis macht. BIP-32 stellt ausdrücklich fest, dass Fingerabdrücke kollidieren können und dass Implementierungen sich zu Sicherheitszwecken nicht auf sie verlassen dürfen. Sie existieren, damit eine Wallet Schlüssel schnell dem richtigen Baum zuordnen kann, und jede echte Prüfung beinhaltet, den Schlüssel abzuleiten und das Ergebnis zu vergleichen.
Der übergeordnete Schlüssel liefert zudem beide Zutaten, die eine Ableitung braucht: seinen Chain Code und sein Schlüsselmaterial. Deshalb werden erweiterte Schlüssel als Paar weitergegeben. Übergibt man jemandem einen öffentlichen Schlüssel des übergeordneten Schlüssels ohne den Chain Code, lässt sich daraus überhaupt kein Kindschlüssel berechnen.
Wo er auftritt
Der Fingerabdruck des Hauptschlüssels ist die Kennung, der man am häufigsten begegnet, weil sowohl Deskriptoren als auch Signaturgeräte ihn angeben.
Ein Ausgabeskript-Deskriptor schreibt ihn in Klammern vor den erweiterten Schlüssel, etwa in wpkh([1a2b3c4d/84h/0h/0h]xpub.../0/*). Der eingeklammerte Teil gibt an, aus welcher Wallet der Schlüssel stammt und über welchen Pfad, sodass ein Unterzeichner, der den Deskriptor liest, erkennen kann, ob er mit einem Schlüssel signieren soll, den er tatsächlich besitzt. Teilweise signierte Bitcoin-Transaktionen nach BIP-174 tragen dieselbe Zuordnung für jeden Input und Output, und dadurch kann eine Hardware-Wallet offline entscheiden, dass ein Output ihr eigenes Wechselgeld und nicht die Adresse eines Fremden ist.
Bei Multisig hört das auf, eine Nebensache zu sein. Eine Zwei-von-drei-Konfiguration in Sparrow zeigt für jeden Mitunterzeichner einen Fingerabdruck des Hauptschlüssels an, und um diese Wallet später wiederherzustellen, braucht man alle drei erweiterten öffentlichen Schlüssel sowie die Seed-Phrasen. Den Fingerabdruck jedes Geräts auf dessen Sicherungskarte zu schreiben, ist der günstigste Weg, Jahre später drei ansonsten identische Seed-Karten auseinanderzuhalten, und wer das versäumt hat, hat Wochenenden damit verbracht, Schlüssel abzuleiten, um herauszufinden, welche Karte zu welchem Gerät gehört.
Ein letzter praktischer Hinweis. Eine wiederhergestellte Wallet, die einen unbekannten Fingerabdruck zeigt, ist meist keine beschädigte Sicherung, sondern eine falsch eingegebene Passphrase. Eine Passphrase nach BIP-39 erzeugt einen anderen Hauptschlüssel und damit einen anderen Fingerabdruck, sodass der Vergleich dieses kurzen Werts ein schneller und sicherer Weg ist, um zu bestätigen, dass Sie die Passphrase richtig eingegeben haben, bevor Sie nach einem Guthaben sehen.