签名状态V1和V1+V2+V3主要在签名机制、安全性和兼容性等方面存在区别,具体如下:
- 签名机制[__LINK_ICON]:V1签名基于JAR签名规范,对APK内每个文件计算SHA-1摘要,然后使用开发者私钥对摘要进行RSA签名,并在META-INF目录下生成相关签名文件。V2签名则是对APK整体进行分块签名,新增APK Signing Block结构来存储签名元数据。V3签名是在V2签名的基础上,在签名块中添加了一个新块,以链表的形式存储多个证书,支持密钥轮换。
- 安全性[__LINK_ICON]:V1签名仅签名部分文件,无法检测未签名文件的修改,也无法保护APK结构本身,抗攻击能力较弱,易受二次打包攻击。V2签名由于对整个APK进行分块签名,完整性保护升级,抗攻击能力更强,能有效抵御重放攻击等。V3签名在V2的基础上,进一步增强了密钥管理的安全性,降低了密钥泄露的风险,即使旧密钥泄露,攻击者也无法伪造后续版本。
- 兼容性[__LINK_ICON]:V1签名主要适用于Android 7.0以下的设备。V2签名从Android 7.0开始引入,Android 7.0-8.0的设备验证时V2优先,回退V1。V3签名从Android 9.0开始引入,Android 9.0及更高版本的设备验证顺序为V3→V2→V1。使用V1+V2+V3签名可以保证应用在不同版本的Android设备上都能得到较好的兼容性和安全性保障。
没啥想说的