Mir ist aufgefallen, dass die Wallet-Version von BCI in letzter Zeit auf Version 2 aktualisiert wurde (und neben anderen Sicherheitsfunktionen auch Key-Stretching verwendet).
Ich habe auf die Wallet-Support-Seite von BCI verwiesen und dort steht, dass die Wallet-Daten der Version 2 das folgende Format haben:
{
"version" : "2.0",
"pbkdf2_iterations" : 10000,
"payload" : "ENCRYPTED VERSION 1 PAYLOAD (SEE BELOW)"
}
Was ist mit dem folgenden JSON-Objekt (auf das über eine URL im Format https://blockchain.info/wallet/ INSERT_GUID_HERE ?format=json&resend_code=false zugegriffen werden kann )? Welcher Version entspricht das?
Um es klar zu sagen, der Unterschied besteht darin, dass meine JSON-Daten fehlen :
Für die fraglichen Daten ist hier das (bearbeitete) JSON-Objekt, das dem oben genannten Link entnommen ist (wobei die GUID durch die tatsächliche GUID ersetzt wird):
{"initial_error":"For Improved security add an email address to your account.","auth_type":0,"real_auth_type":0,"symbol_local":{"symbol":"$","code":"USD","symbolAppearsAfter":false,"name":"U.S. dollar","local":true,"conversion":442752.14734791},"clientTimeDiff":26055161055,"war_checksum":"c8c296cf351e7691","language":"en","symbol_btc":{"symbol":"mBTC","code":"MBC","symbolAppearsAfter":true,"name":"MilliBit (mBTC)","local":false,"conversion":100000.00000000},"extra_seed":"89e4807b343acfed576c474a675da1daac3ddb76691d05963a9e0a76533ca7ad4cd12ff058b40a1dd2f57a40759bb484a3708c3545ccfd995913964f148d405f","payload":"PAYLOAD DATA","guid":"GUID","serverTime":1423127480609,"payload_checksum":"8f8e16d79e7528e9725bef006a9752894e5d344d0324ba4ac6f6e4d804e02971","sync_pubkeys":false}
Vergleichen Sie dies mit aktuellen JSON-Daten ( für ein zu diesem Zweck erstelltes Wallet https://blockchain.info/wallet/1d39195b-d918-4b7b-acae-d47db3324454?format=json&resend_code=false
{"initial_error":"For Improved security add an email address to your account.","extra_seed":"92a5d897af5c491e9e36dfad95f72b616553b23e02777859729c49b934ebbe1a575aa31a8ce0ba9978b9901caae649dd112d1759da5e48117379fbab0a91b083","auth_type":0,"real_auth_type":0,"payload":"{\"pbkdf2_iterations\":5000,\"version\":2,\"payload\":\"RyUtA4LJw69ly2ADu+zZLfoQ447o0gKhwXUAtzdbKpWOtvwjzHM8VY+zXU1z\/FklZJK\/in7XpWzz+zKnw3kHw0oSkLf1FaYVNR4zivUTRuXUaj5g\/Yq6DPhxpHyjEJGtXriqPP\/X713FePGBW5QolJplgIY15Q4GLNdPbanxfEI9LGuvO87tIXxUWY597MtqNzQQH67P+zCMw4q+kgS4wzchI\/D\/cQHRYH2gNSjMiv9rZbUPM7NKVR6IYJPokyoslHBBpN\/9qyCFNUHy1l\/SdPeNXRa\/UnBSsXu7Sf8TZuLL1REvYfoyFm3JOE3Fk3iJWbjN\/mgzDOFuF9sMXiqL5r7+guMm05da3bVvyLYOSMK7ZXRFKnDle53ga5FUhy+GUYcnHTSbXU3qTmDzr4Y4J1EE\/CDm7ceNXs9kl9OLy5bVU6MyezVvRR7hIDrBQLsA5kQMtZz6KTE7L5AaZ6aoigP94iP06SB8ZDOlcjVX\/nkDGS2Ajk2bPu5LiZwxglEgzEUpRrd3rglWp14n3X7EhF8w3PUgNeZTO2znOVwYNi568u+ORE3iOgOOkWLYTjV0QWOAdUn2OCR95lUna5MJbD19v5B0Jhn18grhJM\/2k34R\/F\/U2qhhRm6\/qVajAMSW7OTQzRdx0pyYXAHkbXjEUW1q0GyvEru9eg\/gkzc8j6PTZCp1avxevyqctddkgie4MM2saL09sH2rbrWfyV2Ihw==\"}","symbol_local":{"symbol":"$","code":"USD","symbolAppearsAfter":false,"name":"U.S. dollar","local":true,"conversion":443419.65235899},"guid":"1d39195b-d918-4b7b-acae-d47db3324454","payload_checksum":"030de1efb09ee9485eaf009095b02b5ec8536432fa3ccc5588e8831b9c9983ea","war_checksum":"c8c296cf351e7691","language":"en","symbol_btc":{"symbol":"BTC","code":"BTC","symbolAppearsAfter":true,"name":"Bitcoin","local":false,"conversion":100000000.00000000},"sync_pubkeys":false}
Ich habe die verschiedenen Verschlüsselungsschemata, die in Wallets der Version 1 verwendet werden, hier größtenteils detailliert beschrieben: https://bitcointalk.org/index.php?topic=1012475.msg11105755#msg11105755
Übrigens ist es nicht mehr trivial, ein solches Wallet zu erstellen, da der Standard jetzt Version 2 ist. Es ist einfach, ein Wallet der Version 1 in Version 2 umzuwandeln: Ändern Sie einfach die Anzahl der Iterationen unter den Sicherheitseinstellungen.
(bearbeitet, um den referenzierten Inhalt hier aufzunehmen, auf Anfrage)
Das ist eine verschlüsselte Brieftasche der Version 1 (was der Code als Version 0 IIRC bezeichnet). Für diese Wallet-Version wurden mehrere verschiedene Verschlüsselungsschemata verwendet – die einzige Möglichkeit, sie zu unterscheiden, besteht darin, sie alle auszuprobieren und zu sehen, welches funktioniert.
Die Schemata haben einige gemeinsame Attribute: Die Nutzdaten werden Base-64-codiert gespeichert, die ersten 16 Bytes werden sowohl als Salt des KDF als auch als IV des Verschlüsselungsmodus verwendet (und der Rest ist der Chiffretext), das Passwort ist UTF-8-codiert (es ist nicht normalisiert), und das KDF ist PBKDF2-SHA1. Die Schemaunterschiede in der Reihenfolge vom neuesten zum ältesten sind:
Ebenso hat die Verschlüsselung mit dem zweiten Passwort eine Reihe von Schemata durchlaufen; Ich denke, sie ähneln den oben genannten, aber ich bin mir nicht sicher und habe die Details nicht ohne Weiteres zur Verfügung.
Das zweite Passwort wird ebenfalls gehasht in der Brieftaschendatei gespeichert, und ich habe die Details der verschiedenen Hash-Schemata (wiederum ist das Passwort UTF-8-codiert, vom neuesten zum ältesten):
Zauberer von Ozzie
Christopher Gurnee