如何防止泄露密钥库和密码的使用?

时间:2016-09-23 08:38:06

标签: android android-keystore android-security

问题

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

我们随处可见,“永不丢失”“永不泄漏”等等。但是,如果我这样做了怎么办?当密钥库和密码泄露时我无法找到所需的步骤,因此我可以保护用户和应用程序。

问题

即使我使用其他appid发布相同的应用程序,如何保护仍旧旧用户的用户?这里有最佳做法吗?

2 个答案:

答案 0 :(得分:9)

不幸的是,似乎不是将现有应用程序迁移到新签名密钥的好方法。这可能是最好的,因为最好的做法仍然是a)拥有一个强密钥和b)尽可能保密私人发布密钥。我发现this article概述了一个可行的(但用户不友好的方式)从1024位迁移到4096位密钥,这似乎适合您的用例。由于您仍然拥有受感染应用的有效签名密钥,因此您可以尝试通过更新将其迁移远离它。

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

答案 1 :(得分:2)

不幸的是,这个问题没有简单的答案。如上所述,最常见的解决方案是创建一个新的应用程序,告诉用户切换和迁移数据。

然而,在Lollipop +上,还有另一种可能的解决方案。您可以使用升级密钥更改应用程序的签名密钥,这样可以省去创建第二个应用程序或执行数据迁移的麻烦。不幸的是,Play目前不支持此功能,因此它只适用于场外应用程序,Kitkat上的用户运气不佳。