"Verlorenes" Passwort für den BIP38-verschlüsselten privaten Schlüssel, der Verschlüsseler ist möglicherweise fehlerhaft (Bippy)

Vor einigen Jahren verschlüsselte ich meinen privaten Bitcoin-Schlüssel für Cold Storage mit einer Offline-App namens Bippy. Kürzlich habe ich versucht, auf meine Brieftasche zuzugreifen, indem ich den privaten Schlüssel entschlüsselte, aber mein Passwort wurde abgelehnt.

Ich habe dieses Bippy-Programm noch einmal überprüft, und ich beginne zu vermuten, dass es irgendwie fehlerhaft ist. Es scheint, dass private Schlüssel, die mit einer '5' beginnen - verschlüsselt mit Bippy - nicht mit demselben Passwort entschlüsselt werden. Andere Präfixe scheinen OK zu funktionieren.

Nun, diese Bippy-App ist Open Source und in Python geschrieben, und ich habe sie von hier . Ich habe testweise versucht, den privaten Schlüssel 5Ka1Bv4RpKayZygPhZbBcREejqeYwq2iSRzWPKsg49SPgVRTnpW mit dem Passwort testingOneTwo zu verschlüsseln (es ist eine frische PK, keine Bitcoins da ;)). In Bippy verschlüsselt dies zu 6PYMN8WT4CW7xLYczLvYfXZCtQWND7XEesk32QbXujMgKhf2v5A2ZQANpL , aber mit dem obigen Passwort kann es nicht in sein Original entschlüsselt werden ... Ich habe mehrere andere '5'-private Schlüssel und Passwörter ausprobiert, und das gleiche passiert jedes Mal.

Glücklicherweise ist das Programm Open Source; Leider scheint das Projekt vor ein paar Jahren aufgegeben worden zu sein und mein Wissen über Python und Verschlüsselung ist nicht gut genug, um den Fehler hier zu lokalisieren, und hoffe hier auf Hilfe :)

Womit haben Sie versucht, den verschlüsselten privaten Schlüssel zu entschlüsseln? Bippy?
Es sollte beachtet werden, dass dies ursprünglich auf reddit gefragt wurde und jemand dort sogar Code gepostet hat.

Antworten (2)

Es stellt sich heraus, dass Bippy einen Fehler im Verschlüsselungsalgorithmus hat, bei dem das Public-Key-Komprimierungs-Flag verwechselt wird . Wie bereits erwähnt, habe ich dieses Problem auch auf reddit gepostet , und dort wurde eine Lösung gepostet:

Bippy macht definitiv etwas falsch.

Technische Erklärung

BIP38 verschlüsselte Schlüssel bestehen (im einfachsten Fall) aus 4 Komponenten.

Die ersten beiden Buchstaben des Schlüssels, 6P, sind eine Markierung, die besagt, dass es sich um einen BIP38-verschlüsselten Schlüssel handelt.

Der nächste Buchstabe, in diesem Fall Y, gibt einige Attribute des Schlüssels an. In diesem Fall heißt es: "Dies ist ein einfacher BIP38-Schlüssel, und der öffentliche Schlüssel sollte komprimiert werden."

Die nächsten paar Buchstaben (4 Bytes in der Hex-Darstellung) geben eine "Prüfsumme" an. Wir kommen darauf zurück.

Der Rest des Schlüssels ist das wahre Fleisch davon. Es ist der verschlüsselte private Schlüssel. Das ist uns am wichtigsten.

Kommen wir nun zurück zu dieser Prüfsumme. Die Prüfsumme besteht aus 4 Bytes, abgeleitet von der Bitcoin-Adresse, die dem ursprünglichen privaten Schlüssel zugeordnet ist. Eine große Einschränkung hier ist, dass es tatsächlich zwei Bitcoin-Adressen gibt, die mit einem einfachen privaten Bitcoin-Schlüssel verknüpft sind. Einer basiert auf dem komprimierten öffentlichen Schlüssel und der andere auf dem unkomprimierten öffentlichen Schlüssel.

Aus diesem Grund geben BIP38-verschlüsselte Schlüssel an, ob sie die komprimierte oder unkomprimierte Adresse verwenden.

In diesem Fall hat Bippy ein Y ausgespuckt, was bedeutet, dass es die komprimierte Adresse verwendet hat. In deinen Screenshots steht es sogar so. ABER hier liegt das Problem.

Als wir die von Bippy ausgespuckte Prüfsumme überprüfen, stimmt sie nicht mit einer komprimierten Adresse überein. Aber wenn wir die unkomprimierte Adresse verwenden, passt sie! Bippy sagt also, dass es die komprimierte Adresse verwendet, aber tatsächlich verwendet es die unkomprimierte Adresse.

Bippy hat also definitiv einen Fehler, bei dem es die unkomprimierte Adresse verwendet, aber im resultierenden BIP38-Schlüssel sagt, dass es die komprimierte Adresse verwendet hat.

Das ist keine allzu große Sache. Ich werde dies nach der nicht technischen Erklärung besprechen.

Nichttechnische Erklärung

Bippy verschlüsselt korrekt, aber es vermasselt die Kodierung des verschlüsselten Schlüssels. Es sagt, dass es die Komprimierung öffentlicher Schlüssel verwendet hat, obwohl dies tatsächlich nicht der Fall war. Das ist keine große Sache.

Lösung

Die gute Nachricht ist also, dass es so aussieht, als ob Bippy, abgesehen von diesem kleinen Fehler, die wichtigen Dinge richtig verschlüsselt hat. Es sollte möglich sein, Ihren "verlorenen" Bippy-Schlüssel zu nehmen und den privaten Schlüssel daraus wiederherzustellen. Vorausgesetzt, Ihr Passwort ist korrekt.

Ich sollte in der Lage sein, mein Skript zu hacken, um das für Sie zu erledigen. Ich werde daran arbeiten und mich bei Ihnen melden. (Ich muss etwas Base58-Codierung/Decodierung in das Skript einbauen und es für Sie etwas benutzerfreundlicher machen;)). Der Code wird ganz einfacher Python-Code sein, also können Sie einen flüchtigen Blick darauf werfen, um sicherzugehen, dass er nichts Böses tut.

Ein Python-Wiederherstellungsskript wurde ebenfalls bereitgestellt, verfügbar auf github - alle Credits für fpgaminer

Wenn es einen Fehler in Bippy gibt und es falsche verschlüsselte private Schlüssel generiert, würde das Ihren unverschlüsselten privaten Schlüssel nicht wiederherstellbar machen, es sei denn, der Fehler in Bippy war so einfach wie das Ändern der Passphrase, bevor es durch den Verschlüsselungsalgorithmus geschickt wurde.

Ich konnte Bippy nicht dazu bringen, auf meiner Maschine zu bauen, also konnte ich es nicht testen. Aber ich habe bitcoinpaperwallet.com verwendet , um Ihre obigen Schlüssel zu testen, und wenn ich die Passphrase testingOneTwozum Verschlüsseln verwende 5Ka1Bv4RpKayZygPhZbBcREejqeYwq2iSRzWPKsg49SPgVRTnpW, ist das Ergebnis der verschlüsselte private Schlüssel von 6PRLKpRdHRsMJcjuMYoE4wpKYUZEX11oB9LejdU8JuDLxynpDZFZWMNkDv.

Ich konnte niemanden finden, der dieses Problem hat. Ich würde vorschlagen, zu versuchen, Ihren privaten Schlüssel mit einem anderen BIP38-Tool zu entschlüsseln, z. B. im Abschnitt „Validate or Decrypt“ auf bitcoinpaperwallet.com.

Wenn das nicht funktioniert, könnte es hilfreich sein, wenn Sie uns wirklich Schritt für Schritt (mit Screenshots) erklären, wie Sie den verschlüsselten privaten Schlüssel generieren und wie Sie ihn entschlüsseln.