从Android开始我已经看到有必要签署apk。但是考虑数字签名是什么以及它服务的是什么(保证信息的真实性和完整性)我已经读过Android确实不会让你签署应用程序以验证真实性和集成,但是因为“Android使用该签名来识别向系统或其他应用程序发出任何类型请求的应用程序“。
是这样吗?
我读到建议开发人员使用相同的签名签署他们的应用程序数字签名的概念对于每个文档都是唯一的,那么开发人员的不同应用程序如何才能拥有相同的签名呢? / p>
我想我通过签署apk来阅读,我和其他人都无法修改此应用。是这样吗?这是怎么回事?
谢谢
答案 0 :(得分:4)
两者都是正确的。签名确实用于检测您正在安装的应用尚未修改,但它们也可用于限制您设备上其他应用的访问。假设一家公司构建2个应用程序,他们希望在它们之间共享数据。他们可以使用signature-protected permission来确保您的数据只能由该公司的应用访问。
签名不是相同的,但用于生成该签名的私有密钥。正如您所料,签名对于您的应用的每个版本都是唯一的。有关详细信息,请参阅https://developer.android.com/studio/publish/app-signing.html。
并不是说你无法修改应用程序;如果A和B的签名是从不同的密钥生成的,那么Android将不允许您将应用程序从A版升级到B版。如果有人篡改了应用程序,签名将无效,因此他们必须使用自己的密钥重新签名。您永远不应该将密钥交给不受信任的人,因为这样他们就可以在不更改密钥的情况下修改和重新设置您的应用。
当然,签名并不能保护您免受恶意修改的APK,除非您已经安装了可以比较新版本的应用程序的真实版本的应用程序。这就是为什么你应该避免安装来自未知来源的APK文件。