【问题标题】:Storing a secret key on Android在 Android 上存储密钥
【发布时间】:2010-04-20 01:20:46
【问题描述】:

我的 Android 应用程序使用密钥来生成用于身份验证的令牌。有没有比把它放在数据存储中更安全的方法来存储它?我认为对于 iPhone,我们将其存储在钥匙串中。我知道 android.accounts.AccountManager,但这似乎使其他应用程序能够访问密码(如果用户选择了错误的选项),因此似乎不太安全。

【问题讨论】:

    标签: android


    【解决方案1】:

    Android(很遗憾)没有提供这样做的方法。我之前使用的方法是使用应用程序中生成的另一个密钥来加密这个令牌。

    您的应用密钥可以通过算法生成。但是,这仅与您的算法一样安全。一旦知道这一点,这相当于以纯文本形式存储令牌。

    【讨论】:

    • 我认为,如果他们真的想要,任何人都不会觉得很难找到该功能。但是,我认为这比读取纯文本密钥要付出更多的努力
    • 是的。它比其他任何东西都更安全。另一种方法是存储使用某些用户指定的密码加密的令牌。这是最安全的,但是,每次启动您的应用时,用户都必须通过应用验证自己的身份。
    • 它根本不安全。它相当于混淆。它将保护您免受随意浏览器和脚本小子的侵害,但不会保护您想知道答案的人。但是,如果您只担心脚本小子,那么这是一个不错的解决方案。
    • 你也可以看看这个:nelenkov.blogspot.com/2012/05/…
    • 这个答案已经过时了,见stackoverflow.com/a/43997737/311196
    【解决方案2】:

    您可以将密钥存储在应用程序的首选项中。由于 Android 系统的底层文件系统限制,这将保护密钥不被其他应用程序读取。

    但这不会保护密钥不被用户自己读取。

    【讨论】:

    • 没错,但如果你这样做,我可以在一分钟内拿到你的钥匙!试试apktool,你可以得到整个strings.xml。刚刚在一个著名的 android 社​​交应用程序上完成了它,并获得了他们的 oauth 消费者密钥和秘密、facebook 秘密、谷歌分析 ID,......花了我 2 分钟。
    【解决方案3】:

    如果您可以运行 apk 工具,则它处于调试状态,您将要根设备。越狱后iOS中的钥匙串不再有任何保护

    【讨论】:

    • 系统不安全是用户的错
    【解决方案4】:

    您可以通过使用Android Keystore System 生成的密钥对其进行加密来存储秘密数据,然后根据需要存储结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2014-06-09
      相关资源
      最近更新 更多