Was ist überhaupt eine HD-Wallet?

By | 13. Juni 2017
Seed

Seed
Dieses Bild von Strange Ones steht unter der CC BY 2.0

Das Prinzip von Mnemonics, Seeds, Passphrases und „HierFachwortEinfügen“ scheint immer wieder Fragen aufzuwerfen. Dies geht von „Was mache ich, wenn ein Hardware-Wallet-Hersteller in Konkurs geht?“ bis hin zu „Private Schlüssel? Mehrzahl? Ich dachte eine Wallet hätte genau eine Adresse?“.

Schauen wir doch einmal, ob wir etwas Licht ins Dunkle bringen können.

Es war einmal…

Es war einmal ein Bitcoin Core. Damals auch bekannt unter dem Namen Bitcoin-QT. Diese Urwallet erzeugte zufällige Schlüsselpaare. Denn damals wie heute empfiehlt es sich, für jede Transaktion ein eigenes Schlüsselpaar zu verwenden. In der Regel wurden immer 100 auf einmal erzeugt, sodass man nicht nach jeder Transaktion ein Backup machen muss. Dennoch hatte man das Problem, dass man regelmäßig Backups seiner Wallet machen musste. Das ging natürlich vielen auf die Nerven und hat auch ein sehr großes Fehlerpotenzial. Sollte man vergessen haben, ein Backup zu machen bzw. wenn das letzte Backup zu alt ist, ging ein Teil der Transktionen und somit ein Teil der Bitcoins verloren. Eine Lösung musste her!

Die Seeds waren geboren

Es wurde eine Art Hash erzeugt. Passenderweise nannte man diesen Hash „Seed“, wie Samen, denn aus ihm können theoretisch unendlich viele Schlüsselpaare „wachsen“. Wie funktioniert das genau? Ohne auf die mathematischen Algorithmen einzugehen, schauen wir uns das einmal vereinfacht an. Es gibt den Seed. Dazu gibt es nun eine Zahl. Seed und Zahl in Kombination werden nun genutzt, um ein neues Schlüsselpaar zu erzeugen. Sobald dieses Schlüsselpaar verwendet wurde, wird lediglich die Zahl hochgezählt und ein neues Schlüsselpaar erzeugt. So muss man sich nur noch den Seed merken, da man aus diesem alle Schlüsselpaare, sowohl die verwendeten als auch die zukünftigen, berechnen kann. Die HD-Wallets (Hierarchisch Deterministisch) waren geboren.

Seed merken? Doof!

b6787581e1f748b6b4c21d8017e2ab6d8547df29ed839da895364c1e23bf685aaa9cfa1952466e3cdad44488b69e3b53ddb50487997272cfe5acbbfd5720a07d

So sieht ein typischer Seed aus. Schwer zu merken? Absolut! Auch dafür musste eine Lösung her. Zum Glück gibt es bereits etwas, das man hier einfach wiederverwenden kann. Wozu das Rad neu erfinden? Das richtige Stichwort hier ist „Mnemonic“. Einfach gesagt sind Mnemonics Aneinanderreihungen von Wörtern (oder anderen Elementen), um sich komplexe und lange Sachverhalte zu merken. Ich bin mir ziemlich sicher, dass zumindest eine Mnemonic jeder kennt! Mein Vater erklärt mir jeden Sonntag unsere neun Planeten. Merkur, Venus, Erde, Mars, Jupiter, Saturn, Uranus, Neptun und Pluto. Auch wenn dieser Spruch als veraltet gilt, zeigt er wunderbar, wie man sich einen komplexen Sachverhalt einfach merken kann.

Leider sind die Mnemonics in der Kryptowelt nicht ganz so simpel, allerdings immer noch wesentlich simpler als ein Seed.

second hybrid marriage when sniff napkin okay six purity badge noise crumble response lamp slogan aware nominee wagon fault october excess wood sight bicycle

Wörter sind einfacher zu merken als ein generischer Seed, nicht wahr? Ab jetzt war es möglich, eine Mnemonic (meist bestehend aus 12 oder 24 Wörtern) zu generieren, woraus ein Seed generiert wird und dieser wiederum dazu genutzt wird, hierarchisch deterministisch Schlüsselpaare zu generieren.

Immer noch nicht genug?

Dann setzen wir noch Einen drauf! Viele von uns haben sicherlich früher oder auch heute noch mehrere Sparanlagen, Sparbücher und/oder Konten. Das möchte man auch mit Bitcoin und anderen Kryptowährungen haben. Wie bereits erwähnt wird eine Zahl genutzt, die inkrementell erhöht wird, um neue Schlüsselpaare zu generieren. In der Realität ist dies nicht nur eine einfache Zahl, sondern etwas komplexer. Man redet hier von sogenannten „Derivationspfaden“. Durch eine einfache Erweiterung dieser Derivationspfade wurde es dann möglich, auch mehrere „Konten“ mit einem einzigen Seed und somit einer Mnemonic zu verwalten. Solch ein Derivationspfad sieht in der Regel wie folgt aus:

m/44'/a'/b'/c/d
 
44 := Der Zweck. In diesem Fall 44, da das in der BIP44 definiert ist.
a := Coin Typ. 0 entspricht Bitcoin
b := Konto. 0 ist der erste Account. Hier sind n Konten möglich
c := Hauptadresse oder Wechselgeldadresse. 0 entspricht einer Hauptadresse, 1 einer Wechselgeldadresse
d := Index der Adresse. 0 stellt die erste Adresse in dem Konto dar. Es sind n Adressen möglich

Ein allgemein gültiger Standard?

Leider benutzen nicht alle Wallets die gleichen Derivationspfade, wobei man hier erwähnen muss, dass der Großteil mittlerweile BIP44 und somit den Derivationspfaden mit den Konten benutzt. Dazu zählen auch alle gängigen Hardware-Wallets und die meisten App- und Software-Wallets. Dennoch gibt es ein paar Exoten, die dies nicht tun oder gar eigene Derivationspfade benutzen. Das ist aber nicht weiter schlimm. Solang die Mnemonic und der Derivationspfad bekannt sind, sind die Bitcoins nicht verloren. Selbst wenn die App, die Wallet oder die Hardware-Wallet nicht mehr funktioniert, hergestellt wird oder sonst etwas passiert. Aus den beiden Informationen lassen sich alle privaten Schlüssel wiederherstellen!

Beispiele für alternative Derivationspfade:

Bitcoin Core: m/0'/0'
MultiBit HD: m/0'/0
Breadwallet: m/0'/0/0

Es gibt Tools, wie den BIP39-Generator, mit denen man die Mnemonic mit verschiedenen Derivationspfaden kombinieren kann und die entsprechenden Schlüsselpaare erhält. Falls ein bestimmter Derivationspfad nicht von anderen Wallets unterstützt werden sollte, kann man einfach mit dem besagten Generator die extended Private Keys generieren und diese importieren. Somit umgeht man das Problem, das eine Wallet den besagten Derivationspfad nicht unterstützt. Eine Wallet, die extended Private Keys bei der Walletwiederherstellung unterstützt, ist zum Beispiel Electrum.

Und was sind jetzt Passphrases und wie passt das mit der Mnemonic zusammen?

Wie bereits erwähnt, wird der Seed aus der Mnemonic und dem Derivationspfad zusammengesetzt. Das stimmt jedoch nicht ganz. Es fehlt nämlich eine Komponente, die Passphrase. Ohne Passphrase wird der Seed aus der Mnemonic, einer leeren Zeichenkette und dem Derivationspfad zusammengesetzt.

ich bin eine mnemonic + "" + m/44'/a'/b'/c/d
ich bin eine mnemonic + "UndIchEinePassphrase" + m/44'/a'/b'/c/d

Sobald eine Passphrase benutzt wird entsteht dadurch eine komplett neue Wallet inklusive anderen Konten und Adressen. Damit kann man das „Plausible Deniability“-Problem lösen. Dass Bitcoin durch reine Rechenleistung nahezu unknackbar ist, sollte bekannt sein. Was schützt einen jedoch vor Folter und Gewalt? Sollte man nun eine Wallet haben, kann man diese mit zwei unterschiedlichen Passphrasen schützen. Auf die erste Wallet mit der ersten Passphrase kommt eine kleine Menge Geld drauf. Auf die zweite Wallet, mit einer anderen Passphrase, kommt das eigentliche Guthaben drauf. Sollte man nun dazu gezwungen werden, seine Passphrase preiszugeben, kann man einfach Nummer eins angeben. Der Angreifer findet das kleine Guthaben, ist glücklich und kommt gar nicht auf die Idee ,nach einer zweiten Passphrase zu fragen. Wenn man jedoch ganz paranoid ist und damit rechnet, dass der Angreifer von mehreren Passphrasen ausgeht, kann man auch mehrere Wallets mit unterschiedlichen Passphrasen anlegen. Die Anzahl der Kombinationen ist unbegrenzt.

7 Kommentare zu “Was ist überhaupt eine HD-Wallet?

  1. Gert

    Hier noch mal zur Klarstellung, damit keine MIssverständnisse entstehen: Eine HD Wallet hat zunächst einmal mit einem Recovery-Seed überhaupt nichts zu tun. BIP32 beschreibt nur die Technik der Entstehung neuer Adressen bzw. Schlüsselpaaren aus einem Master-Key und nicht aus einem Seed wie hier beschrieben, auch wenn Text der BIP32 leider diesen Begriff verwendet (etwas verwirrend). Bitcoin Core unterstützt zwar BIP32, hat aber keine Möglichkeit, die wallet.dat mit einem Seed wieder herzustellen. Hierzu muss die Wallet dann BIP39 untertützen und, wenn mehrere Coins unterstützt werden sollen, auch BIP44. Das ist bei den meisten Hardware-Wallets der Fall (aber z. B. nicht bei Digital Bitbox).

    Antworten
    1. WedWed Post author

      Danke für den Hinweis. Ich hab mich dabei auf den Text von BIP32 verlassen.
      Wobei, ob das Ding nun Seed oder Master-Key heißt, ist ja irrelevant. Nur wenn ich das dann richtig verstanden habe ist der Master-Key nicht Kompatibel mit den Seeds, die aus einer Mnemonic erzeugt wird?

      Antworten
  2. Gert

    Seed heißt ja nur, da ist eine Quelle, aus der sich etwas reproduzierbar ableiten lässt. Bei der BIP32 HD-Wallet ist nach meinem Verständnis diese Quelle der Master Key, aus dem sich dann hierarchisch und deterministisch alle anderen Schlüssel und Adressen (über Rechenoperationen) ergeben. Der Recovery Seed als „Seed von Seed“ zur Wiederherstellung einer Wallet aus 12-24 Wörtern plus evtl. Passphrase stellt dann aus dieser „Merkhilfe“ den Master Key wieder her, aus dem sich dann wiederum alle anderen Schlüssel und Adressen ergeben. Der Begriff Seed wird hier also gleich zweimal hintereinander verwendet, daher die Verwirrung.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.