名称:
软件更新包封装方法以及软件升级方法
摘要:
本发明涉及软件的安全升级技术,提供一种保证升级软件合法性、完整性的软件升级包封装方法以及软件升级方法。本发明在终端设备中预置可信任的认证机构的数字证书或者利用服务器来确认可信任的认证机构;认证机构对软件分别进行数字签名,并将原始的明文软件和所有的数字签名、数字证书一起发送给终端设备;终端设备验证所有的数字证书是否合法,并判断软件的升级必须要哪几个认证机构共同进行,如果条件都成立,则验证所有的数字签名,验证完成后,进行软件升级。本发明通过各认证机构的数字证书验证软件升级包的合法性,通过各认证机构的数字签名验证软件升级包的完整性,经过多方参与的对软件进行共同签名,保证了软件的安全升级。
权利要求:
1.【权利要求1】软件升级包封装方法,其特征在于,包括以下步骤:a、软件升级包发行商确定需要对升级软件包进行验证的多个认证机构;b、升级软件明文经哈希运算后得到的信息摘要经多个认证机构的私钥分别进行加密,得到各认证机构的数字签名;c、软件升级包发行商将软件明文、各认证机构的数字签名和各认证机构的数字证书重新组合为软件升级包发送至终端设备。
2.如权利要求l所述软件升级包封装方法,其特征在于,所述认证机 构包括软件升级包发行商、软件开发商、服务运营商、终端设备生产商。
3.软件升级方法,其特征在于,包括以下步骤:a、 确定需要对升级软件包进行验证的多个认证机构;b、 终端设备接收到软件升级包进行分解,分解为软件明文、各认证机构的数字签名、 各认证机构的数字证书;c、 终端设备验证各认证机构的数字证书是否全部合法,如是,进入步骤d;如否,不 执行升级程序;d、 终端设备采用各认证机构的公钥对数字签名进行验证,判断数字签名是否全部合法 ,如是执行升级程序;如否,不执行升级程序。
4.如权利要求3所述软件升级方法,其特征在于,步骤a中,终端设 备获取各认证机构的数字证书,并根据各认证机构的数字证书建立信任证书列表;步骤c中,终端设备通过査找本地的信任证书列表,判断各认证机构的数字证书是否都 在信任证书列表中,如是,各认证机构的数字证书全部合法;否则,不合法。
5.如权利要求3所述软件升级方法,其特征在于,步骤c中,终端设 备将各认证机构的数字证书发送至指定的第三方权威机构进行验证,判断各认证机构的数字 证书是否均验证通过,如是,各认证机构的数字证书全部合法;否则,不合法。
6.如权利要求3、 4或5所述软件升级方法,其特征在于,所述认证机构包括软件升级包发行商、软件开发商、服务运营商、终端设备生产商。
软件升级包封装方法以及软件升级方法
技术领域
本发明涉及软件的安全升级技术。 背景技术
作为一种特殊的产品,与纯的硬件相比,软件具有明显的特点:硬件产品如果出了问题 或者功能不完善,可能需要进行修理、增加模块甚至全部更换,软件作为一个依附于硬件平 台的产品,如果出了类似问题则只需要进行简单的升级即可以解决。软件由于系统的复杂性 、设计的不完善、增加功能或者开发人员的疏忽等,需要更新的可能则更大.比如,微软的操 作系统不停的发现BUG, 一个XP的操作系统到目前为止,可能已经有了几百甚至上千个补丁。 甚至,有的厂家可能为了赶进度、抢占市场,将软件功能并未全部完善的产品发布出去,然 后通过升级的方式为用户增加新的功能。可见,升级是软件非常平常的操作。
软件的升级可以分为两类:(1)软件版本升级;(2)原始版本软件功能完善,如软件 补丁或者改变、增加功能或者模块。软件的版本升级指的是新的软件和原始软件的功能等发 生了非常显现或者重大的变化,而软件功能的完善则是在原有软件的基础上,由于某种安全 或者不稳定等原因,增加或者改变原有的部分功能模块,软件的功能不发生重大的变化。比 如对于常用杀毒软件,病毒库的升级就是后一重情况,而杀毒软件本身的升级则是第一类。
在PC机上,最常见的升级方式就是到某个网站去下载软件的升级程序,下载或者购买软 件的高级版本;也可以由软件通过网络,自动到相应的网站下载升级。
而对于数码设备、数字电视、数字电视机顶盒、IPTV机顶盒、手机等软件的升级,则没 有这么简单。这些设备的软件升级则比较复杂。比如,对于某些数码播放设备,软件的升级 需要用户到指定维修商去升级或者到相应网站下载相关程序,然后使用数据线连接,使用专 用软件进行升级操作。对于IPTV终端,由于IPTV本身支持双向,并向某个网站发起服务,因 此可以由终端自身完成升级操作。而对于数字电视和数字电视机顶盒,由于这些终端主要使 用在广播网络中,程序的升级一般只有专业人员手动升级,或者利用数字电视广播信道,采 用空中升级的方式进行升级,即广播服务器前端将要升级的软件封装为与数字电视节目类似 的码流,并作好标记,并通过数据播出服务器向全广播网络播出,并通过条件接收系统等通 知机顶盒到指定的频点过滤取出相关码流并还原为升级文件,然后进行机顶盒软件升级。
不管采用什么方式获得升级文件然后再怎么进行升级,以上升级方式最大的缺点就是存在安全性问题。对于一般的软件而言,终端用户无法知道所获得的软件是否就是软件发行商 提供的软件,这些软件有没有感染病毒、被修改或者被添加了间谍模块,这些对用户的系统 安全造成了极大的威胁。比如目前常用的Winnap以及暴风影音的音视频播放软件,被绑了很 多的广告插件。Wi皿ap以及暴风影音等, 一般都是基于开源的程序,程序本身免费,但是在 网络上, 一般都被广告商采用软件打包的方式(比如安装程序制作工具),与广告或者其它 软件作成了一个软件升级包。由于用户无法确定软件是否只有自己想安装的部分,是否是自 己需要安装的部分,因此用户一旦安装,将在自己的电脑上安装许多的间谍软件和广告软件 ,并且很多没有办法下载,给用户系统的安全性、稳定性、系统的性能造成很大危害,而这 些问题目前的杀毒软件并不能有效解决。
对于涉及到安全的软件,比如网上银行,客户端的软件除了软件开发商本身要保证本软 件是自己发行的原始软件外,银行还必须保证这个软件是自己认证过的软件,开发商没有作 手脚,以保证用户数据的安全。在IPTV和数字电视等涉及到收费营运的领域,也需要软件 开发商和营运商共同保证软件的合法性、有效性和完整性,以有效保护用户的安全、保证营 运商的安全。
目前,现有的软件升级过程, 一般是采用直接升级的方式,特别是在机顶盒等数码产品 上,在升级软件进行封装时根本没有经过签名,没有考虑到软件的完整性,也没有考虑多家 对软件提供认证的问题。本发明将数字签名技术引入软件的安全升级过程,有效保证了软件 的安全升级。
发明内容
本发明所要解决的技术问题是,提供一种保证升级软件合法性、完整性的软件升级包封 装方法以及软件升级方法。
本发明为解决上述技术问题所才的技术方案是,软件升级包封装方法,包括以下步骤:
a、 软件升级包发行商确定需要对升级软件包进行验证的多个认证机构;
b、 升级软件明文经哈希运算后得到的信息摘要经多个认证机构的私钥分别进行加密, 得到各认证机构的数字签名;
c、 软件升级包发行商将软件明文、各认证机构的数字签名和各认证机构的数字证书重 新组合为软件升级包发送至终端设备。
软件升级方法,包括以下步骤:
a、 确定需要对升级软件包进行验证的多个认证机构;
b、 终端设备接收到软件升级包进行分解,分解为软件明文、各认证机构的数字签名、各认证机构的数字证书;
C、终端设备验证各认证机构的数字证书是否全部合法,如是,进入步骤d;如否,不执
行升级程序;
e、终端设备采用各认证机构的公钥对数字签名进行验证,判断数字签名是否全部合法 ,如是执行升级程序;如否,不执行升级程序。
所述认证机构包括软件升级包发行商、软件开发商、服务运营商、终端设备生产商。
采用了本发明的软件升级包封装方法以及对应的升级方法, 一旦添加了第三方的东西, 则签名验证无法通过,可以立即发现该程序不是原始程序。数字签名的基础就是杂凑算法, 也就是对整个程序进行摘要运算, 一旦程序被修改,则修改后的程序再次取杂凑运算,得到 的值和签名时的值不相同。
本发明的有益效果是,通过各认证机构的数字证书验证软件升级包的合法性,通过各认 证机构的数字签名验证软件升级包的完整性,经过多方参与的对软件进行共同签名,保证了 软件的安全升级。
具体实施方式
本发明的实现主要分为以下3个部分: (1 )在终端设备中预置可信任的认证机构的数字证书或者利用服务器来确认可信任的 认证机构;
(2) 认证机构(包括软件发行商或者多个第三方组织)对软件分别进行数字签名,并 将原始的明文软件和所有的数字签名、数字证书一起发送给终端设备;
(3) 终端设备验证所有的数字证书是否合法,并判断软件的升级必须要哪几个认证机 构共同进行,如果条件都成立,则验证所有的数字签名,验证完成后,进行软件升级。
抛开软件升级终端设备的具体形态,根据软件升级是否能够或者支持第三方参与,可以 将终端设备升级分为两类:独立进行软件升级和需要第三方权威机构参与的软件升级。这两 种方式各有特点,独立进行软件升级的方式操作简单,在线或者离线均可以进行软件升级, 在数字电视广播中则只能采用该方式,该方式的缺点是信任的认证机构以及升级规则必须事 先确定,另外需要第三方权威机构进行的升级,则非常灵活,升级规则和信任的签名机构都 可以随时灵活更新,缺点是终端必须具备双向网络通信功能。不管是哪类升级方式,安全升 级的原理相同,不同的仅仅是升级程序获取的方式和数字证书合法性验证的途径而已。
本方案定义的软件升级包封装过程如下: (1)升级包发行商将要发布的信息软件包经过Hash运算后,得到一个软件信息摘要MD,MD = Hash(软件包)。升级包发行商可以是软件开发商,也可以是营运商;
(2) 升级包发行商i用自己的私钥对数据摘要MD进行加密,得到升级包发行商i的数字 签名。(在下面的软件安全升级的过程中,用发行商i的公钥对数字签名进行解密,再比较 明文得到的摘要,通过判断是否相同来判断合法性;
(3) 判断发布此升级软件必须签名的认证机构(认证机构可包括软件升级包发行商、 软件开发商、服务运营商、终端设备生产商等)是否已经全部进行了签名,如果没有完成, 则继续其它认证机构对软件信息摘要MD的数字签名过程,如果完成,则升级包发行商i将软 件明文、数字签名和自己的数字证书,重新组合为一个新的软件包。
在很多情况下,软件涉及到多方的利益,软件的更改、变动必须得到多方的共同认可才 可以进行正式发布,比如,数字电视营运商要对数字电视终端用户进行收费,如果不进行软 件升级包合法性的控制,则可能在终端的收费被回避,导致营运商损失经济利益,因此营运 商要求机顶盒生厂商或者数字电视生产厂商发布的软件,必须要经过软件开发商和营运商的 共同确认,才可以进行升级操作。
软件安全升级的过程与封装的过程互为一个逆过程:
(1) 终端设备将接收到的软件升级包进行分解,将其分解为软件包、数字签名和数字证
书;
(2) 升级终端首先验证数字证书是否在信任证书列表中,如果是,则继续进行一步, 否则,重新执行第一步;对于数字证书是否可是可信任证书,还可以通过互联网,到指定第 三方权威机构验证,也可以通过权威机构的多极CA认证机制进行验证。 一般采取在生产终端 设备时,将信任证书列表全部存储在终端设备中,形成信任证书列表的方式进行。信任的模 型除了支持直接的证书,还支持基于证书的多级信任机制,具体参照PKI定义的方法
(3) 如果成功证书验证完毕,则执行下一步,否则继续对(1)步分解后的软件包继续 进行步骤(2);
(4) 验证(1)步分解的软件包以及软件包的数字签名是否合法,如是,则将软件包输 出;否则验证失败,退出,不进行软件升级;
(5) 判断所软件的签名是否已经全部完成,如果是,则进行下一步,否则,继续执行 (1);
(6) 判断软件升级包是否满足升级的要求,如果满足升级的要求,则执行下一步,否 则软件验证失败退出,不进行软件的升级。所谓满足升级要求是指:规定的所有数字签名的 验证已经全部通过,比如,数字电视的升级要求条件接收系统厂商、机顶盒终端厂商、营运商全部对软件进行认证签名,则终端进行软件升级时必须验证营运商、终端厂商、条件接收 系统厂商的全部数字签名,任何一个没有数字签名或者任何一个数字签名没有通过,均视为 数字签名验证失败,不可执行升级程序; (7)执行软件升级。