CN113221072A - 一种基于安卓系统的第三方副署签名、验证方法 - Google Patents

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

Info

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
Application number
CN202110422740.4A
Other languages
English (en)
Inventor
赵统一
庄昱垚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Syan Technology Co ltd
Original Assignee
Jiangsu Syan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Syan Technology Co ltd filed Critical Jiangsu Syan Technology Co ltd
Priority to CN202110422740.4A priority Critical patent/CN113221072A/zh
Publication of CN113221072A publication Critical patent/CN113221072A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2115Third 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前进一步包括:判断副署签名是否有杂凑属性,如果没有则验证失败。
CN202110422740.4A 2021-04-16 2021-04-16 一种基于安卓系统的第三方副署签名、验证方法 Pending CN113221072A (zh)

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)

* Cited by examiner, † Cited by third party
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 深圳市新国都支付技术有限公司 一种数字签名方法、装置、设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
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应用程序安装包的签名和验签方法
US10992482B2 (en) Verified boot and key rotation
JP6332970B2 (ja) 安全なソフトウェアの更新のためのシステム及び方法
US7805765B2 (en) Execution validation using header containing validation data
CN112507328B (zh) 一种文件签名方法、计算设备及存储介质
EP3026559A1 (en) Method and device for providing verifying application integrity
CN110830257B (zh) 一种文件签名方法、装置、电子设备及可读存储介质
CN112560017A (zh) 一种使用三级证书认证实现apk统一签名的方法
CN113343313A (zh) 验证报告有效性鉴定方法、法律服务系统和可读存储介质
CN109756340B (zh) 一种数字验签方法、装置和存储介质
CN109074295A (zh) 具有真实性的数据恢复
TW396327B (en) Distribution system with authentication
CN116707758A (zh) 可信计算设备的认证方法、设备和服务器
CN114866260B (zh) 一种变色龙哈希分布式身份使用方法和系统
CN105873030A (zh) 一种对终端应用进行副署签名的方法
CN110826034B (zh) 一种文件签名方法、装置、电子设备及可读存储介质
CN113221072A (zh) 一种基于安卓系统的第三方副署签名、验证方法
CN116561734A (zh) 一种验证方法、装置、计算机及计算机配置系统
CN116244756A (zh) 浏览器插件的校验方法以及装置与计算设备
CN115550060A (zh) 基于区块链的可信证书验证方法、装置、设备和介质
WO2006062166A1 (ja) 電子データ検証装置
CN110324422B (zh) 一种云应用的证实方法及系统
CN113407912A (zh) 一种基于v2或v3签名机制的第三方副署签名及验证方法
CN111274552A (zh) 一种升级包的签名及验签方法、存储介质
NL2026685B1 (en) method of signing and certifying files

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