我使用ECC密钥对完成了一个Android应用程序。当我去年开发它时,我想在Android中创建ECC键。不幸的是,多亏了ECDH,这个ECC密钥被用来生成会话密钥,而ECDH不受Android的支持(这就是我在这里所说的:Android密钥存储中的带密钥ECDH )。
我遵循了建议:我在Android KeyStore中创建了一个AES密钥,并且在将它存储到SharedPreferences中之前,我使用它来加密ECC密钥。Android KeyStore确保不能提取AES密钥,并且只有我的应用程序可以使用它解密ECC密钥。
我现在有一个关心的问题,我想听听你的建议:
如果有人在根手机上安装我的应用程序,获取APK,卸载并修改它,以便在读取和解密后打印ECC密钥,该怎么办?我没有这个技能,但我想有些黑客会这么做。如果这是可行的,那就意味着我所使用的保护是没有效率的。
在我的例子中,使用ECDH是不可协商的,所以我有什么解决方案来保护我的ECC密钥对?
谢谢
发布于 2019-02-21 15:59:18
除非有安全的硬件支持,否则无法确保密钥是不可提取的。
对于有根的电话,攻击者不需要修改和重新安装您的APK才能使用您的密钥。该设备上任何具有根权限的应用程序都可以与您的应用程序挂钩,并表现得像它一样。即使在受信任的环境中,他们也可以使用您的硬件后台密钥。他们唯一不能做的就是从设备中提取钥匙。
您可能想读一篇关于TEE和AndroidKeyStore:http://www.cs.ru.nl/~joeri/papers/spsm14.pdf的相对较旧的论文。特别是“设备绑定结果概述”。
为了减少攻击面,您可以:
https://stackoverflow.com/questions/54789464
复制相似问题