Privater Schlüssel zu mnemotechnischen Wörtern, ist er sicher?

Ist es sicher, Folgendes zu tun?

Angenommen, ich möchte die HD-Wallet nicht, aber ich möchte die Bequemlichkeit, mnemonische Wörter zu verwenden, um mich an den privaten Schlüssel zu erinnern. Ich weiß, dass ich die Hex-Darstellung des privaten Schlüssels in das Byte-Format konvertieren kann, aus dem ich das Binärformat erhalten kann, von dort aus kann ich BIP-39 folgen, um 24 Wörter zu generieren, die durch diesen privaten Schlüssel dargestellt werden (weil allgemeine Adressen verwendet werden, indem zufällig a 256-Bit-Wort, was 24 Wörtern entspricht). Kann ich nun diese "mnemotechnischen" Wörter verwenden, um mich an meinen privaten Schlüssel zu erinnern, und ihn vollständig ignorieren (da ich diese Wörter immer verwenden kann, um zum privaten Schlüssel zurückzukehren)? Ich denke, was ich mich frage, ist, ob es Fälle gibt, in denen verschiedene private Schlüssel dieselbe Sammlung von 24 Wörtern erzeugen können.

eigentlich würde das obige nicht funktionieren. Weil Sie nicht die gleiche Anzahl von Bitstücken erhalten, wenn Sie 11 Bits wie in BIP39 verwenden.
Erweiterte Schlüssel, die von BIP 39 verwendet werden, haben eine Länge von 512 Bit. Im Allgemeinen ist der Pfad von BIP-39-Wörtern zu privaten Schlüsseln, insbesondere bei der Verwendung von getrennten Schlüsseln, nicht umkehrbar. Dies ist anders als mnemonische Samenwörter von Electrum, die umkehrbar sind. Die Electrum-Mnemonik kann 256 Bit darstellen.
@Naz richtig, Sie müssten daran denken, die Prüfsumme zu verwerfen, wenn Sie den privaten Schlüssel aus den Wörtern wiederherstellen, da das letzte Wort nur 3 Bits aus dem privaten Schlüssel enthält, während die letzten 8 Bits die Prüfsumme sind. Ich habe gerade weiteres Feedback in einer Antwort gegeben, hoffe das hilft.

Antworten (2)

Hier sind zwei Mechanismen zum Konvertieren eines 256-Bit-Seeds (64 hexadezimale Zeichen) in eine Electrum-Seed-Wortmnemonik und wieder zurück.

#1 JavaScript-basiert

#2 C++ - basiert

Das folgende Beispiel für die Befehlszeilenschnittstelle mit Mechanismus Nr. 2 verwendet jedoch einen der unsichersten privaten Seeds und wird nur zu Demonstrationszwecken verwendet.

1% echo -n "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | ./bytes_to_words

rover akin begun nifty laboratory point injury upper eldest enjoy gotten suffice batch snake hospital veteran eagle weird sieve podcast mighty oozed bimonthly biggest upper

2% Echo "Rover ähnlich begann geschickt Labor Punkt Verletzung Oberälteste genießen bekommen genug Charge Schlange Krankenhaus Veteran Adler seltsam Sieb Podcast mächtig sickerte zweimonatlich größte Ober" | ./inverse_mnemonics

0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

Die Ergebnisse sind mit Mechanismus Nr. 1 wiederholbar.

BIP 39 erfordert keine Invertierbarkeitsunterstützung (analog zu ./inverse_mnemonics für Electrum-Wörter), obwohl dies erreicht werden kann. Siehe So generieren Sie einen gültigen Hash für eine bip39-Seed-Phrase? für einen Ansatz zur Erfüllung dieser Aufgabe.

Die Zuordnung zurück zum BIP 39-Root-Seed in Hex ist garantiert eindeutig. Aufgrund der Normalisierung im Zusammenhang mit der ed25519-Kryptographie, die derzeit nicht von Bitcoin verwendet wird, ist es jedoch möglich, mehrere zwei Sätze von 25 Electrum-Wörtern zu haben, die demselben funktionalen privaten Schlüssel zugeordnet sind.

Was meinst du mit unsicherem privatem Saatgut? Ich habe heute meine eigene Methode implementiert. Ähnlich wie bip39. Teilen Sie den Byte-Puffer in Bit-Blöcke gleicher Größe auf und verwenden Sie sie dann als Indizes für Wörter.
Ich habe ungefähr die gleiche Anzahl von Wortkombinationen wie in bip39 zwischen Level mit 24 Wörtern und was auch immer vor 24 ist (21 Wörter?)
Der Schlüssel 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff hat sehr wenig Entropie und kann von einem Bot leicht erraten und verwendet werden. Das bereitgestellte Electrum-Beispiel verwendet 25 Wörter. Das 25. Elektrum-Wort ist immer eine Wiederholung der anderen 24 Wörter und wird zur Fehlerprüfung verwendet.
Oh, ich habe es verstanden. Danke. Wie genau wird es zur Fehlerprüfung verwendet? Ist es wie eine Prüfsumme?
% echo -n 00001111222233334444555566667777788889999aaaabbbbccccddddeeeeffff | bx mnemonisch-neu abandon above dust dust case often baby melt fever creek oven upper mass error grit fetch roof taxi creek roof ten jazz zoo unique
Das gerade bereitgestellte BIP 39-Beispiel ist im Wesentlichen nicht umkehrbar. Jede 32-Bit-Hexadezimalzahl wird auf drei BIP-39-Wörter abgebildet. Ich glaube, bin mir aber nicht sicher, wie das 25. Electrum-Wort Prüfsummendienste bereitstellt.
Siehe So generieren Sie einen gültigen Hash für eine bip39-Seed-Phrase? und github.com/bitcoin/bips/blob/master/… für die Auswirkungen des letzten BIP 39-Wortes auf die Fehlerprüfung.
das ist kein gültiger Elektrum-Seed

Die kurze Antwort ist ja, aber Sie sollten nicht, siehe Punkt 1 unten, und die lange Antwort ist nein, es ist nicht sicher oder ratsam.

Ich würde sagen, was Sie vorschlagen, was in dieser Frage einem einzelnen privaten/öffentlichen Schlüsselpaar im Brain-Wallet-Stil ähnelt, ist aus mehreren Gründen nicht ratsam:

1) Das größte Risiko ist eine fehlende Rücksendeadresse (aufgrund des Fehlens von BIP32). Wenn Sie etwas weniger als das volle Guthaben senden, führt dies zu einem 100%igen Verlust der Differenz (weitere Informationen finden Sie hier ) .

2) wegen der in BIP39 verwendeten Prüfsumme , die Ihre eingefügten Binärdaten verändern würde (dh das Einfügen von 256 Bits für 24 Wörter gibt Ihnen später 264 Bits zurück, wegen der 8-Bit-Prüfsumme, die an die letzte 11-Bit-Gruppe angehängt wird).

2) Abgesehen von Electrum erlauben die meisten Brieftaschen nur den Import von mnemonischen Wiederherstellungsphrasen, die BIP39-Prüfsummen-konform sind, und erlauben Ihnen nicht, einen privaten Schlüssel mit elliptischer Kurve zu verwenden. Meiner Meinung nach ist es besser, eine prüfsummenkonforme Mnemonik zu haben, obwohl ihre Sicherheit 256 Bit oder 8 Bit niedriger als eine 264-Bit-Mnemonik ohne gültige Prüfsumme ist. Weil es im gesamten Wallet breiter einsetzbar ist, falls electrum ausfällt oder nicht mehr funktioniert/unterstützt wird, etc...

3) Dekodierungsrisiken: Wenn Sie eine Software verwenden, die den privaten Schlüssel im Base58-Format generiert, sind potenzielle Nutzlast-/Prüfsummendaten angehängt, die das Fehlerrisiko bei der manuellen Rückwandlung in Hex erhöhen. Andernfalls, wenn Sie den privaten Schlüssel im Hex-Format erhalten und absolut sicher sind, dass es der richtige in Bezug auf die Berechnung der elliptischen Kurve ist, um den öffentlichen Schlüssel und die nachfolgende Bitcoin-formatierte Adresse abzuleiten, können Sie diese Zeichenfolge von Hex-Zeichen sichern eine Reihe von Möglichkeiten.

Dennoch wäre es besser, den gesamten BIP 39 Mnemonic-Kryptotresor zu sichern und dann ein Offline-Tool zu verwenden, um auf alle damit verbundenen erforderlichen privaten Schlüssel zuzugreifen, wie z . Obwohl Sie sich immer noch mit der Konvertierung von Base58-codierten privaten Schlüsseln befassen müssen, was ich nicht empfehle, es sei denn, Sie wissen zu 100%, wie dies fehlerfrei geht.

4) Fehlerprüfung : Nicht alle 256-Bit-Zahlen sind gültige private Schlüssel gemäß den in Bitcoin verwendeten Elliptic Curve-Spezifikationen (hier ist ein entsprechender Beitrag ). Daher muss eine Fehlerprüfung durchgeführt werden, wenn Sie den privaten Schlüssel selbst manuell generieren, um sicherzustellen, dass der Schlüssel kleiner als der maximal zulässige Wert ist 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.

5) In Bezug auf eine mögliche Kollision privater Schlüssel mit Mnemonik: Ja, es gibt eine solche Kollision, und es wäre gleichbedeutend mit zwei Personen, die zufällig denselben privaten Schlüssel auswählen oder erraten (dh wenn die anfängliche Entropie für eine Mnemonik dieselbe Entropie für eine elliptische Kurve ist). Privat Schlüssel). Ansonsten ist der Schlüsselraum der privaten Schlüssel der oben in Punkt 4 erwähnte, und keine zwei privaten Schlüssel zeigen auf dieselbe Adresse auf der elliptischen Kurve secp256k1, die in Bitcoin verwendet wird. Der anfängliche Entropiebereich beträgt 2 ^ 256, was dem Bereich der potenziellen Mnemoniken 2048 ^ 24 abzüglich der Mnemoniken mit ungültigen Prüfsummen entspricht (andernfalls wäre der Schlüsselraum der Mnemoniken ohne die Prüfsummenanforderung, 2^264 ==2048^12aber beide würden den privaten Schlüsselraum der Kurve immer noch nicht ändern). .

Auch hier denke ich, dass es sicherer wäre, dem Industriestandard zu folgen und eine HD-Wallet zu verwenden (die Sie mit einer Eselsbrücke sichern würden).

PS Sie können Ihr Backup weiter komprimieren, indem Sie nur die ersten 4 Buchstaben jedes der 24 Wörter verwenden, vorausgesetzt, Sie verwenden die englische BIP39-Version, und sie als eine Zeichenfolge von 44 Zeichen verketten. Aber beim Importieren in eine Brieftasche werden einige nicht automatisch vervollständigt, und Sie müssen Wörter möglicherweise manuell aus der Liste der 2048 englischen BIP39-Wörter nachschlagen. Ich verwende ein Ecoding-Schema, das die 44 Zeichen ohne Informationsverlust weiter auf 22 Zeichen (einschließlich Sonderzeichen und Zahlen) reduzieren kann, aber nur zur Ergänzung von Backups und nicht als eigenständiger Ersatz für BIP39-Mnemonics.