保护本地SQLite数据库(Android应用程序)

时间:2015-05-11 10:15:58

标签: android sqlite security xamarin.android

我们有一个Android应用程序,它将数据存储在本地SQLite数据库中;主要是为了性能,但也允许离线工作(因为我们经常在低信号区域)。

目前,数据以加密格式存储(从我们的Web服务器传递下来),但这本身会导致性能问题,例如,如果我们想要搜索特定"姓氏&的记录#34;,我们需要解密所有数据,而不是使用直接的SQL查询,以包括其中surname =' Smith'

我们不能(目前的情况下)将数据存储为更友好的开放式格式,因为它可能会以“根”形式存储数据。设备,获取MySQL数据库的副本,打开它并读取数据。

是否存在密码保护本地SQLite数据库或以某种方式应用加密的方法(可能有人可以提供示例),以便我们可以(从应用程序的角度)以开放格式提供数据库,但是如果任何想成为黑客的人都掌握了设备并植根了......他们会很难读取我们的数据吗?

我搜索了一个合适的解决方案,找不到SQLite数据库,任何第三方软件或任何代码示例的任何选项。

2 个答案:

答案 0 :(得分:1)

SqlCipher,这可能适合你的情况

答案 1 :(得分:0)

远程存储:

您的数据非常敏感,用户需要在不同的设备上随时访问。如果您的应用程序是一个很好的应用程序,那么上面的行将成立。

安全性+任何设备的远程访问都表示您在远程服务器上保持dB。

您的流程可以是:

用户登录 - >令牌 - >每次通话中都有验证令牌 - >在dB中处理请求和获取/放置数据

本地存储:

假设您只想在本地存储数据,而不想将其存储在服务器上。为此,您可以使用公钥加密

您可以在应用中使用公钥来加密数据并进行存储。现在,您想要访问数据。从服务器请求私钥并解密它。

同样,要访问私钥,您应该使用某种形式的授权(或任何人都可以访问您的密钥)。

如果没有私钥,即使黑客掌握手机并将手放在dB上,数据也无济于事。