Brute Forcing die 24 Seed Wörter?

Noch eine Frage,

mir ist bewusst dass die 24 Wörter aus der Liste von 2000 eine verdammt große Zahl ist ;9
Ich meine irgendwo gelesen zu haben 2 hoch 256.

Dennoch die Frage, könnte es für einen Angreifer nicht Sinn machen trotzdem hier via Brute Force eventuell mehrere Maschinen gleichzeitig über mehrere Jahre laufen zu lassen und kommt er dann nicht irgendwann an den Punkt wo er doch mal glück hat/haben muss?

Ich glaube die Frage ist wie einfach kann eine Maschine einfach jede Sekudne mehrere Kombinationen testen um dann irgendwann fündig zu werden?

Oder gibt es hier Mechanismen die das schwieriger machen?

Bitcoin Mining ist auch ein brute force Verfahren – mit positiver und berechenbarer Erfolgsaussicht.

Ich habe nicht ausgerechnet, wieviel aufwändiger es ist, einen existierenden Seed zu finden, aber es werden schon einige (>25 geschätzt) Größenordnungnen sein. Außerdem kannst du dabei auch nicht gezielt ein bestimmtes Wallet suchen.

Was ich mir vorstellen kann, ist dass die Sicherheit von private keys in ~100 Jahren nochmal ein Thema wird. Dann müssten tatsächlich coins von alten Adressen per Transaktion auf ein sichereres Format migriert werden, bevor alte Adressen per fork für ungültig erklärt werden. Das ist lösbar, aber momentan noch sehr unwichtig.

4 „Gefällt mir“

Unser Gehirn tut sich sehr schwer dabei sich eine derart große Zahl tatsächlich vorstellen zu können.
Schau dir mal dieses Video an:

In diesem Video geht es jetzt darum einen einzelnen Seed zu finden. Allerdings wird die im Video veranschaulichte Wahrscheinlichkeit nicht größer wenn man nach ~30 Millionen Seeds sucht.
30 Millionen : 4 Millarden mit einem supergalaktischen Ultrakomputer der 500 Milliarden Jahre sucht ist immernoch keine vielversprechende Wahrscheinlichkeit.

Da ist es deutlich attraktiver mit dieser unfassbare Rechenleistung einfach das Bitcoin Netzwerk zu übernehmen, mehr Proof of Work geht ja gar nicht :^)

6 „Gefällt mir“

Danke super Beitrag. Und ja in der Tat denke ich immer das ist halt eine bisschen größere Zahl :wink:

Das Berechnungs-Verfahren von der Seed Phrase (24 Wörter + Passphrase) bis zu den Private Keys ist absichtlich so aufwändig vorgesehen, damit sich eine Brute Force Attacke nicht lohnt.

Das Kosten/Nutzen Verhältnis für direktes Brute Forcen eines einzelnen Bitcoin Private Keys ist in meinen Augen wesentlich besser.

Hier ein kurzer Vergleich von Brute Force Seed Phrase und Brute Force Bitcoin Private Key.

Wenn man eine Seed Phrase findet, die eine Adresse mit Balance ausspuckt, hat man bestenfalls gleich mehrere Coin Typen und Adressen mit Guthaben gefunden. Das ist der einzige Vorteil.

Aber:

  • Ich vermute, dass es pro Seed Phrase gar nicht so viele Adressen mit aktuellem Guthaben gibt. Viele werden nur wenige Adressen verwendet haben, manche vielleicht über 1000. Im Mittel vermute ich aber, dass nur in der Größenordnung von 10 Adressen pro Seed Phrase aktuell ein Guthaben aufweisen (alle Coin Typen inbegriffen).

  • Um von der Seed Phrase zu den einzelnen Private Keys zu kommen, sind viele Rechenschritte erforderlich, für die es meines Wissens heute noch keine spezialisierte Hardware wie z.B. ASICs gibt.
    Der Aufwand wird durch die PBKDF2 Funktion dominiert, in der 2048 Mal mit HMAC-SHA512 gehasht wird, um von der Seed Phrase zum BIP32 Seed zu kommen.
    Für jeden weiteren Ableitungsschritt bis zu den endgültigen Private Keys muss nochmal HMAC-SHA512 ausgeführt werden.
    Guter LINK dazu.

  • Für den ersten vom Seed abgeleiteten Bitcoin Private Key wird die Adresse berechnet. Leider reicht es nicht, diese im Katalog der aktuellen Adressen mit Guthaben zu suchen, da sie als erste Adresse des Seeds inzwischen schon wieder leer sein könnte. Es müssen also alle jemals verwendeten Adressen durchsucht werden.

Das Verfahren vom Private Key zur Adresse, um zu prüfen ob ein Guthaben vorhanden ist, ist in beiden Fällen das gleiche. Private Key → Elliptic Curve → SHA256 → RIPEMD160 → Adresse.

Ich nehme vereinfachend an, dass der Aufwand für alle bisher genannten Verfahren der gleiche ist (SHA256 Hash, SHA512 Hash, RIPEMD160 Hash, Elliptic Curve Multipl.). Leider weiß ich nicht wie gut diese Annahme ist.

Dann habe ich ausgehend vom Private Key bis zur Adresse 3 Schritte.

Ausgehend von der Seed Phrase aber mehr als 2051 Schritte, also in dieser groben Näherung fast 700 mal mehr Aufwand. Zusätzlich müssen alle bisher verwendeten Adressen durchsucht werden. Am Ende finde ich aber pro Seed Phrase nur relativ wenige Adressen mit Guthaben.

Ergebnis:
Das meiste Guthaben wird sowieso auf Bitcoin Adressen liegen, nicht in anderen Coins. Deshalb und wegen den bisher genannten Argumenten ist es denke ich sinnvoller, gleich nach einzelnen Bitcoin Private Keys zu suchen.

Zum Aufwand einen Bitcoin Private Key zu finden:

Es gibt zwar 2^256 Private Keys, aber durch den RIPEMD160 Hash nur 2^160 Adressen. D.h. für jede Bitcoin Adresse gibt es im Mittel 2^96 Private Keys, mit denen man das Guthaben transferieren kann.

Ich habe keine guten Angaben gefunden bzw. sie nicht verstanden, aber es werden wohl in der Größenordnung von aktuell ca. 2^25 Bitcoin Adressen ein Guthaben aufweisen.

Die Erfolgswahrscheinlichkeit für einen einzelnen Private Key ein Guthaben zu finden ist also ca. 2^25 / 2^160 = 2,3e-41, entsprechend näherungsweise 4,3e+40 Versuchen bis zum Erfolg.

Angenommen, das aktuelle Mining Equipment wäre nicht nur auf SHA256 spezialisiert, sondern ebenso auf Elliptic Curve Multiplication und RIPEMD160. Und angenommen, der Aufwand für diese drei Verfahren wäre jeweils der gleiche.

Dann hätte ich weltweit ungefähr eine maximale Hashrate von maximal 1,7e+20 s⁻¹. Pro Private Key brauche ich drei Schritte bis zur Adresse, also hätte ich 5,9e+19 Private Key Versuche pro Sekunde.

Um einen guten Private Key zu finden bräuchte ich dann 4,3e+40 / 5,9e+19 s⁻¹ = mehr als 1e+13 Jahre. Das entspricht ungefähr dem 1000fachen Alter des Universums.

Die Abschätzung ist sehr ungenau, aber selbst wenn es einige Größenordnungen weniger sein sollten, sind wir erst einmal safe. :slightly_smiling_face:

Zusätzlich zur technischen (Nicht-)Machbarkeit wäre der Energiebedarf so immens, dass sich das Kosten/Nutzen Verhältnis noch in ferner Zukunft nicht lohnen wird.

23 „Gefällt mir“

@skyrmion hättest irgendwo nocht hinschreiben sollen: Ohne zu sehr ins Detail gehen zu wollen​:sweat_smile::clap:

2 „Gefällt mir“

@skyrmion

Super Beitrag, danke dir! :slightly_smiling_face:

Hallo!

Der Beitrag von @Skyrmion ist schon super genial und ausführlich!

In meinem Kopf geht es ohne Mathematik auch nicht hinein, dass man mit 24 Wörtern, die ja pro einzelnem Wort auch nur eine gewisse Anzahl unterschiedlicher Wörter zulassen so viele Kombinationen erhält.

Ich denke, ein Angreifer mit sehr teurer Hardware und der dann auch über sehr lange Zeit sehr viel Energie aufbringen muss, sucht sich zuerst ein Wallet mit sehr vielen Bitcoins raus, damit sich der Aufwand lohnt. Für unsere dagegen mickrigen Beträge macht das keinen Sinn. Und wenn so etwas bekannt werden würde, wären erstmal unsere Beträge nicht betroffen und wir hätten genügend Zeit zu reagieren.

Vermutlich kommt bis dahin nochmals eine Softfork, die noch stärker verschlüsselt.

Und Asic-Miner sind für das Minen von neuen Bitcoins optimiert, die normalerweise andere Berechnungen anstellen.

Selbst wenn dann jemand was erbeutet, wird er sich das dann auf eine Wallet überweisen und dann später auszahlen. Da die Bitcoin-Blockchain ja dann bis zum Auszahlungspunkt nachverfolgbar ist, ist er dann über KYC auffindbar.

Das heißt, Angreifer würden so etwas erst einmal bei z. B. Monero oder anderen Coins machen, wo das schlechter nachvollziebar ist.

Bevor sich jemand daran wagt, würde er mit dem Geld dann lieber ohne das Gesetz zu brechen ins Mining einsteigen.

Super Beitrag. Vielen dank an alle für die Infos.

@skyrmion Du schreibst um von der Seed Phrase zu den Keys zu kommen. Hast du dich da vertan?

Ein key bringt mir doch erstmal wenig. Ich möchte doch vom Key auf die Seed Phrase eventuell schließen? Oder habe ich das falsch verstanden. Sorry wenn die Frage dumm ist?

Grüße

Gerne! Schön, dass euch der Beitrag gefällt!

Letztendlich möchtest du als Angreifer ja die Coins eines anderen transferieren. Dafür brauchst du den Private Key dieser Adresse, nichts anderes.

Entweder suchst du also sehr aufwändig nach einer Seed Phrase, mit der du bestenfalls gleich mehrere Private Keys von Adressen mit Guthaben ableiten kannst.

Oder du suchst mit „weniger“ Aufwand direkt nach einzelnen Private Keys von Adressen mit Guthaben.

Von einem einzelnen gefundenen Private Key auf die Seed Phrase zurückzurechnen ist nach heutigem Stand der Wissenschaft nicht möglich.

Übrigens:
Falls jemand den Private Key einer einzelnen Adresse, sowie den xpub dieses Accounts in die Hände bekommt, kann er damit alle Private Keys und Adressen dieses Accounts berechnen. Also auch nicht sorglos mit dem xpub umgehen!

3 „Gefällt mir“

Softfork würde nicht reichen. Alte Adressen müssten invalidiert werden, weil der Angreifer sich ja sonst die alten/verlorenen coins schnappen könnte. Deshalb müsste das über einen Zeitraum von vielen Jahren passieren, damit möglichst wenig Nutzer locked coins verlieren und jeder eine faire chance bekommt, seine coins zu upgraden. Die Transaktionsmenge die dafür notwenig wäre, ist enorm. Vielleicht dauert sowas sogar Jahrzehnte. Schließlich müsste jede utxo bewegt werden.

Ich hoffe, ich lebe lange genug. Erst dann wäre der Beweis erbracht, dass die Satoshi coins wirklich verbrannt sind, und die Anzahl aller verlorenen coins würde bekannt. Die Geldmenge würde neu justiert. Das würde mich schon sehr interessieren.

Wir werden sehen.

1 „Gefällt mir“

So könnte man mal Nakamoto aus der Reserve locken. Alternativ: let it burn.
Dann wären es nur noch 20M BTC Gesamtmenge

Ich habe einfach mal aus Spaß ein Wallet bei Electrum angelegt und als 24 Wörter einfach das erste Wort der englischen Liste („abandon“) verwendet. Da lag vor einem Monat noch etwas drauf :smiley: Ich schätze mal, das war nur testweise. Aber es wundert mich nicht, wenn es doch einige solcher Adressen gibt…
Nur so als fun fact mal hier eingestreut.

Ja rein theoretisches ist es möglich.
ABER:
Das sichtbare Universum ist 13,7Mrd. Lichtjahre und es besteht aus ca. 10^80 Atomen.
Wenn jedes dieser Atome ein eigenes Universum aus genau so vielen Atomen hätte, das ist die ungefähre die Anzahl der Möglichkeiten welche du mit einer Brutforce-Attacke abfragen müsstest.

Als der Buchdruck erfunden wurde hielten es die Mönche für unmöglich zu realisieren, dass es eines Tages möglich sein wird, dass jeder Mensch auf der Welt, jeden morgen seine Tageszeitung per Knopfdruck bekommen könnte.
Sie wussten nicht das es irgendwann mal Computer und das Internet geben wird.

Vielleicht gibt es in der Zukunft Techniken, die wir heute noch nicht kennen, die das knacken einer Wallet via Brute Force zu einem Kinderspiel machen wird.

Vielleicht lachen die Menschen in hundert Jahren über 12 oder 24 Wörter. :wink:

1 „Gefällt mir“

Wenn man immer wieder, z. B. mittels einer Software, wahllos Recovery Seeds generiert, muss man doch irgendwann einen Treffer landen oder sehe ich das falsch?

Sicherlich ist die Wahrscheinlichkeit sehr klein, dass ausgerechnet mein Recovery Seed erraten wird, aber es könnten ja auch viel mehr Hacker als nur einer versuchen.

Ich kann deine Überlegungen sehr gut nachvollziehen. Habe auch ab und an Probleme, mir diese (Un-)Wahrscheinlichkeiten vorzustellen. Habe mich mittlerweile damit abgefunden, dass es für mich unvorstellbar bleibt und mich einfach auf die Mathematik verlasse.
Die Wahrscheinlichkeit, einen Treffer zu landen, steigt natürlich mit jedem Versuch. Aber da 2^256 ein so großer Zahlenraum ist, sind benutzte Keys darin kaum vorhanden.
Finde diese Seite dafür sehr nett, da sie alle private keys auflistet. Such dir einfach einen raus, der zu einer pos. Balance führt :wink:

Viele Grüße

1 „Gefällt mir“

Das 24. Wort ist eine Prüfsumme. Wie hattest Du das denn generiert?

Ja. Nach mehreren hundertausend Jahren.

Electrum nutzt standardmäßig immer noch seinen eigenen Standard und nicht BIP39. Da gibt es aber auch in irgend einer Form eine Fehlererkennung bzw. festgelegte Formate.

Kenne mich mit Electrum Seeds aber nicht aus.

Wie @Bert seine abandon Mnemonic auf die Reihe bekommen hat ist mir auch ein Rätsel… :sweat_smile:
Vielleicht kann er uns ja aufklären.

Länger! :smiley:

1 „Gefällt mir“