android - 如何防止使用泄露的 keystore 和密码?

标签 android android-keystore android-security

问题

keystore 及其密码用于对应用进行签名,然后 Android 使用该应用来识别开发者。如果泄露,有人可以代表我们更新相关应用程序。即使此人无权访问我们的 Playstore 帐户,他们仍然可以将其发布到其他地方

我们随处可见,“永远不会丢失它”“永远不会泄漏它” 等等。但是如果我这样做了呢?当 keystore 及其密码泄露时,我找不到需要遵循的步骤,因此我可以保护我们的用户和我们的应用程序。

问题

即使我使用另一个 appid 发布同一个应用,我如何保护仍在使用旧应用的用户?这里有一些最佳做法吗?

最佳答案

不幸的是,似乎没有一种很好的方法可以将现有应用程序迁移到新的签名 key 。这可能是最好的,因为最佳实践仍然是 a) 拥有一个强 key b) 尽可能保持您的私有(private)发布 key 的私密性。我找到了 this article概述了一种可行的(但对用户不友好的方式)从 1024 位迁移到 4096 位 key ,这似乎适合您的用例。由于您仍然拥有受感染应用的有效签名 key ,因此您可以尝试通过更新将其从其中迁移出去。

  1. 生成新的签名 key RSA 4096
  2. 使用 TrustedIntents 和 Checkey 将为您生成的新 key RSA 4096 的签名 pin 更新第一个应用 App1,使用导出私有(private)数据的机制
  3. 使用不同的包名称 App2 创建应用的新版本
  4. 使用新 key RSA 4096 为 App2 签名
  5. 向 App2 添加用于从 App1 接收用户数据的方法,包括旧签名 key RSA 1024 的签名引脚,以便与 TrustedIntents 一起使用
  6. 将 App2 发布到应用商店
  7. 从 App1 提示用户安装 App2
  8. 从 App1 运行和导入数据
  9. App2 提示用户卸载 App1

关于android - 如何防止使用泄露的 keystore 和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656359/

相关文章:

android - 推送配置 API(TapAndPay 库)返回调用包未验证

android - 使用 OkHttp 缓存 POST 请求

java - 线程优先级 - 'unit test'

android - 如何使用 Dexguard 混淆 list 文件中引用的类?

java - 如何防止 Admob 广告 ID 被 Android 黑客应用程序泄露

cordova - 使用适用于 Android 的 Cordova 5.3.3 cli 但无法在 Google Play 商店上传 apk?

android - 应用程序意外停止,请重试错误

android - 无需卸载 [INSTALL_FAILED_UPDATE_INCOMPATIBLE] 即可将 Android Native 应用更新为 Flutter

java - android onKeyDown onKeyUp 测量时间

java - 不知道密码时如何重置 keystore ?