gpt4 book ai didi

Android Keystore, key 的安全值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:47:23 26 4
gpt4 key购买 nike

我目前正在研究使用 Android 4.3 中引入的安全/改进的 keystore 。

我想在这个 keystore 中存储一个加密 key ,这个 key 用于加密一个 sqllite 数据库和我的共享首选项中包含的值。

当我查看 SDK 中的 KeyStore 示例时,我看到以下内容:

public static final String ALIAS = "my_key"

如果有人能够反编译我的代码,他们将能够看到明文别名(= 从 keystore 中检索加密 key 的 key ),因此他们将能够获得对我的加密 key 的引用。我如何安全地管理我的 ALIAS?还是我错过了重点?

最佳答案

以下答案适用于 4.3+。此版本对 KeyStore 和 KeyChain 类进行了重大更改。参见 here了解更多信息

Keystore 访问受 UID 限制 - 您的应用程序在安装时分配了一个 UID。

这是阻止其他应用程序/进程访问您的 key 对/私钥的原因。 keystore 守护进程将执行此操作。

这可能需要一个设备 pin 来进行额外的加密。参见 http://developer.android.com/reference/android/security/KeyPairGeneratorSpec.Builder.html#setEncryptionRequired()

使用软件/硬件 keystore 的全部意义在于解决您描述的情况 - 您的应用程序中的任何硬编码数据都可以在反编译时读取,因此它是不安全的。

@Duncans 的回答使您似乎需要保留密码。我建议您使用 keystore 生成 key 对,然后使用它来加密 AES key ,您可以使用它来加密任何您想要的东西(比使用 RSA key 快得多)

您可以使用您的硬件/分类软件 keystore 支持的私钥,如 keyStore.getEntry(alias, null); 并且不传递任何类型的密码。

参见 SecretKeyWrapper.java一个很好的例子

关于Android Keystore, key 的安全值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20466432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com