技术领域本发明涉及一种通过数字签名安装程序的方法及系统。
背景技术:
在本地下载程序时,为保证终端设备上的程序的合法性,终端需要引入数字签名方案,在终端预置根证书,只有使用根证书下属的工作证书签名的程序才能下载到终端。不同机构拥有不同的根证书,所以不同机构签名的程序不能相互下载到对方的终端。图1为目前数字签名的大体原理流程示意图,包括签名和验签两个过程。运营商作为运营系统维护者,下属存在多个客户。运营商拥有一本根证书,为保证不同客户签名的程序无法相互下载到对方的终端,但运营商签名的程序能下载到所有客户的终端。本发明提出了profile签名方案,在定制根证书的基础上,增加profile定制,满足同一运营商下的不同客户的定制需求。
技术实现要素:
本发明所要解决的技术问题是:提供可在同一运营商定制的根证书签名方案,满足同一运营商下的不同客户的定制需求,保证不同客户签名的程序无法相互下载到对方的终端,且运营商签名的程序能下载到所有客户的终端,便于运营商维护运营系统。为了解决上述技术问题,本发明采用的技术方案为:提供一种通过数字签名安装程序的方法,包括:对原始文件进行签名,生成签名文件;终端验证所述签名文件中工作公钥证书及签名数据的合法性;在合法性验证通过后,根据所述签名文件中的profile文件安装程序。为解决上述问题,本发明还提供一种通过数字签名安装程序的系统,包括:签名系统,用于对原始文件进行签名,生成签名文件;验签系统,用于终端验证所述签名文件中工作公钥证书及签名数据的合法性;安装系统,用于在合法性验证通过后,根据所述签名文件中的profile文件安装程序。本发明的有益效果在于:区别于现有技术,本发明对原始文件进行签名,生成签名文件;并终端验证所述签名文件中工作公钥证书及签名数据的合法性;在合法性验证通过后,根据所述签名文件中的profile文件选选择是否安装程序。通过上述方式,本发明在定制根证书的基础上,增加profile定制,满足同一运营商下的不同客户的定制需求,保证不同客户签名的程序无法相互下载到对方的终端,且运营商签名的程序能下载到所有客户的终端,便于运营商维护运营系统。附图说明图1为现有技术签名、验签的流程示意图;图2为本发明方法实施例一的流程示意图;图3为本发明系统实施例二的结构示意图;图4为本发明具体实施例中profile签名方案示意图;图5为本发明具体实施例中签名文件格式示意图;图6为本发明具体实施例中签名流程图示;图7为本发明具体实施例中数字签名流程示意图;图8为本发明具体实施例中终端验签流程图示;图9为本发明具体实施例中终端验签流程示意图。具体实施方式为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。本发明最关键的构思在于:在定制根证书的基础上,增加profile机制,满足统一运营商下的不同客户的定制需求。目前数字证书的格式普遍采用的是X.509V3国际标准。本发明采用的是X.509V3格式,证书数据采用DER编码格式。1.2.1.X.509数字证书结构数字证书除了证书主体外还同时包含签名算法描述和签名值三个域,结构如下:证书主体是存放公钥、发行者信息、有效期等数据的集合,它的结构按照X.509中的描述包含如下内容:请参照图2,本发明实施例一提供一种通过数字签名安装程序的方法,包括:S1:对原始文件进行签名,生成签名文件;S2:终端验证所述签名文件中工作公钥证书及签名数据的合法性;S3:在合法性验证通过后,根据所述签名文件中的profile文件安装程序。其中,步骤S1具体为:获取工作证书及profile文件,生成签名描述信息;通过工作证书对所述原始文件、签名描述信息及profile文件进行签名,生成签名数据,具体地:计算获得所述原始文件、签名描述信息及profile文件的哈希值;将所述哈希值进行签名填充,生成填充数据;从工作证书中获取私钥,使用私钥对所述填充数据进行加密,生成签名数据;获取签名文件头,组合原始文件、签名描述信息、profile文件、签名数据、工作证书及签名文件头,生成签名文件。步骤S2具体为:终端获取运营商根公钥证书;根据运营商根公钥证书,验证所述签名文件中工作公钥证书的合法性;若未通过验证,则判定所述签名文件不合法,不允许安装或运行程序;若通过验证,则使用所述工作公钥证书验证所述签名数据的合法性;若未通过验证,则判定所述签名文件不合法,不允许安装或运行程序;若通过验证,则根据所述签名文件中的profile文件安装程序。步骤S3具体为:判断所述签名文件中的profile文件是否为运营商profile文件;若是,则允许安装程序;反之,则判断终端上是否存在客户profile文件;若不存在,则将客户profile文件保存到终端,并允许安装程序;若存在,则比对客户profile文件的客户信息是否与终端客户profile文件一致;若是,则允许安装程序;反之,则判定所述签名文件不合法,不允许安装或运行程序。如图3所示,本发明实施例二提供一种通过数字签名安装程序的系统100,包括:签名系统110,用于对原始文件进行签名,生成签名文件;验签系统120,用于终端验证所述签名文件中工作公钥证书及签名数据的合法性;安装系统130,用于在合法性验证通过后,根据所述签名文件中的profile文件安装程序。其中,所述签名系统110包括:存储模块、签名执行模块及签名组织模块,从存储模块获取工作证书及profile文件,签名执行模块生成签名描述信息;签名执行模块通过工作证书对所述原始文件、签名描述信息及profile文件进行签名,生成签名数据;签名组织模块生成签名文件头,组合原始文件、签名描述信息、profile文件、签名数据、工作证书及签名文件头,生成签名文件。所述签名执行模块具体用于:计算获得所述原始文件、签名描述信息及profile文件的哈希值;将所述哈希值进行签名填充,生成填充数据;从工作证书中获取私钥,使用私钥对所述填充数据进行加密,生成签名数据。所述验签系统120具体用于:终端获取运营商根公钥证书;根据运营商根公钥证书,验证所述签名文件中工作公钥证书的合法性;若未通过验证,则判定所述签名文件不合法,不允许安装或运行程序;若通过验证,则使用所述工作公钥证书验证所述签名数据的合法性;若未通过验证,则判定所述签名文件不合法,不允许安装或运行程序;若通过验证,则根据所述签名文件中的profile文件安装程序。所述安装系统130具体用于:判断所述签名文件中的profile文件是否为运营商profile文件;若是,则允许安装程序;反之,则判断终端上是否存在客户profile文件;若不存在,则将客户profile文件保存到终端,并允许安装程序;若存在,则比对客户profile文件的客户信息是否与终端客户profile文件一致;若是,则允许安装程序;反之,则判定所述签名文件不合法,不允许安装或运行程序。为方便理解,以下结合附图1~图9,通过一个具体实施例进行说明。图4为profile签名方案示意图。运营商维护一本根证书,同一运营商下的所有客户都使用运营商根证书下属的工作证书私钥签名程序。同一运营商下的不同客户拥有不同的profile文件,运营商拥有运营商profile文件。签名时,选择对应的工作证书和profile文件进行签名,签名后的程序的签名信息中带有profile文件。签名程序下载到终端。使用预置在终端的根证书验证工作证书的合法性,再使用工作证书验证程序签名的合法性。如果签名程序中带有运营商profile文件,则不管终端是否已经存在客户profile文件,都允许安装程序,且运营商profile文件不会保存到终端;如果终端上不存在客户profile文件,则将签名程序中的客户profile保存到终端,并安装程序;如果终端上已经存在客户profile文件,则比对签名程序中的客户profile的客户信息是否与终端客户profile文件的一致。如果一致,则安装程序;如果不一致,则拒绝安装程序,具体如图5、表1~表4所示,其中图5为签名文件格式示意图。表1签名文件总体结构表2签名描述信息表3profile文件描述表4签名文件的文件头数字签名流程如图6、图7所示,签名系统对原始文件进行签名,签名流程如下:1.从存储模块获取对应的工作证书及profile文件,签名执行模块生成对应的签名描述信息;2.签名执行模块使用工作证书对应的私钥对原始文件、签名描述信息、profile文件进行签名,生成签名数据;3.签名组织模块生成签名文件头,将原始文件、签名描述信息、profile文件、签名数据、工作证书、签名文件头组合,生成已签名文件;终端设备验签流程如图8、图9所示,终端设备在出厂时,厂商将生成的运营商根公钥证书预装在终端设备中。验签流程如下:1.使用终端保存的根公钥证书验证工作公钥证书的合法性;2.第1步验证通过后,使用工作公钥证书验证签名数据的合法性;3.第2步验证通过后,判断签名文件中带有的profile文件是否为运营商profile文件。如果是运营商profile文件,允许安装;如果不是运营商profile文件,继续第4步操作;4.如果终端上不存在客户profile文件,将签名文件中的profile文件保存到终端,并安装程序;5.如果终端已经存在客户profile文件,比较签名文件中的profile文件的客户信息与终端保存的客户profile文件是否一致。如果一致,则安装程序;如果不一致,则拒绝安装程序;本发明具备如下有益效果:运营商只要维护一本根证书及私钥,同一运营商下的所有客户都使用运营商根证书下属的工作证书私钥签名程序,引入profile机制,又能保证不同客户的定制需求,达到不同的客户的程序无法相互下载到对方的终端的效果;运营商作为运营系统维护者,运营商签名的程序能下载到所有客户的终端;运营商下属的工程师可以使用一本工作证书及私钥对同一运营商下的不同客户的程序签名,又能保证已签名的不同客户的程序无法相互下载到对方的终端。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。