Пропускает ли реализация wallet.dat на основе BerkeleyDB данные закрытого ключа?

Я прочитал этот маленький самородок на трекере ошибок биткойн-клиента :

двоичные файлы журнала bdb также могут содержать конфиденциальные данные, такие как закрытые ключи.

Это правда? Означает ли это, что даже с зашифрованным wallet.dat может существовать способ незащищенной записи закрытых ключей на диск? Если да, то что я могу с этим поделать?

Ответы (1)

Если вы используете зашифрованный кошелек, закрытые ключи никогда не записываются на диск в незашифрованном виде.

Однако в выпуске 0.4.0 (первом с шифрованием кошелька) была ошибка, из-за которой при обновлении кошелька с незашифрованного на зашифрованный части незашифрованного не обязательно перезаписывались, оставляя их доступными на некоторое время.

0.4.1 и 0.5.0 исправляют это, сначала перезаписывая весь файл кошелька при шифровании (или первый запуск после этого) и делая недействительным весь пул резервных ключей, который присутствовал ранее. Это означает (и было протестировано), что если вы начнете с пустого кошелька и немедленно зашифруете его, он никогда не будет использовать ключ, который когда-либо был записан на диск в незашифрованном виде.

Обратите внимание, что шифрование кошелька не является панацеей, и у злоумышленника могут быть другие способы извлечения закрытого ключа, например кейлоггеры.

РЕДАКТИРОВАТЬ: только сейчас я правильно прочитал ваш вопрос. Файлы журнала могут содержать все, что пытались записать в сами файлы базы данных, и если вы используете (или использовали) незашифрованный кошелек, это действительно может означать и закрытые ключи. Опять же, если вы начнете с зашифрованного кошелька в 0.5.0, никакие ключи, которые когда-либо касались незашифрованного диска, не будут использоваться.

Так как же работает этот зашифрованный кошелек? Это все еще файл BerkeleyDB (незашифрованный), содержащий закрытые ключи, которые теперь индивидуально зашифрованы до того, как BerkeleyDB увидит их? Или шифрование происходит ниже уровня BerkeleyDB?
Что вы имеете в виду «начать с зашифрованного кошелька»? Если вы начинаете с нового кошелька, он не зашифрован. Зашифровать можно сразу, но какие-то ключи перед шифрованием генерирует... не будет в лог-файлах?
Да, они могут попасть в файл журнала. Однако, как только вы его зашифруете, пул ключей сбрасывается и создается 100 новых резервных ключей. Таким образом, если вы начнете с нового кошелька и зашифруете его, прежде чем делать с ним что-либо еще, эти 100 новых ключей никогда не коснутся диска в незашифрованном виде.
Thilo: это файл bdb, как и раньше, только сам материал ключа зашифрован (на уровне приложения).
Итак, поскольку я не использую биткойн-шифрование, а размещаю свой wallet.dat (только) на зашифрованном диске, мои закрытые ключи могли оказаться в файлах журнала. Любой способ очистить журналы в будущем?
Кроме того, я также надеялся, что размещение wallet.dat на зашифрованном диске также защитит мои открытые ключи (правдоподобное отрицание их владения), которые, как я понимаю, не зашифрованы с помощью шифрования биткойн-кошелька. Они также попадают в журналы, верно? Даже при включенном шифровании?
Шифрование защищает только закрытые ключи, открытые ключи доступны без пароля. И если вы сделаете чистое завершение работы, вы можете безопасно удалить файлы журнала и файлы в каталоге базы данных.