【发布时间】:2011-02-22 20:33:55
【问题描述】:
我一直在从事我的一个宠物项目,该项目依赖于 SQLite 数据库来存储信息。最近,我决定要对应用程序进行密码保护,并对数据库进行加密。到目前为止,没有大问题。在我的设计中,我一直试图关注最大可能的安全性。是的,我知道最大的安全性是毫无价值的,因为一切(我说的是盐和密码文本;密码在用户的大脑中)都存储在一个设备上,任何知道自己在做什么的人都可能会破坏它,如果他们拥有设备。那么为什么要打扰呢?因为我可以。
因此,为此,我一直在考虑在应用程序运行时将我的数据库的解密版本存储在哪里。网上最常见的临时存储建议是使用 SD 卡。这不适合我,因为如果应用程序异常终止(使用任务管理器输入过度热心的用户)或根本不会终止,SD 卡上的数据将持续存在。
最近我一直在玩弄将整个内容存储在内存中的想法,但这似乎是一种非常糟糕的做法。我的测试设备上的数据库绝对很小(小于 100K,其中包含大量测试数据),但它仍然让我感到困扰,因为用户可能在野外拥有大型数据库。我很清楚这样一个事实,只要有人说“用户永远不会这样做/拥有那个”,就会有人将这个限制打到地上。
所以,以问题形式提出:Android 设备上临时存储解密数据库的最佳位置在哪里?最好在应用程序执行之间的某个地方不稳定,但在这一点上,我愿意接受建议。
提前致谢。
【问题讨论】:
标签: java android database encryption