Auswirkungen der Erstellung von Electrum 2.x-Seeds, die nicht BIP39 sind

Electrum 2.0-Seeds (Mnemonikphrasen) werden mit einem auf Prüfsummen basierenden Algorithmus erstellt (so dass das hmac_sha512mit beginnt 01. Es ist normalerweise ein 13-Wörter-Seed, kann aber unter bestimmten Umständen 12 sein.

Wenn alle 12 Wort-Electrum-2.x - Seeds so gefiltert würden, dass sie nicht BIP39-kompatibel sind, wie wird die Abnahme der Entropie sein?

=> Die Frage bezieht sich auf diesen Python-Code

Ich denke, das Problem lässt sich wie folgt zusammenfassen:

  1. Wie hoch ist der Prozentsatz von 12-Wörter-Electrum-2.x-Seeds (im Vergleich zu 13-Wörter-Seeds)?
  2. Wie hoch ist der Prozentsatz an Electrum 2.x-Seeds (12 Wörter), die den BIP39-Standard nicht erfüllen? (Das letzte Wort bestimmt die Prüfsumme)

Antworten (1)

Für die Zwecke dieser Antwort gehe ich davon aus, dass wir nur über Mnemoniken sprechen, die von Electrum 2.x generiert werden können , und nicht über solche, die von Electrum 2.x einfach zur Wiederherstellung akzeptiert werden (letztere Zahl ist unendlich).


  1. Wie hoch ist der Prozentsatz von 12-Wörter-Electrum-2.x-Seeds (im Vergleich zu 13-Wörter-Seeds)?

Electrum 2.x-Seeds codieren standardmäßig 136 Datenbits. Alle führenden Nullbits werden während der Codierung ignoriert, sodass die resultierende mnemonische Länge variiert.

Jedes Wort kodiert log 2 (word_list_length) Datenbits, also sind das für die meisten* Electrum 2.x-Wortlisten log 2 (2048) = 11 Bits pro Wort.

Daher können 13- und 12-Wörter lange Mnemonics bis zu 143 bzw. 132 Datenbits codieren. Damit ein 136-Bit-Seed in 132 Bits (12 Wörter) codiert werden kann, müssen mindestens die ersten 4 Bits Null sein, was mit einer Wahrscheinlichkeit von 1 zu 2 4 geschieht , sodass 1 von 16 zufälligen mnemonischen Zeichen die Länge 12 oder haben weniger .

Ebenso erfordert das Codieren von 136 Bits in 121 Bits für eine 11-Wort-Mnemonik, dass 15 führende Bits Null sein müssen, sodass 1 in 2 15 oder 1 in 32768 eine Länge von 11 oder weniger hat .

Wenn Sie schließlich eine genaue Antwort benötigen, wäre es 1 / 16 - 1 / 32768 = 2048 / 32768 - 1 / 32768 = 2047 in 32768 hat genau die Länge 12 .

* Für die portugiesische Wortliste ist es log 2 (1626) ≈ 10,67 Bits pro Wort


  1. Wie hoch ist der Prozentsatz an Electrum 2.x-Seeds (12 Wörter), die den BIP39-Standard nicht erfüllen?

12 Wörter lange BIP-39-Mnemonics haben 4 Prüfsummenbits , so dass 1 von 2 4 generierten 12-Wort-Electrum 2.x-Mnemonics zufällig gültige BIP-39-Mnemonics sind und 15 von 16 Electrum-Mnemonics für BIP ungültig sind. 39.


Wenn alle 12 Wort-Electrum-2.x - Seeds so gefiltert würden, dass sie nicht BIP39-kompatibel sind, wie wird die Abnahme der Entropie aussehen?

Ich interpretiere dies als Frage: Wenn gültige Electrum 2.x-Mnemoniken ungültige BIP-39-Mnemoniken sein müssten, um wie viel würde dies ihre Entropie verringern?

Wolfram|Alpha sagt sehr klein: etwa 0,0056 Bit basierend auf dieser Eingabe:

solve  (2^n - 1) / 2^n = 2047/32768 × 1/16  for n
Wow! Fantastische Arbeit! Ich werde sehen, was @ThomasV davon hält, um BIP39 und Electrum 2.x zu unterscheiden: scheint eine gute Überlegung zu sein. Außerdem habe ich selbst bemerkt, dass Portugiesisch auf die Wortlistengröße von Electrum 1.x zurückgeht, und mich gefragt, was in aller Welt hier vor sich geht?
@WizardOfOzzie Danke! IIUC, Monero Core, entlehnte die Seed-Erzeugungsmethode und die ursprüngliche englische Wortliste von Electrum 1.x und fügte dann neue Wortlisten hinzu, die alle dieselbe Größe wie die Liste von Electrum 1.x hatten, und später borgte Electrum 2.x eine der neuen (zurück). Wortlisten, die kein BIP-39-Äquivalent hatten. Da Electrum 2.x mit Wortlisten jeder positiven Größe arbeiten kann, nehme ich an, dass ThomasV keinen Grund sah, eine portugiesische Wortliste der BIP-39-Größe zu erstellen.
Ich habe gestern die Wortlisten von Electrum 2.x überprüft und sie stimmen genau mit BIP39 für Japanisch, Englisch und Spanisch überein. Wenn Sie sagen, dass Electrum 2.x eine Nicht-BIP39-Wortliste "zurückgeliehen" hat, beziehen Sie sich auf Portugiesisch?
@WizardOfOzzie Richtig, ich meinte, dass sie Moneros Wortlisten für Portugiesisch verwendet haben, die keine entsprechende BIP-39-Liste hatten. Ich habe keine Ahnung, was die Pläne für Chinesisch sind, und ich habe keine Ahnung, ob die französische Wortliste von BIP-39 oder die teilweise fertiggestellte Electrum 2.x verwendet wird .
Ja, die französische Wortliste von BIP39 hat echte Probleme, da sie 100 Wörter mit Englisch teilt; github.com/simcity4242/pybitcointools/blob/master/bitcoin/…
@WizardOfOzzie Wir kommen hier etwas vom Thema ab ;) ... aber ich habe dir in der GitHub-PR hier eigentlich nicht zugestimmt, FWIW.