Gibt die auf BerkeleyDB basierende wallet.dat-Implementierung private Schlüsseldaten preis?

Ich habe dieses kleine Nugget im Bitcoin-Client-Bug-Tracker gelesen :

Die bdb-Binärprotokolldateien können auch sensible Daten wie private Schlüssel enthalten

Ist das wahr? Bedeutet dies, dass es auch bei einer verschlüsselten wallet.dat eine Möglichkeit geben könnte, dass die privaten Schlüssel ungeschützt auf die Festplatte geschrieben werden? Wenn ja, was kann ich dagegen tun?

Antworten (1)

Wenn Sie eine verschlüsselte Brieftasche verwenden, werden private Schlüssel niemals unverschlüsselt auf die Festplatte geschrieben.

Die Version 0.4.0 (die erste mit Wallet-Verschlüsselung) hatte jedoch einen Fehler, bei dem beim Upgrade eines Wallets von unverschlüsselt auf verschlüsselt Teile des unverschlüsselten nicht unbedingt überschrieben wurden, sodass sie für eine Weile zugänglich blieben.

0.4.1 und 0.5.0 beheben dies, indem sie bei der Verschlüsselung (oder dem ersten Start danach) zunächst die gesamte Wallet-Datei neu schreiben und den gesamten Pool der zuvor vorhandenen Reserveschlüssel ungültig machen. Dies bedeutet (und wurde getestet), dass, wenn Sie mit einer leeren Brieftasche beginnen und diese sofort verschlüsseln, niemals ein Schlüssel verwendet wird, der jemals in unverschlüsselter Form auf die Festplatte geschrieben wurde.

Beachten Sie, dass die Wallet-Verschlüsselung keine Wunderwaffe ist und ein Angreifer möglicherweise andere Möglichkeiten hat, den privaten Schlüssel zu extrahieren, z. B. Keylogger.

EDIT: erst jetzt habe ich deine Frage richtig gelesen. Die Protokolldateien können alles enthalten, was versucht wurde, in die Datenbankdateien selbst geschrieben zu werden, und wenn Sie eine unverschlüsselte Brieftasche verwenden (oder verwendet haben), kann dies tatsächlich auch private Schlüssel bedeuten. Nochmals, wenn Sie in 0.5.0 mit einer verschlüsselten Brieftasche beginnen, werden keine Schlüssel verwendet, die jemals unverschlüsselt die Festplatte berührt haben.

Wie funktioniert diese verschlüsselte Brieftasche? Ist es immer noch eine BerkeleyDB-Datei (unverschlüsselt), die private Schlüssel enthält, die jetzt einzeln verschlüsselt werden, bevor BerkeleyDB sie sieht? Oder findet die Verschlüsselung unterhalb der BerkeleyDB-Schicht statt?
Was meinst du mit "beginne mit einer verschlüsselten Brieftasche"? Wenn Sie mit einer neuen Brieftasche beginnen, ist diese nicht verschlüsselt. Sie können es sofort verschlüsseln, aber es generiert einige Schlüssel, bevor es verschlüsselt wird ... wird nicht in den Protokolldateien stehen?
Ja, die können in der Logdatei landen. Sobald Sie ihn jedoch verschlüsseln, wird der Schlüsselpool geleert und 100 neue Reserveschlüssel werden generiert. Wenn Sie also mit einer neuen Brieftasche beginnen und diese verschlüsseln, bevor Sie irgendetwas anderes damit machen, werden diese 100 neuen Schlüssel die Festplatte niemals in unverschlüsselter Form berühren.
Thilo: Es ist nach wie vor eine BDB-Datei, nur das Schlüsselmaterial selbst ist verschlüsselt (auf Anwendungsebene).
Da ich also keine Bitcoin-Verschlüsselung verwende, sondern meine wallet.dat (nur) auf einer verschlüsselten Platte speichere, sind meine privaten Schlüssel möglicherweise in den Protokolldateien gelandet. Gibt es eine Möglichkeit, die Protokolle in Zukunft zu löschen?
Außerdem hatte ich gehofft, dass das Platzieren von wallet.dat auf einer verschlüsselten Festplatte auch meine öffentlichen Schlüssel schützen würde (plausible Leugnung ihres Besitzes), von denen ich verstehe, dass sie nicht mit Bitcoin-Wallet-Verschlüsselung verschlüsselt sind. Die landen auch im Log, oder? Auch bei aktivierter Verschlüsselung?
Die Verschlüsselung schützt nur die privaten Schlüssel, öffentliche Schlüssel sind ohne Passphrase verfügbar. Und wenn Sie ein sauberes Herunterfahren durchführen, können Sie die Protokolldateien und Dateien im Datenbankverzeichnis sicher entfernen.