Gibt es eine Möglichkeit, den Seed selbst zu bestimmen?

Ja, ist echt krass, dass man aktuell noch irgendwelche Python-Skripte auf airgapped Laptops laufen lassen muss… :smile:

Wie soll jemand auf meine 23 lieblingsworte kommen?
Das sollte doch sehr sicher sein oder?

Die menschliche Psyche ist berechenbarer als Du glaubst und deswegen sind deine Lieblingswörter nicht der beste Zufallsgenerator.

1 „Gefällt mir“

Hi!

Bedeutet das, ich nehme mir wenn ich das möchte ein Buch meiner Wahl, zwei, drei oder vier Würfel, schlage random eine Seite auf und erwürfle mir so dann meine 23 Wörter? Sprich die müssen dann nicht zwingend Teil der BIP39 Liste sein? Falls ja, lässig. Sollt ich dann tunlichst nach wie vor drauf achten dass die ersten vier Buchstaben nicht ident sind, denn wenn ich das korrekt verstehe sollten die ja unique sein um eben mit den ersten vier Buchstaben das Wort zu haben. Oder hab ich da jetzt einen meiner vielen Verständnisfehler?

thnx

1 „Gefällt mir“

Wir werden eine exakte Schritt-für-Schritt Anleitung mit diesem neuen Feature bereitstellen. Die Idee ist, dass Du mit gutern Würfeln eine wirklich zufällige und gleichmässig verteilte Auswahl aus den gegebenen 2048 BIP39-Wörtern erzielst. Dazu musst Du exakt 11 Bit würfeln (2^11), was mit 6er-Würfeln gar nicht so einfach ist.

Ich rate definitv davon ab, einfach selber Wörter aus der Liste auszuwählen (Menschen sind unglaublich schlecht darin, einen zufällige Wahl zu treffen).

Und es ist wichtig zu sagen, dass dieses Feature nicht verwendet werden muss. Auch damit ist es kaum möglich, einen bessere Zufalls-Seed als die BItBox02 zu generieren (welche dank Open Source auch ncihts geheimes damit macht). Daher: entweder richtig zufällig, oder dann doch lieber einfach die BitBox02 machen lassen.

1 „Gefällt mir“

Man braucht nicht die 11 Bit würfeln. Man würfelt z.B. mit 2 8er Würfeln einfach die 256Bit Entropie oder die 128Bit Entropie was dann 86 oder 43 mal würfeln wäre. Finde die 8er Würfeln nicht schlecht, weil man mit denen 3Bit Entropie würfeln kann. Den zweiten 8er Würfel braucht man zum wechseln zwecks einer höheren Zufallsrate bei schlecht verarbeitetem Würfel.

Ich würde auch dringendst davon abraten! Vor allem wenn man den Fragen aus so manchen Beiträgen hier im Forum entnehmen kann, dass die Leute die entsprechenden BIPs gar nicht verstanden haben…
Paranoia gepaart mit Unwissenheit ist ein ganz schlechter Ratgeber und verursacht mehr Schaden als Nutzen…

Natürlich muss man der Firmware in der jeweiligen Hardware Wallet grundsätzlich vertrauen. Aber auch hier würde ich der Wallet den Vorzug geben, da man es selber gar nicht „besser“ oder „zufälliger“ hinbekommen würde. Und bei dem von Dir erwähnten „richtig zufällig“ sehe in der Praxis das viel größere Risiko…

Klar, rein technisch braucht man für den gesamten Seed nicht 23x 11 Bits würfeln. Wenn Du aber pro Würfelrunde genau auf ein spezifisches Wiederherstellungswort kommen willst, und nicht die gesamte 256 Bit-Zahl am Schluss umrechnen willst (eher schwierig im Kopf), dann halt schon.

Anyway, es geht mir ja auch weniger drum, andere Methoden kritisch zu beäugen (siehe auch diese Möglichkeit von Lunaticoin), sondern zu erläutern wie es mit der BitBox ohne weitere Hard- und Software geht. :slight_smile:

Du hast Recht und habe das am Anfang auch nicht gleich mit den 11Bits verstanden. Würde halt bei einer Würfelrunde 11 mal würfeln für 3 Wörter bis man die 21 Wörter voll hat. Dann 9 Mal würfeln und 2 Bits streichen. Das wären dann 7 mal 11 = 77 +9 = 86 mal würfeln. Das mit der Checksumme müsste ich mir noch anschauen. Falls das jemand mit der Checksumme verstanden hat. Ansonsten viel Erfolg weiterhin mit der Bitbox. Lg

1 „Gefällt mir“

Ich muss zugeben, dass ich beim Durchlesen des BIP39 das mit der Checksumme auch nicht auf Anhieb verstanden habe, da es doch recht theoretisch und ohne Beispiel beschrieben ist.

Versuchen wir mal, das Pferd von der anderen Seite aufzuzäumen. Ich verwende hier als Beispiel ein 24 Wort Mnemonic. Bei 12 Wörtern sieht es ein klein bisschen anders aus, das Prinzip bleibt aber das gleiche.

Was will man mit dem 24 Wort Mnemonic absichern?

Eine 256 Bit Zufallszahl.
Jetzt habe ich aber 24 Wörter, die jeweils aus 2048 Möglichkeiten bestehen.
2048 entspricht 11 Bit, weil 2^11 = 2048.
Also habe ich am Ende 24 Wörter x 11 Bit = 264 Bit.
Dann habe ich also 8 Bit zu viel, verglichen mit der ursprünglichen Zufallszahl von 256 Bit. Genau diese überzähligen 8 Bit werden mit der Checksumme gefüllt.

Wie wird diese Checksumme berechnet?

Entsprechend BIP39 wird die Checksumme aus der 256 Bit Zufallszahl berechnet, in dem aus dieser Zufallszahl zunächst ein Hash (SHA256) berechnet wird und von diesem Hash die führenden Bits als Checksumme verwendet werden. Es werden genau so viele führende Bits von dem Hash als Checksumme abgezwackt, wie oft die Zufallszahl durch 32 Bit teilbar ist.
Hintergrund: Dadurch bleibt das Endergebnis immer durch 11 Bit teilbar, weil N x (32 + 1) = N x 33 Bit.
Also bekommen wir 256 Bit / 32 = 8 Bit zusätzlich dazu. Da sind sie also wieder, unsere 8 Bit. Diese 8 Bit (=Checksumme) werden an die ursprünglichen 256 Bit angehängt, also haben wir wieder 264 Bit.

Wie komme ich jetzt von den 264 Bit zu den 24 Wörtern zurück?

Die 264 Bit werden in Blöcke aus 11 Bit zerteilt:
264 Bit / 11 Bit = 24 Blöcke.
Diese 24 Blöcke stellen die 24 Wörter dar, die man jetzt anhand der Wortliste aus der 11 Bit Zahl jeweils in ein Wort übersetzen kann.

Wie setzt sich also das letzte Wort zusammen?

Das letzte Wort (also das 24. Wort) besteht aus:

  • 3 Bit vom verbleibenden Rest der 256 Bit Zufallszahl [Z], weil 11 Bit x 23 Wörter = 253 Bit. Es fehlen also noch 3 Bit, bis die 256 Bit voll sind.
  • 8 Bit Checksumme [C]

Hier nochmal das letzte Wort bitweise (11 Bit) veranschaulicht (jeder Buchstabe steht für ein Bit):

Z Z Z C C C C C C C C

Deshalb kann man das letzte Wort der 24 Wörter also nicht zufällig aus der Wortliste auswählen, weil man sonst eine ungültige Checksumme bekommen würde.

Ich hoffe, ich habe das richtig beschrieben. So zumindestens verstehe ich BIP39.

2 „Gefällt mir“

Genau so sollte es sein. Sehr schön zusammengefasst!

Der Vollständigkeit halber hier der Link: bips/bip-0039.mediawiki at master · bitcoin/bips · GitHub

Das würde prinzipiell mit deinem 8er Würfel funktionieren. Allerdings hast du das Problem eben genau am Ende mit der Checksumme. Das ist kein Mathe-Problem, sondern ein Sicherheits-Problem.

Um den Hash für die Checksumme zu berechnen, müsstest du deine 256 Bit in einen PC eingeben. Dabei muss man aufpassen, dass man den HW-Wallet Vorteil nicht verspielt.

Man darf das also entweder nur mit einem frischen, sauberen Offline-PC machen.
Oder man verwendet die neue Funktion der Bitbox, so dass der Mnemonic niemals in einen PC eingegeben werden muss.

Wie die Funktion umgesetzt wird kann man ja noch überlegen. Entweder würfelt man die 3 Bit des letzten Worts noch mit aus, dann stehen alle Wörter fest. Die Bitbox müsste dann nur die Checksumme berechnen.
Oder man würfelt nur 23 Wörter aus. Dann müsste man 2^3 = 8 Wörter zur Auswahl angezeigt bekommen.

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

  1. Ungerade Anzahl von n Standard Casino Würfeln mit sechs Seiten (für diese Standard Variante gibt es vermutlich die beste Qualität/Symmetrie)
  2. Jedes Bit einzeln auswürfeln:
    Ich werfe immer alle n Würfel gleichzeitig. Dann lese ich ab, ob die Mehrheit der Würfel eine gerade oder ungerade Zahl anzeigt. Mehrheit gerade ist dann z.B. Bit=0, ungerade Bit=1.
    Alternative:
    Ich lese ab, ob die Summe größer oder kleiner als n*3,5 ist.

Damit kann ich alle 256 Bit auswürfeln. Außerdem gleichen sich auf jedem einzelnen Würfel, und auf den Würfeln untereinander, die Asymmetrien teilweise aus. Je mehr Würfel desto besser (zentraler Grenzwertsatz).

https://iancoleman.io/bip39/
Bei Iancoleman habe ich z.B. die Entropie von
fe8606452c58bd5711ad1675cb4cfebd52a6f93ee8adb908c1ef2d3d0b39fb5b
Die Checksumme wäre dann
10100110 bei „Use Raw Entropy (3 words per 32 bits)“
oder
00111110 bei „24 words“
Ich kriege das nicht nachgerechnet.

@skyrmion > sauberen Offline-PC machen.

Würde das vielleicht auf einer Linux Live Distribution machen und einen zweiten USB Stick mit dem Tool von Iancoleman. Ging eher um das Verständnis wie es funktioniert.

@Franky123 Super erklärt, bis dahin war ich auch, aber das letzte Quäntchen an Verständnis fehlt mir leider noch.

Bei einer 265Bit Entropie hätte ich doch schon den ersten Buchstaben des 24zigsten Wortes, wenn mich nicht alles täuscht und bei nur 8 Wörtern zur Auswahl dürfte das richtige Wort dann dabei sein oder man gibt sich mit 23 Wörtern zufrieden als Zufall gewürfelt und das 24Wort aus Zufall von 8 Wörtern gewählt.

Bei 256 Bit Entropie stehen schon alle 24 Wörter fest. Wenn du dir das als Binärzahl hinschreibst, hast du vom 24. Wort schon die ersten drei Bit.
Dann hashst du diese 256 Bit Zahl mit SHA-256 und nimmst vom Hash die ersten 8 Bit. Diese hängst du an die drei vorhandenen Bit des 24. Wortes an, so dass du alle 11 Bit des Wortes hast.

Wenn du 256 Bit auswürfelst, aber nur die ersten 253 Bit in die Bitbox eingibst, dann ist in der Liste von acht Wörtern für das 24. Wort das entsprechende Wort dabei, das ist richtig. Du wirst aber ohne SHA-256 nicht herausfinden welches das ist. Das ist natürlich kein Weltuntergang.

1 „Gefällt mir“

@Stadicus Unabhängig von der Methode, die ihr vorschlagen werdet, wäre es super, wenn man die Bits einzeln eingeben könnte! Dann ist man bei der Methode flexibel.

Das ist aktuell nicht geplant. Features werden bei uns immer bezüglich Einfachheit/UX und zusätzlichem Nutzen bewertet. Ehrlich gesagt denke ich nicht, dass eine Bit-Eingabe für die maximal 1% der User, welche damit ein kleinstwenig mehr Flexibilität haben, die Verkompliziertheit für alle anderen rechtfertigt.

Warte doch mal, bis wir die Anleitung veröffentlichen: ist super-einfach und kann natürlich auch adaptiert werden. :slight_smile:

Kann ich nachvollziehen, finde es aber trotzdem schade :slight_smile: . Man könnte ja einen zusätzlichen Menupunkt „Input of Single Bits“ hinzufügen.
Wird es dann möglich sein, einfach die ersten 23 Wörter einzugeben? Oder plant ihr die Eingaben genau an die von euch vorgeschlagene Methode anzupassen (z.B. Würfelergebnisse)?

Schwierig :roll_eyes:

Du kannst mir jeder erdenklichen Methode Deine 23 Wörter ausknobeln. Unsere Anleitung versucht einfach die beste Balance zwischen Einfachheit und Sicherheit zu treffen.

Das ist kein zusätzliches Feature, es ist derselbe Ablauf wie wenn Du ein existierendes Wallet wiederherstellst:

  1. 23 Wörter eingeben
  2. die BitBox02 zeigt Dir die 8 gültigen 24. Wortoptionen an
  3. Wir zeigen auch eine Option „I can’t find my 24th word“ an, damit die Funktion der Checksumme erhalten bleibt

Wie heisst’s so schön? „Low time preference is king“… :smile:

1 „Gefällt mir“

Wenn man bei der normalen Restore-Funktion am Ende die 8 Wörter Auswahl erhält, ist doch alles super! :+1:

Damit kann man ja dann jedes Verfahren umsetzen.

Hattest du oben auch so geschrieben, aber ich habe es wieder vergessen.

Nein, aktuell noch nicht. Das kommt hoffentlich diese Woche.