Android v1 签名 和 v2+ 签名

1.v1签名

v1签名是基于JAR签名来实现的 签名的JAR

v1签名不保护APK的某些部分,例如ZIP元数据。 在APK验证程序在验证时需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不受签名保护的数据。这会是APK容易受到攻击或恶意修改。 此外,APK验证程序在验证时必须解压所有已压缩的条目,来进行验证,而这需要花费更多的时间和内存。 所以为了解决这些问题,才有了v2签名。

2.v2签名 v2签名是在Android 7.0 (Nougat) 中加入的APK签名方案,v2签名方案是一种基于全文件签名方案,该方案能够发现所有对APK的受保护部分进行的更改,从而可以更加快速的验证并增强完整性保证。 使用v2签名方案进行签名时,会在APK文件中插入一个APK签名分块,该分块位于 "Central Directory”部分之前,在“APK签名分块”内,v2签名和签名者身份信息会存储在 v2分块中。 如下图所示:

签名前和签名后的 APK

因为v2签名是Android 7.0 (Nougat)的时候加入的APK签名方案 所以v2签名在Android 7.0以下的系统上是不支持的,所以为了支持Android 7.0以下的版本需要使用v1签名,然后再使用v2方案对其进行签名。

这是在Android 7.0以上 APK签名验证过程:

3.v3签名 v3签名是在Android 9.0中加入的APK签名方案 ,该方案主要是在原来v2的基础上增加了APK密钥轮转,这是应用能够在APK更新过程中更改其签名密钥,为了实现轮转,APK必须指示新旧签名密钥之间的信任级别。v3签名方案还在APK签名分块中添加了有关受支持的SDK版本和proof-of-rotation结构信息。

因为v3签名方案是在Android 9.0 新增的 所以在Android 8.0(API级别27)或更低版本的设备不支持更改签名证书。 这是在Android9.0以上APK签名验证过程

个人感觉这个v3签名方案主要是用来无感替换签名证书的。

更多信息请到官网查看:source.android.com/security/ap…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值