基于数字签名的固件升级、固件封装方法与装置的制作方法

文档序号:6470376阅读:231来源:国知局
专利名称:基于数字签名的固件升级、固件封装方法与装置的制作方法
技术领域
本发明涉及嵌入式软件升级技术,尤其是涉及一种基于数字签名的固件升级方法与装 置,以及一种基于数字签名的固件封装方法与装置。
背景技术
固件(Firmware)由一组编译好的二进制代码组成,包括启动加载程序(BootLoader )、 内核文件、文件系统等模块,且固件通常是保存在主板上的快闪存储器(Flash)中。BootLoader 是硬件系统加电所运行的第1段软件代码,它的主要任务包括初始化最基本的硬件;将 BootLoader本身拷贝到内存RAM中运行;将内核文件复制到RAM中并运行内核文件。为 了确保系统的安全,通常情况下在产品出厂后系统的BootLoader不会进行更新,而内核文 件和文件系统等模块则根据需要通过升级程序对Flash中相应地址的模块擦除重写即可完成 升级。
出于完善产品的软件功能或修复bug的目的,厂商会在产品出厂以后不断地对其产品的 固件进行软件升级,将准备发布的固件按模块生成对应名称的二进制文件,然后将其发布到 网络上通知用户去下载。由用户根据需要自行从网络上下载相应版本的固件进行升级。由于 网络传输的扩散性和多样性,大多数用户无法保证所下载的固件的合法性(确认是原版、未 被修改的)和完整性,当用户不慎下载破损的或者非法版本的甚至被不法者恶意篡改的固件 对产品进行升级后,往往会导致产品无法启动而使用户蒙受较大损失,如果固件中生产厂商 的版权、版本等信息也被修改了,生产厂商的利益也会受到损伤。
为了防止文件内容被恶意者进行篡改,厂商在发布固件的时候,通过单向散列函数(如 MD5、 SHAl、 CRC32)对固件内容进行运算,生成该文件对应的哈希摘要,然后在发布固 件的同时提供该文件的哈希摘要。用户下载到该固件后,通过哈希计算器计算其哈希摘要, 然后与网站上提供的哈希摘要进行对比,如果一致证明文件是发布者原版提供的,如果不一 致表示文件不完整或者被其他人恶意篡改了 。
然而,当固件升级模块文件较多时,容易发生文件拷贝错误、丟失的情况,而且按文件 名来区分固件的类型,风险性比较大。当用户下载固件以后,需要通过第三方工具进行哈希 摘要对比来检验文件是否完整和合法,这需要用户具有一定计算机知识(至少知道MD5、 SHAl、 CRC32的作用)。而在不少情况下,用户会从非官方渠道下载该产品的固件,如果 一些恶意者对固件内容进行了修改(例如版权、图标)或破坏,同时很容易地产生一个新的 哈希摘要,然后将固件发布出去;对于这样的固件,通过哈希工具对比只能判定文件的完整 性,而不能判断文件是厂商原版发布的;如果用户将这样的固件对产品进行升级后,就很可 能会导致系统无法启动而造成损失。
因此,如何提高固件升级的安全性与便利性,成为当前急需解决的技术难题之一。

发明内容
本发明在于提出一种基于数字签名的固件升级方法与装置,以及一种种基于数字签名的 固件封装方法与装置,通过数字签名文件验证升级文件中各个升级才莫块文件的完整性与合法 性,生成升级脚本完成固件升级操作,从而提高固件升级的安全性与便利性。
为解决本发明的技术问题,本发明公开一种基于数字签名的固件升级方法,其包括步骤
生成描述各个升级模块文件的哈希摘要、存储位置和软硬件版本信息的XML文件,采 用数字签名私钥对XML文件加密处理,生成数字签名文件,将数字签名文件和各个升级模 块文件按预定义的可扩展封装结构进行封装,得到用于固件升级的升级文件;
待进行固件升级的产品获取升级文件,从升级文件中提取数字签名文件并解密处理,得到XML文件;
解析XML文件,筛选出需要作升级处理的升级模块文件;
分别对每个需要作升级处理的升级模块文件进行验证处理,生成对所有通过验证处理的 升级模块文件进行升级操作的升级脚本; 执行升级脚本对固件进行升级处理。 优选的,所迷验证处理包括步骤
从所述升级文件中提取一个需要作升级处理的升级模块文件; 使用与生成所述XML文件所使用的哈希算法,计算所述升级冲莫块文件的哈希摘要; 将计算获得的哈希摘要与所述XML文件对应描述的哈希摘要做比较,若两者一致则表 示通过^验证处理。
优选的,所述解密处理是使用数字签名公钥,该数字签名公钥与生成所述数字签名文件
的数字签名私钥为密钥对。
优选的,所迷封装结构可封装任意数量且不限数据格式的所述升级模块文件。
另外,本发明还公开一种基于数字签名的固件升级装置,其,包括
固件封装模块,用于生成描迷各个升级模块文件的哈希摘要、存储位置和软硬件版本信
息的XML文件,采用数字签名私钥对所述XML文件加密处理,生成数字签名文件,将所
述数字签名文件和各个所述升级模块文件按预定义的可扩展封装结构进行封装,得到用于固
件升级的升级文件;
信息获取模块,用于从升级文件中提取数字签名文件;
解密模块,用于对所述数字签名文件解密处理,得到所述XML文件;
XML文件解析模块,用于解析XML文件,筛选出需要作升级处理的升级模块文件;
验证处理模块,用于分别对每个需要作升级处理的升级模块文件进行验证处理;
升级脚本生成模块,用于生成对所有通过验证处理的升级模块文件进行升级操作的升级
脚本;
升级执行模块,用于执行升级脚本对固件进行升级处理。 优选的,所述验证处理模块包括
文件提取单元,用于从所述升级文件中提取一个需要作升级处理的升级模块文件; 哈希摘要计算单元,用于使用与生成所述XML文件所使用的哈希算法,计算所述升级 模块文件的哈希摘要;
哈希摘要比较单元,用于将计算获得的哈希摘要与所述XML文件对应描述的哈希摘要 做比较,若两者一致则表示通过-险证处理。
再者,本发明还公开一种基于数字签名的固件封装方法,其包括 生成描述各个升级模块文件的哈希摘要、存储位置和软硬件版本信息的XML文件; 采用数字签名私钥对XML文件加密处理,生成数字签名文件;
将数字签名文件和各个升级模块文件按预定义的可扩展封装结构进行封装,得到用于固 件升级的升级文件。
对应的,本发明还公开一种基于数字签名的固件封装装置,其包括
XML文件生成单元,用于生成描述各个升级模块文件的哈希摘要、存储位置和軟硬件 版本信息的XML文件;
数字签名文件生成单元,用于采用数字签名私钥对XML文件加密处理,生成数字签名 文件;
封装单元,用于将数字签名文件和各个升级模块文件按预定义的可扩展封装结构进行封 装,得到用于固件升级的升级文件。
与现有技术相比,本发明具有如下有益效果
1、本发明将多个升级^f莫块文件封装到一个升级文件中进^f亍集中管理,生成描述各个升 级模块文件的哈希摘要、存储位置、软硬件版本等重要信息的XML文件,并通过数字签名私钥对XML文件进行加密,按预定的封装结构封装成升级文件。 一方面,本发明采用的封 装结构具有可扩展性,可封装任意数量和任何数据格式的升级才莫块文件,从而确保了升级文 件的完整性;另一方面,本发明在封装升级文件过程中采用加密处理,避免升级文件被篡改, 从而确保了升级文件的合法性。
2、 本发明进行固件升级过程中,由于升级模块文件的哈希摘要、存储位置、版本等重 要信息保存在数字签名文件中,而取得数字签名文件必须对加密的升级文件进行正确的解密 处理,因此,本发明对升级文件进行数字签名处理,确保了升级流程的可靠性。
3、 本发明提出了在封装的升级文件中集成数字签名,通过数字签名验证升级模块的完 整性和合法性,并通过后自动生成的一个升级脚本完成将升级模块文件写入到Flash的操作, 故对升级文件的解析和校验全部自动完成,不需要人工干预,提高了升级程序的便利性和健 壮性。


图1是本发明 一个较佳实施例的流程示意图; 图2是本发明进行固件封装的流程示意图; 图3是图1中升级文件的封装结构示意图; 图4是本发明一个较佳实施例的结构示意图。
具体实施例方式
为了避免用于固件升级的升级文件被纂改,在固件发布的时候如果对固件的内容进行数 字签名,并将数字签名随同固件一起提供给用户进行下载,那么在用户端可以对固件内容进 行合法性和完整性验证了 。这里的数字签名是指信息发送者用自己的签名私钥对原始数据的 哈希(Hash)变换后所得消息摘要进行加密所得的数据。信息接收者使用信息发送者的数字 证书对附在原始信息后的数字签名进行解密后获得消息摘要,并对收到的原始数据采用相同 的哈希算法计算其消息摘要,将二者进行对比,即可校验原始信息是否被篡改。因此,数字 签名不仅可以保护数据完整性,还可以保护传送数据行为的不可抵赖性。
考虑到升级文件中包含的升级模块文件数量较多,本发明采用基于数字签名的固件升级 方法,将多个升级模块封装到一个文件中,并对升级模块文件的p合希摘要、存储位置、软硬 件版本等重要信息进行数字签名,再对所有升级模块文件进行合法性、完整性和版本检查通 过后,自动生成升级脚本,最后由升级脚本完成将升级模块文件烧入到Flash相应地址空间 的操作。
如图l所示,本发明包括如下步骤
步骤Sl:待进行固件升级的产品,通过网络从厂商指定的网站,或通过外接设备,获 取用于固件升级的升级文件;并从升级文件中提取数字签名文件。
升级文件采用一种可扩展的固件封装格式,在封装文件中保存有数字签名文件和所有的 升级模块文件,升级模块文件的个数可以根据实际需要做扩展。其中数字签名文件的对象是 所有升级模块文件的升级信息,包括对每个升级模块丈件的哈希摘要、存储信息、软硬件版 本信息等进行数字签名后的内容;而升级模块文件为对固件中某一个模块(比如文件系统、 内核文件或应用程序)进行升级的对应二进制文件。
为了提高数字签名的保密性,采用RSA数字签名算法对所有升级模块文件的哈希摘要、 存储位置、版本等重要信息进行数字签名,RSA数字签名算法为本专业领域人员所熟知, 在此不再赘述。RSA算法中产生的密钥对,私钥保存在生产厂商用于发布新版本的固件时 生成数字签名文件,公钥作为数字证书存放在产品的Flash中用于用户端检验升级文件的数 字签名。
结合图2所示,升级文件的制作过程如下
步骤S21:由XML文件规范描述升级模块文件的哈希摘要、存储位置、软硬件版本等信息。
步骤S22:采用数据签名私钥对XML文件进行加密,得到数字签名文件。步骤S23:将数字签名文件与升级模块文件按照图3的固件封装格式进行封装,即可得 到升级文件。
步骤S2:利用产品的Flash中作为数字证书存储的用于用户端抬,验升级文件的公钥,对 步骤S1中提取的数字签名文件解密,解密后的文件为XML ( Extensible Markup Language, 可扩展标记语言)文件。
XML文件中描述了数字签名文件中包含的各个升级模块文件的哈希摘要、存储位置、 版本等信息,如下为XML文件的表达代码实例 < xml version="1.0" encoding="GB2312" > <signature version="l .0"> 〈platform id="eul" /> <hardware version = "200809" /> <bin count="2">
<module id="0" type="kemel" digest="ABCDEF 123456" start="0" end="213562" version="0.1" releasedate="20080909" />
<moduleid="rtype="rootfs"digest="DF124656FACD" start="213563" end="789245" version-"O.l" releasedate="20080909" /> </bin>
其中,platform id表示平台的标示号;hardware version表示石更件的版本号;bin count表 示升级模块文件的个数;module id表示升级模块文件的序列号;module type表示升级模块 文件的类型,例长口 BootLoader、 kernel、 rootfs或resource等;module digest表示升级才莫块文 件的哈希摘要(MD5值),由单向散列函数md5 ()产生;module start表示升级模块文件在 封装文件中的起始地址;module end表示升级模块文件在封装文件中的终止地址;module version表示升级模块文件的软件版本号;module releasedate表示升级模块文件的发布日期。 步骤S3:检查XML文件的版本是否支持对固件的升级处理。 步骤S4:解析XML文件,从XML文件中提取各升级模块文件的版本号。 步骤S5:检查产品的硬件版本是否与XML文件描述的版本匹配。 步骤S6:将步骤S4提取的各升级模块文件的版本号与产品中对应模块的版本号比,筛 选出需要进行升级的模块。
步骤S7:从升级文件中提取升级模块文件。
步骤S8:采用与生成升级模块文件哈希摘要一致的哈希算法对提取的模块文件进行哈 希运算,获取其哈希摘要。
步骤S9:对比XML文件中存储的该模块的哈希摘要和步骤S8中计算的哈希摘要,如 果一致表明该模块文件是原版并未修改的。
步骤S10:将该升级模块文件写入到升级脚本中。
步骤S11:重复步骤S7至步骤S10,完成对所有升级才莫块文件的合法性、完整性甚至兼 容性的检查,并于检查完成后,生成升级脚本。
该升级脚本包括了对所有需要升级处理的模块对应的升级命令,比如,升级文件中包含 升级模块丈件l、 2、 3和4,经过步骤S6从产品现有的固件中筛选出需要升级仅有对应升 级模块文件1和4的对应模块,因此,升级脚本包括将升级模块文件1写入Flash相应空 间地址的命令;将升级模块文件4写入Flash相应空间地址的命令。
步骤S12:执行升级脚本,由升级脚本完成升级模块文件烧入到Flash相应地址空间的 操作。
步骤S13:提示升级成功。
步骤S14:提示升级失败以及出错原因。
另夕卜,还可以通过如下方式魅r证升级文件完整性将升级文件用压缩工具(例如WinZIP 或者WinRAR)进行打包,用户下载后先进行解压,如果解压成功(WinZIP和WinRAR自带文件完整性校验功能),表示文件内容是完整的。而验证升级文件内容合法性可采用如下 方式厂商在发布固件的时候,对固件内容进行哈希运算(MD5、 SHA1、 CRC32等),生 成该升级文件对应的哈希码,然后在发布固件的同时提供该升级文件的哈希码;用户下载到 该升级文件后,通过哈希计算器计算其哈希码,然后与网站上提供的哈希码进行比对,如果 一致证明文件是发布者原版提供的,如果不一致表示文件不完整或者^皮其他人恶意篡改了 。
因此,本发明基于数字签名的固件升级方法,适应于一个或者多个升级模块文件的混合 打包,而且对升级模块文件的数据类型不限制,并在打包格式中加入了平台、软硬件版本号 校验,防止错误的版本升级;同时提出了在封装文件中集成数字签名,通过数字签名验证升 级模块的完整性和合法性,并通过后自动生成的一个升级脚本完成将升级模块文件写入到 Flash的操作,故对升级文件的解析和校验全部由程序自动完成,不需要人工干预,提高了 升级程序的便利性和健壮性。
结合图4所示,本发明还公开一种基于数字签名的固件装置,其包括包括固件封装 模块200、信息获取模块210、解密模块220、 XML文件解析模块230、验证处理模块240、 升级脚本生成模块250和升级执行模块260。所述信息获取模块210用于从获取升级文件, 并从升级文件中提耳又数字签名文件;所述解密模块220用于对所述数字签名文件解密处理, 生成描述所迷升级文件中各个升级模块文件的哈希摘要、存储位置和软硬件版本信息的 XML文件;所述XML文件解析模块230用于解析XML文件,筛选出需要作升级处理的升 级模块文件;所述验证处理模块240用于分别对每个需要作升级处理的升级模块文件进行验 证处理;所述升级脚本生成模块250用于生成对所有通过验证处理的升级沖莫块文件进行升级 操作的升级脚本;所述升级执行模块260,用于执行升级脚本对固件进行升级处理。
其中> 固件封装模块200包括XML文件生成单元201、数字签名文件生成单元202 和封装单元203。 XML文件生成单元201用于生成描迷各个升级模块文件的哈希摘要、存 储位置和软硬件版本信息的XML文件;数字签名文件生成单元202用于采用数字签名私钥 对XML文件加密处理,生成数字签名文件;封装单元203用于将数字签名文件和各个升级 模块文件按预定义的可扩展封装结构进行封装,得到用于固件升级的升级文件。
另外,所述验证处理模块240包括文件提取单元241、哈希摘要计算单元242和哈希 摘要比较单元243。所述文件提取单元241,用于从所述升级文件中提取一个需要作升级处 理的升级模块文件;所述B^希摘要计算单元242用于使用与生成所迷XML文件所使用的哈 希算法,计算所述升级模块文件的哈希摘要;所述哈希摘要比较单元243用于将计算获得的 哈希摘要与所迷XML文件对应描述的哈希摘要做比较,若两者一致则表示通过验证处理。
综上,本发明具有如下有益技术效果
1、 本发明将多个升级模块文件封装到一个升级文件中进^f亍集中管理,生成描述各个升 级模块文件的哈希摘要、存储位置、软硬件版本等重要信息的XML文件,并通过数字签名 私钥对XML文件进行加密,按预定的封装结构封装成升级文件。 一方面,本发明采用的封 装结构具有可扩展性,可封装任意数量和任何数据格式的升级模块文件,从而确保了升级文 件的完整性;另一方面,本发明在封装升级文件过程中采用加密处理,避免升级文件被篡改, 从而确保了升级文件的合法性。
2、 本发明进行固件升级过程中,由于升级模块文件的哈希摘要、存储位置、版本等重 要信息保存在数字签名文件中,而取得数字签名文件必须对加密的升级文件进行正确的解密 处理,因此,本发明对升级文件进行数字签名处理,确保了升级流程的可靠性。
3 、本发明提出了在封装的升级文件中集成数字签名,通过数字签名验证升级模块的完 整性和合法性,并通过后自动生成的一个升级脚本完成将升级模块文件写入到Flash的操作, 故对升级文件的解析和校验全部自动完成,不需要人工干预,提高了升级程序的便利性和健 壮性
权利要求
1、一种基于数字签名的固件升级方法,其特征在于,包括步骤生成描述各个升级模块文件的哈希摘要、存储位置和软硬件版本信息的XML文件,采用数字签名私钥对XML文件加密处理,生成数字签名文件,将数字签名文件和各个升级模块文件按预定义的可扩展封装结构进行封装,得到用于固件升级的升级文件;待进行固件升级的产品获取升级文件,从升级文件中提取数字签名文件并解密处理,得到XML文件;解析XML文件,筛选出需要作升级处理的升级模块文件;分别对每个需要作升级处理的升级模块文件进行验证处理,生成对所有通过验证处理的升级模块文件进行升级操作的升级脚本;执行升级脚本对固件进行升级处理。
2、 根据权利要求1所述基于数字签名的固件升级方法,其特征在于,所述验证处理 包括步骤从所述升级文件中提取一 个需要作升级处理的升级模块文件; 使用与生成所述XML文件所使用的哈希算法,计算所述升级模块文件的哈希摘要; 将计算获得的哈希摘要与所述XML文件对应描述的哈希摘要做比较,若两者一致则 表示通过验证处理。
3、 根据权利要求1所述基于数字签名的固件升级方法,其特征在于,所述解密处理 是使用数字签名公钥,该数字签名公钥与生成所述数字签名文件的数字签名私钥为密钥 对。
4、 根据权利要求1所述基于数字签名的固件升级方法,其特征在于,所述封装结构 可封装任意数量且不限数据才各式的所述升级;f莫块文件。
5、 一种基于数字签名的固件升级装置,其特征在于,包括固件封装模块,用于生成描述各个升级模块文件的哈希摘要、存储位置和软硬件版本 信息的XML文件,采用数字签名私钥对所述XML文件加密处理,生成数字签名文件,将 所述数字签名文件和各个所述升级模块文件按预定义的可扩展封装结构进行封装,得到用 于固件升级的升级文件;信息获取^i块,用于获取升级文件,并从升级文件中提耳又^:字签名文件; 解密模块,用于对所述数字签名文件解密处理,得到所述XML文件;XML文件解析模块,用于解析XML文件,篩选出需要作升级处理的升级模块文件; 验证处理模块,用于分别对每个需要作升级处理的升级模块文件进行验证处理; 升级脚本生成模块,用于生成对所有通过验证处理的升级模块文件进行升级操作的升 级脚本;升级执行模块,用于执行升级脚本对固件进行升级处理。
6、 根据权利要求5所述基于数字签名的固件升级装置,其特征在于,所述验证处理 模块包括文件提取单元,用于从所述升级文件中提取一个需要作升级处理的升级模块文件; 哈希摘要计算单元,用于使用与生成所述XML文件所使用的哈希算法,计算所述升级模块文件的哈希摘要;哈希摘要比较单元,用于将计算获得的哈希摘要与所述XML文件对应描述的哈希摘要做比较,若两者一致则表示通过验证处理。
7、 一种基于数字签名的固件封装方法,其特征在于,包括生成描述各个升级模块文件的哈希摘要、存储位置和软硬件版本信息的XML文件; 采用数字签名私钥对XML文件加密处理,生成数字签名文件;将数字签名文件和各个升级模块文件按预定义的可扩展封装结构进行封装,得到用于 固件升级的升级文件。
8、 一种基于数字签名的固件封装装置,其特征在于,包括XML文件生成单元,用于生成描述各个升级模块文件的哈希摘要、存储位置和软硬件 版本信息的XML文件;数字签名文件生成单元,用于采用数字签名私钥对XML文件加密处理,生成数字签 名文件;封装单元,用于将数字签名文件和各个升级模块文件按预定义的可扩展封装结构进行 封装,得到用于固件升级的升级文件。
全文摘要
本发明公开一种基于数字签名的固件升级方法及装置。其中,该升级方法包括按预定封装结构封装生成基于数字签名的升级文件;待进行固件升级的产品获取升级文件,从升级文件中提取数字签名文件并解密处理,获得XML文件;解析XML文件,筛选出需要作升级处理的升级模块文件;分别对每个需要作升级处理的升级模块文件进行合法性和完整性验证处理,生成对所有通过验证处理的升级模块文件进行升级操作的升级脚本;执行升级脚本对固件进行升级处理。本发明公开一种基于数字签名的固件封装方法及装置。本发明通过数字签名文件验证升级文件中各个升级模块文件的完整性与合法性,生成升级脚本完成固件升级操作,从而提高固件升级的安全性与便利性。
文档编号G06F17/30GK101436141SQ20081021761
公开日2009年5月20日 申请日期2008年11月21日 优先权日2008年11月21日
发明者麟 景 申请人:深圳创维数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1