Android系统。什么是存储数据的最佳和最安全的方式(来自Web服务的更新)

时间:2013-04-11 14:24:59

标签: android database web-services security

我看到了类似的问题,但是他们没有满足我的要求。

我有一个应用程序,需要不时从Web服务更新。数据包含诸如url,description,title之类的字段。从200k到400k的条目。 它在本地使用,并且这些数据之间的搜索经常进行(取决于用户的活动)。

用户无法访问数据,搜索需要尽可能快。我知道没有办法让它100%不可读,一切都可以反向设计和解密(我必须将加密密钥保存在手机上)。我的目标是让它尽可能地困难。

我几乎没有选择:  1.加密服务器上的数据并将其作为二进制文件发送到手机。在需要时解密它  2.还将数据作为文件发送。读取它,存储到本地数据库  3.将其作为JSON(可能已加密),存储到数据库或文件

使用JSON有一个优点,因为更容易实现本地数据和远程数据之间差异的更新。

还有一个关于数据库的问题。我是否应该存储所有加密的条目并在每次要查找内容时对其进行解密?它可能会影响手机的性能。

还有一个可能的保护层 - 使加密密钥动态化。每天从服务器获取一个密钥,重新加密存储的数据,第二天密钥更改。但是我想这是一个开销。告诉我,如果不是。

您会选择什么选项?有没有更好的解决方案?

P.S。数据库将每天更新。

由于

1 个答案:

答案 0 :(得分:0)

我将数据存储在SQLite中,但也使解密方案更加复杂,使用至少两个密钥...一个,存储在共享库中,另一个从服务下载并使用该密钥解锁。

这也会影响你的思维策略 - 你可以拥有一个'设备'键,它带有APK - 嵌入在.SO中的硬编码字节[],另一个'每日'键将用于打开“每日”数据更新。虽然,我宁愿在bytearray格式中使用'daily'键,但是永远不要在设备上以任何形式保存它,除非它在内存中仅在其使用期间解密。这将是我所做的升级,我刚刚将该密钥保存为base64编码的devicekey-crypted字符串。

使用SQLite非常简单,您可以在此处看到 - Android Database to Array

我做了类似于我正在解释的内容(但没有更新每日密钥) - not decrypting what I crypted

看看并讨论:)