Brute Forcing die 24 Seed Wörter?

Sorry, hatte wohl als 24. Wort „art“. Also 23 mal „abandon“ und dann „art“. Sieht dann so aus:

Und es war 2020 noch Guthaben drauf. Weiß nicht, wie ich auf 2021 Juli gekommen bin.

3 „Gefällt mir“

Teilweise verabschiedet sich das Guthaben sogar noch im selben Block wieder.

Das gibt mir richtige Call me Ishmael Vibes… :grin:

Okay, dann also doch BIP39 Mnemonic.

Gültig sind neben art als Checksumme noch:

diesel 
false 
kite
organ
ready
surface
trouble

Mit false habe ich auch direkt einen genutzten Account gefunden:

Scheint sich zu lohnen mit DIY Kryptoexperten zu rechnen…

2 „Gefällt mir“

Was meinst du damit ?
VG

Dass es sich (für die Angreifer hier) lohnt mit Nutzern zu rechnen die sich für extrem clever halten, aber in Wirklichkeit fatale Sicherheitsentscheidungen treffen.

Don’t roll your own crypto! :slight_smile:

1 „Gefällt mir“

Heißt das, du könntest das Geld jetzt verschicken ?
VG

Nein, siehst du doch auf dem Screenshot. Wurde direkt im selben Block entwendet.

Ich habe schon mal auch gehört, dass Leute dann den Seed mit der Münze (also binär) erzeugen und dabei ein eigenes Muster nehmen, damit sie es sich merken können. Also z.B. 010011000111 oder so. Aber die Muster sind wohl alle schon auf einer Watchlist und werden überwacht.

Ich hoffe du verstehst, dass es hier kein (realistisches) Sicherheitsrisiko gibt, so lange du dich an relativ einfache Sicherheitsstandards hälst. Das der Seed mit false als 24. Wort genutzt wurde, war einfach dumm und war hoffentlich nur ein Test.

Da wäre immerhin der Zufall noch relativ in Ordnung, vorausgesetzt dass immer gut geworfen wird.
(Von dem Fehlerpotential aus den 256 bits dann selbständig alles sicher abzuleiten mal abgesehen)

Sobald man sich halt irgendwelche Muster zurechtlegt geht die Entropie den Bach runter. Und vor allem kann man nicht einschätzen wie gravierend kleine Entscheidungen sein können.

Wenn man jetzt noch bedenkt, dass 12 Wörter ausreichen um alle Private-Key Kombinationen abzubilden (24 Wörter sind sinnlos), wird das ganze noch unglaublicher. Aber die Mathematik lügt nicht.

Die Wahrscheinlichkeit das mir die Geldkarte geklaut wird und jemand den Pin errät ist mathematisch viel höher als das jemand den Seed errät.
Warum macht man sich soviel Gedanken darüber?!
Ich denke bei den meisten wäre der Schaden bei einer gestohlen Geldkarte und das leer geräumte Konto viel höher als wenn man seine BTC bzw. Sats verlieren würde.

wie schon zuvor verlinkt: How secure is 256 bit security? - YouTube

Das erklärt alles

2 „Gefällt mir“

Das stimmt mE nicht, ein Wort entspricht 11 bit. Mit 24 Wörtern kannst du also 264 bit abbilden. Da du nur 256 brauchst nimmst du vom letzten Wort-Wert nur die ersten 3 bit wodurch glaub 8 Worte gültig sind um die Seed Phrase zu vervollständigen. Du brauchst also für alle möglichen Seeds 24 Wörter. 12 Wörter bieten halt eine kleinere aber immer noch gigantische Seed Auswahl.

Habe ich etwas falsch im Kopf oder hat der Bitcoin Private Key nicht „von Natur aus“ eine 256 bit entropy? Diese werden mit 24 Wörtern 1:1 abgebildet. D.h. mehr als 24. Wörter wären nicht sicherer, da es dann einfacher wäre den zu Grunde liegenden Private Key zu bruteforcen.

Bei 12 Wörtern sind demnach nicht alle Kombinationen möglich (es sind sogar sehr viel weniger), aber immer noch so viele, dass es als sicher für die nächsten Jahre gilt.

Man „braucht“ nicht explizit 256 bit. Das ist halt eine gängige Größe die so im Standard festgelegt ist. Die Mnemonic wird so oder so auf einen 512 bit Seed gestreckt aus welchem dann erst die Schlüssel deriviert werden. Das Ableiten der privaten Schlüssel sollte man gedanklich trennen von Mnemonic bzw. Seed. Ich kann theoretisch bereits aus einem einzigen Seed alle privaten Schlüssel ableiten (da ich beliebig viele Schlüssel ableiten kann) und ich kann natürlich auch ohne Seed nach privaten Schlüsseln suchen. Das letzteres i.d.R. der effizientere Angriff ist wurde ganz oben im Thread von @skyrmion erklärt.

Das letzte Wort wird halt als Prüfsumme für Fehlererkennung genutzt, daher der „Verzicht“ die letzten Bit der Mnemonic zufällig zu wählen.

Tatsächlich ist der Vorteil von 24 gegenüber 12 Wörtern in meinen Augen vernachlässigbar, zumindest was Sicherheit vor generischen Angriffen angeht. Der Unterschied von 2128 zu 2256 ist zwar gigantisch, aber nicht wirklich relevant, da ich an anderer Stelle immer „nur“ eine Sicherheit von 128 bit habe, nämlich bei den privaten Schlüsseln selbst, das ist durch die in Bitcoin verwendete Krypto so gegeben, sobald ich den öffentlichen Schlüssel kenne (wovon man ausgehen muss).

Ein privater Schlüssel ist immer 256 bit groß. Aber Schlüssellänge ist nicht automatisch gleich Entropie!

Wenn der ursprüngliche Zufall der in deiner Mnemonic steckt nur 32 bit groß ist (also 3 Wörter) dann haben die privaten Schlüssel in den Standardaccounts auch nur eine Entropie von 32 bit. Die Länge dieser Schlüssel kann mir herzlich egal sein wenn ich einfach nur 232 Wörterkombinationen ausprobieren muss um die richtigen abzuleiten.

Genau der Punkt ist eben dass diese Aussage auch schon bei 12 Wörtern zutrifft.

Alle möglichen Seeds kannst du auch mit 24 Wörtern nicht abbilden, da der Seed eben 512 bit groß ist. Um wirklich alle Seedwerte abzubilden (was natürlich vollkommen sinnlos ist) brauchst du die optionale Passphrase.

Das ist nur Klugscheisserei meinerseits, du meinst natürlich das Richtige… :wink:

Da es den Nutzer eigentlich nichts kostet 24 statt 12 (oder eine der anderen Längen) zu verwenden ist es sicherlich nicht sinnlos das auch zu tun. Wenn man z.B. seine Mnemonic sinnvoll aufteilen will braucht man 24 Wörter.

Oder allgemeiner: 12 Wörter sind an sich (aus mathematischer Sicht) zwar ausreichend, sollte aber ein Teil der Mnemonic aus welchem Grund auch immer kompromittiert werden steht man direkt am Abgrund. Mit 24 Wörtern ist der Spielraum deutlich größer. Auch die Qualität des Zufalls spielt hier eine Rolle.

Peter Wuille hat das hier etwas kompakter aufgeführt:

Frohes Neues! :grin:

4 „Gefällt mir“

Dir auch und vielen Dank für deine Aufklärung hier im Forum. Jetzt verstehe ich auch wieso Entropy =/= bit. Sehr logisch eigentlich.

1 „Gefällt mir“

Man lernt nie aus. Danke!

Puh, kann mir jemand hier noch einmal das Problem in meinem Kopf erläutern: Meiner Meinung nach kann man doch von den 24 Wörtern auf den Seed schließen und umgekehrt, oder? Ich sichere doch die 24 Wörter, damit mein Seed gesichert ist.
Und wenn ich jetzt den Seed habe, dann habe ich doch direkt alle private keys → public keys → Adressen. Das macht doch jedes HD Wallet in wenigen Millisekunden.

Ich verstehe daher den Rechenaufwand nicht, den @skyrmion hier beschreibt. Oder lese ich einen Begriff einfach falsch?
Dank euch!

Um von der Mnemonic auf dem Seed zu landen gibt es ein standardisiertes Verfahren, das natürlich immer gleich ist. Dieses Verfahren ist relativ aufwändig (wenn man es im Kontext eines Brute Force Angriffes betrachtet) und genau das hat @skyrmion beschrieben. Bei der alltäglichen Anwendung merkt man davon natürlich nichts.

Umgekehrt kannst du vom Seed nicht auf die Mnemonic schließen, das ist auch nicht notwendig.

Oft wird der „Seed“ synonym mit der Mnemonic/Seedphrase verwendet, wir sprechen hier aber vom 512 bit großen Seed mit dem dann die eigentliche Ableitung der Schlüssel beginnt.

Genau.

Wenn du aber 2128 Mnemonics abklappern willst fällt es ins Gewicht wenn du bei jedem Versuch viele tausend Aufrufe einer Hashfunktion hast um überhaupt erstmal beim Seed zu landen.

Guter Artikel dazu: How I checked over 1 trillion mnemonics in 30 hours to win a bitcoin | by John Cantrell | Medium

3 „Gefällt mir“

Ah, dank dir. Jetzt hab ich meinen Denkfehler: Zufallszahl → Mnemonic → Seed und nicht die beiden letzteren vertauscht. Und das kleine Verzögerungen im Rechenaufwand in der Summe eine riesige Dauer ausmachen können habe ich unterschätzt, da so ein kleines HW Wallet das quasi verzögerungsfrei für einen Seed schafft.
Aber vielen Dank @sutterseba, jetzt passt es in meinem Kopf wieder! :wink: