【问题标题】:How can I securely store store sensitive date on an Android?如何在 Android 上安全地存储敏感日期?
【发布时间】:2014-09-30 16:21:27
【问题描述】:

我需要一个选项来存储通过 SSH 隧道通信的应用程序的身份验证密钥或密码。在不需要用户输入密钥的情况下,最安全的存储方式是什么。

我可以从用户的谷歌帐户中获取一些独特和秘密的东西,用作存储偏好的加密密钥吗?这样一来,恶意方将需要访问用户的谷歌帐户和加密的偏好才能造成任何伤害。

【问题讨论】:

  • 访问偏好只能在有根设备上进行
  • 使用标志Content.MODE_PRIVATE写入内部存储的文件默认加密,只能由您的应用程序读取,或者(我认为)共享相同Manifest.share.user.id的apk。这种保证还不足以满足您的需求吗?

标签: java android security encryption secret-key


【解决方案1】:

SharedPreferences 基本上类似于 cookie,它们被广泛用于身份验证。仅使用密码进行首次身份验证,稍后使用生成的令牌。

如果您担心有人会丢失他们的手机,您可以添加远程销毁数据或使用密码对其进行加密的选项,尽管反向哈希是可能的。

【讨论】:

  • 与 SSH 隧道令牌最接近的是私有公钥身份验证,我们不确定我们的所有用户是否都有权进行公钥身份验证或添加公钥。跨度>
【解决方案2】:

听起来Google OAuth 将非常适合您的情况,同时将用户令牌存储在共享首选项中并使用 SSL。

如果用户设备被获取 root 的恶意方入侵,那么您应该假设他们已检索到设备上的任何令牌。也就是说,令牌通常具有有限的有效期,如果您怀疑它们已被盗用,可以将其撤销。

there's a pretty good answer 已针对 SO 提出了类似问题。

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2012-03-28
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多