公开 GCM 发件人 ID 的后果是什么?

场景:假设通过对文件进行反向工程,攻击者获取了 App 中使用的推送注册服务。攻击者开发了一个类似的虚假应用程序,该应用程序具有相同/不同的软件包名称,并且已上传到与Google Play不同的应用程序商店中。.apkSENDER ID

我的问题:他/她可以对应用程序使用相同的发件人ID吗?这对安装该虚假应用程序的用户有什么影响?

相关问题:谷歌云消息安全问题似乎有点类似。Android GCM的答案:相同的发件人ID为更多应用程序问题提供了有价值的信息。阅读这两个公认的答案,结论似乎是这是绝对可能的,这就是为什么建议不要在推送消息中使用敏感数据的原因。

但这似乎不是解决问题的方法。我无法理解上述安全失效的影响。


答案 1

发送方 ID(也称为 Google API 项目 ID)不与唯一的应用程序包名称相关联。实际上,多个应用程序可以使用相同的发件人 ID 注册到 GCM,这将允许使用相同的 API 密钥向所有这些应用程序发送 GCM 消息。当然,每个应用程序将具有不同的注册ID(即使在同一设备上也是如此)。

如果有人知道您的发件人 ID,他们可以使用该发件人 ID 注册到 GCM,但在不知道 API 密钥的情况下,他们将无法向虚假应用或真实应用发送 GCM 消息。当他们注册到 GCM 时,GCM 会收到其虚假应用的程序包 ID。因此,如果你向真实应用的注册 ID 发送消息,则该消息不会到达假应用。为了使虚假应用程序从您的服务器获取消息,它需要将自己的注册ID发送到您的服务器,并欺骗您的服务器相信它是真正的应用程序。在我们的服务器应用程序中,您必须提及我们的API密钥。如果要发送任何需要的通知。


答案 2

他们将无法使用您的 GCM 发件人 ID 发布通知。

请记住,在获取发件人 ID 时,还必须提交应用程序的包名称和发布签名密钥的 SHA-1 签名。该签名绑定到 GCM 发件人 ID,以便只有由您的发布密钥签名的应用程序才能注册和接收 GCM 通知。

Google Play也不允许发布具有重复程序包名称的应用,因此任何人都无法使用您的程序包名称创建已在Play商店中的虚假应用程序。

但是,没有什么是100%安全的。我认为黑客也可以找出您的SHA-1签名密钥,并以欺骗系统认为该应用程序由您的发布密钥签名的方式破解APK。我见过应用程序以这种方式“破解”,以规避Android许可库。这可能会欺骗GCM服务器,让他们认为伪造的应用程序有权接收GCM消息。但是,仍然不允许将“破解”的应用程序发布到Google Play,因此合法用户获得它的风险非常小。


推荐