android - Android 应用程序中 ECC key 的保护

标签 android cryptography keystore android-keystore ecdh

我已经使用 ECC key 对完成了 Android 应用程序。当我去年开发它时,我想在Android Keystore中创建ECC key 。不幸的是,这个 ECC key 用于生成 session key ,这要归功于 ECDH ,和 ECDH Android Keystore 不支持(这是我在这里所说的:ECDH with key in Android Key Store)

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

我现在有一个问题需要您的建议:

如果有人在已 root 的手机上安装我的应用程序,获取 APK,反编译并修改它以在读取和解密后打印 ECC key ,该怎么办?我没有这个技能,但我猜有些黑客有。 如果可行的话,说明我所使用的防护措施并不有效。

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

谢谢

最佳答案

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

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

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

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

关于android - Android 应用程序中 ECC key 的保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54789464/

相关文章:

android - 错误react-native运行Android应用程序:instalDebug

tomcat - Keytool 无法链接导入的 PKCS12 证书?

java - 两个不同的私钥

java - Jsoup 获取 Android 应用程序上的所有 html 数据,但无法获取 Java 控制台应用程序上的所有 html 数据

java - 在android模拟器中安装apk时出错

android - 如何在android中一次缩放多个图像?

winapi - 使用 CryptUIWizDigitalSign API 签署 appxbundle

ios - 对于使用 CCCrypt() 的 AES128, key 是否可以超过 128 位?

c# - 对称加密加密很多小块

java - RSA key 对生成并存储到 keystore