【发布时间】:2015-05-11 10:15:57
【问题描述】:
我们有一个 Android 应用程序,它将其数据存储在本地 SQLite 数据库中;主要是为了性能,但也允许离线工作(因为我们经常在信号低的区域)。
目前,数据以加密格式存储(从我们的网络服务器传递),但这本身会导致性能问题,例如,如果我们要搜索特定“姓氏”的记录,我们需要解密所有数据,而不是使用直接 SQL 查询,以包含 where surname='Smith'
我们不能(就目前而言)以更友好的“开放格式”存储数据,因为可以“root”设备、获取 MySQL 数据库的副本、打开它并读取数据。
有没有办法(也许有人可以提供一个例子)来密码保护本地 SQLite 数据库或以某种方式应用加密,以便我们可以(从应用程序的角度)以开放格式提供数据库,但是如果任何潜在的黑客都掌握了设备并将其植根......他们很难读取我们的数据?
我已经搜索了合适的解决方案,但找不到 SQLite 数据库、任何第 3 方软件或任何执行此操作的代码示例的任何选项。
【问题讨论】:
-
道歉;应该说明 SQLite
-
我认为匹配加密的姓氏也可以,而不是解密整个数据库
-
问题是您仍然需要加密密钥。并且此密钥必须在应用程序外存储,按需可用(当用户查询他的数据库时),并且不被缓存,否则它将毫无意义。但是这样的要求将违背您的要求,即应用程序的数据库应该可以离线访问。
-
您目前如何保护解密密钥?
-
密钥是根据(以及其他几项)用户详细信息动态形成的,因此数据在每个用户的基础上进行加密。
标签: android sqlite security xamarin.android