Kann eine BIP-39-Passphrase geknackt werden?
Teilen
In einem jüngsten Beitrag über BIP-39 habe ich beschrieben, wie mnemonische Sätze im Zusammenhang mit Bitcoin funktionieren und was sie sicher macht. 128- oder 256-Bit-Kryptografie gilt heute und in absehbarer Zukunft als sicher und unknackbar. Darauf basiert die Sicherheit von Bitcoin-Wallets. Kann man das Gleiche über den optionalen BIP-39-Passphrase sagen, das sogenannte 25. Wort? Lassen Sie uns herausfinden.
Hier ist ein typisches Szenario: Sie haben Ihre 24 Seed-Wörter irgendwo gesichert, idealerweise auf einem Stück feuer-, säure- und druckfestem Edelstahl eingraviert. Sie entscheiden sich dann, die BIP-39-Passphrase-Unterstützung in Ihrer Hardware-Wallet zu aktivieren und die Passphrase(n) auf einen sechseckigen Edelstahlstab zu gravieren und den Stab an einem anderen geografischen Ort als Ihr 24-Wörter-Seed-Backup aufzubewahren, um:
- es schwieriger zu machen, Ihre Gelder zu stehlen, falls Ihre Seed-Wörter kompromittiert werden
- mehrere Konten in Ihrer Wallet zu haben (jede Passphrase entspricht einem separaten Konto)
- die Bitcoins nach Ihrem Tod an Ihre Verwandten weiterzugeben
Dann stoße ich zufällig auf Ihr BIP-39-mnemonisches Backup, das in Ihrer Schreibtischschublade versteckt ist, importiere es in eine neue Electrum-Wallet, überprüfe den Wallet-Kontostand, aber keine der Adressen wurde jemals verwendet. Ich weiß jedoch, dass Sie einige Bitcoins haben, weil ich zufällig auch Ihren Twitter-Handle kenne, Ihre Tweets überprüfe und viele Verweise auf "HODL" und "TO THE MOON" sehe. Ich nehme an, dass Sie eine BIP-39-Passphrase verwenden müssen.
Dann stellt sich die Frage: "Wie einfach ist es, diese zusätzliche Passphrase zu knacken?" und "Was macht eine gute, schwer zu knackende Passphrase aus?"
Auf der Suche nach Antworten habe ich etwas recherchiert und einige Antworten gefunden, obwohl sie etwas vage erschienen:
- Hier ist eine Seite von Trezor, die die Multi-Passphrase-Verschlüsselung anhand von Beispiel-Passphrasen beschreibt: "Hello World" und "Purple24901". Wie sicher sind solche Passphrasen?
- Hier sagt Andreas Antonopoulos im September 2018, dass eine relativ komplexe Passphrase Sie mehrere Wochen bis zu einem Monat lang sicher halten wird. Eine sehr starke, komplexe Passphrase wird Sie monatelang sicher halten."
Was bedeutet eine komplexe Passphrase genau? Wir können selbst recherchieren, indem wir uns die BIP-39-Spezifikation ansehen, aber dieses Mal fangen wir dort an, wo wir letztes Mal aufgehört haben:
Der letzte Schritt von BIP-39 ist die Erstellung des eigentlichen binären Seeds, der dann als Master-Key in einer BIP-32-deterministischen Wallet oder mit anderen Methoden verwendet wird.
Um einen binären Seed aus dem Mnemonik-Satz zu erstellen, verwenden wir die PBKDF2-Funktion mit einem Mnemonik-Satz (in UTF-8 NFKD) als Passwort und dem String "mnemonic" + Passphrase (wieder in UTF-8 NFKD) als Salt. Die Iterationsanzahl wird auf 2048 festgelegt und HMAC-SHA512 wird als Pseudozufallsfunktion verwendet. Die Länge des abgeleiteten Schlüssels beträgt 512 Bits (= 64 Bytes).
Die Passphrase wird im letzten Schritt des BIP-39-Schlüsselableitungsverfahrens verwendet. Sie verwendet die Password-Based Key Derivation Function 2, um den Mnemonik-Satz (die 12 oder 24 Seed-Wörter) + eine optionale Passphrase in einen binären Seed umzuwandeln. Nachfolgend ist ein Zitat von Wikipedia, das die Eingabeparameter und die Funktionsweise dieser Funktion beschreibt (scrollen Sie nach unten für eine einfachere Erklärung von PBKDF2):
PBKDF2 wendet eine pseudozufällige Funktion, wie z. B. einen hash-basierten Nachrichtenauthentifizierungs-Code (HMAC), auf das Eingabe-Passwort oder Passphrase zusammen mit einem Salt Wert an und wiederholt den Vorgang viele Male, um einen abgeleiteten Schlüssel zu erzeugen, der dann in nachfolgenden Operationen als Kryptografischer Schlüssel verwendet werden kann. Die zusätzliche Rechenarbeit macht Passwortknacken viel schwieriger und ist als Key Stretching bekannt.
Das Hinzufügen eines Salts zum Passwort reduziert die Möglichkeit, vorab berechnete Hashes (Regenbogen-Tabellen) für Angriffe zu verwenden, und bedeutet, dass mehrere Passwörter einzeln getestet werden müssen, nicht alle auf einmal. Der Standard empfiehlt eine Salt-Länge von mindestens 64 Bits.[6] Das US-amerikanische National Institute of Standards and Technology empfiehlt eine Salt-Länge von 128 Bits.
Die PBKDF2-Schlüsselableitungsfunktion hat fünf Eingabeparameter:
DK = PBKDF2(PRF, Password, Salt, c, dkLen)
wobei:
- PRF ist eine Pseudozufallsfunktion mit zwei Parametern und einer Ausgabelänge hLen (HMAC-SHA512 in BIP-39)
- Password ist das Master-Passwort, aus dem ein abgeleiteter Schlüssel erzeugt wird (Mnemonik-Wörter)
- Salt ist eine Bitfolge, bekannt als Kryptografisches Salt (BIP-39-Passphrase)
- c ist die gewünschte Anzahl an Iterationen (2048 Iterationen in BIP-39)
- dkLen ist die gewünschte Bit-Länge des abgeleiteten Schlüssels (512 Bits)
- DK ist der erzeugte abgeleitete Schlüssel
Eine einfachere Erklärung von PBKDF2 ist folgende: Es ist eine kryptografische Funktion, die entwickelt wurde, um ein Passwort und eine optionale Passphrase (Salt) in einen kryptografischen Hash umzuwandeln. Diese Funktion ist so konzipiert, dass sie langsam läuft (denken Sie an 2048-mal langsamer als ein einzelner Aufruf von HMAC-SHA512 im Kontext von Bitcoin). Im Fall der finalen BIP-39-Schlüsselableitung ist dies die Essenz dessen, was PBKDF2 tut: Es führt HMAC-SHA512 2048-mal aus. Das ist das Einzige, was wir uns jetzt merken müssen.
BIP-32 (Hierarchische deterministische Wallet)
Sobald wir PBKDF2 auf unseren Mnemonik-Satz + eine Passphrase anwenden, erhalten wir einen Schlüssel. Dieser Schlüssel wird dann als Seed für die BIP-32-Privat-/Öffentlich-Schlüssel-Generierung verwendet. Ich werde hier nicht in die Details von BIP-32 eintauchen, es genügt zu sagen, dass die Kosten für die Erzeugung von Privat-/Öffentlich-Schlüsseln und zugehörigen Adressen und deren Überprüfung gegen eine Datenbank aller jemals verwendeten Adressen im Vergleich zur oben genannten PBKDF2-Funktion vernachlässigbar sind.
Angriffsarten
Lassen Sie uns einige Angriffsarten definieren. Jede Klasse repräsentiert das Niveau des Angriffs auf die BIP-39-Passphrase und erfordert immer teurere Hardware.
Klasse A (10.000 Hashes/s): Mein Laptop kann etwa 500 PBKDF2-HMAC-SHA512-Hashes pro Sekunde auf einem einzelnen CPU-Kern ausführen. Nehmen wir an, ich kann es auf allen 8 Kernen ausführen und 4000 Hashes/s erhalten und ich habe 2 Laptops.
Klasse B (1.000.000 Hashes/s): GeForce GTX 1080 kann ca. 240.000 Hashes/s ausführen. Wir haben einige GFX-Karten für diese Art von Angriff zur Verfügung.
Klasse C (100.000.000 Hashes/s): Hypothetisch können wir annehmen, dass das Knacken von BIP-39-Passphrasen in naher Zukunft profitabel sein wird und ein Unternehmen einen spezialisierten ASIC nur für diesen Zweck erstellen wird. Nehmen wir an, er wird 10-mal schneller sein als die oben genannte GFX-Karte, also etwa 2,4M Hashes/s. Ein typischer Angreifer wird einige solcher spezialisierten Geräte besitzen.
Klasse D: (1.000.000.000 Hashes/s): Ein Supercluster von ASIC (wie ein Mining-Pool, aber zum Knacken von PBKDF2-HMAC-SHA512)
Es ist erwähnenswert, dass heute keine Geräte der Klasse C oder Klasse D existieren. Es ist möglich, dass solche Geräte eines Tages auftauchen könnten, daher müssen wir dies bei der Entscheidung über die Länge der Passphrase, die wir verwenden möchten, im Hinterkopf behalten.
BIP-39-Passphrase-Knackzeiten
Lassen Sie uns einige typische Wörterbücher und Zeichenfolgen betrachten, die Menschen allgemein und insbesondere bei der Erstellung von BIP-39-Passphrasen verwenden:
- BIP-39-Wortliste (2048-Wörter-Wörterbuch)
- EFF Diceware-Lange-Wortliste für die Verwendung mit fünf Würfeln (7776 Wörter)
- EFF Diceware-Kurze-Wortliste für die Verwendung mit vier Würfeln (1296 Wörter)
- Ziffern (0-9) - 10 Zeichen
- Alphabet (entweder Groß- oder Kleinbuchstaben) - 26 Zeichen
- Alphanumerisch (entweder Groß- oder Kleinbuchstaben + Zahlen) - 36 Zeichen
Lassen Sie uns Folgendes beachten:
- Ein Angreifer weiß nicht, welches Wörterbuch/welche Zeichenfolge Sie für Ihre Passphrase verwendet haben. Er/Sie könnte mit den einfachsten Wörterbüchern/Kombinationen beginnen (zum Beispiel 1 oder 2 Wörter-Wörterbuch-Suchen) und dann zu schwierigeren Strategien übergehen. Die tatsächliche Zeit, die es dauert, Ihre Passphrase zu knacken, könnte länger sein als die in den untenstehenden Tabellen angegebenen Zeiten.
- Andererseits wird es im Durchschnitt die Hälfte der in den untenstehenden Tabellen angegebenen Zeit dauern, bis ein Angreifer die richtige Passphrase erhält
- Eine allgemeine Formel zur Berechnung der Passphrase-Entropie in Bits ist log2(Anzahl_der_Kombinationen). So sind beispielsweise log2(2048^2) = 22 Bits an Entropie. Erinnern Sie sich daran, dass der PKCS-Standard eine Salt-Länge von mindestens 64 Bits empfiehlt.
PBKDF2-Schwäche (Optimierung)
Andrea Visconti, Simone Bossi, Hany Ragab und Alexandro Calò veröffentlichten ein Papier mit dem Titel "Über die Schwäche von PBKDF2". Die Essenz ist, dass es einige Optimierungen in PBKDF2 gibt, die implementiert werden können und das gesamte Schema optimiert wird. Die Autoren erwähnen eine 50%ige Optimierung im ersten Fall. Wir können dies beim Lesen der untenstehenden Knackzeiten beachten. (Z. B. können wir annehmen, dass die tatsächliche Optimierung tatsächlich 50% beträgt, in diesem Fall wird die Knackzeit statt 2 Jahrtausenden 1 Jahrtausend sein usw.).
BIP-39-Wortliste (2048 Wörter)
| BIP-39-Wortliste | abandon,ability,...,zoo | |||||
| Passwort | Angriffsart | |||||
| Wörter | Kombinationen | Entropie | Klasse A | Klasse B | Klasse C | Klasse D |
| 2 | 2048^2 | 22 Bits | 7 Min | 4 Sek | Sofort | Sofort |
| 3 | 2048^3 | 33 Bits | 10 Tage | 2 Std | 85 Sek | 8 Sek |
| 4 | 2048^4 | 44 Bits | 55 Jahre | 203 Tage | 2 Tage | 4 Std |
| 5 | 2048^5 | 55 Bits | 114 Jahrtausende | 1 Jahrtausend | 11 Jahre | 1,5 Jahre |
| 6 | 2048^6 | 66 Bits | ∞ | ∞ | ∞ | 2 Jahrtausende |
| 7 | 2048^7 | 77 Bits | ∞ | ∞ | ∞ | ∞ |
Lange Diceware-Wortliste (7776 Wörter)
| Diceware-Wortliste | abacus,...,zoom | |||||
| Passwort | Angriffsart | |||||
| Wörter | Kombinationen | Entropie | Klasse A | Klasse B | Klasse C | Klasse D |
| 2 | 7776^2 | 26 Bits | 100 Min | 1 Minute | Sofort | Sofort |
| 3 | 7776^3 | 39 Bits | 1,5 Jahre | 130 Std | 1,5 Std | 7 Min |
| 4 | 7776^4 | 52 Bits | 11 Jahrtausende | 115 Jahre | 1,5 Jahre | 42 Tage |
| 5 | 7776^5 | 65 Bits | ∞ | ∞ | 9 Jahrtausende | 901 Jahre |
| 6 | 7776^6 | 76 Bits | ∞ | ∞ | ∞ | ∞ |
| 7 | 7776^7 | 90 Bits | ∞ | ∞ | ∞ | ∞ |
Kurze Diceware-Wortliste (1296 Wörter)
| Diceware-Wortliste | acid,...,zoom | |||||
| Passwort | Angriffsart | |||||
| Wörter | Kombinationen | Entropie | Klasse A | Klasse B | Klasse C | Klasse D |
| 2 | 1296^2 | 21 Bits | 3 Min | 1 Sek | Sofort | Sofort |
| 3 | 1296^3 | 31 Bits | 60 Std | 36 Min | 21 Sek | Sofort |
| 4 | 1296^4 | 41 Bits | 3 Jahrtausende | 32 Tage | 8 Std | 47 Min |
| 5 | 1296^5 | 52 Bits | ∞ | 4 Jahrtausende | 1,5 Jahre | 42 Tage |
| 6 | 1296^6 | 62 Bits | ∞ | ∞ | 1,5 Jahrtausende | 150 Jahre |
| 7 | 1296^7 | 72 Bits | ∞ | ∞ | ∞ | ∞ |
Ziffern
| Ziffern | 0123456789 | |||||
| Passwort | Angriffsart | |||||
| Länge | Kombinationen | Entropie | Klasse A | Klasse B | Klasse C | Klasse D |
| 2 | 100 | 7 Bits | Sofort | Sofort | Sofort | Sofort |
| 3 | 1000 | 10 Bits | Sofort | Sofort | Sofort | Sofort |
| 4 | 10.000 | 13 Bits | Sofort | Sofort | Sofort | Sofort |
| 5 | 100.000 | 17 Bits | 10 Sek | Sofort | Sofort | Sofort |
| 6 | 1 Million | 20 Bits | 2 Min | 1 Sek | Sofort | Sofort |
| 7 | 10 Millionen | 23 Bits | 20 Min | 10 Sek | Sofort | Sofort |
| 8 | 100 Mio. | 27 Bits | 3,5 Std. | 1,5 Min | Sofort | Sofort |
| 10 | 10 Mrd. | 33 Bits | 15 Tage | 3,5 Std. | 2 Min | 1 Sek |
| 12 | 1 Billiarde | 40 Bits | 3 Jahre | 11 Tage | 3 Std. | 17 Min |
| 20 | 10^20 | 66 Bits | ∞ | ∞ | ∞ | 3 Jahrtausende |
Alphabet - 26 Zeichen
| Großbuchstaben | ABCDEFGHIJKLMNOPQRSTUVWXYZ | Kleinbuchstaben | abcdefghijklmnopqrstuvwxyz | |||
| Passwort | Angriffsart | |||||
| Länge | Kombinationen | Entropie | Klasse A | Klasse B | Klasse C | Klasse D |
| 2 | 676 | 9 Bits | Sofort | Sofort | Sofort | Sofort |
| 3 | 17.576 | 14 Bits | 2 Sek | Sofort | Sofort | Sofort |
| 4 | 456.976 | 19 Bits | 46 Sek | Sofort | Sofort | Sofort |
| 5 | 11,8 Mio. | 23 Bits | 20 Min | 12 Sek | Sofort | Sofort |
| 6 | 308,9 Mio. | 28 Bits | 8,5 Std. | 5 Min | 3 Sek | Sofort |
| 7 | 8 Mrd. | 33 Bits | 9 Tage | 2 Std. | 1 Min | 8 Sek |
| 8 | 200 Mrd. | 38 Bits | 242 Tage | 2,5 Tage | 35 Min | 3,5 Min |
| 9 | 5,4 Billiarden | 42 Bits | 17 Jahre | 63 Tage | 15 Std. | 1,5 Std. |
| 10 | 141 Billiarden | 47 Bits | 447 Jahre | 4,5 Jahre | 16 Tage | 39 Std. |
| 12 | 95 Trillionen | 56 Bits | 302 Jahrtausende | 3 Jahrtausende | 30 Jahre | 3 Jahre |
| 15 | 1,6 Sextillionen | 70 Bits | ∞ | ∞ | 531 Jahre | 53 Jahre |
| 20 | 19,9 Oktillionen | 94 Bits | ∞ | ∞ | ∞ | ∞ |
Ist meine Passphrase sicher?

- Wenn Ihre Passphrase aus nur einem Wörterbuchbegriff besteht (also dem 25. Wort), ist sie NICHT SICHER. Ändern Sie sie so schnell wie möglich in eine Passphrase mit mindestens 4 Wörtern.
- lonelypumpkins ist eine bessere Passphrase als hodl, aber sie hält einem Brute-Force-Angriff von wenigen Stunden auf herkömmlicher Hardware nicht stand (zu kurz).
- Für das lange Diceware-Wörterbuch verwenden Sie mindestens 4 Wörter.
- Für das kurze Diceware-Wörterbuch verwenden Sie mindestens 6 Wörter.
- Wenn Sie die BIP-39-Wörterliste als Wörterbuch verwenden möchten, nutzen Sie mindestens 6 Wörter.
- Sie müssen sich nicht auf Wörter aus dem Wörterbuch beschränken. Je ungewöhnlicher das Wort ist, desto schwieriger ist es zu knacken – aber desto schwerer fällt es auch zu merken.
- Vermeiden Sie die typischen Fehler, die Menschen machen, wenn sie Passwörter erstellen. Verwenden Sie weder Ihr Geburtsdatum noch Namen von Personen, Haustieren oder Ihre Lieblingsorte als Passphrase..
- Im Zweifelsfall würfeln Sie und wählen Sie 6 zufällige Wörter aus der langen Diceware-Liste.
- Verlassen Sie sich nicht auf Ihr Gedächtnis oder auf Papier oder elektronische Geräte, um Ihre Passphrasen zu speichern. Verwenden Sie die Coldbit Passphrase in Verbindung mit Coldbit Steel oder Coldbit Hex, um eine langlebige, feuerfeste, wasserdichte und druckfeste Sicherung Ihrer Seed-Wörter und Passphrasen zu haben.
BTCRecover
Nachfolgend finden Sie ein praktisches Beispiel dafür, wie Sie BTCRecover verwenden können, um ein vergessenes Passwort wiederherzustellen. In diesen Beispielen ist die öffentliche Adresse bekannt, sodass sie nicht in der Blockchain nachgeschlagen werden muss (was den Vorgang verlangsamen würde).
Wie ich in 30 Stunden über 1 Billiarde Mnemonics durchsuchte, um ein Bitcoin zu gewinnen
Ein Jahr nach Veröffentlichung dieses Artikels brute-forcete John Cantrell die fehlenden 4 Wörter einer 12-Wort-Mnemonik und erbeutete 1 BTC mithilfe einer gemieteten Farm leistungsstarker Grafikkarten. Wir schätzten, dass ein Angriff der Klasse C (eine Farm aus leistungsstarken Grafikkarten oder ASICs) etwa 2 Tage benötigen würde, um 4 fehlende BIP-39-Wörter zu knacken. Das liegt sehr nah an Johns Ergebnis.