2013-02-13 53 views
1

Android应用程序SQLCipher的工作原理是什么? http://sqlcipher.net/design/SQLCipher安全性

据我所知,这一切都取决于PRAGMA键,这个键应保存在应用程序,可能是二进制。

但是,这是不安全的,因为每个人都可以反编译根植手机上的.apk文件。 也许我错过了什么?

谢谢。

回答

1

是的,保护钥匙是棘手的部分。理想情况下,它(部分)由用户在登录应用时输入的密码提供,但这并不总是理想的,所以有时您不得不求助于“晦涩的安全性”方法,并将密钥从位和碎片藏在这里和那里。

+0

那么我发布了没有100%安全的解决方案来保存敏感数据。我不能让用户输入密钥,因为我想隐藏用户自己的数据。感谢您的时间。 – Streetboy 2013-02-14 10:08:10

2

据我所知,这一切都取决于PRAGMA键,这个键应保存在应用程序,可能是二进制。

也许我错过了什么?

的关键来自于用户,在用户类型。在SQLCipher为Android,这个密码被传递到对SQLiteOpenHelper修订版一样getReadableDatabase()方法密码的形式。

1

SQLCipher团队普遍建议不要在应用程序二进制文件中嵌入固定键。无论应用程序如何使嵌入式密钥模糊不清,充分确定的攻击者都可以从应用程序包中提取它并打开数据库。

不幸的是,一些应用程序仍然选择使用带嵌入式密钥的SQLCipher作为DRM的基本形式,即使临时用户难以查看数据。但是,这不提供任何实质性的安全性。

如果您需要保护敏感数据,最佳方法是使用由用户输入的强密码导出的密钥。 SQLCipher自动提供强大的密钥派生,因此您只需通过PRAGMA密钥或SQLCipher包装器库中提供的一种等效密钥机制来提供用户密码。

0

我生成密钥表单secureRandom,然后将密钥存储在KeyStore(BKS)上。 对于KeyStore,我使用随机,用户信息,设备信息和密码生成密码。