如何安全地存储在Android应用程序凭据(密码)?如何安全地存储在Android应用程序凭据(密码

2019-05-17 16:09发布

我想存储用于在,我在一个安全的地方开发金融应用程序签名的密码。 做一些网上冲浪后,我发现下面的选项,但他们每个人都有一定的缺陷。

1)钥匙串。
只有在OS 4版本可用。

2)共享偏好。
它存储在即使如果我对数据进行加密,然后加密密钥可以通过反编译的应用程序代码被泄露纯文本数据。

3)访问密钥库守护进程,并在其中存储凭证。
( http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html )需要一个新的密码要记住。

请建议我一个更好的办法,以确保像IPhone钥匙链的Android应用程序凭据信息。

Answer 1:

在没有iPhone在Android系统目前钥匙扣等同。 如果你想保留一些秘密,不将其存储在设备上。 或者至少,不存储密钥/密码,它与设备上的加密。 就那么简单。

另外:

1)即使在ICS,你不能直接使用Keychain存储应用程序机密(见3的博客文章))

2)这仅仅是植根手机出了问题,或者如果有人有对设备的物理访问。

3)这是一个很大更好地记住一个密码,保护你们所有的凭证,不是试图记住多个密码。 此外,在ICS,没有单独的密码,所述凭证存储由设备解锁密码保护。



Answer 2:

散列是溶液不存储凭证如在共享的偏好或任何介质纯文本。

只是盐和哈希密码,然后就可以继续将其存储在任何sharedPreferences或一些嵌入式数据库。

下面是它的工作原理:

线上

  1. 普通(非散列)密码被发送到服务器,在成功登录身份验证和授权。

  2. 所述盐既可以生成并从服务器返回给客户端,或者可以在客户机中产生

  3. 然后将其存储盐和散列密码并储存起来。

离线

  1. 我们将使用我们存储的盐散列用户输入的密码

  2. 我们将与我们保存成功登录后哈希比较

  3. 如果两者相等的,那么我们将让否则我们不会让用户的用户。

好处:

  1. 所以,现在你不用担心版本的兼容性。

  2. 即使设备是植根它是如此难以暴力破解哈希值。

  3. 即使有人反编译/破解应用程序它是如此难以逆转工程师



文章来源: How to securely store credentials (password) in Android application?