一种基于二次签名验签技术的应用程序管控方法

文档序号:6543970阅读:222来源:国知局
一种基于二次签名验签技术的应用程序管控方法
【专利摘要】一种基于签名验签技术的安卓终端应用程序管控方法是通过对安卓终端应用程序进行两次签名及两次验签实现。应用程序由可信赖的第三方安全检测机构进行安全检测,对于通过检测的应用程序第三方安全检测机构会进行签名,然后将签名后的应用返还开发者。安卓智能终端安装应用程序时,首先对其进行安全检测,看是否经第三方安全检测机构签名,并对签名进行验证。如果没有第三方检测机构签名或者验签不通过,则拒绝安装。本发明所述技术方案的有益效果在于:通过引入第三方检测签名及安卓终端的安全管控模块固化签名信息,使得安全的应用程序可以通过多种渠道下载安装到安卓系统中,保证安卓终端安全的同时,提出了一种灵活、高效的应用程序验证方案。
【专利说明】一种基于二次签名验签技术的应用程序管控方法
【技术领域】
[0001]本发明涉及安卓技术应用程序领域,更具体的是一种基于签名验签技术的安卓终端应用程序管控方法。
【背景技术】
[0002]安卓(Android)是一种基于Linux的自由及开放源代码的操作系统,主要使用于智能手机、平板电脑及智能电视等智能终端。
[0003]随着安卓智能终端的普及和发展,智能终端成为病毒、木马发展的新渠道,各种类型的安卓安装包(APK,Android Package)应运而生,其中不乏一些恶意的应用程序,例如有的应用程序会通过网络或其它方式窃取用户隐私资料;有的应用程序会在无任何提示、用户不知情的情况下,强制性地定制付费业务或直接利用智能终端支付某种费用;有的应用程序会不经用户同意下载某个软件,或者以“新版本”及其它提示误导用户下载某个恶意软件等等。如果智能终端用户误安装了这些应用程序,将会造成极大的危害。
[0004]据美国安全公司F-Secure在2012年发布的恶意程序统计数据显示,安卓智能终端是79%的移动恶意程序瞄准的目标。为了避免安卓智能终端受到病毒等恶意程序的侵害,智能终端需要对其上安装的应用程序进行管控。目前国内外安卓智能终端对于应用程序的管控方法主要有两种:第一种是以谷歌为代表的智能终端厂商将自己的应用商城视为唯一的可靠源,只能从自家应用商城中下载安装应用程序,通过其它应用程序商城下载安装应用程序时,都会被提示“未知源”,根据用户设置对未知源进行处理;第二种是国内的智能电视厂商目前采用的方式,不允许用户安装应用程序,严格控制USB等其它接口拷贝应用程序安装。这些管控方法限制非常多,不灵活,而且易被绕过,随着安卓技术的发展,弊端越来越明显。
[0005]由于目前安卓终端应用程序管控方法的局限性,无法在保障安全的前提下全方位满足用户需求,需要一种新的更灵活、高效、安全的管控方法。

【发明内容】

[0006]本发明就是针对现有技术的不足,提供的一种基于二次签名验签技术的安卓智能终端应用程序管控方法,使用所述的管控方法能保障安卓终端安全的同时全方位满足用户需求,具有较高的更灵活性和高效性。
[0007]—种基于二次签名验签技术的安卓终端应用程序管控方法:
安卓应用程序开发者对应用程序进行第一次签名,签名后的应用程序包至少包括META-1NF、res> AndroidManifest.xml、classes, dex、resources, arse 五个目录文件;
所述应用程序由第三方进行安全测评并在第一次签名的基础上进行第二次签名;所述的第二次签名是针对除META-1NF外的目录文件进hash,得到hash值H1,利用签名算法对Hl签名得到签名值SI,同时生成密文文件sign, sig,所述密文文件sign, sig记录了签名值SI并存放于META-1NF目录文件中;同时所述的META-1NF目录文件内存放info, txt和public, pem两个文件,所述的info, txt文件记录版权和签名信息;所述public, pem文件为公钥证书文件,所述公钥证书文件记录了公钥Pl ;
在安卓终端的安全管控模块中设置一不可更改的公钥证书,所述公钥证书的公钥为
P2 ;
安卓终端的安全验证模块包含两次验签,分别是开发者签名的验签和第三方签名的验签。首先对开发者的签名进行验签,验签通过后再对第三方的签名进行验签。
[0008]所述第二次验签的步骤为:安卓终端的安全验证模块取出META-1NF目录文件中的第三方二次签名形成的公钥证书public, pem和密文sign, sig两个文件,若公钥证书public, pem和密文sign, sig两个文件不存在,则验签失败;若存在,所述安全验证模块从密文sign, sig文件中获得签名值SI,从公钥证书public, pem中获得公钥P1,同时从公钥证书public, pem中获取摘要计算算法,对除META-1NF外的所有文件进行摘要计算并得到hash值Hl,然后用公钥Pl对SI进行解密得到hash值H2,比较Hl和H2,如果不同则验签失败,如果相同,则从安卓终端的安全管控模块中获取预存的公钥证书,并从中提取公钥P2,比较Pl和P2,如果不同则验签失败,如果相同则二次验签成功。
[0009]进一步的,所述的第二次签名使用的签名算法可以为RSA、ECC、SM2,所述的HASH算法支持sha_l、md5。
[0010]进一步的,所述的应用程序可以从应用商城下载,也可以通过USb接口拷贝安卓终端上。
[0011]进一步的,所述的安卓终端的安全管控模块中集成了对公钥证书的更新管理单
J Li ο
[0012]本发明所述技术方案的有益效果在于:通过引入第三方检测签名及安卓终端的安全管控模块固化签名信息,使得安全的应用程序可以通过多种渠道下载安装到安卓系统中,保证安卓终端安全的同时,提出了一种灵活、高效的应用程序验证方案。
【具体实施方式】
[0013]一种基于二次签名验签技术的安卓终端应用程序管控方法:安卓应用程序开发者对应用程序进行第一次签名,签名后的应用程序由第三方安全检测机构进行安全检测并对通过检测的应用程序进行二次签名,然后将签名后的应用返还开发者或上传到应用商城。
[0014]安卓智能终端安装应用程序时,安卓智能终端的安全管控模块验证应用程序的签名与安全管控模块中存储的第三方签名验证信息进行对比,如安全管控模块中存储的第三方签名验证信息含有应用程序的签名,则安卓终端自动安装应用程序,如安全管控模块中存储的第三方签名验证信息不含有应用程序的签名,则安卓终端拒绝安装或提示用户是否安装。
[0015]安卓应用程序开发者对应用程序进行第一次签名,签名后的安卓应用程序包至少包括 META_INF、res、AndroidManifest.xml、classes, dex、resources, arse 五个目录文件;其中所述的META-1NF为Jar文件中常用文件,所述的res文件用于存放资源文件的目录,所述的AndroidManifest.xml为程序全局配置文件,所述的classes, dex为Dalvik字节码文件,所述的resources, arse文件为编译后的二进制资源文件。
[0016]需要特别说明的是:安卓应用程序开发者对应用程序进行签名后,至少会形成META-1NF、res> AndroidManifest.xml、classes, dex、resources, arse 五个目录文件,根据应用程序实际开发的需要,通常还会形成其他目录文件。
[0017]所述安卓应用程序由第三方进行安全测评并在第一次签名的基础上进行第二次签名;
所述的第二次签名针对除META-1NF外目录文件进hash,得到hash值Hl,利用签名算法对Hl签名得到签名值SI,同时生成密文文件sign, sig,所述密文文件sign, sig记录了签名值SI并存放于META-1NF目录文件中;同时所述的META-1NF目录文件内存放info, txt和public, pem两个文件,所述的info, txt文件记录版权和签名信息;所述public, pem文件为公钥证书文件,所述公钥证书文件记录了公钥P1。
[0018]其中本发明所使用的签名算法支持RSA、ECC、SM2等,HASH算法支持Sha_l、md5。
[0019]现有的安卓终端通常具有安全验证模块和安卓应用程序安装器,在本发明中,将其定义为安全管控模块。
[0020]在安卓终端中预装公钥证书,以保证其安全不受篡改。虽然在二次签名过程中,在META-1NF目录下存放了公钥证书,但这个公钥证书和密文可以一起被篡改,所以不能使用这个公钥证书。因此需要在安卓终端系统里建一个公钥证书安全存储区,预装公钥证书,以保证该公钥证书不会被非授权篡改。也就是说实现本发明所述的技术方案,需要在安卓终端的安全管控模块中设置一不可更改的公钥证书,所述公钥证书的公钥为P2 ;
安卓终端的安全验证模块包含两次验签,分别是开发者签名的验签和第三方签名的验签。首先对开发者的签名进行验签,验签通过后再对第三方的签名进行验签。
[0021]所述第二次验签的步骤为:安卓终端的安全验证模块取出META-1NF目录文件中的第三方二次签名形成的公钥证书public, pem和密文sign, sig两个文件,若公钥证书public, pem和密文sign, sig两个文件不存在,则验签失败;若存在,所述安全验证模块从密文sign, sig文件中获得签名值SI,从公钥证书public, pem中获得公钥P1,同时从公钥证书public, pem中获取摘要计算算法,对除META-1NF外的所有文件进行摘要计算并得到hash值Hl,然后用公钥Pl对SI进行解密得到hash值H2,比较Hl和H2,如果不同则验签失败,如果相同,则从安卓终端的安全管控模块中获取预存的公钥证书,并从中提取公钥P2,比较Pl和P2,如果不同则验签失败,如果相同则二次验签成功。
[0022]若二次验签成功,则允许安装。若不成功,弹出提示框,提示该程序没有经权威机构签名或验签不成功,存在风险。询问用户是否继续安装。
【权利要求】
1.一种基于二次签名验签技术的安卓终端应用程序管控方法,通过对安卓终端应用程序进行两次签名及两次验签实现;其特征在于: 所述两次签名为:安卓应用程序开发者对应用程序进行第一次签名,签名后的应用程序包至少包括 META-1NF、res、AndroidManifest.xml、classes, dex、resources, arse 五个目录文件;然后由第三方对所述签名后的应用程序进行安全检测和第二次签名; 所述的两次验签为:安卓终端的安全验证模块包含两次验签,分别是开发者签名的验签和第三方签名的验签,首先对开发者的签名进行验签,验签通过后再对第三方的签名进行验签; 所述的第二次签名是针对除META-1NF外的目录文件进hash,得到hash值H1,利用签名算法对Hl签名得到签名值SI,同时生成密文文件sign, sig,所述密文文件sign, sig记录了签名值SI并存放于META-1NF目录文件中;同时所述的META-1NF目录文件内存放info, txt和public, pem两个文件,所述的info, txt文件记录版权和签名信息;所述public, pem文件为公钥证书文件,所述公钥证书文件记录了公钥Pl ; 在安卓终端的安全管控模块中设置一不可更改的公钥证书,所述公钥证书的公钥为P2 ; 所述第二次验签的步骤为:安卓终端的安全验证模块取出META-1NF目录文件中的第三方二次签名形成的公钥证书public, pem和密文sign, sig两个文件,若公钥证书public,pem和密文sign, sig两个文件不存在,则验签失败;若存在,所述安全验证模块从密文sign, sig文件中获得签名值SI,从公钥证书public, pem中获得公钥Pl,同时从公钥证书public, pem中获取摘要计算算法,对除META-1NF外的所有文件进行摘要计算并得到hash值Hl,然后用公钥Pl对SI进行解密得到hash值H2,比较Hl和H2,如果不同则验签失败,如果相同,则从安卓终端的安全管控模块中获取预存的公钥证书,并从中提取公钥P2,比较Pl和P2,如果不同则验签失败,如果相同则二次验签成功。
2.如权利要求1所述的一种基于二次签名验签技术的安卓终端应用程序管控方法,其特征在于:所述的第二次签名使用的签名算法可以为RSA、ECC、SM2,所述的HASH算法支持sha_l、md5。
3.如权利要求1所述的一种基于二次签名验签技术的安卓终端应用程序管控方法,其特征在于:所述的应用程序可以从应用商城下载,也可以通过usb接口拷贝安卓终端上。
4.如权利要求1所述的一种基于二次签名验签技术的安卓终端应用程序管控方法,其特征在于:所述的安卓终端的安全管控模块中集成了对公钥证书的更新管理单元。
【文档编号】G06F9/445GK103886260SQ201410152329
【公开日】2014年6月25日 申请日期:2014年4月16日 优先权日:2014年4月16日
【发明者】张妍, 吕绍勇, 唐静, 王雅哲 申请人:中国科学院信息工程研究所, 中科信息安全共性技术国家工程研究中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1