一、什么是apk签名
签名是摘要与非对称密钥加密相相结合的产物,摘要就像内容的一个指纹信息,一旦内容被篡改,摘要就会改变,签名是摘要的加密结果,摘要改变,签名也会失效。Android APK签名也是这个道理,如果APK签名跟内容对应不起来,Android系统就认为APK内容被篡改了,从而拒绝安装,以保证系统的安全性。
应用程序的作者使用自己的私钥签名APK文件,并将签名与公钥一起发布到APK中,这个过程称之为签名。当应用程序被安装时,用发布的公钥去解析签名,并与文件的hash进行比对,这个过程叫验签。
二、为什么需要签名
在消息通信时,必须至少解决两个问题:一是确保消息来源的真实性,二是确保消息不会被第三方篡改。
签名机制主要有两种用途:
使用特殊的key签名可以获取到一些不同的权限
验证数据保证不被篡改,防止应用被恶意的第三方覆盖
三、apk签名方案
Android 现在已经支持三种应用签名方案:
v1 方案:基于 JAR 签名。
v2 方案:APK 签名方案 v2,在 Android 7.0 引入。
v3 方案:APK 签名方案v3,在 Android 9.0 引入。
v4 方案:APK 签名方案v4,在Android11.0引入。
v1 到 v2 是颠覆性的,为了解决 JAR 签名方案的安全性问题,而到了 v3 方案,其实结构上并没有太大的调整,可以理解为 v2 签名方案的升级版,有一些资料也把它称之为 v2+ 方案。因为这种签名方案的升级,就是向下兼容的,所以只要使用得当,这个过程对开发者是透明的。
v1 到 v2 方案的升级,对开发者影响最大的,就是渠道签署的问题。在当下这个大环境下,我们想让不同渠道、市场的安装包有所区别,携带渠道的唯一标识,这就是我们俗称的渠道包。好在各大厂都开源了自己的签渠道方案
签名是摘要与非对称密钥加密相相结合的产物,摘要就像内容的一个指纹信息,一旦内容被篡改,摘要就会改变,签名是摘要的加密结果,摘要改变,签名也会失效。Android APK签名也是这个道理,如果APK签名跟内容对应不起来,Android系统就认为APK内容被篡改了,从而拒绝安装,以保证系统的安全性。
应用程序的作者使用自己的私钥签名APK文件,并将签名与公钥一起发布到APK中,这个过程称之为签名。当应用程序被安装时,用发布的公钥去解析签名,并与文件的hash进行比对,这个过程叫验签。
二、为什么需要签名
在消息通信时,必须至少解决两个问题:一是确保消息来源的真实性,二是确保消息不会被第三方篡改。
签名机制主要有两种用途:
使用特殊的key签名可以获取到一些不同的权限
验证数据保证不被篡改,防止应用被恶意的第三方覆盖
三、apk签名方案
Android 现在已经支持三种应用签名方案:
v1 方案:基于 JAR 签名。
v2 方案:APK 签名方案 v2,在 Android 7.0 引入。
v3 方案:APK 签名方案v3,在 Android 9.0 引入。
v4 方案:APK 签名方案v4,在Android11.0引入。
v1 到 v2 是颠覆性的,为了解决 JAR 签名方案的安全性问题,而到了 v3 方案,其实结构上并没有太大的调整,可以理解为 v2 签名方案的升级版,有一些资料也把它称之为 v2+ 方案。因为这种签名方案的升级,就是向下兼容的,所以只要使用得当,这个过程对开发者是透明的。
v1 到 v2 方案的升级,对开发者影响最大的,就是渠道签署的问题。在当下这个大环境下,我们想让不同渠道、市场的安装包有所区别,携带渠道的唯一标识,这就是我们俗称的渠道包。好在各大厂都开源了自己的签渠道方案