使用android keystore进行对称密钥存储

时间:2019-01-02 11:01:28

标签: android encryption keystore android-keystore

我需要在Android设备上存储一些任意长度的对称密钥。 最安全的存储位置是KeyStore。 问题在于KeyStore无法保存任意密钥,而只能存储它生成的密钥。 只能从API 23开始生成对称密钥,而从18开始才能生成RSA密钥。这就是为什么通常建议在KeyStore中生成RSA密钥,而不是使用公共密钥对对称密钥进行加密,将对称密钥保存在首选项中,然后再使用私钥对其解密。

考虑到Android版本从21开始,我考虑了省略共享首选项而仅使用KeyStore的方法。 从安全角度来看,以下方案的合法性如何?

  1. 在密钥库中生成RSA密钥对。
  2. 使用keyStore.getCertificate(keyAlias).encoded(或哈希值)作为 对称密钥。

与私钥相比,攻击者更容易从KeyStore获得证书吗?也许攻击者可以发起一些虚假的SSL / TLS连接来检索它?除此之外,我无法想到一种将私钥用作对称密钥的方法(通过对其进行哈希处理或使用KDF),因为它无法以编码形式从KeyStore中检索。

任何帮助将不胜感激。

0 个答案:

没有答案