【发布时间】:2020-09-02 12:40:30
【问题描述】:
作为this question 的后续行动,我试图弄清楚是什么阻止了 Google 修改它签名和分发的应用程序。无论我们是分发 APK 还是 App Bundle,App Signing 服务都会剥离我们拥有的任何签名,而 Google 会对它分发的 APK 进行签名。对于 App Bundle,这将产生多个 APK,类似于 bundletool 生成的内容。
但由于 APK 只是一个包含已编译代码和资源的 ZIP 存档,因此 Google 似乎可以在签名之前对其进行修改,包括添加或替换代码。
我们不会在您不知情和同意的情况下修改和分发您的应用程序代码
和:
如前所述,Play 不会在您不知情和同意的情况下修改您的应用程序的功能。
值得注意的是,Google 使用了“不”和“不会”...而不是“不能”和“不能”。事实上,在同一篇文章中,我们看到:
对于作为应用程序包上传的应用程序,我们将通过引入所谓的源标记来提高这种安全性。此源元数据由
bundletool插入到应用的清单中。
所以,我们知道至少有一项修改,尽管是元数据。
另外, the Amazon AppStore for Android modifies APKs before re-signing them:
无论您是否选择应用 Amazon DRM,Amazon 都会使用代码封装您的应用程序,使该应用程序能够与 Amazon Appstore 客户端进行通信,以收集分析、评估和执行计划政策,并与您共享汇总信息。即使您选择不应用 DRM,您的应用也会在启动时始终与 Amazon Appstore 客户端通信。
亚马逊会删除您的签名并使用您独有的亚马逊签名重新签署您的应用程序,该签名不会更改,并且对于您帐户中的所有应用程序都是相同的。
亚马逊一直在做这种事情for a decade。
似乎 Google 应该拥有与 Amazon 相同的技术能力。
那么,我是否遗漏了什么可以阻止 Google 添加或修改它重新签名和分发的 APK 中的代码?
【问题讨论】:
-
我认为您说的很对:通过使用 Google 的应用签名服务,您相信他们不会进行任何恶意更改。也就是说,即使您自己进行签名,您也已经信任 Google,因为他们还控制着 (IIUC) 负责在安装前验证应用签名的 Play 商店应用。
-
@Thomas:“他们还控制着 (IIUC) 负责在安装前验证应用签名的 Play 商店应用”——这是由操作系统处理的,而不是分发渠道客户端。
-
很公平。从某种意义上说,谷歌也控制着操作系统;)(是的,我知道它是 OSS 并且手机运营商可能是编译最终在你手机上的二进制文件的人,所以他们有最后的决定权,但谷歌仍然有一个公平的这里的电量。)
-
@Thomas:“移动电话运营商可能是编译最终在你手机上的二进制文件的人”——它将是设备制造商进行编译。对于由运营商制造和分销的设备,运营商就是制造商,但这种模式不像以前 AFAIK 那样普遍。
-
@CaptainKenpachi:就这个问题而言,我并不真正关心其他攻击媒介,只关心这个。
标签: android android-app-signing