一种固件升级方法及装置与流程

文档序号:11951540阅读:150来源:国知局
一种固件升级方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种固件升级方法及装置。



背景技术:

在计算机中,固件,即firmware,通常存储固化在硬件设备的EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)或者闪存FLASH芯片中,承担着硬件设备最底层、最基础的工作。

固件可以看做是对硬件设备的编程,其决定了硬件设备的工作性能。随着硬件设备的设计水平越来越高,固件也变得越来越强大、复杂。在实际应用中,固件中可能会有漏洞bug,或者因为应用场景不同需要改变相应的固件参数,这都需要通过固件的升级来解决。

在Linux系统中,内核支持固件的在线升级,通过从本机文件系统中获取并加载固件文件,直接传递给硬件设备的驱动来完成硬件设备固件的升级工作。

这种方法存在一定的缺点,内核从本机文件系统中获取到固件文件可能是经过非法人员修改、伪造的,应用该固件文件对硬件设备固件进行升级,使得计算机系统存在安全隐患。



技术实现要素:

为解决上述技术问题,本发明提供一种固件升级方法及装置。

一种固件升级方法,包括:

获取用于升级固件的目标固件文件;

根据所述目标固件文件中记录的摘要数据,确定第一摘要信息;

根据预设的摘要算法,提取所述目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息;

对比所述第一摘要信息和所述第二摘要信息;

如果所述第一摘要信息和所述第二摘要信息一致,则根据所述目标固件文件中记录的硬件设备标识信息,使用所述目标固件文件对相应的硬件设备的固件进行升级。

在本发明的一种具体实施方式中,在所述根据所述目标固件文件中记录的摘要数据,确定第一摘要信息之前,所述方法还包括:

确定所述目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系,如果是,则执行所述根据所述目标固件文件中记录的摘要数据,确定第一摘要信息的操作。

在本发明的一种具体实施方式中,在所述确定所述目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系之前,所述方法还包括:

根据所述目标固件文件中记录的循环冗余校验标识,确定所述目标固件文件是否完整,如果是,则执行所述确定所述目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系的操作。

在本发明的一种具体实施方式中,所述摘要数据为厂商预先使用预设的所述摘要算法,提取所述目标固件文件中记录的厂商固件内容的摘要,并对该摘要进行加密处理后的数据,所述根据所述目标固件文件中记录的摘要数据,确定第一摘要信息,包括:

在所述目标固件文件中提取所述目标固件文件对应的厂商标识信息;

从预先获得的可信公钥库中查找与所述厂商标识信息对应的可信公钥;

使用所述可信公钥对所述目标固件文件中记录的摘要数据进行解密,获得第一摘要信息。

在本发明的一种具体实施方式中,所述方法还包括:

如果所述第一摘要信息和所述第二摘要信息不一致,则输出与所述目标固件文件为不可靠升级文件相关的提示信息。

一种固件升级装置,包括:

目标固件文件获取模块,用于获取用于升级固件的目标固件文件;

第一摘要信息确定模块,用于根据所述目标固件文件中记录的摘要数据,确定第一摘要信息;

第二摘要信息获得模块,用于根据预设的摘要算法,提取所述目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息;

摘要信息对比模块,用于对比所述第一摘要信息和所述第二摘要信息;

固件升级模块,用于在所述第一摘要信息和所述第二摘要信息一致时,根据所述目标固件文件中记录的硬件设备标识信息,使用所述目标固件文件对相应的硬件设备的固件进行升级。

在本发明的一种具体实施方式中,所述装置还包括:

版本依赖关系确定模块,用于确定所述目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系,如果是,则触发所述第一摘要信息确定模块。

在本发明的一种具体实施方式中,所述装置还包括:

完整性确定模块,用于根据所述目标固件文件中记录的循环冗余校验标识,确定所述目标固件文件是否完整,如果是,则触发所述版本依赖关系确定模块。

在本发明的一种具体实施方式中,所述摘要数据为厂商预先使用预设的所述摘要算法,提取所述目标固件文件中记录的厂商固件内容的摘要,并对该摘要进行加密处理后的数据,所述第一摘要信息确定模块,具体用于:

在所述目标固件文件中提取所述目标固件文件对应的厂商标识信息;

从预先获得的可信公钥库中查找与所述厂商标识信息对应的可信公钥;

使用所述可信公钥对所述目标固件文件中记录的摘要数据进行解密,获得第一摘要信息。

在本发明的一种具体实施方式中,所述装置还包括:

提示信息输出模块,用于在所述第一摘要信息和所述第二摘要信息不一致时,输出与所述目标固件文件为不可靠升级文件相关的提示信息。

应用本发明实施例所提供的技术方案,获取到用于升级固件的目标固件文件后,根据目标固件文件中记录的摘要数据,可以确定第一摘要信息,根据预设的摘要算法,可以提取该目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息,通过对比第一摘要信息和第二摘要信息,确定目标固件文件的可靠性,如果二者一致,则使用该目标固件文件对相应的硬件设备的固件进行升级。这样可以避免使用不可靠的固件文件进行固件升级给内核带来的安全隐患,提升了计算机系统的安全性。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种固件升级方法的实施流程图;

图2为本发明实施例中一种固件升级装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1所示,为本发明实施例所提供的一种固件升级方法的实施流程图,该方法可以包括以下步骤:

S110:获取用于升级固件的目标固件文件。

在实际应用中,在需要对硬件设备的固件进行升级,或者在检测到有可升级的固件文件时,内核可以从本机文件系统中获取用于升级固件的目标固件文件。

S120:根据目标固件文件中记录的摘要数据,确定第一摘要信息。

在本发明实施例中,目标固件文件中记录有厂商固件内容和摘要数据,该摘要数据为厂商预先使用预设的摘要算法,提取厂商固件内容的摘要后得到的数据。

根据目标固件文件中记录的摘要数据,可以确定第一摘要信息。如果目标固件文件中记录的摘要数据为非加密数据,则可以直接将目标固件文件中记录的摘要数据确定为第一摘要信息。在实际应用中,为加强固件文件的安全性,可以对摘要数据进行加密,根据目标固件文件中记录的摘要数据,可以确定第一摘要信息。

在本发明的一种具体实施方式中,摘要数据为厂商预先使用预设的摘要算法,提取目标固件文件中记录的固件内容的摘要,并对该摘要进行加密处理后的数据,步骤S120可以包括以下步骤:

步骤一:在目标固件文件中提取目标固件文件对应的厂商标识信息;

步骤二:从预先获得的可信公钥库中查找与厂商标识信息对应的可信公钥;

步骤三:使用可信公钥对目标固件文件中记录的摘要数据进行解密,获得第一摘要信息。

为便于描述,将上述三个步骤结合起来进行说明。

在目标固件文件中可以记录该目标固件文件对应的厂商标识信息,即该目标固件文件是哪个厂商提供的。厂商在发布固件文件时,同时发布其用于加密摘要所使用的密钥对的公钥。

内核可以预先获得多个厂商的可信公钥,该可信公钥为厂商用于加密厂商固件内容的摘要所使用的密钥对的公钥。内核可以将获得的可信公钥存储到可信公钥库中。在可信公钥库中,每个厂商的厂商标识信息和该厂商发布的可信公钥对应存储。

在目标固件文件中可以提取相应的厂商标识信息,然后从预先获得的可信公钥库中查找与该厂商标识信息对应的可信公钥。

在可信公钥库中查找到与厂商标识信息对应的可信公钥后,可以使用该可信公钥对目标固件文件中记录的摘要数据进行解密,解密后的摘要数据即为第一摘要信息。

具体使用的加解密算法可以是预先指定的加解密算法,还可以是目标固件文件中记录的加解密算法。

S130:根据预设的摘要算法,提取目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息。这里预设的摘要算法和步骤S120中摘要数据所对应的摘要算法一致。

在本发明实施例中,预设的摘要算法可以是预先指定的一种摘要算法,还可以是目标固件文件中记录的摘要算法。

根据预设的摘要算法,可以提取目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息。

需要说明的是,本发明实施例对步骤S120和步骤S130的执行顺序不做限制。

S140:对比第一摘要信息和第二摘要信息。

在步骤S120,内核确定了第一摘要信息,该第一摘要信息对应的是,厂商预先按照预设的摘要算法提取的厂商固件内容的摘要。在步骤S130,内核获得了第二摘要信息,该第二摘要信息对应的是,内核根据预设的摘要算法提取的厂商固件内容的摘要。

通过将第一摘要信息和第二摘要信息进行比较,可以确定该目标固件文件的可靠性。

S150:如果第一摘要信息和第二摘要信息一致,则根据目标固件文件中记录的硬件设备标识信息,使用目标固件文件对相应的硬件设备的固件进行升级。

如果第一摘要信息和第二摘要信息一致,则表明该目标固件文件被篡改的可能性较小,可靠性较高,可以根据该目标固件文件中记录的硬件设备标识信息,使用该目标固件文件对相应的硬件设备的固件进行升级。具体的,内核可以将该目标固件文件传递给相应的硬件设备的驱动,以完成该硬件设备的固件的升级工作。

如果第一摘要信息和第二摘要信息不一致,则表明该目标固件文件可能已经被篡改,可靠性较小。如果使用该目标固件文件对硬件设备的固件进行升级,可能会对计算机系统产生危害。在这种情况下,可以不加载该目标固件文件。还可以输出与该目标固件文件为不可靠升级文件相关的提示信息,提示用户该目标固件文件可能已经被破坏。

应用本发明实施例所提供的方法,获取到用于升级固件的目标固件文件后,根据目标固件文件中记录的摘要数据,可以确定第一摘要信息,根据预设的摘要算法,可以提取该目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息,通过对比第一摘要信息和第二摘要信息,确定目标固件文件的可靠性,如果二者一致,则使用该目标固件文件对相应的硬件设备的固件进行升级。这样可以避免使用不可靠的固件文件进行固件升级给内核带来的安全隐患,提升了计算机系统的安全性。

在本发明的一个实施例中,在步骤S120之前,该方法还可以包括以下步骤:

确定目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系,如果是,则执行步骤S120的操作。

在本发明实施例中,目标固件文件中可以记录有当前版本信息和依赖版本信息。内核获取到目标固件文件后,可以先确定该目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系。预设的版本依赖关系可以根据实际情况进行设定,比如,依赖版本信息中的版本号需要小于当前版本信息中的版本号。

如果符合,则继续执行步骤S120的操作,如果否,则该目标固件文件可能不可靠,可以不加载该目标固件文件,或者可以输出与版本不对应相关的提示信息。

在本发明的一个实施例中,在确定目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系之前,该方法还可以包括以下步骤:

根据目标固件文件中记录的循环冗余校验标识,确定目标固件文件是否完整,如果是,则执行确定目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系的操作。

在本发明实施例中,目标固件文件中可以记录有循环冗余校验标识。根据该循环冗余校验标识,可以确定该目标固件文件是否完整,如果是,则继续执行版本依赖关系确定的操作或者执行摘要信息对比的操作。

在实际应用中,可以将上述各实施例结合起来,提高系统的安全性,对隐藏等伪装病毒也有较好的防范作用。

在本发明实施例中,目标固件文件可以具有如表1所示的预设的文件格式:

表1

循环冗余校验标识CRC32:用于根据该标识确定目标固件文件的完整性,避免因加载异常而导致的信息丢失;

厂商标识VendorId:用于记录目标固件文件所属的厂商;

硬件设备标识ProductId:用于记录目标固件文件所对应的硬件设备;

当前版本Current Version:用于记录目标固件文件当前版本信息;

依赖版本Request Version:用于记录目标固件文件当前版本对应的依赖版本信息;

摘要数据Encrypt Digest:用于记录针对厂商固件内容使用摘要算法获得的摘要,并使用加解密算法及厂商私钥对该摘要进行加密后的数据;

摘要算法Digest Method:用于记录生成摘要数据所使用的摘要算法;

加解密算法Encrypt Method:用于记录摘要数据所使用的加解密算法;

大小Size:用于记录厂商固件内容的大小;

厂商固件内容Vendor Firmware Content:用于记录厂商固件内容。

每个厂商在发布固件文件时,都可以根据上述文件格式生成具有统一文件格式的固件文件。内核获取到固件文件后,根据固件文件中记录的这些信息可以对该固件文件进行完整及安全性审查,以避免不可靠的固件文件对系统安全造成危害。

相应于上面的方法实施例,本发明实施例还提供了一种固件升级装置。参见图2所示,该装置可以包括以下模块:

目标固件文件获取模块210,用于获取用于升级固件的目标固件文件;

第一摘要信息确定模块220,用于根据目标固件文件中记录的摘要数据,确定第一摘要信息;

第二摘要信息获得模块230,用于根据预设的摘要算法,提取目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息;

摘要信息对比模块240,用于对比第一摘要信息和第二摘要信息;

固件升级模块250,用于在第一摘要信息和第二摘要信息一致时,根据目标固件文件中记录的硬件设备标识信息,使用目标固件文件对相应的硬件设备的固件进行升级。

应用本发明实施例所提供的装置,获取到用于升级固件的目标固件文件后,根据目标固件文件中记录的摘要数据,可以确定第一摘要信息,根据预设的摘要算法,可以提取该目标固件文件中记录的厂商固件内容的摘要,获得第二摘要信息,通过对比第一摘要信息和第二摘要信息,确定目标固件文件的可靠性,如果二者一致,则使用该目标固件文件对相应的硬件设备的固件进行升级。这样可以避免使用不可靠的固件文件进行固件升级给内核带来的安全隐患,提升了计算机系统的安全性。

在本发明的一个实施例中,该装置还可以包括以下模块:

版本依赖关系确定模块,用于确定目标固件文件中记录的当前版本信息和依赖版本信息是否符合预设的版本依赖关系,如果是,则触发第一摘要信息确定模块220。

在本发明的一个实施例中,该装置还可以包括以下模块:

完整性确定模块,用于根据目标固件文件中记录的循环冗余校验标识,确定目标固件文件是否完整,如果是,则触发版本依赖关系确定模块。

在本发明的一种具体实施方式中,摘要数据为厂商预先使用预设的摘要算法,提取目标固件文件中记录的厂商固件内容的摘要,并对该摘要进行加密处理后的数据,第一摘要信息确定模块220,具体用于:

在目标固件文件中提取目标固件文件对应的厂商标识信息;

从预先获得的可信公钥库中查找与厂商标识信息对应的可信公钥;

使用可信公钥对目标固件文件中记录的摘要数据进行解密,获得第一摘要信息。

在本发明的一个实施例中,该装置还可以包括以下模块:

提示信息输出模块,用于在第一摘要信息和第二摘要信息不一致时,输出与目标固件文件为不可靠升级文件相关的提示信息。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种固件升级方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1