我已经使用ECC密钥对完成了Android应用程序。当我去年开发它时,我想在Android Keystore中创建ECC密钥。不幸的是,由于ECDH,此ECC密钥用于生成会话密钥,而Android密钥库不支持ECDH(这就是我在这里所说的ECDH with key in Android Key Store)>
我遵循了建议:我在Android KeyStore中创建了一个AES密钥,并在将其存储在SharedPreferences中之前使用它来加密ECC密钥。 Android KeyStore确保无法提取AES密钥,并且只有我的应用程序可以使用它来解密ECC密钥。
我现在有一个需要您提出建议的问题:
如果有人在根电话上安装了我的应用程序,获取了APK,对其进行了反编译和修改以在读取并解密该密钥后将其打印出来,该怎么办?我没有这个技能,但我想有些黑客可以。 如果可行,则表示我使用的保护措施无效。
在我的情况下使用ECDH是不可商议的,那么我必须采用什么解决方案来保护我的ECC密钥对?
谢谢
答案 0 :(得分:1)
除非有安全的硬件支持,否则无法确保密钥不可提取。
对于植根的手机壳,攻击者无需修改并重新安装APK即可使用您的密钥。该设备上具有root权限的任何应用程序都可以挂接到您的应用程序,并且行为类似于它。即使在受信任的环境中,他们也可以使用您的硬件支持密钥。他们唯一不能做的就是从设备中提取密钥。
您可能想阅读有关TEE和AndroidKeyStore的相对较早的文章:http://www.cs.ru.nl/~joeri/papers/spsm14.pdf。尤其是“设备绑定结果概述”
为了减少攻击面,您可以: