一种基于安卓系统的第三方副署签名、验证方法技术方案

技术编号:29585005 阅读:29 留言:0更新日期:2021-08-06 19:43
本发明专利技术公开一种基于安卓系统的第三方副署签名方法,在基于V2或V3签名机制的安卓应用软件签名数据块中,插入ID‑值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名。本发明专利技术还公开一种基于安卓系统的第三方副署签名验证方法。通过本发明专利技术的方法可以在安卓签名机制V2或V3版本上添加多个副署签名,而不影响安卓签名V2版本原有的验证机制,可以正常的安装及升级,并能达到副署效果。

【技术实现步骤摘要】
一种基于安卓系统的第三方副署签名、验证方法
本专利技术涉及计算机信息安全技术,用于为安卓应用软件原生V2/V3签名机制提供一种第三方副署签名方法。
技术介绍
副署签名是在已经签名过的文件上附加签名,作为对已签名文件的认可和证明,其目的在于为了证明文件中的数据、动作或规定已签名者和副署签名者认可。安卓应用程序V1签名机制下的数据格式是一个ZIP包,其分为三个数据块,包括ZIP条目的内容块(ContentsofZIPEntries),ZIP中央目录块(CentralDirectory),中央目录结尾块(EndofCentralDirectory),解压之后是一系列目录和文件,其中目录META-INFO是存放签名相关数据,MANIFEST.MF文件用于存放安卓应用其他所有非META-INFO文件夹内文件的名称以及杂凑值,而CERT.RSA/CERT.DSA是对Android所有文件杂凑值的签名文件,CERT.RSA/CERT.DSA文件内容完全遵循PKCS7标准规范。目前安卓系统的不断升级,安卓应用程序原生签名V1机制由于其存在很多缺点和安全隐患,逐步被安卓应用程序原生签名V2/V3机制所替代,但目前V2/V3签名机制下的副署签名方法还没有一个在不影响原生签名验证流程下安全可靠的副署签名机制。
技术实现思路
针对上述技术问题,本专利技术提供一种基于安卓系统的第三方副署签名、验证方法,实现原生签名V2/V3机制下,更方便地进行软件安全认证或签名追溯。为达到上述目的,本专利技术采用的技术方案为:一种基于安卓系统的第三方副署签名方法,在基于V2或V3签名机制的安卓应用软件签名数据块中,插入ID-值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以V2或V3签名数据块的值(V2签名机制中ID为0x7109871a的值或V3签名机制中ID为0xf05368c0的值)作为原文,使用第三方副署证书的私钥对原文进行副署签名。由于安卓原生签名是对安卓数据块ZIP条路的内容块(ContentsofZIPEntries),ZIP中央目录块(CentralDirectory),中央目录结尾块(EndofCentralDirectory)的杂凑进行签名,所以在此位置加入副署签名并不影响原生安卓应用的安装以及升级。进一步的,上述第三方副署签名方法具体包括以下步骤:S1、读取安卓应用软件原生签名块,从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取V3版本签名数据。S2、生成副署签名数据结构,包括版本号,杂凑算法,签发者主题项,签发者证书,签名算法等。S3、使用从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据作为附属签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中。S4、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名。S5、把副署签名添加到原生签名块的ID-值对中。最后,签名结束。进一步的,S2后进一步包括如下步骤:如副署签名需要加入可信时间,则从可信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。本专利技术还公开一种基于安卓系统的第三方副署签名验证流程:S11、读取安卓应用软件原生签名块,从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据。S12、分别读出每一个副署签名的数据结构。S13、从副署签名数据结构中获取副署签名的数字证书,并验证数字证书的有效性。S14、获取杂凑属性,对,从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取得数据进行杂凑,将计算的杂凑值与可信属性中杂凑属性的杂凑值对比,如果不同则验证失败。S15、把副署签名中可信属性数据作为原文,使用副署签名证书对副署签名值进行验证,验证失败则验证失败。S16、如果还有副署签名则跳转S13。进一步的,对副署签名的数字证书有效性验证的方法为:如果需要在线验证数字证书状态,则通过可信证书服务进行验证;如果不需要在线验证,则在本地验证证书有效性,验证证书链、验证黑白名单。进一步的,S14前进一步包括:判断副署签名是否有杂凑属性,如果没有则验证失败。通过本专利技术的方法可以在安卓签名机制V2或V3版本上添加多个副署签名,而不影响安卓签名V2版本原有的验证机制,可以正常的安装及升级,并能达到副署效果。附图说明图1为本专利技术实施例的安卓应用程序原生签名V2或V3机制下第三方副署签名数据格式。图2为本专利技术实施例的基于安卓系统的第三方副署签名方法流程图。图3为本专利技术实施例的基于安卓系统的第三方副署签名验证方法流程图。图4为本专利技术实施例的基于安卓系统的第三方副署签名方法应用流程图。具体实施方式为了便于本领域技术人员的理解,下面结合实施例与附图对本专利技术作进一步的说明。本实施例的副署签名由签名发起方(应用开发者、检测机构、应用商店等)使用第三方合法CA机构签发的代码签名证书,在不改变原有安卓应用程序打包签名流程的条件下,对已经打包并签名过的应用程序附加签名。副署签名可以是一个或多个签名。与安卓应用程序原生签名V1整体数据结构不同的是,V2/V3在原有移动应用数据块基础上增加了APK签名块(APKSignatureBlock),形成包括ZIP条路的内容块(ContentsofZIPEntries),APK签名块(APKSignatureBlock),ZIP中央目录块(CentralDirectory),中央目录结尾块(EndofCentralDirectory)的四部分数据块,在签名块中有ID-VALUE配对的数据结构,其中ID为0x7109871a的代表V2签名,ID为0xf05368c0代表V3签名。本实施例主要在不改变原生安卓签名机制的基础上,解决在安卓原生签名V2,V3方案下的副署签名机制。从而给基于安卓应用V2,V3签名机制的安卓应用提供副署签名机制。应用程序副署签名使用的是由第三方合法CA机构颁发的代码签名数字证书,副署签名着的身份由第三方CA机构严格审查并核实。在使用代码签名数字证书对应用程序副署签名后,在《中华人民共和国电子签名法》的保护下,有如下优势:副署签名者身份实名认证,可追究法律责任。应用程序副署签名后,每一个副署环节都可以被追溯。副署签名由第三方CA机构颁发的代码签名数字证书完成,可信度更高,便于推广。副署签名,可证明开发者对应用程序的拥有权,在遇到应用程序被盗版,侵权等行为时,将为应用程序开发者提供强有力的证据。具体操作是在安卓应用程序签名数据块中,在V2签名数据块中插入ID为非0x7109本文档来自技高网...

【技术保护点】
1.一种基于安卓系统的第三方副署签名方法,其特征在于:/n在基于V2或V3签名机制的安卓应用软件签名数据块中,插入ID-值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以V2或V3签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名。/n

【技术特征摘要】
1.一种基于安卓系统的第三方副署签名方法,其特征在于:
在基于V2或V3签名机制的安卓应用软件签名数据块中,插入ID-值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以V2或V3签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名。


2.根据权利要求1所述的基于安卓系统的第三方副署签名方法,其特征在于,包括以下步骤:
S1、读取安卓应用软件原生签名块,从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取V3版本签名数据;
S2、生成副署签名数据结构,包括版本号,杂凑算法,签发者主题项,签发者证书,签名算法;
S3、使用从ID0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据作为附属签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中;
S4、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名;
S5、把副署签名添加到原生签名块的ID-值对中。


3.根据权利要求2所述的基于安卓系统的第三方副署签名方法,其特征在于,S2后进一步包括如下步骤:
如副署签名需要加入可信时间,...

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

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

1