我使用ECC密钥对完成了一个Android应用程序。当我去年开发它时,我想在Android Keystore中创建ECC密钥。不幸的是,这个ECC密钥用于生成会话密钥,这要归功于ECDH,并且Android Keystore不支持ECDH(这是我在这里所说的:ECDH with key in Android Key Store)
我遵循了建议:我已经在Android KeyStore中创建了一个AES密钥,并且我已经使用它来加密ECC密钥,然后将其存储在SharedPreferences中。 Android KeyStore确保无法提取AES密钥,并且只有我的应用程序可以使用它来解密ECC密钥。
我现在有一个问题,我希望你的意见:
如果有人在root用户手机上安装我的应用程序,获取APK,取消编译并修改它以在读取和解密之后打印ECC密钥怎么办?我没有这个技能,但我猜有些黑客会这样做。如果这是可行的,这意味着我使用的保护效率不高。
在我的情况下使用ECDH是不可协商的,那么我有什么解决方案来保护我的ECC密钥对?
谢谢
除非得到安全硬件的支持,否则无法确保密钥是不可提取的。
对于root手机套,攻击者无需修改并重新安装APK即可使用您的密钥。具有root权限的设备上的任何应用都可以挂钩到您的应用中并且行为类似。即使在受信任的环境中,他们也可以使用硬件支持的密他们唯一不能做的就是从设备中提取密钥。
您可能想阅读有关TEE和AndroidKeyStore的相对较旧的论文:http://www.cs.ru.nl/~joeri/papers/spsm14.pdf。特别是“设备绑定结果概述”
为了减少攻击面,您可以: