已签名的 apk android。 Android 签名有什么用?

Signed apk android. What does Android use the signature for?

从Android开始我看到apk需要签名。但是想想数字签名是什么以及它的用途(保证信息的真实性和完整性)我读过 Android 真的不会让你签署应用程序来验证真实性和集成,但是因为 "Android uses that signature to identify the app that is making any type of request either to the system or to other applications".

  1. 是吗

  2. 我看到建议开发者对他们的应用程序使用相同的签名签名数字签名的概念对于每个文档都是唯一的,那么开发者的不同应用程序怎么可能具有相同的签名?相同的签名?

  3. 我想我读到通过签署 apk,我和其他任何人都不能修改这个应用程序。是这样吗?怎么样?

谢谢

  1. 两者都是正确的。签名确实用于检测您正在安装的应用程序是否未被修改,但它们也可用于限制您设备上其他应用程序的访问。假设一家公司构建了 2 个应用程序,他们希望在它们之间共享数据。他们可以使用 signature-protected permission 来确保您的数据只能由该公司的应用程序访问。

  2. 不是 signature 相同,而是用于生成该签名的私有 key。如您所料,签名对于您应用程序的每个构建都是唯一的。有关详细信息,请参阅 https://developer.android.com/studio/publish/app-signing.html

  3. 不是不能修改应用,而是不能修改应用。如果 A 和 B 的签名是从不同的密钥生成的,那么 Android 将不允许您将应用程序从版本 A 升级到版本 B。如果有人篡改应用程序,签名将失效,因此他们必须使用自己的密钥重新签名。您永远不应该将您的密钥交给不受信任的人,因为这将允许他们在不更改密钥的情况下修改和退出您的应用程序。

当然,签名并不能保护您免受恶意修改的 APK 的侵害,除非您已经安装了 Android 可以与新版本进行比较的正版应用程序。这就是为什么您应该避免安装来自未知来源的 APK 文件。