android - 如果我从应用程序 A 将私钥存储在 KeyStore 中,是否可以从应用程序 B 检索相同的 key ?

标签 android cryptography private-key android-keystore android-security

我正在处理 Android多模块(多个应用程序)项目并遇到了一个用例,我必须保存一些所有这些应用程序都可以访问的 secret 信息。我的想法是使用保存在 KeyStore 中的私钥对 secret 信息进行加密。 ,并将此信息保存在我计划存储在设备中的文件中(不是外部存储)。我的问题是,我能否在 KeyStore 中访问此私钥?从另一个应用程序,然后用它来解密保存在设备中的 secret 信息?

我在看 Android 的 KeyStore documentation ,如果我理解正确,我可以使用 KeyStore用于保存加密 key 并在同一应用程序中使用它们的 API。还有KeyChain documentation说我可以在系统中的多个应用程序中使用这些加密 key 。我对如何组合这两个 API 并使其适用于我的用例感到非常困惑。任何帮助表示赞赏。谢谢你。

最佳答案

My idea is to encrypt the secret information using a private key



您使用公钥加密,而不是使用私钥。私钥用于解密。

如果您为所有应用程序创建公钥,那么您可以使用这些应用程序的单独私钥解密。当然,您必须事先信任这些应用程序和每个应用程序的公钥对;我对您的设置不够熟悉,无法在这方面提出任何建议。

老实说KeyChain API 似乎更多的是关于 TLS 身份验证,我认为它不适合您的用例。 choosePrivateKeyAlias 的 API例如,只讨论身份验证和请求 key 链的服务器。

keystore 原则上可以是分布式的。或者,当然,要访问/解密它们,您仍然需要在每个应用程序中分发一个 key 。您可以分享特定 signed applications only 的信息它似乎。可能只是在不加密的情况下私​​下共享数据的安全性已经满足了您的用例吗?毕竟, key 管理很棘手。

警告:我对 Android 安全模型并不十分熟悉;希望我对密码学和安全性的一般知识能够引导您朝着正确的方向前进。

关于android - 如果我从应用程序 A 将私钥存储在 KeyStore 中,是否可以从应用程序 B 检索相同的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991173/

相关文章:

android - Nexus 7 上的 droid-VNC 服务器显示嘈杂的白屏

.net - dotNet 2.0 中哪种 FIPS 兼容算法更好?

c# - 在 Mono C# 中生成 key 对并使用它加密数据

algorithm - RSA:使用扩展欧几里德算法计算私钥

android - Wifi P2P 服务发现间歇性工作

android - 数据绑定(bind)是否会从实现 Observable 的 ViewModel 中取消注册监听器?

android - 使用 GSON 解析 JSON 数据

java - 让 java IAIK PKCS11 包装器适用于 nfast

linux - Guacamole 0.9.3 SSH 私钥连接到 AWS EC2 Linux 实例

windows - CSP如何找到证书的私钥来进行加密操作?