一种基于V2或V3签名机制的第三方副署签名及验证方法技术

技术编号:30073582 阅读:33 留言:0更新日期:2021-09-18 08:27
本发明专利技术公开了一种基于V2或V3签名机制的第三方副署签名方法,在安卓应用程序签名数据块中,找出V2或V3的签名数据块,找到安卓原生签名者数据块序列,在每一个签名者数据块中找到额外属性addtional attributes数据块,在额外属性数据块中插入ID,额外属性数据块中插入的ID的值为副署签名数据;在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c。本发明专利技术还公开了一种基于V2或V3签名机制的第三方副署签名验证方法。本发明专利技术适用于安卓系统移动应用程序V2或V3签名机制下的第三方副署签名方法,实现了安卓系统移动应用程序V2或V3签名机制下各种副署签名角色(应用开发者,检测机构,应用商店等)的签名追溯,同时还不改变原有安卓V2或V3签名验证机制。卓V2或V3签名验证机制。卓V2或V3签名验证机制。

【技术实现步骤摘要】
一种基于V2或V3签名机制的第三方副署签名及验证方法


[0001]本专利技术属于计算机信息安全技术,用于为安卓应用软件原生V2/V3签名机制提供一 种第三方副署签名方法。

技术介绍

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

技术实现思路

[0011]针对上述技术问题,本专利技术提出基于安卓原生签名V2/V3机制下的第三方副署签名 方法,不影响安卓签名V2/V3版本原有的验证机制,并能达到副署效果。
[0012]为达到上述目的,本专利技术采用的技术方案为:一种基于V2或V3签名机制的第三 方副署签名方法,通过此方法可以在安卓签名机制V2或V3版本上添加多个副署签名。
[0013]在安卓应用程序签名数据块中,找出V2或V3的签名数据块,找到安卓原生签名 者数据块序列,在每一个签名者数据块中找到额外属性addtional attributes数据块,在额 外属性数据块中插入ID,额外属性数据块中插入的ID的值为副署签名数据;在V2签 名数据
块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0 或0x3ba06f8c。
[0014]进一步的,副署签名是以安卓V2或V3签名数据块中Signatures数据结构中的 Signed data中的签名值为原文,使用第三方副署证书的私钥对原文进行签名。在此并不 具体约束副署签名数据格式,副署签名数据格式可以是PKCS#7,或者其他副署签名格 式。由于安卓原生签名是对安卓数据块ZIP条路的内容块(Contents of ZIP Entries),ZIP 中央目录块(Central Directory),中央目录结尾块(End of Central Directory)的杂凑进行签 名,所以在此位置加入副署签名并不影响原生安卓应用的安装以及升级。
[0015]进一步的,上述第三方副署签名方法具体包括以下步骤:
[0016]S1、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2签名数据或从 ID0xf05368c0中获取V3签名数据;
[0017]S2、读出签发者的数据结构;
[0018]S3、生成副署签名数据结构,副署签名数据结构包括版本号,杂凑算法,签发者主 题项,签发者证书,签名算法等;
[0019]S4、使用原生签名值作为副署签名的原文,对其做杂凑运算,把计算得出的杂凑值 设置到可信属性中;
[0020]S5、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名;
[0021]S6、把副署签名添加到原生签名的额外属性数据块中插入的ID的值中。
[0022]最后,签名结束。
[0023]作为优选的,S3后进一步包括如下步骤:如副署签名需要加入可信时间,则从可 信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。
[0024]进一步的,上述方法中,如果原生签名中有不止一个签发者,则分别读出每一个签 发者的数据结构,对每一个签发者的数据结构,执行步骤S3至S6,执行完毕后签名结 束。
[0025]本专利技术还公开一种基于V2或V3签名机制的第三方副署签名验证方法,包括以下 步骤:
[0026]S11、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2版本签名数据或 从ID0xf05368c0中获取签名数据;
[0027]S12、读出签发者的数据结构、副署签名的数据结构;
[0028]S13、从副署签名数据结构中获取副署签名的数字证书;
[0029]S14、如果需要在线验证数字证书状态,则通过可信证书服务进行验证。
[0030]如果不需要在线验证,则在本地验证证书有效性,验证证书链、验证黑白名单。
[0031]S15、副署签名证书验证通过后,判断副署签名是否有杂凑属性,如果没有则验证 失败;
[0032]S16、对原生签名进行杂凑,将计算的杂凑值与杂凑属性中的杂凑值对比,如果不 同则验证失败;
[0033]S17、把副署签名中可信属性数据作为原文,使用副署签名证书对副署签名值进行 验证;如果副署签名值验证不同则验证失败。采用密码学的相关运算进行验证,验证成 功则证明这个证书对应的私钥做的签名的不可抵赖性。
[0034]S18、如果还有副署签名则跳转步骤3。
[0035]S21、如果还有原生签名则跳转2。
[0036]进一步的,如果原生签名中有不止一个签发者,则分别读出每一个签发者的数据结 构、每个签发者的数据结构的每个副署签名的数据结构;对每个签发者对应的所有副署 签名均执行S13至S17。
[0037]本专利技术具有以下有益效果:
[0038]本专利技术适用于安卓系统移动应用程序V2或V3签名机制下的第三方副署签名方法, 实现了安卓系统移动应用程序V2或V3签名机制下各种副署签名角色(应用开发者, 检测机构,应用商店等)的签名追溯,同时还不改变原有安卓V2或V3签名验证机制。
[0039]应用程序副署签名使用的是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于V2或V3签名机制的第三方副署签名方法,其特征在于:在安卓应用程序签名数据块中,找出V2或V3的签名数据块,找到安卓原生签名者数据块序列,在每一个签名者数据块中找到额外属性addtional attributes数据块,在额外属性数据块中插入ID,额外属性数据块中插入的ID的值为副署签名数据;在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c。2.根据权利要求1所述的基于V2或V3签名机制的第三方副署签名方法,其特征在于:副署签名是以安卓V2或V3签名数据块中原生签名值为原文,使用第三方副署证书的私钥对原文进行签名。3.根据权利要求1或2所述的基于V2或V3签名机制的第三方副署签名方法,其特征在于,具体包括以下步骤:S1、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2签名数据或从ID0xf05368c0中获取V3签名数据;S2、读出签发者的数据结构;S3、生成副署签名数据结构,副署签名数据结构包括版本号、杂凑算法、签发者主题项、签发者证书、签名算法;S4、使用原生签名值作为副署签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中;S5、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名;S6、把副署签名添加到原生签名的额外属性数据块中插入的ID的值中。4.根据权利要求3所述的基于V2或V3签名机制的第三方副署签名方法,其特征在于,S3后进一步包括如下步骤:如副署签名需要加入可信时间,则从可信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。5.根据权利要求4所述的基于V2或V3签名机制的第三方副署签名方法,其特征在于:如果原生签名中有不...

【专利技术属性】
技术研发人员:赵统一庄昱垚
申请(专利权)人:江苏先安科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1