Aufwand um einen Seed zu bruteforcen wenn x Wörter vorhanden sind?

Hallo,

kann man irgendwo nachlesen wie lange es dauert einen Seed zu bruteforcen wenn x Wörter vorhanden sind?

Um nochmal klar zu machen was ich meine:
Wie viel Geld müsste jemand in Amazon AWS oder ähnliches investieren um einen Seed zu bruteforcen von dem er 10, 8, 6 oder noch weniger Wörter hat?

Der Hintergrund meiner Frage ist, wenn man einen Seed bestehend aus 12 Wörter hat, reicht es aus diesen in jeweils 4 Wörter aufzuteilen und 3 Zettel an verschiedenen Orten der Wohnung zu verteilen? Kann jemand der nur ein 4 Wörter des Seeds findet schon anfangen zu bruteforcen oder ist das für den Angreifer rausgeschmissenes Geld? Was wer derjenige 8 Wörter hat? Wie viel Rechenleistung wäre dann nötig?

Bitte keine Diskussion darüber ob es generell sinnvoll ist den gesamten Seed an einem Ort zu lagern. Gehen wir einfach mal davon aus, dass es nicht anders geht.

Zusatzfrage: Wenn man einen Seed aus 24 Wörter hat und diesen in 3 Teile aufteilt, also jeweils 8 Wörter, erhöht sich der Aufwand dann exponentiell wenn jemand 16 Wörter davon hat, oder ist der Unterschied im Vergleich dazu wenn jemand 8 Wörter von einem 12 Wörter-Seed hat nicht allzugroß?

1 „Gefällt mir“

Besser einen 24 seed nutzen mit 2 karten wo jeweils 12 wörter drauf sind, an zwei verschiedenen orten in der wohnung verteilen

Oder ein 2/3 Split (bringt aber nur was bei 24.wörtern)

Dann aber eine Diskussion ob der Seed auf Papier gut aufgehoben ist :joy:

Wenn zusätzlich noch eine starke Passphrase verwendet wird, ist es so gut wie ausgeschlossen, dass man in deinem oben beschriebenen Szenario Bruteforcen könnte.

1 „Gefällt mir“

Entfernt vom Nutzer.

Vielleicht könnte ja noch irgendjemand konkret auf meine Frage antworten. Danke.

Du kannst dir deinen Seed auch auf deinem Hintern notieren aber weder darum, noch um die Vorteile/Nachteile eines Seeds auf Papier geht es hier.

Heul doch nicht gleich :cry:

Ein Seed mit 12 Wörtern hat 2048 mögliche Wörter pro Position (bei Verwendung des BIP39-Standards).
Die Kosten für das Bruteforcen eines Seeds hängen von der benötigten Rechenleistung und der Zeit ab. Im Allgemeinen steigt der Aufwand und die Kosten exponentiell mit der Anzahl der unbekannten Wörter. Bei 2 bis 4 unbekannten Wörtern wäre es theoretisch möglich, den Seed innerhalb von Tagen bis Monaten zu bruteforcen, was je nach Infrastruktur Kosten im Bereich von Tausenden bis Millionen von Dollar verursachen könnte.

Die Aufteilung eines Seeds in mehrere Teile, die an verschiedenen Orten aufbewahrt werden, erhöht die Sicherheit, da ein Angreifer nicht sofort Zugang zu allen Teilen hat.

4 Wörter (bei 12 Wörter Seed): Hier wäre der Aufwand für einen Angreifer, der nur 4 Wörter findet, extrem hoch, Dies wäre in der Praxis für einen Angreifer unrentabel.

8 Wörter (bei 12 Wörter Seed): Mit nur 4 unbekannten Wörtern Kombinationen zu bruteforcen, was bei genügend Ressourcen machbar wäre, aber immer noch erhebliche Kosten verursachen würde.

Viel Text um nichts Captain Obvious.

1 „Gefällt mir“

Genau dieses Experiment wurde schon in Form eines Wettbewerbs durchgeführt.

Der Gewinner John Cantrell hat die letzten 4 Wörter einer 12-Wort-Seedphrase gebruteforced. Dafür brauchte er 30 Stunden, bei Verwendung eines Pools von Graphikkarten auf dem Level von Nvidia GeForce GTX 1080-Ti bis RTX 2080-Ti. Schätzungsweise waren im Mittel 50…100 Graphikkarten beteiligt. Die Kosten lagen bei ca. 400 USD.

Er hat dabei wie gesagt keinen der bekannten Cloud Computing Provider genutzt, sondern einen Marktplatz, auf dem jeder freie Rechenleistung seiner GPU anbieten kann. Über einen zentralen Rechner wurde die Rechenarbeit dann auf diese einzelnen GPUs verteilt.

Der Artikel ist 4 Jahre alt. Heutzutage sind die Graphikkarten nochmal schneller. Eine GeForce RTX 4090 hat z.B. auch 4x mehr Kerne als eine RTX 2080-Ti. Es gibt noch schnellere „Profi-Karten“ bei den Cloud Providern.

Bruteforcen von Passwörtern heutzutage

Wenn man die Bruteforce-Dauer heutzutage für verschiedene Anzahl fehlender Wörter abschätzen möchte, kann man sich auch an diesem Passwort-Artikel orientieren:

Das Ergebnis ist die bunte Tabelle oben, ganz am Anfang des Artikels.

Zur Einordnung ein kurzer Vergleich dieser Passwort-Tabelle mit dem Wettbewerb von oben:

Beim Bruteforcen der 4 Wörter im Wettbewerb musste am Ende eine Anzahl von 2^{40} Seedphrases geprüft werden (40 fehlende Bits in der Entropie der Seephrase). Bei jedem Seedphrase-Kandidat besteht der teuerste Rechenvorgang darin, den Seed mittels PBKDF2 (2048 Runden) aus der Seedphrase abzuleiten. Pro PBKDF2-Ableitung sind 4096 SHA-512-Hashes zu berechnen.

Für die Tabelle des Passwort-Artikels hingegen, wurde pro Passwort-Kandidat nicht 4096x mit SHA-512, sondern nur 32x mit bcrypt gehasht. Im Gegenzug ist bcrypt aber absichtlich langsamer als SHA-512.

Die GPU-Leistung sollte vergleichbar sein. Im Passwort-Artikel wurden 12 GeForce RTX 4090 eingesetzt. John Cantrell hat im Mittel wahrscheinlich 4…8 Mal so viele Karten eingesetzt, wobei diese aber auch um einen ähnlichen Faktor langsamer waren.

Im Passwort-Artikel wurden nur 8 Sonderzeichen berücksichtigt, was ca. 6,13 Bit Sicherheit pro Zeichen des Passworts entspricht. Ein Passwort mit 6 Zeichen entspricht damit ca. 2^{37} Bruteforce-Versuchen. Laut Tabelle dauert das Knacken 12 Stunden.
John Cantrell’s 2^{40} Versuche haben nicht ganz 2^{3} = 8 Mal länger gedauert, sondern nur etwas mehr als 1 Tag. Bei den entsprechenden Rundenzahlen ist PBKDF2 also immer noch schneller als bcrypt.

Aber die Größenordnungen der Gesamtdauer passen mehr oder weniger zufällig hervorragend zusammen. Beide Artikel scheinen also plausibel zu sein.

Zusammenfassend lässt sich sagen, dass sowohl John Cantrell als auch der Passwort-Artikel sich an dem Equipment orientieren, was für Privatpersonen noch als realistisch machbar angenommen wird.


Abschätzung auf Basis der Artikel

Da sich die Artikel grob entsprechen, verwende ich die entsprechenden Werte als Basis.

John Cantrell hat 2^{40}10^{12} Seedphrases in 30 Stunden ≈ 10^{5} Sekunden geprüft. Da der Wettbewerb 4 Jahre her ist, könnte man mit einer vergleichbaren Anzahl an Graphikkarten aktuellen Typs wahrscheinlich grob eine Größenordnung schneller bruteforcen.

Statt John Cantrells 10^{7} Seedphrases pro Sekunde rechne ich deshalb mit 10^{8} Seedphrases pro Sekunde. Das würde dann einem GPU-Pool mit 50…100 aktuellen Graphikkarten wie der GeForce RTX 4090 oder der professionellen A100 entsprechen.

Pro Wort der Seedphrase hat man 11 Bit Sicherheit. Das letzte Wort besteht zum Teil aus der Checksumme, bietet also weniger Sicherheit.
Bei einer 24-Wort-Seedphrase hat das letzte Wort nur 3 freie Bit und die Checksumme 8 Bit. Für das letzte zu bruteforcende Wort gibt es also im Mittel nur 2^{3} = 8 statt 2^{11} = 2048 Möglichkeiten, egal ob es sich am Ende befindet oder nicht.
Bei einer 12-Wort-Seedphrase hat das letzte Wort 7 freie Bit und die Checksumme nur 4 Bit, weshalb das Bruteforcen bei gleich vielen fehlenden Wörtern 16 Mal länger dauert.

Man erhält damit folgende Formel für die Bruteforce-Dauer:

Dauer = 2^{(11 \cdot Anzahl\ fehlende\ Wörter - Anzahl\ Checksum\ Bits)} \cdot 10^{-8}\ s

Das entspricht grob folgenden Größenordnungen:

                   	│ bei 24 Wörtern  │   bei 12 Wörtern
────────────────────┼─────────────────┼─────────────────
1 fehlendes Wort    │    < 1 Sekunde  │      < 1 Sekunde
2 fehlende Wörter   │    < 1 Sekunde  │      < 1 Sekunde
3 fehlende Wörter   │    < 1 Sekunde  │         Sekunden
4 fehlende Wörter   │        Minuten  │          Stunden
5 fehlende Wörter   │           Tage  │           Monate
6 fehlende Wörter   │     10^2 Jahre  │       10^3 Jahre
7 fehlende Wörter   │     10^5 Jahre  │       10^6 Jahre
8 fehlende Wörter   │     10^9 Jahre  │  Alter Universum

Das Ergebnis kann man auf eine vereinfachte Bruteforce-Faustformel herunterbrechen.

Bruteforce- Faustformel

Für 4 fehlende Wörter braucht man eine 1 Stunde. Für jedes weitere fehlende Wort braucht man einen Faktor 2000 länger. Für jedes Wort weniger entsprechend einen Faktor 2000 kürzer.

Beispiele:
Für drei fehlende Wörter braucht man in der Größenordnung von Sekunden (1/2000 Stunde).
Für sechs fehlende Wörter in der Größenordnung von einigen 100 Jahren (2000 * 2000 Stunden).

Man sieht, dass man ab ca. 6 fehlenden Wörtern aktuell noch einigermaßen sicher ist. Besser natürlich 8, wie beim Mnemonic Split (2/3) einer 24-Wort-Seedphrase.
Sollte sich die Rechenleistung jedes Jahr verdoppeln, wären 6 fehlende Wörter schon in 10 Jahren gefährlich, 8 Wörter in 30…40 Jahren. Aber evtl. geht es durch neue Technologien ja sogar schneller.

Natürlich würde das Ganze anders aussehen, wenn nicht Privatleute, sondern Institutionen solch einen Angriff durchführen würden. Alleine ChatGPT wurde z.B. auf 1000x mehr Graphikkarten trainiert. Was die NSA hat, will ich gar nicht wissen.

Noch schlimmer wäre es, ASICS für das Hashing einzusetzen. John Cantrell hat mehr als 10^{15} Hashes berechnet. Ein einzelner moderner Mining-ASIC schafft das in Sekunden. Allerdings kann man mit Mining-ASICS keine Seeds bruteforcen; man bräuchte spezialisierte Hardware.

Interessanter ist außerdem wie du richtig fragst, was die Kosten und der erwartete Gewinn eines Angriffs sind. Das ist aufgrund der vielen Unbekannten schwer abzuschätzen.
Man nimmt oben an, dass eine Privatperson sich zum Bruteforcen 50…100 Top-Graphikkarten wie die GeForce RTX 4090 oder die professionelle A100 mietet.
Bei der GPU-Börse hatte John Cantrell dafür vor vier Jahren ca. 10 USD pro Stunde gezahlt. Die Preise, die ich bei Google oder AWS gefunden habe, bewegen sich eine Größenordnung darüber.

@brycen, sind deine Fragen damit beantwortet?

Edit: Ich habe die Rechnung nochmal etwas angepasst

7 „Gefällt mir“

Antwort von ChatGPT:

Um die Bruteforce-Bemühungen für ein Seed-Phrase-Wallet zu verstehen, müssen wir zuerst den Basismechanismus hinter Seed Phrases und deren Entropie betrachten. Seed Phrases bestehen aus einer Liste von Wörtern, die aus einer festgelegten Wortliste ausgewählt werden (in der Regel eine Liste von 2048 Wörtern, die in BIP39 definiert ist).

Entropie und Möglichkeitsschlüssel

  1. Anzahl der Wörter: Eine gängige Seed-Phrase besteht aus 12 Wörtern. Bei BIP39 beträgt die Entropie für jede Wortwahl 11 Bits (da 2048 = 2^11).

  2. Berechnung für 12 Wörter:

    • Entropie für eine komplette 12-Wörter-Phrase: 12 * 11 = 132 Bits.
    • Das ergibt 2^132 mögliche Kombinationen.
  3. Wenn nur 10 Wörter bekannt sind: Wenn der Angreifer 10 Wörter kennt und es sich um eine 12-Wörter-Phrase handelt, bleiben 2 Plätze (2 Wörter), was zu folgenden Möglichkeiten führt:

    • Entropie: 2 * 11 = 22 Bits.
    • Mögliche Kombinationen: 2^22 ≈ 4.194.304 Kombinationen.
  4. Wenn nur 8 Wörter bekannt sind: Bei 8 bekannten Wörtern bleiben 4 Plätze:

    • Entropie: 4 * 11 = 44 Bits.
    • Mögliche Kombinationen: 2^44 ≈ 17.592.186.044.416 Kombinationen.

Rechenleistung und Kosten

Die Kosten für Brute-Force-Angriffe können erheblich variieren, abhängig von der verwendeten Rechenleistung und den aktuellen Preisen in Cloud-Diensten wie Amazon AWS.

  1. Rechenleistung: Nehmen wir an, ein typischer GPU-Cluster könnte etwa 10^9 (1 Milliarde) Hashes pro Sekunde verarbeiten.

  2. Für 2^22 Kombinationen (10 Wörter bekannt):

    • Zeit = 2^22 / 10^9 ≈ 4,2 Sekunden.
  3. Für 2^44 Kombinationen (8 Wörter bekannt):

    • Zeit = 2^44 / 10^9 ≈ 17.592 Sekunden (oder etwa 4,9 Stunden).

Kosten*

Die Kosten für diese Berechnung hängen von den Cloud-Preisen ab. Bei AWS oder ähnlichen Anbietern könnte man für einen GPU-Server zwischen 0,5 und 3 Dollar pro Stunde zahlen. Angenommen, ein Angriff auf eine 8-Wörter-Phrase dauert 4,9 Stunden, könnten die Kosten im Bereich von 2,5 bis 15 Dollar liegen.

Fazit

Einen Seed-Phrase mit 12 Wörtern auf 3 Zettel zu verteilen und nur 4 Wörter an einem Ort zu haben, könnte den Aufwand für einen Angreifer erheblich erleichtern. Wenn dieser Zugang zu 10 oder 8 Wörtern hat, könnte er tatsächlich theoretisch einen Brute-Force-Angriff durchführen, der mit relativ geringem Aufwand (und geringerem Kostenaufwand) möglich ist. Das Risiko bleibt also ziemlich hoch, und es ist am sichersten, die Seed-Phrase vollständig zu sichern und zu schützen.

Ich danke dir vielmals für diese sehr interessante Ausführung!

Edit: Bei der Tabelle sind die Zeitangaben bzgl. 12/24 Wörter vertauscht oder?

1 „Gefällt mir“

Gerne! :slightly_smiling_face:

Nein, die passen schon so. Im BIP39 ist Folgendes vorgegeben:

Bei 12 Wörtern beinhaltet das letzte Wort 7 Bit Entropie und eine 4 Bit Checksumme.

Bei 24 Wörtern beinhaltet das letzte Wort 3 Bit Entropie und eine 8 Bit Checksumme.

Beim Bruteforcen muss man beim letzten Wort einer 12-Wort-Seedphrase also noch 7 Bit knacken. Beim letzten Wort einer 24-Wort-Seedphrase aber nur noch 3 Bit.

Das Bruteforcen bei gleicher Anzahl fehlender Wörter ist bei 12 Wörtern also 2^{7}/2^{3} = 2^{4} = 16 Mal schwieriger als bei 24 Wörtern.

Das gleiche gilt auch, wenn die fehlenden n Wörter einer zu bruteforcenden Seedphrase das letzte Wort gar nicht beinhalten.
Sobald du für einen Versuch n-1 fehlende Wörter vorgibst, musst du für das n-te fehlende Wort nur noch alle 2048 Varianten einmal hashen und schauen für welche Wörter die Checksumme stimmt. Nur für diese passenden Wörter hast du dann den entscheidenden Aufwand, den Seed abzuleiten.

Die Anzahl dieser passenden Wörter ist ebenfalls im Mittel 8 Wörter bei einer 24-Wort-Seedphrase, aber im Mittel 128 Wörter bei einer 12-Wort-Seedphrase. Der Aufwand bei letzterer ist also auch in diesem Fall 128/8 = 16 Mal höher.

1 „Gefällt mir“

12 > 8 Wörter → bei gleicher Ausstattung (wie in diesem Szenario) also länger als das Universum alt ist.

Und das ist auch das Argument, weshalb ein 2/3 Split (gegenwärtig) selbst bei einer kompromittierten Sicherung ausreichend sicher ist (/Zeit bietet), um seinen Vermögen an eine neue Adresse (von einem neuen Seed) zu übertragen.

1 „Gefällt mir“

Der Aufwand wäre mit 128 Bit so groß, dass es sich eher lohnen würde, mit demselben Aufwand einen bekannten „reichen“ Public Key zu bruteforcen.

Außer natürlich jemand weiß, das deine Wallet ebenso reich bestückt ist. Das ist aber sehr unwahrscheinlich.

Beides wird mit dem jeweils aktuellen Equipment noch lange nicht möglich sein. Evtl. sogar erst bei Verfügbarkeit der ersten großen Quantencomputer, da sich dort effizientere Algorithmen umsetzen lassen.

1 „Gefällt mir“

Ja aber du meintest irgendetwas mit der Checksumme vom letzten Wort.

Du hast noch einen langen Weg vor Dir, junger Padavan. :slight_smile:

2 „Gefällt mir“

Das ist da schon berücksichtigt. Mit 12 fehlenden Wörtern hat niemand heutzutage eine Chance.

Ansonsten könnte man ja genauso gut alle beliebigen 12-Wort-Seedphrases bruteforcen. Es macht keinen Unterschied, ob bei 24 Wörtern 12 fehlen, oder ob bei 12 Wörtern alle fehlen.

Allerdings. Aber schön, dass du dir überhaupt Gedanken machst, @XMR. Es wirkt nur manchmal so, als hättest du die Beiträge nicht ganz gelesen.

Außerdem verrennst du dich gerade ein bisschen. Versuche dich doch einfach mal mit einem der Standard-Ansätze aus meinem anderem Beitrag anzufreunden. Ohne irgendwelche Spezial-Zusätze.

2 „Gefällt mir“

Ja das hab ich mir gedacht