CN113221072A - 一种基于安卓***的第三方副署签名、验证方法 - Google Patents
一种基于安卓***的第三方副署签名、验证方法 Download PDFInfo
- Publication number
- CN113221072A CN113221072A CN202110422740.4A CN202110422740A CN113221072A CN 113221072 A CN113221072 A CN 113221072A CN 202110422740 A CN202110422740 A CN 202110422740A CN 113221072 A CN113221072 A CN 113221072A
- Authority
- CN
- China
- Prior art keywords
- countersignature
- signature
- data
- party
- certificate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012795 verification Methods 0.000 title claims abstract description 27
- 230000007246 mechanism Effects 0.000 claims abstract description 33
- 238000009434 installation Methods 0.000 abstract description 4
- 238000001514 detection method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 3
- VBMOHECZZWVLFJ-GXTUVTBFSA-N (2s)-2-[[(2s)-6-amino-2-[[(2s)-6-amino-2-[[(2s,3r)-2-[[(2s,3r)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-2-[[(2s)-2,6-diaminohexanoyl]amino]-5-(diaminomethylideneamino)pentanoyl]amino]propanoyl]amino]hexanoyl]amino]propanoyl]amino]hexan Chemical compound NC(N)=NCCC[C@@H](C(O)=O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CCCCN)NC(=O)[C@H]([C@@H](C)O)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@@H](N)CCCCN VBMOHECZZWVLFJ-GXTUVTBFSA-N 0.000 description 2
- 108010068904 lysyl-arginyl-alanyl-lysyl-alanyl-lysyl-threonyl-threonyl-lysyl-lysyl-arginine Proteins 0.000 description 2
- 230000006837 decompression Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种基于安卓***的第三方副署签名方法,在基于V2或V3签名机制的安卓应用软件签名数据块中,***ID‑值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名。本发明还公开一种基于安卓***的第三方副署签名验证方法。通过本发明的方法可以在安卓签名机制V2或V3版本上添加多个副署签名,而不影响安卓签名V2版本原有的验证机制,可以正常的安装及升级,并能达到副署效果。
Description
技术领域
本发明涉及计算机信息安全技术,用于为安卓应用软件原生V2/V3签名机制提供一种第三方副署签名方法。
背景技术
副署签名是在已经签名过的文件上附加签名,作为对已签名文件的认可和证明,其目的在于为了证明文件中的数据、动作或规定已签名者和副署签名者认可。
安卓应用程序V1签名机制下的数据格式是一个ZIP包,其分为三个数据块,包括ZIP条目的内容块(Contents of ZIP Entries),ZIP中央目录块(Central Directory),中央目录结尾块(End of Central Directory),解压之后是一系列目录和文件,其中目录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条路的内容块(Contents of ZIPEntries),ZIP中央目录块(Central Directory),中央目录结尾块(End of CentralDirectory)的杂凑进行签名,所以在此位置加入副署签名并不影响原生安卓应用的安装以及升级。
进一步的,上述第三方副署签名方法具体包括以下步骤:
S1、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取V3版本签名数据。
S2、生成副署签名数据结构,包括版本号,杂凑算法,签发者主题项,签发者证书,签名算法等。
S3、使用从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据作为附属签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中。
S4、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名。
S5、把副署签名添加到原生签名块的ID-值对中。
最后,签名结束。
进一步的,S2后进一步包括如下步骤:如副署签名需要加入可信时间,则从可信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。
本发明还公开一种基于安卓***的第三方副署签名验证流程:
S11、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据。
S12、分别读出每一个副署签名的数据结构。
S13、从副署签名数据结构中获取副署签名的数字证书,并验证数字证书的有效性。
S14、获取杂凑属性,对,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取得数据进行杂凑,将计算的杂凑值与可信属性中杂凑属性的杂凑值对比,如果不同则验证失败。
S15、把副署签名中可信属性数据作为原文,使用副署签名证书对副署签名值进行验证,验证失败则验证失败。
S16、如果还有副署签名则跳转S13。
进一步的,对副署签名的数字证书有效性验证的方法为:如果需要在线验证数字证书状态,则通过可信证书服务进行验证;如果不需要在线验证,则在本地验证证书有效性,验证证书链、验证黑白名单。
进一步的,S14前进一步包括:判断副署签名是否有杂凑属性,如果没有则验证失败。
通过本发明的方法可以在安卓签名机制V2或V3版本上添加多个副署签名,而不影响安卓签名V2版本原有的验证机制,可以正常的安装及升级,并能达到副署效果。
附图说明
图1为本发明实施例的安卓应用程序原生签名V2或V3机制下第三方副署签名数据格式。
图2为本发明实施例的基于安卓***的第三方副署签名方法流程图。
图3为本发明实施例的基于安卓***的第三方副署签名验证方法流程图。
图4为本发明实施例的基于安卓***的第三方副署签名方法应用流程图。
具体实施方式
为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明。
本实施例的副署签名由签名发起方(应用开发者、检测机构、应用商店等)使用第三方合法CA机构签发的代码签名证书,在不改变原有安卓应用程序打包签名流程的条件下,对已经打包并签名过的应用程序附加签名。副署签名可以是一个或多个签名。
与安卓应用程序原生签名V1整体数据结构不同的是,V2/V3在原有移动应用数据块基础上增加了APK签名块(APK Signature Block),形成包括ZIP条路的内容块(Contentsof ZIP Entries),APK签名块(APK Signature Block),ZIP中央目录块(CentralDirectory),中央目录结尾块(End of Central Directory)的四部分数据块,在签名块中有ID-VALUE配对的数据结构,其中ID为0x7109871a的代表V2签名,ID为0xf05368c0代表V3签名。
本实施例主要在不改变原生安卓签名机制的基础上,解决在安卓原生签名V2,V3方案下的副署签名机制。从而给基于安卓应用V2,V3签名机制的安卓应用提供副署签名机制。
应用程序副署签名使用的是由第三方合法CA机构颁发的代码签名数字证书,副署签名着的身份由第三方CA机构严格审查并核实。在使用代码签名数字证书对应用程序副署签名后,在《中华人民共和国电子签名法》的保护下,有如下优势:
副署签名者身份实名认证,可追究法律责任。
应用程序副署签名后,每一个副署环节都可以被追溯。
副署签名由第三方CA机构颁发的代码签名数字证书完成,可信度更高,便于推广。
副署签名,可证明开发者对应用程序的拥有权,在遇到应用程序被盗版,侵权等行为时,将为应用程序开发者提供强有力的证据。
具体操作是在安卓应用程序签名数据块中,在V2签名数据块中***ID为非0x7109871a的任意ID(或在V3签名数据块中***ID为非0x7109871a和0xf05368c0和0x3ba06f8c的任意ID),ID的值为副署签名数据,副署签名是以V2(或V3)签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名,但在此并不具体约束副署签名数据格式,副署签名数据格式可以是PKCS#7,或者是如图1左侧3列展示的数据块,以及其他副署签名格式。如果放置在此位置都是在本发明保护的范围内,由于安卓原生签名是对安卓数据块ZIP条路的内容块(Contents of ZIP Entries),ZIP中央目录块(CentralDirectory),中央目录结尾块(End of Central Directory)的杂凑进行签名,所以在此位置加入副署签名并不影响原生安卓应用的安装以及升级。
本实施例的基于安卓***的第三方副署签名流程如图2所示:
1、读取安卓应用软件原生签名块(APK Signature Block),从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据。
2、生成副署签名数据结构(此结构不仅限于PKCS#7,以及如图XXX的副署签名数据格式,也可以为任意副署签名格式),包括版本号,杂凑算法,签发者主题项,签发者证书,签名算法等。
3、如副署签名需要加入可信时间,则从可信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。
4、使用从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据作为附属签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中。
5、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名。
6、把副署签名添加APK签名快中ID-VALUE对中(ID可以是任意非0x7109871a和0xf05368c0和0x3ba06f8c的任一ID)。
7、签名结束。
本实施例的基于安卓***的第三方副署签名方法验证流程如图3所示:
1、读取安卓应用软件原生签名块(APK Signature Block),从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据。
2、分别读出每一个副署签名的数据结构。
3、从副署签名数据结构中获取副署签名的数字证书。
4、如果需要在线验证证书状态,则通过可信证书服务进行验证。
5、如果不需要,则在本地验证证书有效性,验证证书链、验证黑白名单。
6、副署签名是否有杂凑属性,如果没有则验证失败。
7、获取杂凑属性,对,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取得数据进行杂凑,将计算的杂凑值与杂凑属性中的杂凑值对比,如果不同则验证失败。
8、把副署签名中可信属性数据作为原文,使用副署签名证书对副署签名值进行验证,验证失败则验证失败。
9、如果还有副署签名则跳转步骤3。
10、验证成功。
本实施例的基于安卓***的第三方副署签名方法的应用如图4所示:
1、开发者开发完成应用程序后,生成安装原生的开发签名;
2、开发者向CA机构申请开发者副署签名证书。申请的过程需要开发者提交真实的开发者身份信息。
3、CA机构审核开发者身份信息,审核通过后向开发者代码签名证书。
4、开发者使用开发者签名证书对应的私钥对应用程序进行开发者副署签名;
5、如开发者需要检测机构对应用程序进行检测,则开发者将经过开发者副署签名的应用程序提交到检测机构进行检测。如不需要检测机构检测,则直接提交应用到应用商店,见步骤8);
6、如果检测功过,检测机构使用检测机构的证书对应的私钥生成检测机构副署签名。
7、检测机构将应用程序返回给开发者;
8、开发者准备向应用商店申请应用上架。
9、应用商店应用程序的各副署签名(开发者副署签名、检测机构副署签名等);
10、如各签名验证通过,应用商店使用商店的证书对应的私钥生成应用商店副署签名;
11、应用上架销售,商店在显著位置显示该应用程序的副署签名信息;
12、用户下载应用后,终端验证该应用程序的各副署签名;
13、验证通过后,成功安装应用。
以上的实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (6)
1.一种基于安卓***的第三方副署签名方法,其特征在于:
在基于V2或V3签名机制的安卓应用软件签名数据块中,***ID-值对,其中在V2签名数据块中,ID非0x7109871a;在V3签名数据块中,ID非0x7109871a或0xf05368c0或0x3ba06f8c;ID的值为副署签名数据;副署签名的方法是:以V2或V3签名数据块的值作为原文,使用第三方副署证书的私钥对原文进行副署签名。
2.根据权利要求1所述的基于安卓***的第三方副署签名方法,其特征在于,包括以下步骤:
S1、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取V3版本签名数据;
S2、生成副署签名数据结构,包括版本号,杂凑算法,签发者主题项,签发者证书,签名算法;
S3、使用从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据作为附属签名的原文,对其做杂凑运算,把计算得出的杂凑值设置到可信属性中;
S4、使用副署签名可信属性数据作为原文使用副署签名证书私钥签名;
S5、把副署签名添加到原生签名块的ID-值对中。
3.根据权利要求2所述的基于安卓***的第三方副署签名方法,其特征在于,S2后进一步包括如下步骤:
如副署签名需要加入可信时间,则从可信时间源中获取可信时间,在副署签名数据格式中加入可信时间属性。
4.一种基于安卓***的第三方副署签名验证方法,其特征在于:
S11、读取安卓应用软件原生签名块,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取签名数据;
S12、分别读出每一个副署签名的数据结构;
S13、从副署签名数据结构中获取副署签名的数字证书,并验证数字证书的有效性;
S14、获取杂凑属性,对,从ID 0x7109871a中获取V2版本签名数据或从ID0xf05368c0中获取得数据进行杂凑,将计算的杂凑值与可信属性中杂凑属性的杂凑值对比,如果不同则验证失败;
S15、把副署签名中可信属性数据作为原文,使用副署签名证书对副署签名值进行验证,验证失败则验证失败;
S16、如果还有副署签名则跳转S13。
5.根据权利要求4所述的基于安卓***的第三方副署签名验证方法,其特征在于,对副署签名的数字证书有效性验证的方法为:如果需要在线验证数字证书状态,则通过可信证书服务进行验证;如果不需要在线验证,则在本地验证证书有效性,验证证书链、验证黑白名单。
6.根据权利要求4所述的基于安卓***的第三方副署签名验证方法,其特征在于,S14前进一步包括:判断副署签名是否有杂凑属性,如果没有则验证失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110422740.4A CN113221072A (zh) | 2021-04-16 | 2021-04-16 | 一种基于安卓***的第三方副署签名、验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110422740.4A CN113221072A (zh) | 2021-04-16 | 2021-04-16 | 一种基于安卓***的第三方副署签名、验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113221072A true CN113221072A (zh) | 2021-08-06 |
Family
ID=77087961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110422740.4A Pending CN113221072A (zh) | 2021-04-16 | 2021-04-16 | 一种基于安卓***的第三方副署签名、验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113221072A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105007162A (zh) * | 2015-07-01 | 2015-10-28 | 浪潮电子信息产业股份有限公司 | 一种可信电子签名***及电子签名方法 |
CN105873030A (zh) * | 2015-01-22 | 2016-08-17 | 卓望数码技术(深圳)有限公司 | 一种对终端应用进行副署签名的方法 |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN106656513A (zh) * | 2017-02-24 | 2017-05-10 | 福建魔方电子科技有限公司 | 安卓平台上apk文件的二次打包签名验证方法 |
CN109829285A (zh) * | 2018-12-03 | 2019-05-31 | 深圳市新国都支付技术有限公司 | 一种数字签名方法、装置、设备和存储介质 |
-
2021
- 2021-04-16 CN CN202110422740.4A patent/CN113221072A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105873030A (zh) * | 2015-01-22 | 2016-08-17 | 卓望数码技术(深圳)有限公司 | 一种对终端应用进行副署签名的方法 |
CN105007162A (zh) * | 2015-07-01 | 2015-10-28 | 浪潮电子信息产业股份有限公司 | 一种可信电子签名***及电子签名方法 |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN106656513A (zh) * | 2017-02-24 | 2017-05-10 | 福建魔方电子科技有限公司 | 安卓平台上apk文件的二次打包签名验证方法 |
CN109829285A (zh) * | 2018-12-03 | 2019-05-31 | 深圳市新国都支付技术有限公司 | 一种数字签名方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463806B (zh) | 一种Android应用程序安装包的签名和验签方法 | |
CN112507328B (zh) | 一种文件签名方法、计算设备及存储介质 | |
US10992482B2 (en) | Verified boot and key rotation | |
JP6332970B2 (ja) | 安全なソフトウェアの更新のためのシステム及び方法 | |
US7805765B2 (en) | Execution validation using header containing validation data | |
CN109756340B (zh) | 一种数字验签方法、装置和存储介质 | |
EP3026559A1 (en) | Method and device for providing verifying application integrity | |
CN107301343A (zh) | 安全数据处理方法、装置及电子设备 | |
CN110830257B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN112560017A (zh) | 一种使用三级证书认证实现apk统一签名的方法 | |
CN109074295A (zh) | 具有真实性的数据恢复 | |
CN113343313A (zh) | 验证报告有效性鉴定方法、法律服务***和可读存储介质 | |
TW396327B (en) | Distribution system with authentication | |
CN116707758A (zh) | 可信计算设备的认证方法、设备和服务器 | |
CN112711570A (zh) | 日志信息的处理方法、装置、电子设备及存储介质 | |
CN114866260B (zh) | 一种变色龙哈希分布式身份使用方法和*** | |
CN110826034B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN113221072A (zh) | 一种基于安卓***的第三方副署签名、验证方法 | |
CN116561734A (zh) | 一种验证方法、装置、计算机及计算机配置*** | |
CN116244756A (zh) | 浏览器插件的校验方法以及装置与计算设备 | |
WO2006062166A1 (ja) | 電子データ検証装置 | |
CN110324422B (zh) | 一种云应用的证实方法及*** | |
CN113407912A (zh) | 一种基于v2或v3签名机制的第三方副署签名及验证方法 | |
CN111274552A (zh) | 一种升级包的签名及验签方法、存储介质 | |
RU2543928C1 (ru) | Способ формирования электронного документа и его копий |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |