Ist es nicht besser seine Wörter Seed zu würfeln?

Ist es nicht besser seine Wörter Seed zu würfeln?

Ein Hard/Software Wallet könnte ja so „gehackt“/programmiert sein das der Seed (zum Teil) „vorgegeben“ ist

Ja. deshalb Würfeln und Multisig.

1 „Gefällt mir“

Wie würdest Du beim Würfeln vorgehen besonders zum Ende hin ?

Also ich würde die Buchstaben der Wörter würfeln in Kombination mit Electrum. Electrum zeigt ja an ob die Wörter gehen. Es gibt bestimmt verschiedene Möglichkeiten Buchstaben zu würfeln bzw. auszuwählen

Ich hab mir die BitBox02 wegen diesem Feature besorgt.

diese generiert doch den Seed selber? wenn, ja meine Idee ist Teile oder den Ganzen Seed SELBST MANUELL zu generieren

3 „Gefällt mir“

Meine Empfehlung ist es ebenfalls selbst zu würfeln, aber die Bitbox nur für das letzte Wort zu verwenden.

Ich würde allerdings die Bits alle einzeln würfeln und zusätzlich das „von Neumann Randomness Extractor“ Verfahren anwenden. Das ist sehr einfach, man muss allerdings dann mehrmals pro Bit würfeln.

Die Gleichverteilung von 0 und 1 wird denke ich unterschätzt. Wenn bei einem Standardwürfel eine Seite z.B. mit 20% Wahrscheinlichkeit auftritt, andere dafür nur mit 10%, beeinflusst das auch die Gleichverteilung der Nullen und Einsen. Damit verliert man sicher mehr Entropie als man denkt. Mit Brute Force würde man z.B. zuerst die Seed Phrases durchprobieren, die aus Würfeln mit einer wahrscheinlichsten Seite entstehen.

Wenn man ein bisschen sucht, findet man einige Würfelexperimente, die die Ungleichverteilung bestätigen. Optimal sind entweder Casion-Würfel mit harten Kanten. Dann sollte man allerdings ein Würfelbrett mit Filz verwenden und die Würfel sollten hinten anstoßen. Oder man nimmt Backgammon Präzisionswürfel (runde Kanten), aber auch dort einen Würfelbecher.

Ich würde es dann so machen (aus meiner Sicht möglichst zufällig und noch praktikabel):

  1. Drei Backgammon Präzisionswürfel (nicht einer, da mehrere Würfel durch gegenseitiges Anstoßen mehr Zufäligkeit erzeugen
  2. Ich werfe immer alle 3 Würfel gleichzeitig im Würfelbecher (Schütteln) und dann auf Würfelbrett
  3. Ich lese ab, ob die Mehrheit der Würfel eine gerade oder ungerade Zahl anzeigt. Mehrheit gerade ist dann z.B. Bit=0, ungerade Bit=1.

Anschließend wende ich das von Neumann Randomness Extractor“ Verfahren an.

Damit kann ich alle 256 Bit auswürfeln. Um die Bits in Wörter umzurechnen druckt man sich vorher die Wortliste aus. Ansonsten könnten jemand loggen auf welche Bereiche der Wortliste man am PC länger hinsieht.

Das alles hört sich kompliziert an. Allerdings finde ich persönlich es schade, wenn man sich durch das Würfeln die Entropie wesentlich schlechter als mit dem eingebauten True Randomnumber Generator erzeugt. Dann würde nämlich auch das tolle Argument mit der hohen Anzahl möglicher Seeds nicht mehr gelten.

5 „Gefällt mir“

Dafür müsste der Angreifer deine Würfel kennen.

Sehe ich nicht ganz so.

Wenn der Angreifer annimmt, dass deine Würfel z.B. eine Seite mit 25% übergewichten. Dann geht er einfach verschiedene Methoden einen Seed zu Würfeln durch, und schaut wie sich eine übergewichtete Seite auswirkt. Das macht er einfach für jede mögliche Seite, sind ja nur sechs.

Das Ergebnis kann ganz einfach sein, dass die Übergewichtung einer Seite dazu führt, dass du z.B. insgesamt mehr Einsen als Nullen oder mehr Nullen als Einsen in der Entropie hast, oder dass du z.B. bevorzugt ein bestimmtes Muster wie „110“ in der Entropie hast.

Diese ganzen Möglichkeiten würde man beim Brute Forcen dann zuerst durchgehen. Das Vorgehen ist das gleiche wie beim Brute Forcen von Seed Phrases, die aus bekannten Zitaten oder Büchern abgeleitet sind (schöner Link dazu).

1 „Gefällt mir“

Zum Teil gebe ich Dir Recht, würde das auch nicht mit einem Würfel machen sondern mit zwei oder drei. Dann kann man schaun wenn man z.B. vierzig mal Würfelt und trotzdem der verschiedenen Würfel kommt eine Zahl häufiger vor, wäre es schlecht. Ich glaube aber es gibt darauf keinen Angriff, weil dieser in meinen Augen keinen Sinn macht. Die Möglichen Seeds entsprechen den Sandkörnern auf 10 Erden. Selbst wenn der Angreifer 20% eher ausschließen kann, dann entspricht es halt nur noch den Sandkörnern auf 8 Erden und denke da kommt er nicht viel weiter als er zuvor auch schon war. Zuviele Möglichkeiten.

2 „Gefällt mir“

Das ist etwas tricky zwecks der Checksumme.

Aber eben nur bei perfekter Zufälligkeit der einzelnen Bits! Außerdem gibt es wesentlich mehr Seeds als Sandkörner auf 10 Erden. Die Anzahl der Atome im Universum passt besser.
(Natürlich wird die Sicherheit durch die max. Anzahl von Adressen mit 160 Bit nachher eingeschränkt.)

Das ist die entscheidende Frage; wie groß ist der Sicherheitsverlust? Um mal bei dem genannten Beispiel zu bleiben:

Nehmen wir an, bei optimaler Entropie hättest du am Ende exakt gleich viele Nullen und Einsen. Das ist natürlich gegenüber echter Zufälligkeit eine starke Einschränkung, die aber für unseren Vergleich ausreichen soll.
Begründung: Die Anzahl möglicher Verteilungen von 128 Einsen auf 256 Stellen beträgt ca. 6E+75. Die echte Anzahl möglicher Seeds beträgt 2^256 = ca. 1E+77, ist also ganz grob vergleichbar. Ich vergleiche nachher auch nur die Veränderung.

Wenn ich nun davon ausgehe, dass eine bevorzugte Würfelseite mit 30% übergewichtet ist (normal
17 %), und die Bits durch ungerade/gerade Würfelergebnisse bestimmt werden, dann habe ich am Ende im Mittel z.B. 166 Einsen und 90 Nullen (oder andersherum, ist egal).
Auch hier nehme ich wieder stark vereinfachend an, ich habe exakt diese Anzahl von Einsen und Nullen. Die Anzahl möglicher Verteilungen von 166 Einsen auf 256 Stellen beträgt nur noch ca. 6E+70.

D.h. durch so einen Würfel schränke ich meine Sicherheit grob um einen Faktor 100.000 ein. Das entspricht allerdings nur einer Verringerung der 256 Bit um ca. 17 Bit.

Ich muss zugeben, das ist am Ende doch relativ egal. Aber alleine vom Gefühl her möchte ich lieber die volle Sicherheit. :grin:

ich hab 253 Mal (23 x 11 Bit = 23 Wörter) ne Münze geworfen und die Checksum (24. Word) „gebrutforced“

Hättest sie Dir dann aber auch errechnen lassen können :slight_smile:

wie kommt man von den eigenen 256bits zum memnonic seed?
und mit welcher Software bzw. „händisch“ mit welcher Liste kann man sich das 24. wort errechnen? (ausser BitBox02)

Achtung: Mnemonic und Seed ist nicht das gleiche.

Die Mnemonic, die 24 Wörter, ist nur eine Codierung bzw. eine Darstellung der 256 bits (von der Checksumme mal abgesehen). Die 256 bits indizieren einfach die BIP39 Wordlist.

Hier zum Beispiel 128 bit Zufall:

00010110001 01001000100 01010111100 00101100010 01101010000 11001000100 01101111101 10100000101 10000110101 10001111000 00000010010 0010111

Die ersten 11 bits entsprechen der Zahl 177, also ist das erste Wort bike weil es am Index 177 in der Wordlist steht. Dann geht es weiter mit 580 – embrace…

Aus der Mnemonic (und ggf. Passphrase) wird dann erst der Seed abgeleitet:

a667a468a92be69c1a378d5920a3a01fb8182b1ed4cb9eae3713600a38b822c3e79e4b0c1e5d96b9b448fd370dc092d516c68636fbafb1bb84f75e2fd556d98c

Sobald es um deinen eigenen Seed geht solltest du das auf keinen Fall manuell auf einem online Rechner machen, sondern dich auf die BitBox02 verlassen. Das ist der einfachste und sicherste Weg.

@Franky123 hat hier sehr schön erklärt wie die Checksumme berechnet wird:

Man muss das natürlich nicht manuell machen, hier zum Beispiel mein Python Script dass ich zum Ausrechnen benutze:

Wie gesagt: Das ist zum Ausprobieren gedacht, nicht für den Eigengebrauch!

Hier noch die Grafik aus Mastering Bitcoin dazu, übersichtlicher kann man es nicht darstellen:

2 „Gefällt mir“

Wuerfeln, um Zufallszahlen zu erstellen, ist keine besonders gute Idee.

Aehnlich wie beim Zufallszahlen Ausdenken oder Passwoerter Ausdenken verfaellt das Gehirn immer in die selben Muster. Beim Wuerfeln z.B. wird man immer aehnlich viel Kraft aufbrauchen, oder aehnlich lange Schuetteln, immer die selbe Hand benutzen etc. Eine genuegend lange gewuerfelte Zahlenfolge wird immer von einer wirklichen Zufallsfolge unterschieden werden koennen.

Hier mal ein paar Findings dazu:

Dennoch ist hier einen Vorschlag, wie das Wuerfeln gut in eine Seed-Erstellung integriert werden kann:
Die Idee ist es, mehrere binaere Seeds zu erstellen, und diese per XOR zu verknuepfen. Es reicht dann ein einziger wirkliche zufaellige Quell-Seed, damit das Ergebnis wirklich zufaellig ist.

Beispiel: Hier ist ein zufaelliger und ein kompromittierter binaerer Seed:

  • 01100110
  • 11110000
    XOR:
  • 10010110

Ergebnis: Ein zufaelliger Seed.

Jetzt koennen wir also einfach unterschiedliche Quellen heranziehen und es reicht, wenn nur eine davon zufaellig ist.

Hier sind mal ein paar Vorschlaege:
online:

lokal/offline:

  • Knoppix starten und dann: dd if=/dev/random bs=1 count=32 2>/dev/null | xxd -b | cut -d" " -f2-7 | tr -d ' ' | tr -d '\n'

Und jetzt koennen wir auch unsere Wuerfel hier integrieren.

2 „Gefällt mir“

Danke für all die AWen!
apia, sieht ziemlich perfekt zufällig aus!
(Mein bisheriger Plan war, zuerst jeweils die Bitnummer zu erwürfeln und dann mit 3 Würfeln 0 oder 1.)

Und zum eigentlichen:
Ich dachte, das geht in beide Richtungen, Priv.Key → Mnemonic und umgekehrt.
Warum ich das nicht mit der BBox machen möchte ist, dass ich sie dann temporär zurücksetzen müsste (was ich eh nicht ganz verstehe - das müsste doch auch mit "Neue Wallet erstellen” genauso machbar sein ?)

Erreicht man eigentlich mit den 24 Worten den gesamten potentiellen Adressraum?
Und wie ist das bei 12 Wort Mnemonics? Gibts da “Löcher” ? Also Adressen, die man mit den 12 Wörtern nicht erreichen kann? Oder ist nur die checksum weniger genau?

Wie ist das mit zusätzlicher Passphrase? INwieweit verändert die das 24 Wort-Original? Bzw. wie wichtig ist es, dass diese lang ist oder unterschiedliche Zeichenarten (aA1%) enthält? Oder ist das für das Resultat, also den neuen Priv.Key eigentlich egal? (Ich plane zusätzlich zur normalen Wallet eine mit Passphrase, aber basierend auf der bisherigen)
Danke nochmals!