2016-11-13 178 views
0

从Android开始我已经看到有必要签署apk。但是考虑一下数字签名是什么以及它所服务的是什么(保证信息的真实性和完整性)我已经读到Android并不会让你签署应用程序来验证真实性和集成,但是因为“Android使用该签名来识别该应用程序正在向系统或其他应用程序提出任何类型的请求“。签名apk安卓版。 Android使用该签名的是什么?

  1. 是这样吗?

  2. 我读到建议开发人员用相同的签名签署他们的应用程序数字签名的概念对于每个文档都是唯一的,那么开发人员的不同应用程序如何具有相同的签名?

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

谢谢

回答

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

  2. 这不是签名这是相同的,但用来生成签名的私钥关键。正如您所期望的那样,签名对于您的应用的每个版本都是独一无二的。有关更多信息,请参阅https://developer.android.com/studio/publish/app-signing.html

  3. 这不是你无法修改应用程序;如果A和B的签名是从不同的密钥生成的,则Android不允许将应用从版本A升级到版本B.如果有人篡改应用程序,签名将失效,因此他们必须用自己的密钥辞职。你永远不应该把你的密钥交给不信任的人,因为那样可以让他们在不改变密钥的情况下修改和辞职。

当然,签名不保护你免受恶意修改的APK,除非你已经安装的Android可以比较新版本的应用程序的真实版本。这就是为什么你应该避免安装来自未知来源的APK文件。

+0

好的,如果我理解的很好,你可以尝试修改第三个应用程序而不用辞职,但是签名验证过程当然会失败,并且不可能提升,当然你可以尝试辞职用您的私钥并尝试更新,但签名验证过程再次失败。对? – user3254515

+1

@ user3254515是!第一种情况是由于签名无效,第二种情况是由于签名不匹配造成的。 –