Безопасное использование зашифрованного файла - PullRequest
0 голосов
/ 10 января 2010

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

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

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

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

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

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

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

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

Есть ли решение хотя бы для второй части?

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

Ответы [ 2 ]

1 голос
/ 11 января 2010

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

0 голосов
/ 11 января 2010

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

...