一种面向安卓系统软件的扩展签名的实现方法.pdf

上传人:1** 文档编号:177864 上传时间:2018-01-31 格式:PDF 页数:11 大小:919.12KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410250845.6

申请日:

2014.06.06

公开号:

CN104156638A

公开日:

2014.11.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 21/12申请日:20140606|||公开

IPC分类号:

G06F21/12(2013.01)I; G06F21/44(2013.01)I

主分类号:

G06F21/12

申请人:

国家计算机网络与信息安全管理中心

发明人:

何能强; 云晓春; 王宇; 王明华; 赵慧; 张鸿江; 徐晓燕; 严寒冰; 李佳; 纪玉春; 赵宸; 金红; 杨满智; 王小华; 陈普贵

地址:

100029 北京市朝阳区裕民路甲3号

优先权:

专利代理机构:

北京中原华和知识产权代理有限责任公司 11019

代理人:

寿宁;张华辉

PDF下载: PDF下载
内容摘要

本发明是关于一种面向安卓系统软件的扩展签名的实现方法,该方法包括:S1,获取开发者生成的安卓程序文件;S2,对上述程序文件进行数字签名,生成扩展签名证书文件;S3,将扩展签名证书文件存放在安卓程序文件中的META-INF目录下;S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。本发明在不破坏安卓系统自签名机制的基础上进行了一次扩展签名,该扩展签名可用于开发者身份认证、安全检测认证等第三方数字认证,提高了安卓系统的安全性。

权利要求书

1.  一种面向安卓系统软件的扩展签名的实现方法,其特征在于包括以下步骤:
步骤S1,获取开发者生成的安卓程序文件;
步骤S2,对上述程序文件进行数字签名,生成扩展签名证书文件;
步骤S3,将扩展签名证书文件存放在安卓程序文件中的META-INF目录下;
步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。

2.
  如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S1之前还包括以下开发者自签名的步骤:
步骤S11,开发者对原始程序文件中除META-INF目录以外的文件计算并生成摘要文件;
步骤S12,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件;
步骤S13,打包签名证书文件,得到开发者生成的安卓程序文件。

3.
  如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S2包括:
对程序文件提取数字摘要信息,利用哈希算法生成摘要文件。

4.
  如权利要求3所述的面向安卓系统软件的扩展签名的实现方法,其特征在于利用哈希算法所计算的文件不包括META-INF目录里面的文件。

5.
  如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于所述的扩展签名证书文件中包含证书签发机构的公钥。

6.
  如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S4之后还包括以下开发者自签名的步骤:
步骤S41,开发者对插入扩展签名证书文件后的程序文件中除META-INF目录以外的文件计算并生成摘要文件;
步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件。

7.
  如权利要求1或3所述的面向安卓系统软件的扩展签名的实现方法,其特征在于在步骤S4完成扩展签名之后还包括以下验证扩展签名的步骤:
步骤S51,认证机构获取安装包文件;
步骤S52,从安装包文件中提取扩展签名证书文件;
步骤S53,利用扩展签名证书文件中的信息验证扩展签名;
步骤S54,利用扩展签名证书文件中的信息验证摘要文件;
步骤S55,利用摘要文件验证安装文件是否被篡改。

8.
  如权利要求7所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S53包括:
利用证书签发机构的公钥验证扩展签名。

9.
  如权利要求7所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S54、S55包括:
验证摘要文件的内容列表和安装包文件中除META-INF目录以外的文件的摘要信息的对应关系。

说明书

一种面向安卓系统软件的扩展签名的实现方法
技术领域
本发明涉及一种软件签名方法,特别是涉及一种面向安卓系统软件的扩展签名的实现方法。
背景技术
近几年,由于我国移动通信网络的不断优化、移动设备智能终端的不断普及,移动终端设备在不同的行业领域里提升了工作效率。我国目前移动互联网应用软件产业每天在发生巨大的变化,互联网应用软件开发企业及开发者快速增长。分布在移动终端设备中的手机游戏、手机支付、移动商务的应用软件,不仅加强了移动互联网与公众生活的联系,也在不断地改变我们的生产和生活方式。
然而,我们国家移动互联网产业在快速发展过程中,相应的问题也在不断凸现,绝大多数人们在安装APP后发现会被窃取终端手机号和通讯录,有些“关闭不掉的广告"、“无法卸载的应用"、“恶意扣费"的现象严重影响了人们对APP信任程度,并且很多企业的应用开发者在不知情的情况下APP被盗版、内置恶意吸费代码,然后被上传到第三方应用市场,一旦用户下载安装了这类应用,就会被恶意扣费。
为确保经过检查的软件的安全合法使用,保障检测完成的软件的真实有效以及在使用过程中与当初检查保持一致性,需要采用数字证书来实现其检查认证及真实完整,降低现场测试的测试成本,提高检测效率。通过有效利用数字签名技术,实现对源码、资源文件、主配文件的保障,从而获知APK产品代码是否安全、是否容易被反编译、源代码是否裸奔、资源文件和Android主配文件是否被动用。
现有的签名方法主要采用谷歌提供的自签名机制由开发者自发签名,谷歌未提供扩展签名的方法,不利于第三方认证机构的认证和监管,因此安卓系统存在严重的安全隐患。
发明内容
本发明的目的在于解决现有的安卓软件自签名机制存在的不足,而提供一种面向安卓系统软件的扩展签名的实现方法。
本发明的目的是采用以下技术方案来实现的。本发明是一种面向安卓系统软件的扩展签名的实现方法,包括以下步骤:步骤S1,获取开发者生 成的安卓程序文件;步骤S2,对上述程序文件进行数字签名,生成扩展签名证书文件;步骤S3,将扩展签名证书文件存放在安卓程序文件中的META-INF目录下;步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。
本发明的目的还可采用以下技术措施进一步实现。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S1之前还包括以下开发者自签名的步骤:步骤S11,开发者对原始程序文件中除META-INF目录以外的文件计算并生成摘要文件;步骤S12,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件;步骤S13,打包签名证书文件,得到开发者生成的安卓程序文件。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S2包括:对程序文件提取数字摘要信息,利用哈希算法生成摘要文件。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的利用哈希算法所计算的文件不包括META-INF目录里面的文件。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的扩展签名证书文件中包含证书签发机构的公钥。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S4之后还包括以下开发者自签名的步骤:步骤S41,开发者对插入签名证书文件后的程序文件中除META-INF目录以外的文件计算并生成摘要文件;步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中在步骤S4完成扩展签名之后还包括以下验证扩展签名的步骤:步骤S51,认证机构获取安装包文件;步骤S52,从安装包文件中提取扩展签名证书文件;步骤S53,利用扩展签名证书文件中的信息验证扩展签名;步骤S54,利用扩展签名证书文件中的信息验证摘要文件;步骤S55,利用摘要文件验证安装文件是否被篡改。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S53包括:利用证书签发机构的公钥验证扩展签名。
较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S54、S55包括:验证摘要文件的内容列表和安装包文件中除META-INF目录以外的文件的摘要信息的对应关系。
借由上述技术方案,本发明一种面向安卓系统软件的扩展签名的实现方法至少具有下列优点及有益效果:本发明在谷歌自签名基础上增加了一 次扩展签名环节,提高了安卓系统的安全性,该方法不影响原有谷歌的签名机制,采用可扩展签名技术,产生扩展签名的过程独立可控,扩展签名可在原有谷歌签名之前或之后,互相独立,验证环节简单可靠,该扩展签名可用于开发者身份的识别和该安卓系统应用的不可篡改性的验证。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1是本发明方法的流程图。
图2是本发明方法的验证签名流程图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种面向安卓系统软件的扩展签名的实现方法的具体实施方式、结构、特征及其功效,详细说明如后。
请参阅图1,是本发明方法的流程图。包括以下步骤:
步骤S1,获取开发者生成的安卓程序文件;
步骤S1所述的开发者生成的安卓程序文件可以是开发者自签名后的程序文件,也可以是开发者还未签名的程序文件。
步骤S2,对上述程序文件进行数字签名(即扩展签名),生成扩展签名证书文件;
步骤S2所述的签名方法符合X.509协议等数字认证协议和技术标准,所认证的文件不包括META-INF目录里面的文件,即对程序文件提取数字摘要信息(如利用哈希算法生成摘要文件)时,所计算的文件不包括META-INF目录里面的文件。所述的扩展签名证书文件中包含证书签发机构(即认证机构)的公钥,保证签名验证的时候利用证书签发机构的公钥来验证签名。
步骤S3,将扩展签名证书文件存放在安卓程序文件中的META-INF目录下;
扩展签名证书文件插入程序文件的META-INF目录下,不影响开发者原有的自签名机制。
步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。
本发明的以上认证机构扩展签名步骤S1~S4可以在开发者自签名之前或之后,认证机构扩展签名与开发者自签名互相独立,互不影响。
若是认证机构扩展签名在开发者自签名之后,则上述步骤S1所述的程序文件是开发者已签名的程序文件,则在步骤S1之前(认证机构扩展签名之前)还包括开发者的自签名步骤:
步骤S11,开发者对原始程序文件中除META-INF目录以外的文件计算并生成摘要文件;
步骤S12,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件;
步骤S12所述的将该签名与开发者自有的公钥一起保存在证书文件中,是为了签名验证的时候利用开发者自有的公钥来验证签名。
步骤S13,打包签名证书文件,得到开发者生成的安卓程序文件。
步骤S13所述的开发者生成的安卓程序文件即开发者自签名的程序文件。
若是认证机构扩展签名在开发者自签名之前,则上述步骤S1所述的程序文件是开发者未签名的程序文件,则在步骤S4之后(认证机构扩展签名之后)还包括开发者的自签名步骤:
步骤S41,开发者对插入扩展签名证书文件后的程序文件中除META-INF目录以外的文件计算并生成摘要文件;
步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,构成签名证书文件。
在完成签名之后,认证机构进行扩展签名验证的步骤如下:
步骤S51,认证机构获取安装包文件;
步骤S52,从安装包文件中提取扩展签名证书文件;
步骤S53,利用扩展签名证书文件中的信息验证扩展签名;
上述步骤S53包括:利用证书签发机构的公钥验证扩展签名。
步骤S54,利用扩展签名证书文件中的信息验证摘要文件;
步骤S55,利用摘要文件验证安装文件是否被篡改;
上述步骤S54和S55包括:验证摘要文件的内容列表和安装包文件中除META-INF目录以外的文件的摘要信息的对应关系,如验证通过则说明安装包文件是已备案的开发者发布的可信应用,未经篡改;如验证不通过则说明安装包文件被篡改。
为了实现上述认证机构扩展签名的生成和验证,需要采用现有DSVS签名服务器的证书应用接口封装成符合认证机构要求的专用签名验签工具,该工具主要包括生成和验证两个子模块,其中生成子模块工具具备以下功能:配置根证书;展示程序内的关键文件列表供检查机构进行选择; 提供哈希功能,对选中的关键文件生成哈希;将哈希和检查机构证书标识送入DSVS签名服务器生成含数字证书的数字签名;实现数字签名、上文件名、文件相对路径、测评机构证书写入XML文件,并打包成数字签名XML文件。验证子模块工具具备以下功能:根证书管理选择数字签名XML文件;验证数字签名文件的有效性,返回验证结果。
以下,针对本发明的签名方法,特举具体实施例进行详细说明。
实施例一,开发者签名在前,认证机构扩展签名在后:
第一步,获取原始程序文件B;对程序文件B中除META-INF目录以外的文件进行哈希运算生成摘要文件digestB;
上述程序文件B是通过对待签名的压缩包UnsignedApp.apk解压缩而得到的具体的程序文件,包括:配置文件(AndroidManifest.xml),程序的执行代码(classes.dex),资源文件(/res目录下的文件)等。
第二步,利用开发者自有的私钥对摘要文件digestB计算生成签名SigB,将签名SigB与开发者自有的公钥一起保存在证书文件中,生成签名证书文件SignedFileB;
第三步,打包签名证书文件SignedFileB,得到开发者自签名的安卓程序文件SignedApp_1st.apk;
第四步,解压缩程序文件SignedApp_1st.apk,并对除META-INF目录之外的文件进行哈希运算生成摘要文件digestA;
第五步,经第三方认证机构对摘要文件digestA计算生成数字签名SigA,将签名SigA与认证机构生成的公钥一起保存在证书文件中,生成扩展签名证书文件SignedFileA;
第六步,将扩展签名证书文件SignedFileA插入程序文件SignedApp_1st.apk的META-INF目录下;
第七步,打包上述插入扩展签名证书文件SignedFileA后的程序文件,得到安装包文件SignedApp_2nd.apk,完成扩展签名。
以上安装包文件SignedApp_2nd.apk的签名的验证过程,包括认证机构利用专用验签工具进行扩展签名的验证和安卓系统的自签名的验证。认证机构的扩展签名采用以下步骤逐一进行验证:
第一步,认证机构获取安装包文件SignedApp_2nd.apk;
第二步,从安装包文件SignedApp_2nd.apk的META-INF目录中提取扩展签名证书文件SignedFileA;
第三步,利用扩展签名证书文件SignedFileA中认证机构生成的公钥验证签名SigA;
第四步,利用扩展签名证书文件SignedFileA中的信息验证摘要文件digestA;
扩展签名证书文件SignedFileA中除了包含签名SigA,还包括程序文件SignedApp_1st.apk中除META-INF目录以外的文件的摘要文件digestA,此处的验证摘要文件digestA是指验证摘要文件digestA的内容列表和程序文件SignedApp_1st.apk解压缩后的除META-INF目录以外的所有文件的摘要信息是否一一对应,如对应则说明安装包文件SignedApp_2nd.apk是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SignedApp_2nd.apk被篡改。
Android系统使用PackageInstaller程序进行应用程序的安装,并在安装过程中进行自签名的验证,验证步骤如下:
第一步,安卓系统利用开发者自有的公钥验证签名SigB;
第二步,安卓系统验证摘要文件digestB;
签名证书文件SignedFileB中除了包含签名SigB,还包括原始程序文件B的除META-INF目录以外的文件的摘要文件digestB,此处的验证摘要文件digestB是指验证摘要文件digestB的内容列表和原始程序文件B解压缩后的除META-INF目录以外的所有文件的摘要信息是否一一对应,对应说明包体SignedApp_1st.apk可信,不对应说明包体SignedApp_1st.apk在签名后被窜改。
实施例二,认证机构扩展签名在前,开发者签名在后:
第一步,认证机构获取开发者生成的未签名的程序文件C;
第二步,对程序文件C中除META-INF目录以外的文件进行哈希运算生成摘要文件digestC;
第三步,利用认证机构生成的私钥对摘要文件digestC计算并生成签名sigC,并将签名sigC与认证机构生成的公钥一起保存在证书文件中,得到扩展签名证书文件SignedFileC,并将扩展签名证书文件SignedFileC插入程序文件C的META-INF目录下;
第四步,对插入扩展签名证书文件SignedFileC后的程序文件除META-INF目录以外的文件进行哈希运算生成摘要文件digestD;
第五步,利用开发者自有的私钥对摘要文件digestD计算生成签名sigD,并将签名sigD与开发者自有的公钥一起保存在证书文件中,构成签名证书文件SignedFileD;
第六步,对上述提到的程序文件和证书文件进行打包,得到安装包文件SignedApp.apk,完成扩展签名。
以上安装包文件SignedApp.apk的签名的验证过程,包括认证机构利用专用验签工具进行扩展签名的验证和安卓系统的自签名的验证。认证机构的扩展签名采用以下步骤逐一进行验证:
第一步,认证机构获取安装包文件SignedApp.apk;
第二步,从安装包文件SignedApp.apk的META-INF目录中提取扩展签名证书文件SignedFileC;
第三步,利用扩展签名证书文件SignedFileC中认证机构生成的公钥验证签名SigC;
第四步,利用扩展签名证书文件SignedFileC中的信息验证摘要文件digestC;
扩展签名证书文件SignedFileC中除了包含签名SigC,还包括程序文件C除META-INF目录以外的文件的摘要文件digestC,此处的验证摘要文件digestC是指验证摘要文件digestC的内容列表和程序文件C除META-INF目录以外的所有文件的摘要信息是否一一对应,对应说明安装包文件SignedApp.apk是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SignedApp.apk被篡改。
Android系统使用PackageInstaller程序进行应用程序的安装,并在安装过程中进行自签名的验证,验证步骤如下:
第一步,安卓系统利用开发者自有的公钥验证签名SigD;
第二步,安卓系统验证摘要文件digestD;
签名证书文件SignedFileD中除了包含签名SigD,还包括除META-INF目录以外的文件的摘要文件digestD,此处的验证摘要文件digestD是指验证摘要文件digestD的内容列表和除META-INF目录以外的所有文件的摘要信息是否一一对应,对应说明安装包文件SignedApp.apk是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SignedApp.apk被篡改。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

一种面向安卓系统软件的扩展签名的实现方法.pdf_第1页
第1页 / 共11页
一种面向安卓系统软件的扩展签名的实现方法.pdf_第2页
第2页 / 共11页
一种面向安卓系统软件的扩展签名的实现方法.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《一种面向安卓系统软件的扩展签名的实现方法.pdf》由会员分享,可在线阅读,更多相关《一种面向安卓系统软件的扩展签名的实现方法.pdf(11页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104156638A43申请公布日20141119CN104156638A21申请号201410250845622申请日20140606G06F21/12201301G06F21/4420130171申请人国家计算机网络与信息安全管理中心地址100029北京市朝阳区裕民路甲3号72发明人何能强云晓春王宇王明华赵慧张鸿江徐晓燕严寒冰李佳纪玉春赵宸金红杨满智王小华陈普贵74专利代理机构北京中原华和知识产权代理有限责任公司11019代理人寿宁张华辉54发明名称一种面向安卓系统软件的扩展签名的实现方法57摘要本发明是关于一种面向安卓系统软件的扩展签名的实现方法,该方法包括S1,获取开。

2、发者生成的安卓程序文件;S2,对上述程序文件进行数字签名,生成扩展签名证书文件;S3,将扩展签名证书文件存放在安卓程序文件中的METAINF目录下;S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。本发明在不破坏安卓系统自签名机制的基础上进行了一次扩展签名,该扩展签名可用于开发者身份认证、安全检测认证等第三方数字认证,提高了安卓系统的安全性。51INTCL权利要求书2页说明书6页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图2页10申请公布号CN104156638ACN104156638A1/2页21一种面向安卓系统软件。

3、的扩展签名的实现方法,其特征在于包括以下步骤步骤S1,获取开发者生成的安卓程序文件;步骤S2,对上述程序文件进行数字签名,生成扩展签名证书文件;步骤S3,将扩展签名证书文件存放在安卓程序文件中的METAINF目录下;步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。2如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S1之前还包括以下开发者自签名的步骤步骤S11,开发者对原始程序文件中除METAINF目录以外的文件计算并生成摘要文件;步骤S12,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件。

4、中,生成签名证书文件;步骤S13,打包签名证书文件,得到开发者生成的安卓程序文件。3如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S2包括对程序文件提取数字摘要信息,利用哈希算法生成摘要文件。4如权利要求3所述的面向安卓系统软件的扩展签名的实现方法,其特征在于利用哈希算法所计算的文件不包括METAINF目录里面的文件。5如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于所述的扩展签名证书文件中包含证书签发机构的公钥。6如权利要求1所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S4之后还包括以下开发者自签名的步骤步骤S41,开发者对插入扩展签名。

5、证书文件后的程序文件中除METAINF目录以外的文件计算并生成摘要文件;步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件。7如权利要求1或3所述的面向安卓系统软件的扩展签名的实现方法,其特征在于在步骤S4完成扩展签名之后还包括以下验证扩展签名的步骤步骤S51,认证机构获取安装包文件;步骤S52,从安装包文件中提取扩展签名证书文件;步骤S53,利用扩展签名证书文件中的信息验证扩展签名;步骤S54,利用扩展签名证书文件中的信息验证摘要文件;步骤S55,利用摘要文件验证安装文件是否被篡改。8如权利要求7所述的面向安卓系统软件的。

6、扩展签名的实现方法,其特征在于步骤S53包括利用证书签发机构的公钥验证扩展签名。9如权利要求7所述的面向安卓系统软件的扩展签名的实现方法,其特征在于步骤S54、S55包括验证摘要文件的内容列表和安装包文件中除METAINF目录以外的文件的摘要信息的权利要求书CN104156638A2/2页3对应关系。权利要求书CN104156638A1/6页4一种面向安卓系统软件的扩展签名的实现方法技术领域0001本发明涉及一种软件签名方法,特别是涉及一种面向安卓系统软件的扩展签名的实现方法。背景技术0002近几年,由于我国移动通信网络的不断优化、移动设备智能终端的不断普及,移动终端设备在不同的行业领域里提升。

7、了工作效率。我国目前移动互联网应用软件产业每天在发生巨大的变化,互联网应用软件开发企业及开发者快速增长。分布在移动终端设备中的手机游戏、手机支付、移动商务的应用软件,不仅加强了移动互联网与公众生活的联系,也在不断地改变我们的生产和生活方式。0003然而,我们国家移动互联网产业在快速发展过程中,相应的问题也在不断凸现,绝大多数人们在安装APP后发现会被窃取终端手机号和通讯录,有些“关闭不掉的广告、“无法卸载的应用、“恶意扣费的现象严重影响了人们对APP信任程度,并且很多企业的应用开发者在不知情的情况下APP被盗版、内置恶意吸费代码,然后被上传到第三方应用市场,一旦用户下载安装了这类应用,就会被恶。

8、意扣费。0004为确保经过检查的软件的安全合法使用,保障检测完成的软件的真实有效以及在使用过程中与当初检查保持一致性,需要采用数字证书来实现其检查认证及真实完整,降低现场测试的测试成本,提高检测效率。通过有效利用数字签名技术,实现对源码、资源文件、主配文件的保障,从而获知APK产品代码是否安全、是否容易被反编译、源代码是否裸奔、资源文件和ANDROID主配文件是否被动用。0005现有的签名方法主要采用谷歌提供的自签名机制由开发者自发签名,谷歌未提供扩展签名的方法,不利于第三方认证机构的认证和监管,因此安卓系统存在严重的安全隐患。发明内容0006本发明的目的在于解决现有的安卓软件自签名机制存在的。

9、不足,而提供一种面向安卓系统软件的扩展签名的实现方法。0007本发明的目的是采用以下技术方案来实现的。本发明是一种面向安卓系统软件的扩展签名的实现方法,包括以下步骤步骤S1,获取开发者生成的安卓程序文件;步骤S2,对上述程序文件进行数字签名,生成扩展签名证书文件;步骤S3,将扩展签名证书文件存放在安卓程序文件中的METAINF目录下;步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。0008本发明的目的还可采用以下技术措施进一步实现。0009较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S1之前还包括以下开发者自签名的步骤步骤S11,。

10、开发者对原始程序文件中除METAINF目录以外的文件计算并生成摘要文件;步骤S12,利用开发者自有的私钥对摘要文件计算并生说明书CN104156638A2/6页5成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件;步骤S13,打包签名证书文件,得到开发者生成的安卓程序文件。0010较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S2包括对程序文件提取数字摘要信息,利用哈希算法生成摘要文件。0011较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的利用哈希算法所计算的文件不包括METAINF目录里面的文件。0012较佳的,前述的面向安卓系统软件。

11、的扩展签名的实现方法,其中所述的扩展签名证书文件中包含证书签发机构的公钥。0013较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S4之后还包括以下开发者自签名的步骤步骤S41,开发者对插入签名证书文件后的程序文件中除METAINF目录以外的文件计算并生成摘要文件;步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件。0014较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中在步骤S4完成扩展签名之后还包括以下验证扩展签名的步骤步骤S51,认证机构获取安装包文件;步骤S52,从安装包文件中提取扩展签名。

12、证书文件;步骤S53,利用扩展签名证书文件中的信息验证扩展签名;步骤S54,利用扩展签名证书文件中的信息验证摘要文件;步骤S55,利用摘要文件验证安装文件是否被篡改。0015较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S53包括利用证书签发机构的公钥验证扩展签名。0016较佳的,前述的面向安卓系统软件的扩展签名的实现方法,其中所述的步骤S54、S55包括验证摘要文件的内容列表和安装包文件中除METAINF目录以外的文件的摘要信息的对应关系。0017借由上述技术方案,本发明一种面向安卓系统软件的扩展签名的实现方法至少具有下列优点及有益效果本发明在谷歌自签名基础上增加了一次扩。

13、展签名环节,提高了安卓系统的安全性,该方法不影响原有谷歌的签名机制,采用可扩展签名技术,产生扩展签名的过程独立可控,扩展签名可在原有谷歌签名之前或之后,互相独立,验证环节简单可靠,该扩展签名可用于开发者身份的识别和该安卓系统应用的不可篡改性的验证。0018上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。附图说明0019图1是本发明方法的流程图。0020图2是本发明方法的验证签名流程图。具体实施方式0021为更进一步阐述本发明为达成预定发明。

14、目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种面向安卓系统软件的扩展签名的实现方法说明书CN104156638A3/6页6的具体实施方式、结构、特征及其功效,详细说明如后。0022请参阅图1,是本发明方法的流程图。包括以下步骤0023步骤S1,获取开发者生成的安卓程序文件;0024步骤S1所述的开发者生成的安卓程序文件可以是开发者自签名后的程序文件,也可以是开发者还未签名的程序文件。0025步骤S2,对上述程序文件进行数字签名即扩展签名,生成扩展签名证书文件;0026步骤S2所述的签名方法符合X509协议等数字认证协议和技术标准,所认证的文件不包括METAINF目。

15、录里面的文件,即对程序文件提取数字摘要信息如利用哈希算法生成摘要文件时,所计算的文件不包括METAINF目录里面的文件。所述的扩展签名证书文件中包含证书签发机构即认证机构的公钥,保证签名验证的时候利用证书签发机构的公钥来验证签名。0027步骤S3,将扩展签名证书文件存放在安卓程序文件中的METAINF目录下;0028扩展签名证书文件插入程序文件的METAINF目录下,不影响开发者原有的自签名机制。0029步骤S4,将带有扩展签名证书文件的安卓程序解压文件重新打包生成安卓程序文件,完成扩展签名。0030本发明的以上认证机构扩展签名步骤S1S4可以在开发者自签名之前或之后,认证机构扩展签名与开发者。

16、自签名互相独立,互不影响。0031若是认证机构扩展签名在开发者自签名之后,则上述步骤S1所述的程序文件是开发者已签名的程序文件,则在步骤S1之前认证机构扩展签名之前还包括开发者的自签名步骤0032步骤S11,开发者对原始程序文件中除METAINF目录以外的文件计算并生成摘要文件;0033步骤S12,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,生成签名证书文件;0034步骤S12所述的将该签名与开发者自有的公钥一起保存在证书文件中,是为了签名验证的时候利用开发者自有的公钥来验证签名。0035步骤S13,打包签名证书文件,得到开发者生成的安卓程序文。

17、件。0036步骤S13所述的开发者生成的安卓程序文件即开发者自签名的程序文件。0037若是认证机构扩展签名在开发者自签名之前,则上述步骤S1所述的程序文件是开发者未签名的程序文件,则在步骤S4之后认证机构扩展签名之后还包括开发者的自签名步骤0038步骤S41,开发者对插入扩展签名证书文件后的程序文件中除METAINF目录以外的文件计算并生成摘要文件;0039步骤S42,利用开发者自有的私钥对摘要文件计算并生成签名,将该签名与开发者自有的公钥一起保存在证书文件中,构成签名证书文件。0040在完成签名之后,认证机构进行扩展签名验证的步骤如下0041步骤S51,认证机构获取安装包文件;0042步骤S。

18、52,从安装包文件中提取扩展签名证书文件;说明书CN104156638A4/6页70043步骤S53,利用扩展签名证书文件中的信息验证扩展签名;0044上述步骤S53包括利用证书签发机构的公钥验证扩展签名。0045步骤S54,利用扩展签名证书文件中的信息验证摘要文件;0046步骤S55,利用摘要文件验证安装文件是否被篡改;0047上述步骤S54和S55包括验证摘要文件的内容列表和安装包文件中除METAINF目录以外的文件的摘要信息的对应关系,如验证通过则说明安装包文件是已备案的开发者发布的可信应用,未经篡改;如验证不通过则说明安装包文件被篡改。0048为了实现上述认证机构扩展签名的生成和验证,。

19、需要采用现有DSVS签名服务器的证书应用接口封装成符合认证机构要求的专用签名验签工具,该工具主要包括生成和验证两个子模块,其中生成子模块工具具备以下功能配置根证书;展示程序内的关键文件列表供检查机构进行选择;提供哈希功能,对选中的关键文件生成哈希;将哈希和检查机构证书标识送入DSVS签名服务器生成含数字证书的数字签名;实现数字签名、上文件名、文件相对路径、测评机构证书写入XML文件,并打包成数字签名XML文件。验证子模块工具具备以下功能根证书管理选择数字签名XML文件;验证数字签名文件的有效性,返回验证结果。0049以下,针对本发明的签名方法,特举具体实施例进行详细说明。0050实施例一,开发。

20、者签名在前,认证机构扩展签名在后0051第一步,获取原始程序文件B;对程序文件B中除METAINF目录以外的文件进行哈希运算生成摘要文件DIGESTB;0052上述程序文件B是通过对待签名的压缩包UNSIGNEDAPPAPK解压缩而得到的具体的程序文件,包括配置文件ANDROIDMANIFESTXML,程序的执行代码CLASSESDEX,资源文件/RES目录下的文件等。0053第二步,利用开发者自有的私钥对摘要文件DIGESTB计算生成签名SIGB,将签名SIGB与开发者自有的公钥一起保存在证书文件中,生成签名证书文件SIGNEDFILEB;0054第三步,打包签名证书文件SIGNEDFILE。

21、B,得到开发者自签名的安卓程序文件SIGNEDAPP_1STAPK;0055第四步,解压缩程序文件SIGNEDAPP_1STAPK,并对除METAINF目录之外的文件进行哈希运算生成摘要文件DIGESTA;0056第五步,经第三方认证机构对摘要文件DIGESTA计算生成数字签名SIGA,将签名SIGA与认证机构生成的公钥一起保存在证书文件中,生成扩展签名证书文件SIGNEDFILEA;0057第六步,将扩展签名证书文件SIGNEDFILEA插入程序文件SIGNEDAPP_1STAPK的METAINF目录下;0058第七步,打包上述插入扩展签名证书文件SIGNEDFILEA后的程序文件,得到安装。

22、包文件SIGNEDAPP_2NDAPK,完成扩展签名。0059以上安装包文件SIGNEDAPP_2NDAPK的签名的验证过程,包括认证机构利用专用验签工具进行扩展签名的验证和安卓系统的自签名的验证。认证机构的扩展签名采用以下步骤逐一进行验证0060第一步,认证机构获取安装包文件SIGNEDAPP_2NDAPK;说明书CN104156638A5/6页80061第二步,从安装包文件SIGNEDAPP_2NDAPK的METAINF目录中提取扩展签名证书文件SIGNEDFILEA;0062第三步,利用扩展签名证书文件SIGNEDFILEA中认证机构生成的公钥验证签名SIGA;0063第四步,利用扩展签。

23、名证书文件SIGNEDFILEA中的信息验证摘要文件DIGESTA;0064扩展签名证书文件SIGNEDFILEA中除了包含签名SIGA,还包括程序文件SIGNEDAPP_1STAPK中除METAINF目录以外的文件的摘要文件DIGESTA,此处的验证摘要文件DIGESTA是指验证摘要文件DIGESTA的内容列表和程序文件SIGNEDAPP_1STAPK解压缩后的除METAINF目录以外的所有文件的摘要信息是否一一对应,如对应则说明安装包文件SIGNEDAPP_2NDAPK是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SIGNEDAPP_2NDAPK被篡改。0065ANDR。

24、OID系统使用PACKAGEINSTALLER程序进行应用程序的安装,并在安装过程中进行自签名的验证,验证步骤如下0066第一步,安卓系统利用开发者自有的公钥验证签名SIGB;0067第二步,安卓系统验证摘要文件DIGESTB;0068签名证书文件SIGNEDFILEB中除了包含签名SIGB,还包括原始程序文件B的除METAINF目录以外的文件的摘要文件DIGESTB,此处的验证摘要文件DIGESTB是指验证摘要文件DIGESTB的内容列表和原始程序文件B解压缩后的除METAINF目录以外的所有文件的摘要信息是否一一对应,对应说明包体SIGNEDAPP_1STAPK可信,不对应说明包体SIGN。

25、EDAPP_1STAPK在签名后被窜改。0069实施例二,认证机构扩展签名在前,开发者签名在后0070第一步,认证机构获取开发者生成的未签名的程序文件C;0071第二步,对程序文件C中除METAINF目录以外的文件进行哈希运算生成摘要文件DIGESTC;0072第三步,利用认证机构生成的私钥对摘要文件DIGESTC计算并生成签名SIGC,并将签名SIGC与认证机构生成的公钥一起保存在证书文件中,得到扩展签名证书文件SIGNEDFILEC,并将扩展签名证书文件SIGNEDFILEC插入程序文件C的METAINF目录下;0073第四步,对插入扩展签名证书文件SIGNEDFILEC后的程序文件除ME。

26、TAINF目录以外的文件进行哈希运算生成摘要文件DIGESTD;0074第五步,利用开发者自有的私钥对摘要文件DIGESTD计算生成签名SIGD,并将签名SIGD与开发者自有的公钥一起保存在证书文件中,构成签名证书文件SIGNEDFILED;0075第六步,对上述提到的程序文件和证书文件进行打包,得到安装包文件SIGNEDAPPAPK,完成扩展签名。0076以上安装包文件SIGNEDAPPAPK的签名的验证过程,包括认证机构利用专用验签工具进行扩展签名的验证和安卓系统的自签名的验证。认证机构的扩展签名采用以下步骤逐一进行验证0077第一步,认证机构获取安装包文件SIGNEDAPPAPK;007。

27、8第二步,从安装包文件SIGNEDAPPAPK的METAINF目录中提取扩展签名证书文件SIGNEDFILEC;说明书CN104156638A6/6页90079第三步,利用扩展签名证书文件SIGNEDFILEC中认证机构生成的公钥验证签名SIGC;0080第四步,利用扩展签名证书文件SIGNEDFILEC中的信息验证摘要文件DIGESTC;0081扩展签名证书文件SIGNEDFILEC中除了包含签名SIGC,还包括程序文件C除METAINF目录以外的文件的摘要文件DIGESTC,此处的验证摘要文件DIGESTC是指验证摘要文件DIGESTC的内容列表和程序文件C除METAINF目录以外的所有文。

28、件的摘要信息是否一一对应,对应说明安装包文件SIGNEDAPPAPK是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SIGNEDAPPAPK被篡改。0082ANDROID系统使用PACKAGEINSTALLER程序进行应用程序的安装,并在安装过程中进行自签名的验证,验证步骤如下0083第一步,安卓系统利用开发者自有的公钥验证签名SIGD;0084第二步,安卓系统验证摘要文件DIGESTD;0085签名证书文件SIGNEDFILED中除了包含签名SIGD,还包括除METAINF目录以外的文件的摘要文件DIGESTD,此处的验证摘要文件DIGESTD是指验证摘要文件DIGESTD。

29、的内容列表和除METAINF目录以外的所有文件的摘要信息是否一一对应,对应说明安装包文件SIGNEDAPPAPK是已备案的开发者发布的可信应用,未经篡改;如不对应则说明安装包文件SIGNEDAPPAPK被篡改。0086以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。说明书CN104156638A1/2页10图1说明书附图CN104156638A102/2页11图2说明书附图CN104156638A11。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1