【问题标题】:Storing keys in Android在 Android 中存储密钥
【发布时间】:2016-11-23 21:40:50
【问题描述】:

我正在为 Android 编写应用程序,我必须存储两个用于加密/解密某些消息的密钥。 (我必须存储私钥 RSA)。我读过:

https://developer.android.com/training/articles/keystore.html#WhichShouldIUse

还有一段标题为:

在 Keychain 或 Android Keystore Provider 之间进行选择

但是,我仍然不确定应该选择什么来获得最安全的解决方案。

请帮帮我。

【问题讨论】:

    标签: android security keystore android-keystore android-security


    【解决方案1】:

    正如页面所说:

    当您需要系统范围的凭据时使用 KeyChain API

    KeyChain API 的目的是使用用户名/密码凭据来获取此应用(以及潜在的其他应用)可以使用的“令牌”。 KeyChain 还经常用于在后台同步私人信息(如邮件)。

    但在您的情况下,听起来您只想存储一个私有 RSA 密钥。在这种情况下,Keystore 是一个更好的解决方案。请注意,密钥库仅适用于 4.3+ 设备,这是因为它使用硬件支持的安全存储(如 ARM Trustzone 和其他安全执行环境)来存储其私钥(如果存在硬件模块)。此功能是在 Android 4.3 中添加的。

    要使用 Keystore,您需要使用公钥生成证书并将其与私钥一起保存在 Keystore 中。密钥库使用用户锁屏模式/pin/等。 (如果存在)加密私钥。请注意,这有时会导致令人恼火的事实,即只要用户不擦除其证书存储或删除应用程序(在 Android exploits are found 和 root 可以(以某种方式)绕过这个额外的保护层。但它仍然比将您的私钥保存在文件中要好。

    此外,如果您想更深入地了解这一切是如何“在幕后”工作的,我建议您阅读this paper,其中详细介绍了 Android 中的密钥库和其他安全机制。

    【讨论】:

    • 好帖子,谢谢!一个问题,正如引用的论文提到的棒棒糖的变化:你知道密钥库的加密是否在更高版本的android中得到了改进?我找到的可用信息在这一点上不是很清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2014-06-09
    • 1970-01-01
    相关资源
    最近更新 更多