Android 应用程序中 ECC 密钥的保护

2024-01-07

我已经使用 ECC 密钥对完成了 Android 应用程序。当我去年开发它时,我想在Android Keystore中创建ECC密钥。不幸的是,这个 ECC 密钥用于生成会话密钥,这要归功于ECDH https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman, and ECDH https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93HellmanAndroid Keystore 不支持(这是我在这里所说的:ECDH 以及 Android 密钥存储中的密钥 https://stackoverflow.com/questions/51950587/ecdh-with-key-in-android-key-store )

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

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

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

对于我来说,使用 ECDH 是没有商量余地的那么我需要什么解决方案来保护我的 ECC 密钥对呢?

Thanks


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

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

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

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

  • 使用用户提供的密码以及 AndroidKeyStore AES 密钥保护您的密钥
  • 使用 SafetyNet API 检查设备完整性:https://developer.android.com/training/safetynet/attestation https://developer.android.com/training/safetynet/attestation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序中 ECC 密钥的保护 的相关文章

  • 将roottools.jar导入Android Studio

    我正在尝试从这里导入 roottools https code google com p roottools https code google com p roottools jar 文件 到 Android Studio 项目 到目前为
  • 生产中偶尔会发生 android.webkit.WebView 类膨胀错误

    我的应用程序在 Google Play 上 它在大多数设备 数千个用户 上运行良好 但在极少数情况下 占每日活跃用户百分比的一小部分 我得到Error inflating class android webkit WebView当我为我的片
  • Android 布局不需要的填充

    所以我有这个布局文件 如下 正如您所看到的 没有填充或边距 dimen xml 文件也没有任何填充 边距 最后 我根本不以编程方式更改布局
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • NumberPicker 的格式化值在单击时消失

    我的 NumberPicker 在setDescendantFocusability FOCUS BLOCK DESCENDANTS 模式和setWrapSelectorWheel false 已关闭 我用一个简单的格式化程序格式化了我的
  • Notification.Builder 中 setGroup() 的用途是什么?

    我对目标的理解有些困难setGroup http developer android com reference android app Notification Builder html setGroup java lang String
  • 无论如何,要控制宋何时选择Android.bp,何时不选择?

    使用新的构建系统 即 Soong 安卓取代Android mk with Android bp 还有 Android Q 及以上版本 Soong将选择所有Android bp文件 无论所有文件都存在于何处 早些时候 对于 2 级和 3 级模
  • AOSP 中 android.Build.SERIAL 何时何地生成?

    我知道android Build SERIAL是在第一次设备启动时生成的 但我无法准确定位位置和时间 我正在建造AOSP Jelly Bean Android平板电脑 nosdcard 第二个问题 这个是序列号吗 really对所有人来说都
  • Flutter Spotify Api 身份验证

    我需要在使用 Spotify api 的 Flutter 应用程序中对用户进行身份验证 我使用 flutter web auth 打开 WebView 并让用户在那里登录 我无法返回应用程序 在 Spotify 仪表板中 我将回调 Uri
  • Android 中带有透明背景的 ImageButton [重复]

    这个问题在这里已经有答案了 我已经按照这篇文章在android中制作ImageButton 安卓图像按钮 https stackoverflow com questions 2283444 android image button 图像出现
  • 如何在虚拟机 VirtualBox 上运行 Android-x86 4.2 iso?

    我想用Android x86测试和调试我的应用程序 我之前成功尝试过其他版本的Android x86 但是关于android x86 4 2有一个错误 所以我在这里问我的问题 因为它可能会发生在其他人身上 我安装了oracle VM vir
  • 以编程方式应用样式资源

    我没有找到一种以编程方式做到这一点的方法 所以我在这里发布这个问题 我也没有找到与此相关的任何问题 我有一个资源样式 在 res values styles xml 中定义 我想做的是使用 java 将这种样式应用到我正在操作的 View
  • popupBackground 与 Material Design 相关的问题

    我一直致力于将我的应用程序更新为 Material Design 我有一个使用选项卡的应用程序 由于某种原因 每当我使用 android popupBackground 设置下拉菜单颜色时 它就会崩溃 我设置了一个带有选项卡的默认项目并使用
  • 活动组代码示例

    有人可以给我一些使用活动组的示例代码吗 我的应用程序中有一些按钮 我想将活动应用于这些按钮 目前我正在使用 setVisibility 但我被告知活动组将是更好的选择 这是另一个ActivityGroup 示例项目 http richipa
  • 使用 cordova cli 构建时的 Android 安装位置

    我正在使用 cordova CLI 工具构建一个大型 cordova phonegap 应用程序 我需要 AndroidManifest xml 文件中的 installLocation 具有 installLocation auto 或p
  • 使用 AndroidX ExifInterface 从图像中检索 GPS EXIF 数据?

    我的目标是 Android 13 并使用新的照片选择器 https developer android com training data storage shared photopicker检索图像 例如 val photoPicker
  • 如何在 Android 中保存 Edittext 中的文本而不丢失文本的粗体、斜体等功能

    我想做的就是从 Edittext 中获取文本 该文本具有粗体和斜体等功能 并将其保存在文本文件中 但是当我读回并显示它时 这些功能丢失了 它们不显示 如何通过将文本保存在文本文件或任何文件中来保持丰富的功能 您可以使用Html toHtml
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在

随机推荐