Android应用程序SQLCipher的工作原理是什么? http://sqlcipher.net/design/SQLCipher安全性
据我所知,这一切都取决于PRAGMA键,这个键应保存在应用程序,可能是二进制。
但是,这是不安全的,因为每个人都可以反编译根植手机上的.apk文件。 也许我错过了什么?
谢谢。
Android应用程序SQLCipher的工作原理是什么? http://sqlcipher.net/design/SQLCipher安全性
据我所知,这一切都取决于PRAGMA键,这个键应保存在应用程序,可能是二进制。
但是,这是不安全的,因为每个人都可以反编译根植手机上的.apk文件。 也许我错过了什么?
谢谢。
是的,保护钥匙是棘手的部分。理想情况下,它(部分)由用户在登录应用时输入的密码提供,但这并不总是理想的,所以有时您不得不求助于“晦涩的安全性”方法,并将密钥从位和碎片藏在这里和那里。
据我所知,这一切都取决于PRAGMA键,这个键应保存在应用程序,可能是二进制。
号
也许我错过了什么?
的关键来自于用户,在用户类型。在SQLCipher为Android,这个密码被传递到对SQLiteOpenHelper
修订版一样getReadableDatabase()
方法密码的形式。
SQLCipher团队普遍建议不要在应用程序二进制文件中嵌入固定键。无论应用程序如何使嵌入式密钥模糊不清,充分确定的攻击者都可以从应用程序包中提取它并打开数据库。
不幸的是,一些应用程序仍然选择使用带嵌入式密钥的SQLCipher作为DRM的基本形式,即使临时用户难以查看数据。但是,这不提供任何实质性的安全性。
如果您需要保护敏感数据,最佳方法是使用由用户输入的强密码导出的密钥。 SQLCipher自动提供强大的密钥派生,因此您只需通过PRAGMA密钥或SQLCipher包装器库中提供的一种等效密钥机制来提供用户密码。
我生成密钥表单secureRandom,然后将密钥存储在KeyStore(BKS)上。 对于KeyStore,我使用随机,用户信息,设备信息和密码生成密码。
那么我发布了没有100%安全的解决方案来保存敏感数据。我不能让用户输入密钥,因为我想隐藏用户自己的数据。感谢您的时间。 – Streetboy 2013-02-14 10:08:10