我正在处理 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/