在Android中存储钥匙



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

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

有一个标题为:

的部分

在钥匙扣或Android钥匙店提供商之间进行选择

但是,我不确定我还应该选择什么来获取Escemest解决方案。

请帮助我。

如页面所述:

当您想要系统范围的凭据

时,请使用钥匙扣API

钥匙扣API的目的是使用用户名/密码凭据来获得该应用程序(以及潜在的其他应用程序)可以使用的"令牌"。钥匙扣还经常用于同步私人信息(例如邮件)。

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

要使用密钥库,您需要使用公共密钥生成证书,并在密钥库中使用私钥保存。密钥库使用用户锁屏模式/引脚/等。(如果存在)加密私钥。请注意,这有时会导致一个令人讨厌的事实,即只要用户不擦除其证书存储或删除应用程序(在Android< = 5),因此,请确保删除该应用程序的锁定屏幕。当不再需要密钥时证书。密钥库将在硬件模块中保存专用密钥(如果存在),因此很难提取私钥,或者其他应用程序使用私钥加密数据。仍然不是100%的万无一失,因为找到了新的漏洞,并且根可以(以某种方式)绕过这种额外的保护层。但这仍然比将您的私钥保存在文件中更好。

同样,如果您想更深入地了解所有这些方式在"引擎盖下",我建议阅读本文有关Android中的密钥库和其他安全机制的详细信息。

最新更新