安全地使用加密文件

时间:2010-01-10 14:18:56

标签: encryption temporary-files file-security

我正在Borland Delphi 7中用dBASE数据库文件编写一个应用程序。

注意:我认为这个问题与文件安全​​性有关,你可以在这个问题中忘记dBASE(将其视为TXT文件)。

只能由应用程序访问数据库。然后它必须加密。不幸的是dBASE不支持任何密码机制,我不得不自己加密文件(我也必须使用dBASE)

您建议采用哪种方法来保护数据库文件?

简单的是:

  1. 加密数据库文件并将其放在应用程序EXE文件旁边。
  2. 当应用程序运行时,它应该解密文件(使用硬编码的密码)并将结果复制到具有DeleteOnCloseNoSharingPermission标志的临时文件。
  3. 关闭时,应用程序应加密临时dBASE文件,并用新的加密文件替换旧的加密文件。
  4. 我认为这是一种公平安全的方法。但它有两大问题:

    1. 使用取消删除工具,用户可以恢复和访问已删除的临时文件。
    2. 更糟糕:当应用程序运行时,如果系统突然重启,DeleteOnClose标志失败,临时文件仍保留在硬盘上,用户可以访问它。
    3. 至少第二部分是否有任何解决方案?

      还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

您还可以尝试创建基于TrueCrypt文件的容器,安装它,然后将dBase文件放在已安装的加密卷中。 TrueCrypt是免费的(在两种意义上)并且可以从您的应用程序通过command line parameters访问(在开始之前安装,在退出之前卸载)。

答案 1 :(得分:0)

根据您对数据库所做的工作,您可以通过解密实际需要的记录来逃脱。例如,您可以基于哈希码(而不是真实数据)构建索引;这将减少对数据库的搜索,以减少数据集。子集中的每条记录都必须被解密,但这可能比解密整个数据库要好得多。