gpt4 book ai didi

android - Android 的应用程序/签名验证如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:14 26 4
gpt4 key购买 nike

我想用两件事作为这个问题的序言,这样我就可以缩小我实际问题的范围:

a) 我以前做过软件开发,但从来没有做过 android

b) 我熟悉 PKI、加密、散列和数字签名等等等等

话虽这么说,但我无法找到有关 Android 在哪里以及如何验证应用程序创建者的更多信息。我听过很多不同的信息,所以我正在尝试综合以更好地了解工作流程。

我知道每个应用程序开发人员都有自己的私钥/公钥对,他们通过对 APK 进行哈希处理(如果我没记错的话,大多数时候使用 SHA-1)来签署他们的应用程序,然后就可以了。您上传它并且(我相信)公钥进入 APK 内的 META INF。我明白这一点。

我的问题是这与用户下载应用程序本身的时间有何关系。我知道电话会检查以确保该应用程序已有效签名,并且签名还包含有关作者等的信息。但我也读到应用程序是自签名的,Google Play(或他们现在称之为市场的任何东西)没有实现 CA,并且没有身份验证?但我的问题是,什么可以阻止人们以另一个开发者的名义上传应用程序(众包除外)?

如果手机只检查有效签名是否意味着唯一的身份验证方法是在上传应用程序时完成的?如果是这种情况,应用程序市场如何检查它?它是通常的 - 使用文件上的私钥并验证签名吗?还是开发者必须向市场提供他们的私钥才能进行身份验证?

最佳答案

简而言之,Android 和 Google Play 基本上不关心实际证书中的内容。 Google Play 确实会验证它,并检查它是否有效 30 年或更长时间,但他们并没有真正使用(至少目前,AFAIK)证书中的实际信息。您可以在 CN 中使用您自己的姓名/公司名称,但没有人会验证这一点,用户根本不会看到这些信息。 Android 所做的是:

  • 检查签名以确保 APK 未被篡改
  • 然后将唱歌证书作为二进制 blob 与当前安装的应用程序版本之一进行比较,以确保这两个版本已使用相同的 key /证书签名(例如,通过同一个人/公司)
  • 如果您对两个或多个应用使用 sharedUid 或签名权限,它会执行相同的操作来强制执行权限。

因此,为了回答您的问题,有人可以轻松创建带有您名字的证书,但 Android 和 Google Play 并不关心。只要他们没有您的私钥,他们就无法生成与您的相同的应用程序签名,因此他们将无法用他们的应用程序覆盖/更新您的应用程序,或获得任何特殊权限.

关于android - Android 的应用程序/签名验证如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10938298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com