Безопасное использование зашифрованного файла

Я пишу приложение с файлом базы данных dBASE в Borland Delphi 7.

Примечание: я думаю, что этот вопрос связан с безопасностью файлов, и вы можете забыть о dBASE (рассматривайте его как файл TXT) в этом вопросе.

База данных должна быть доступна только приложением. Тогда это должно быть зашифровано. К сожалению, dBASE не поддерживает какой-либо механизм паролей, и мне пришлось самому шифровать файл (и я также ДОЛЖЕН использовать dBASE)

Какой подход вы предлагаете для защиты файла базы данных?

Самый простой:

  1. Шифрование файла базы данных и размещение его рядом с EXE-файлом приложения.
  2. Когда приложение запускается, оно должно расшифровать файл (с жестко заданным паролем) и скопировать результат во временный файл, который имеет DeleteOnClose а также NoSharingPermission флаги.
  3. При закрытии приложение должно зашифровать временный файл dBASE и заменить старый зашифрованный файл новым.

Я думаю, что это достаточно безопасный подход. Но у него есть две большие проблемы:

  1. С помощью инструмента восстановления пользователь может восстановить и получить доступ к удаленному временному файлу.
  2. Хуже того: при запуске приложения, если система внезапно перезагружается, DeleteOnClose флаг не установлен, и временный файл остается на жестком диске, и пользователь может получить к нему доступ.

Есть ли решение, по крайней мере, для второй части?

Есть ли другое решение?

2 ответа

Решение

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

В зависимости от того, что вы делаете с базой данных, вы можете просто расшифровать записи, которые вам действительно нужны. Например, вы можете построить индексы на основе хеш-кодов (а не реальных данных); это уменьшит количество обращений в базу данных к меньшему набору данных. Каждая запись в подмножестве должна быть расшифрована, но это может быть намного лучше, чем расшифровка всей базы данных.

Другие вопросы по тегам