-->

如何Android的应用程序/签名验证的工作?(How does Android's app

2019-06-25 07:31发布

我想前面加上两件事情这个问题,所以我可以缩小在我的实际问题是:

一)我以前做软件开发,虽然从来没有为Android

B)我熟悉PKI和加密和哈希和数字签名等等等等

话虽这么说,我无法跟踪在哪里和Android如何验证应用程序的创作者的更多信息。 我听说过很多不同的信息,所以我想合成,以获得工作流程的一个更好的主意。

我知道,每一个应用程序开发者得到他们自己的私有/公共密钥对,他们通过散列APK(与SHA-1的大部分时间,如果我没有记错),签上自己的应用程序和你去。 你上传和(我相信)公钥云在APK中META INF。 这一点我明白了。

我的问题是如何,这涉及在用户下载应用程序本身。 我知道手机进行检查,以确保应用程序进行了有效签名,而且签名也有关于作者和等信息包括在内。 但是,我也看到了那个应用程序是自签名和谷歌播放(或任何他们现在叫市场)没有实现CA,并没有身份认证? 但我的问题是什么,然后停止,人们在另一个开发商名称上传应用程序(众包除外)?

如果手机只检查有效签名这是否意味着认证的唯一手段,当应用程序被上传完成? 如果是这样的话如何应用市场的检查呢? 它是常用的 - 使用在文件中的私钥和验证签名? 抑或是开发商必须为市场提供自己的私钥进行身份验证?

Answer 1:

总之,Android和谷歌播放基本上不关心什么是在实际证书。 谷歌游戏确实会验证它,并检查它是否是有效期为30年或更长时间,但他们真的不使用(至少目前,据我所知)在证书的实际信息。 你可以在CN使用自己的名字/公司的名字,但没有人会验证这一点,用户不会看到此信息的。 什么Android为是:

  • 检查签名以确保APK没有被篡改
  • 然后比较歌唱证书作为二进制BLOB到应用程序的当前安装的版本中的一个,以确保这两个版本已经使用相同的密钥/证书签名(例如,由同一个人/公司)
  • 它,如果你正在使用sharedUid或签名的权限有两个或更多的应用程序使用不强制许可同样的事情。

因此,要回答你的问题,有人可以轻松地创建,上面有你的名字的证书,但Android和谷歌玩真的不关心。 只要他们没有你的私钥,他们将不能够产生一个应用程序签名是你的一样,因此它们将不能够覆盖/与他们更新自己的应用,或得到任何特殊权限。



文章来源: How does Android's app/signature verification work?