Можно ли зашифровать базу данных sqlite3 с помощью GnuPg? - PullRequest
0 голосов
/ 25 декабря 2018

Я поигрался с программированием небольшой утилиты командной строки для управления паролями в Python.Главным образом, просто для удовольствия, и, вероятно, я никогда ничего не буду использовать, поскольку уже использую установленные инструменты для этой задачи.

Программа сохраняет сайт, имя пользователя и пароль в базе данных sqlite и предоставляет различные варианты поиска паролей, учетных записей и т. Д. Я искал способ шифрования базы данных sqlite, потому что пароли иЯ наткнулся на sqlcipher.У меня были проблемы с его сборкой на Mac OS, и я довольно быстро разочаровался в этом.Я решил попробовать зашифровать базу данных с помощью GnuPg.С точки зрения использования это, кажется, работает хорошо.Я написал небольшую оболочку в bash, которая быстро расшифровывает базу данных перед выполнением какой-либо операции с ней и повторно шифрует ее, когда она будет завершена.Это приемлемый метод для шифрования базы данных sqlite?Я не могу найти никаких других примеров онлайн баз данных sqlite, зашифрованных таким образом.

1 Ответ

0 голосов
/ 25 декабря 2018

Является ли это приемлемым методом шифрования базы данных sqlite?

Если вы считаете это приемлемым, да, другие могут или не могут.

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

Как СМОТРЕТЬРаботает

Каждая страница шифруется отдельно.Ключом к шифрованию является комбинация номера страницы, случайного одноразового номера (если есть) и ключа базы данных.Данные зашифрованы как в основной базе данных, так и в журнале отката или в файле WAL, но не зашифрованы при хранении в памяти.Это означает, что если злоумышленник сможет просмотреть память, используемую вашей программой, он сможет увидеть незашифрованные данные.

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

...