2

我已经使用 ECC 密钥对完成了一个 Android 应用程序。当我去年开发它时,我想在 Android Keystore 中创建 ECC 密钥。不幸的是,由于ECDH,此 ECC 密钥用于生成会话密钥,并且Android Keystore 不支持ECDH(这就是我在这里所说的:ECDH with key in Android Key Store

我遵循了建议:我在 Android KeyStore 中创建了一个 AES 密钥,并在将 ECC 密钥存储在 SharedPreferences 之前使用它来加密它。Android KeyStore 确保无法提取 AES 密钥,并且只有我的应用程序可以使用它来解密 ECC 密钥。

我现在有一个问题,希望得到您的建议:

如果有人在有根手机上安装我的应用程序,获取 APK,在读取和解密后反编译并修改它以打印 ECC 密钥怎么办?我没有这个技能,但我猜有些黑客有。如果可行,则意味着我使用的保护无效。

在我的情况下,使用 ECDH 是不可协商的,那么我必须使用什么解决方案来保护我的 ECC 密钥对?

谢谢

4

1 回答 1

2

除非有安全硬件支持,否则无法确保密钥不可提取。

而对于有根手机壳,攻击者无需修改和重新安装您的 APK 即可使用您的密钥。该设备上具有 root 权限的任何应用程序都可以挂接到您的应用程序并像它一样运行。即使在受信任的环境中,他们也可以使用您的硬件支持密钥。他们唯一不能做的就是从设备中提取密钥。

您可能想阅读关于 TEE 和 AndroidKeyStore 的相对较旧的论文:http ://www.cs.ru.nl/~joeri/papers/spsm14.pdf 。特别是“设备绑定结果概述”

为了减少攻击面,您可以:

于 2019-02-21T15:59:18.813 回答