我需要在我的Android应用中存储用户凭据。应用程序将HTTP请求发送到服务器,凭据用于对该服务器进行身份验证。
我知道很多文章和关于这个主题的讨论已经存在。但是,考虑到以下具体要求,我想请求帮助:
请注意,服务器提供的自定义身份验证机制不遵循任何标准。
我想说这些是非常强大的要求,它们已经影响了一些安全问题。但是,我们假设这些条件无法更改,Android应用必须满足这些条件。
以下是我要做的事情:
SQLiteOpenHelper
包中继承android.database.sqlite
)。android:allowBackup
设置为false
并对应用程序进行模糊处理。我知道有物理访问设备的攻击者可以获取凭据。我也知道,一些建议的步骤对于这样的攻击者来说只是一个小障碍。
但是,如果在问题开头提到要求,我还能做些什么来提高安全性?
感谢。
答案 0 :(得分:1)
如果我在你的位置,我会使用SQLCipher来存储用户凭据。这是一种创建和使用加密(使用AES)sqlite
数据库的简单方法,而且麻烦极少。
当然,这并不能解决整个问题。您仍然需要一种安全的方法来生成/存储所述数据库的密钥。如果我推荐任何选项,我建议要求用户在打开应用程序时输入密码/ PIN,并使用所述密码/ PIN作为数据库密钥。
另一种方法是在应用安装后生成唯一的随机密钥,并将其存储在the Android Keystore中。真正专注/资金充足的攻击者仍然可以检索密钥,但仅限于该设备上的数据库。