Java SQLCipher安全

Java SQLCipher安全,java,android,sqlcipher,Java,Android,Sqlcipher,SQLCipher for Android应用程序到底是如何工作的? 据我所知,这一切都取决于PRAGMA键,这个键应该保存在应用程序上,可能是二进制的 然而,这是不安全的,因为每个人都可以在根手机上反编译.apk文件。 也许我错过了什么 多谢各位 据我所知,这一切都取决于PRAGMA键,这个键应该保存在应用程序上,可能是二进制的 没有 也许我错过了什么 密钥来自用户,以用户键入的密码短语的形式。在SQLCipher for Android中,此密码短语被传递给修订版的SQLiteOpenHe

SQLCipher for Android应用程序到底是如何工作的?

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

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

多谢各位

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

没有

也许我错过了什么

密钥来自用户,以用户键入的密码短语的形式。在SQLCipher for Android中,此密码短语被传递给修订版的
SQLiteOpenHelper
上的
getReadableDatabase()
等方法

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

没有

也许我错过了什么


密钥来自用户,以用户键入的密码短语的形式。在用于Android的SQLCipher中,此密码短语被传递给修订版的
SQLiteOpenHelper

上的
getReadableDatabase()
等方法。SQLCipher团队普遍建议不要在应用程序二进制文件中嵌入固定密钥。无论应用程序在隐藏嵌入密钥方面有多有创意,一个足够坚定的攻击者都能够从应用程序包中提取该密钥并打开数据库

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


如果需要保护敏感数据,最好的方法是使用从用户输入的强密码短语派生的密钥。SQLCipher自动提供强密钥派生,因此您只需通过PRAGMA密钥或SQLCipher包装库中提供的等效密钥机制之一提供用户密码短语。

SQLCipher团队普遍建议不要在应用程序二进制文件中嵌入固定密钥。无论应用程序在隐藏嵌入密钥方面有多有创意,一个足够坚定的攻击者都能够从应用程序包中提取该密钥并打开数据库

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


如果需要保护敏感数据,最好的方法是使用从用户输入的强密码短语派生的密钥。SQLCipher自动提供强密钥派生,因此您只需通过PRAGMA密钥或SQLCipher包装库中提供的等效密钥机制之一提供用户密码短语。

是的,保护密钥是一个棘手的部分。理想情况下,它(部分)是由用户在登录应用程序时输入的密码提供的,但这并不总是理想的,因此有时你不得不求助于备受诟病的“模糊安全”方法,并将密钥从各处的零碎信息中组合起来。

是的,保护密钥是一个棘手的部分。理想情况下,它(部分)是由用户在登录应用程序时输入的密码提供的,但这并不总是理想的,因此有时你不得不求助于备受诟病的“模糊安全”方法,并将密钥从存储在这里和那里的点点滴滴中组合起来。

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

我从secureRandom生成密钥,然后将密钥保存在密钥库(BKS)上。
对于密钥库,我使用随机、用户信息、设备信息和密码生成密码。

我发布的消息是,没有100%安全的解决方案来保存敏感数据。我不能让用户输入密钥,因为我想对用户隐藏该数据。谢谢您的时间。我发布的消息是,没有100%安全的解决方案来保存敏感数据。我不能让用户输入密钥,因为我想对用户隐藏该数据。谢谢你抽出时间。