2017-03-03 53 views
1

在我的android应用程序中,我需要安全地存储RSA,ECDH,AES和其他密钥。它们将通过使用用户输入的密码进行加密/解密。我的选择是:android密钥库,充气城堡UBER密钥库,加密并存储在共享首选项中。 Android密钥存储不是一个选项,因为它不使用自定义密码加密密钥。 UBER似乎是一个很好的解决方案,但是我在那里存储我的密钥时遇到了一些问题,所以我想仅仅用AES GCM对它们进行加密并放入共享偏好,这样会不太安全?或者甚至可能更安全,因为AES GCM比充气城堡使用的Twofish更好?是否将密钥存储在Bouncy Castle密钥库中比将密钥存储在共享首选项中更加安全?

+0

您能解释一下“Android密钥存储(...)不使用_custom_密码加密密钥”是什么意思?我刚刚偶然发现[this](https://stackoverflow.com/questions/43891059/storing-keystore-password-for-certificate-pinning-in-android),那里有建议可以存储由密码保护的密钥,但我不知道我们是否在这里的同一页 – Antek

回答

0

在GCM模式下使用AES-256进行加密,然后存储在共享首选项中应该没问题。 AES-256是NSA Suite B规范的一部分,与对称加密相比,AES-256的性能大致相当。 (https://en.wikipedia.org/wiki/NSA_Suite_B_Cryptography)该链接指出NSA期望很快发布一个新的套件建议来解决加密上的量子攻击这一事实 - 但在接近(3-5年)的期限内,这种攻击几乎不可行。