当一个 APK 有两个签名并且有一个签名的升级可用时会发生啥?

Posted

技术标签:

【中文标题】当一个 APK 有两个签名并且有一个签名的升级可用时会发生啥?【英文标题】:What happens when an APK has two signatures and an upgrade with one signature is available?当一个 APK 有两个签名并且有一个签名的升级可用时会发生什么? 【发布时间】:2014-02-01 17:48:22 【问题描述】:

我正在通过亚马逊应用商店和谷歌应用商店发布一个应用程序。

Amazon 使用 APK,然后使用他们自己的证书对其进行签名,但也为您提供了使用您的证书对修改后的 APK 进行签名的机会。

如果一个 APK 使用两个证书进行签名,而一个升级可用一个证书(即,对于最初来自亚马逊商店的安装,可以从 Google Play 获得升级)会发生什么?包管理器在升级之前是否需要两个证书的签名?或者任何单一的证书?还是其中一个证书优先?

【问题讨论】:

【参考方案1】:

我做了一些研究。

https://groups.google.com/forum/#!topic/android-security-discuss/npRHQzzgErM

Redux:在四年前,Google 还不知道。

http://www.escapades-in-security.com/blog/2012/12/android-apk-supersignature.html

Redux:提出了一种要求签名集匹配才能执行操作的模式,因此可能需要对升级进行双重签名。

还没有确定的,我开始认为亚马逊不会添加第二个签名,不知道我从哪里得到这个想法。 (也许我是从这里得到的:digitial signature amazon app store)

【讨论】:

是的,很确定他们不只是添加签名,而是删除了您的签名。所以一般不适用于亚马逊,但恕我直言,这仍然是一个有趣的问题。【参考方案2】:

我不久前通过电子邮件发送了 Amazon Appstore 开发支持,这是他们的答复:

在这种情况下,我们会审核您的提交并决定是否需要 你的签名。如果我们认为确实如此,我们将启用签名 功能并向您发送说明,但如果我们认为不是,我们会 用我们自己的签名覆盖您的签名。

所以他们确实删除了您的原始签名。自从收到电子邮件后,我现在只需提交我上传到 Google Play 的签名 APK 并让 Amazon 剥离证书并应用他们自己的证书。这节省了我为 Amazon 编译未签名 APK 的时间。

附带说明:我认为不可能在具有两个不同证书的同一设备上安装应用程序/包。因此,您不应该同时安装来自 Google Play 和 Amazon Appstore 的应用程序。不过我可能错了。

【讨论】:

这个亚马逊删除你的签名似乎是亚马逊 AppStore 的一个重大安全漏洞。这意味着最终用户或开发人员无法确保安装的应用程序确实来自未经修改的开发人员。这意味着亚马逊、恶意的亚马逊员工或破坏亚马逊服务器的黑客可能会将恶意软件注入您的应用程序,并且无法检测到。让亚马逊退出您的应用程序会成为一个单点故障,从而损害使用其商店的每个人。 @LieRyan 我没有考虑过这个方面。也许还有更多亚马逊支持没有告诉我的;我们缺少的更多信息。否则,这确实看起来很疏忽。

以上是关于当一个 APK 有两个签名并且有一个签名的升级可用时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

Gradle实现自动打包,签名,自定义apk文件名

Android应用程序版本升级时签名冲突

生成签名的APK文件

制作签名的apk时谷歌地图不显示

安卓签名是啥 安卓签名是sha1吗

如何将应用签名从 V1 升级到 V2?