本技术公开了一种基于V2或V3签名机制的第三方副署签名方法,在安卓应用程序签名数据块中,找出V2或V3的签名数据块,找到安卓原生签名者数据块序列,在每一个签名者数据块中找到额外属性addtional attributes数据块,在额外属性数据块中插入ID,额外属性数据块中插入的ID的值为副署签名数据;在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c。本发明还公开了一种基于V2或V3签名机制的第三方副署签名验证方法。本发明适用于安卓系统移动应用程序V2或V3签名机制下的第三方副署签名方法,实现了安卓系统移动应用程序V2或V3签名机制下各种副署签名角色(应用开发者,检测机构,应用商店等)的签名追溯,同时还不改变原有安卓V2或V3签名验证机制。
背景技术
安卓系统要求所有的应用程序必须签名后才能安装,但并没有对签名证书做严格限 制,任何一张自签名证书都可以用来做签名,签名证书一般由开发者自己生成,所有开发者可随意设置证书主题项内容,很容易恶意伪造其他开发者的签名证书。同时签名证 书和私钥一般以普通数据文件形式存放,可能会被复制、传播并恶意使用,一旦发生,使得追溯Android应用的真实开发者变得十分困难。
副署签名是在已经签名过的文件上附加签名,作为对已签名文件的认可和证明,其 目的在于证明文件中的数据、动作或规定已签名者和副署签名者认可。
安卓应用程序第三方数字签名是一种副署签名,副署签名由签名发起方(应用开发 者、检测机构、应用商店等)使用第三方合法CA机构签发的代码签名证书,在不改变 原有安卓应用程序打包签名流程的条件下,对已经打包并签名过的应用程序附加签名。 副署签名可以是一个或多个签名。
目前:专利公布号CN106209379B,一种Android APK副署签名及验证方法针对安卓应用程序原生签名V1版本提出一种安卓应用程序的一种副署签名的方法。
针对目前安卓系统的不断升级,安卓应用程序原生签名V1机制由于其存在很多缺点 和安全隐患,如:
由于签名不保护APK的某些部分,例如ZIP元数据。
APK验证程序需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不 受签名保护的数据。这会导致相当大的受攻击面。
APK验证程序必须解压所有已压缩的条目,而这需要花费更多时间和内存。
基于这些缺陷目前逐步被安卓应用程序原生签名V2/V3机制所替代,V2方案(从安卓7.0引入),V3方案(从安卓9.0引入)。但目前V2/V3签名机制下的副署签名方法还没 有一个在不影响原生签名验证流程下安全可靠的副署签名机制。
实现思路