BitcoinVonInnen

Seed Phrases

BIP39 und deterministische Keys.

Block 958.740Live

Was ist eine Seed Phrase?

Eine Seed Phrase, häufig auch Wiederherstellungsphrase genannt, ist eine geordnete Folge von Wörtern, mit der sich eine Wallet wiederherstellen lässt.

Die meisten Bitcoin-Wallets verwenden dafür den Standard BIP39. Dabei werden zufällig erzeugte Daten in eine leicht lesbare Wortfolge umgewandelt. BIP39 erlaubt 12, 15, 18, 21 oder 24 Wörter, üblich sind vor allem 12 oder 24.

Im weiteren Verlauf dieses Kapitels beziehen sich alle Erklärungen auf den BIP39-Standard.

Die Wörter selbst sind weder Private Keys noch Bitcoin-Adressen. Stattdessen bilden sie eine sogenannte Mnemonic, aus der die Wallet einen kryptografischen Seed berechnet.

Dieser Seed dient anschließend als Ausgangspunkt für die deterministische Ableitung aller privaten und öffentlichen Schlüssel einer Wallet. Aus diesen Schlüsseln entstehen schließlich die Bitcoin-Adressen.

Wer eine Seed Phrase besitzt, kann daher die gesamte Wallet inklusive aller darin enthaltenen Bitcoin wiederherstellen.

Wie entsteht eine Seed Phrase?

Am Anfang steht eine zufällig erzeugte Bitfolge, die als Entropie bezeichnet wird.

256 Bit Entropie

Beispiel · zufällig erzeugt

1011010001101001110010110101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011

BIP39 erlaubt Entropien mit einer Länge von 128, 160, 192, 224 oder 256 Bit. Je länger die Entropie ist, desto mehr Wörter enthält später die Seed Phrase.

Aus der Entropie wird zunächst ein SHA-256-Hash berechnet. Einige Bits dieses Hashes werden als Checksumme an die ursprüngliche Entropie angehängt.

Entropie

256 Bit · Beispiel

1011010001101001110010110101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011

SHA-256-Hash

256 Bit · Hex · markierte Nibbles = Checksumme

629c6321b2df4dd7ce5b257a653fe7b1b63c76a129d4c501f340f80bf4394da2

Checksumme (8 Bit · 0x62)01100010

Entropie + Checksumme

264 Bit

101101000110100111001011010100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101001110010110100111000101101100010

Die kombinierte Bitfolge wird anschließend in Gruppen zu jeweils 11 Bit aufgeteilt. Jede dieser Gruppen ergibt eine Zahl zwischen 0 und 2047 und verweist damit auf genau ein Wort aus der BIP39-Wortliste mit 2048 Einträgen. Die vollständige Tabelle mit Index, Binär, Hex und allen offiziellen Sprachlisten findest du unter BIP39 Wörter.

11-Bit-Gruppen

264 Bit · 24 Wörter · Beispiel

Orange = Checksumme
0101101000111443refuse
101001110010626exact
2110101001111703stay
300010110100180bird
4111001011011837toss
500111000101453december
6101001110011337poet
701101001110846hawk
800101101001361coffee
9110010110101626slender
1001110001011907imitate
1101001110010626exact
12110100111001692squeeze
1301011010011723foil
14100101101001204notable
15111000101101814tissue
16100111001011253original
17101001110001336poem
18101101001111447reject
1900101101001361coffee
20110001011011581shield
2100111001011459defense
2201001110001625evolve
2301101100010866hobby

So entsteht eine Seed Phrase mit 12, 15, 18, 21 oder 24 Wörtern.

Woher kommt die Entropie?

Bevor eine Seed Phrase entstehen kann, muss die Wallet zunächst zufällige Daten erzeugen.

Dafür verwendet sie kryptografisch sichere Zufallsquellen. Bei Software-Wallets stammen diese in der Regel von einem kryptografisch sicheren Zufallszahlengenerator (CSPRNG) des Betriebssystems. Hardware-Wallets erzeugen die Entropie hingegen mithilfe eigener Hardware-Zufallszahlengeneratoren und Firmware-Komponenten.

Ein kryptografisch sicherer Zufallszahlengenerator (CSPRNG) erzeugt Zufallsdaten, deren Ausgaben auch bei Kenntnis vieler zuvor erzeugter Werte praktisch nicht vorhergesagt werden können.

Aus diesen Zufallsquellen entsteht eine kryptografisch sichere Bitfolge. Die Wallet übernimmt anschließend beispielsweise 128 oder 256 Bit dieser Daten als Entropie für die BIP39-Seed Phrase.

Zufallsquellen

Wallet

Software-WalletBetriebssystem-CSPRNG
Hardware-WalletHardware-RNG

Entropie

128 oder 256 Bit

BIP39

Mnemonic

Warum enthält eine BIP39-Wortliste genau 2048 Wörter?

Die Größe der Wortliste ist eine Designentscheidung von BIP39.

Die Autoren legten fest, dass jede BIP39-Wortliste genau 2048 Wörter enthält.

Dadurch kann jedes Wort durch einen 11 Bit langen Index beschrieben werden:

2¹¹ = 2048

Jede 11-Bit-Gruppe entspricht somit einem Index zwischen 0 und 2047 und verweist auf genau ein Wort der Wortliste.

11 Bit

00000000000

Index

0

Wort

abandon

11 Bit

00000000001

Index

1

Wort

ability

11 Bit

10000000000

Index

1024

Wort

length

11 Bit

11111111111

Index

2047

Wort

zoo

Da jedes Wort genau 11 Bit repräsentiert, wurden die zulässigen Entropielängen anschließend so gewählt, dass sie zusammen mit der Checksumme immer eine ganze Anzahl solcher 11-Bit-Gruppen ergeben. Die zugehörigen Indizes und Wörter kannst du in der Tabelle unter BIP39 Wörter nachschlagen.

EntropieChecksummeGesamtWörter
128 Bit4 Bit132 Bit12
160 Bit5 Bit165 Bit15
192 Bit6 Bit198 Bit18
224 Bit7 Bit231 Bit21
256 Bit8 Bit264 Bit24

Wozu dient die Checksumme?

Die Checksumme hilft dabei, fehlerhaft eingegebene Seed Phrases zu erkennen.

Bei der Wiederherstellung wandelt die Wallet die Wörter wieder in ihre Bitfolge um und überprüft, ob die darin enthaltene Checksumme zur Entropie passt.

Stimmt sie nicht überein, ist die Seed Phrase nach BIP39 ungültig.

Seed Phrase

Wörter → Indizes → Bitfolge

abandon amount canvas …

Entropie

vordere Bits

1011010001101001110010110101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011010011100101101001110001011

Checksumme

gespeichert · 0x62

01100010

Erwartete Checksumme

neu berechnet · 0x62

01100010

Gültig

01100010 = 01100010

Ungültig

10011101 ≠ 01100010

Dadurch lassen sich viele typische Fehler erkennen, beispielsweise:

  • ein vertauschtes Wort,
  • ein Wort an der falschen Position,
  • ein durch ein anderes BIP39-Wort ersetztes Wort,
  • eine vollständig falsch zusammengesetzte Wortfolge.

Die Checksumme erkennt jedoch nicht jeden möglichen Fehler. Eine veränderte Wortfolge kann zufällig weiterhin eine gültige Checksumme besitzen.

Wie wird aus einer Seed Phrase ein Seed?

Die Seed Phrase wird nicht direkt zur Ableitung der Wallet-Schlüssel verwendet.

BIP39 verarbeitet sie zunächst mit PBKDF2-HMAC-SHA512. Dabei handelt es sich um eine Schlüsselableitungsfunktion:

  • PBKDF2 führt die Berechnung mehrfach hintereinander aus.
  • HMAC kombiniert die Eingaben mithilfe einer Hashfunktion.
  • SHA-512 ist die dabei verwendete Hashfunktion.

Die Seed Phrase dient als Passwort. Als Salt verwendet BIP39 die feste Zeichenfolge "mnemonic" zusammen mit der optionalen Passphrase.

Anschließend wird die Berechnung mit 2048 Iterationen ausgeführt:

Das Ergebnis ist ein 512 Bit langer Seed.

Passwort

Seed Phrase

refuseexactstaybirdtossdecemberpoethawkcoffeeslenderimitateexactsqueezefoilnotabletissueoriginalpoemrejectcoffeeshielddefenseevolvehobby

Salt

ohne Passphrase

"mnemonic"

literale ASCII-Zeichenfolge

Salt

mit Passphrase

"mnemonic"
"Bitcoin"Beispiel-Passphrase
"mnemonicBitcoin"

literale Verkettung (ohne Trennzeichen)

Passwort

Seed Phrase

Salt

"mnemonic" + Passphrase

PBKDF2-HMAC-SHA512

2048 Iterationen

512-Bit-Seed

64 Byte · Hex

ohne Passphrase

Salt = "mnemonic"

8a83f8852ff5d4a77649dd6a7f2f22b0a51d8fbc28c0da0ee30224fef1b8930ab8e71ee52bc8646560fcf0573911a1b1fa2e4d2465f3f26962d5565e7c0b1dab

mit Passphrase „Bitcoin“

Salt = "mnemonicBitcoin"

56cd2bef120cad88cc5587e1e810957d206590cb88f6f3c2efb7c609ee7ea3df2533bd7d9f32460a4cd2b87edaad1da8c0ce414b6b5f789fcf43d1872094f864

Die Ableitung ist deterministisch:

gleiche Seed Phrase
+ gleiche Passphrase
= gleicher Seed

Eine andere Passphrase erzeugt dagegen einen vollständig anderen Seed.

Der 512-Bit-Seed dient anschließend als Eingabe für BIP32, das daraus die HD Wallet ableitet.

Was bewirkt die optionale Passphrase?

Die optionale Passphrase erweitert eine BIP39-Seed Phrase um ein zusätzliches Geheimnis.

Sie wird zusammen mit den 12 oder 24 Wörtern bei der Berechnung des 512-Bit-Seeds verwendet. Dadurch entsteht eine vollständig andere Wallet.

Bereits kleinste Unterschiede führen zu einer anderen Wallet.

24 Wörter + ""              → Wallet A
24 Wörter + "Bitcoin"       → Wallet B
24 Wörter + "bitcoin"       → Wallet C
24 Wörter + "Bitcoin "      → Wallet D

Wie lässt sich eine Wallet wiederherstellen?

Zur Wiederherstellung wird die Seed Phrase in eine kompatible Wallet eingegeben.

Die Wallet berechnet daraus erneut denselben 512-Bit-Seed und leitet anschließend dieselben privaten und öffentlichen Schlüssel ab. Dadurch entstehen wieder dieselben Bitcoin-Adressen.

Seed Phrase

BIP39

12–24 Wörter

refuseexactstay

Passphrase

optional

leerer String oder zusätzliches Geheimnis

512-Bit-Seed

PBKDF2-HMAC-SHA512

HD Wallet

deterministische Ableitung

Private Keys und Adressen

dieselben wie zuvor

Wurde bei der ursprünglichen Wallet eine Passphrase verwendet, muss bei der Wiederherstellung exakt dieselbe Passphrase eingegeben werden. Andernfalls entsteht eine andere Wallet.

Nach der Schlüsselableitung durchsucht die Wallet die Blockchain nach Transaktionen, die zu den abgeleiteten Adressen gehören. Daraus rekonstruiert sie den Kontostand und die verfügbaren UTXOs.

Wie bewahrt man eine Seed Phrase sicher auf?

Eine Seed Phrase ist das vollständige Backup einer Wallet. Geht sie verloren oder gerät sie in fremde Hände, können die darin verwalteten Bitcoin dauerhaft verloren sein oder gestohlen werden.

Für eine sichere Aufbewahrung gelten daher einige grundlegende Regeln:

01

Nur offline

Bewahre die Seed Phrase ausschließlich offline auf.

02

Vollständige Sicherung

Erstelle eine gut lesbare und vollständige Sicherung.

03

Feuer und Wasser

Schütze sie vor Feuer, Wasser und anderen Umwelteinflüssen.

04

Kein Fremdzugang

Bewahre sie an einem Ort auf, zu dem Unbefugte keinen Zugang haben.

05

Keine Kamera

Achte beim Aufschreiben darauf, dass keine Kamera oder andere Aufnahmegeräte die Seed Phrase erfassen können.

06

Nie im Netz eingeben

Gib die Seed Phrase niemals auf Webseiten oder in unbekannte Software ein.

Wird zusätzlich eine Passphrase verwendet, sollte auch diese sicher dokumentiert werden. Seed Phrase und Passphrase müssen jedoch nicht gemeinsam aufbewahrt werden.