固件升级方法、固件启动方法、固件生成方法及装置与流程

文档序号:20767240发布日期:2020-05-15 19:07阅读:258来源:国知局
固件升级方法、固件启动方法、固件生成方法及装置与流程

本发明涉及计算机技术领域,具体涉及一种固件升级方法、固件启动方法、固件生成方法及装置。



背景技术:

为解决电子产品更新换代速度快而导致电子产品的软硬件不相适应的问题,以及网络设备安全漏洞频出的问题,一般的解决方法是:进行系统更新。

上述技术方案中存在以下问题:

设备的固件可能会被未经授权的用户访问、篡改,从而导致该设备被非法使用。

故,有必要提出一种新的技术方案,以解决上述技术问题。



技术实现要素:

本发明的目的在于提供一种固件升级方法、固件启动方法、固件生成方法及装置,其能防止被篡改的固件正常运行。

为解决上述问题,本发明实施例的技术方案如下:

一种固件升级方法,包括:获取待进行升级的固件的升级文件;对所述升级文件进行解析,以分离出所述升级文件中的内核和文件系统;分别从所述内核的头部和所述文件系统的头部获取第一rsa签名和第二rsa签名;使用rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值;将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第一对比结果;在所述第一对比结果为所述第一哈希值和所述第二哈希值分别与所述第三哈希值和所述第四哈希值一致时,根据所述升级文件对所述固件进行升级。

在上述固件升级方法中,在所述将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第一对比结果的步骤之前,所述方法还包括:分别计算所述内核的第三哈希值和所述文件系统的第四哈希值。

一种固件升级装置,包括:升级文件获取模块,用于获取待进行升级的固件的升级文件;解析模块,用于对所述升级文件进行解析,以分离出所述升级文件中的内核和文件系统;第一签名获取模块,用于分别从所述内核的头部和所述文件系统的头部获取第一rsa签名和第二rsa签名;第一解密模块,用于使用rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值;第一对比模块,用于将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第一对比结果;升级模块,用于在所述第一对比结果为所述第一哈希值和所述第二哈希值分别与所述第三哈希值和所述第四哈希值一致时,根据所述升级文件对所述固件进行升级。

在上述固件升级装置中,所述装置还包括:第一计算模块,用于分别计算所述内核的第三哈希值和所述文件系统的第四哈希值。

一种固件启动方法,包括:分别从固件的内核的头部和所述固件的文件系统的头部获取第一rsa签名和第二rsa签名;使用rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值;将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第二对比结果;在所述第二对比结果为所述第一哈希值与所述第三哈希值一致以及所述第二哈希值与所述第四哈希值一致时,引导所述固件启动。

在上述固件启动方法中,所述方法还包括:在所述固件启动后,从所述固件的内核模块的尾部获取第三rsa签名;使用所述rsa公钥对所述第三rsa签名进行解密,以得到第五哈希值;将所述第五哈希值与预先计算得到的所述内核模块的第六哈希值进行对比,并生成第三对比结果;在所述第三对比结果为所述第五哈希值与所述第六哈希值一致时,加载所述内核模块。

一种固件启动装置,包括:第二签名获取模块,用于分别从固件的内核的头部和所述固件的文件系统的头部获取第一rsa签名和第二rsa签名;第二解密模块,用于使用rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值;第二对比模块,用于将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第二对比结果;启动模块,用于在所述第二对比结果为所述第一哈希值与所述第三哈希值一致以及所述第二哈希值与所述第四哈希值一致时,引导固件启动。

在上述固件启动装置中,所述第二签名获取模块还用于在所述固件启动后,从所述固件的内核模块的尾部获取第三rsa签名;所述第二解密模块还用于使用rsa公钥对所述第三rsa签名进行解密,以得到第五哈希值;所述第二对比模块用于将所述第五哈希值与预先计算得到的所述内核模块的第六哈希值进行对比,并生成第三对比结果;所述装置还包括:加载模块,用于在所述第三对比结果为所述第五哈希值与所述第六哈希值一致时,加载所述内核模块。

一种固件生成方法,包括:遍历内核模块;计算所述内核模块的第六哈希值;使用rsa私钥对所述第六哈希值进行加密,以得到第三rsa签名,其中,所述第三rsa签名写入到所述内核模块的尾部;分别计算包括有所述内核模块的内核和文件系统的第一哈希值和第二哈希值,所述内核模块写入有所述第三rsa签名;使用rsa私钥分别对所述第一哈希值和所述第二哈希值进行加密,以得到第一rsa签名和第二rsa签名,其中,所述第一rsa签名和所述第二rsa签名分别写入到所述内核的头部和所述文件系统的头部;根据写入有所述第一rsa签名的所述内核和写入有所述第二rsa签名的所述文件系统生成固件。

一种固件生成装置,所述装置包括:遍历模块,用于遍历内核模块;第三计算模块,用于计算所述内核模块的第六哈希值;加密模块,用于使用rsa私钥对所述第六哈希值进行加密,以得到第三rsa签名,其中,所述第三rsa签名写入到所述内核模块的尾部;所述第三计算模块还用于分别计算包括有所述内核模块的内核和文件系统的第一哈希值和第二哈希值,所述内核模块写入有所述第三rsa签名;所述加密模块还用于使用rsa私钥分别对所述第一哈希值和所述第二哈希值进行加密,以得到第一rsa签名和第二rsa签名,其中,所述第一rsa签名和所述第二rsa签名分别写入到所述内核的头部和所述文件系统的头部;所述装置还包括:固件生成模块,用于根据写入有所述第一rsa签名的所述内核和写入有所述第二rsa签名的所述文件系统生成固件。

在本发明实施例中,由于在内核、内核模块和文件系统上添加rsa签名,在升级、系统启动和内核模块加载阶段,对rsa签名进行认证,只有认证通过,才能正常运行(升级、系统启动和内核模块加载),否则终止执行。因此可有效解决升级时的固件损坏,以及防止未经授权的用户对固件进行篡改,即,防止被篡改的固件正常运行。

附图说明

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

图1是本发明实施例提供的固件升级方法的流程图。

图2是本发明实施例提供的固件升级装置的框图。

图3是本发明实施例提供的固件启动方法的流程图。

图4是本发明实施例提供的固件启动装置的框图。

图5是本发明实施例提供的固件生成方法的流程图。

图6是本发明实施例提供的固件生成装置的框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中,术语“模块”一般指:硬件、硬件和软件的组合、软件等。例如,模块可以是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序等。运行在处理器上的应用和该处理器二者都可以是模块。一个或多个模块可以位于一个计算机中和/或分布在两个或更多计算机之间。

在本发明实施例中,“第一”、“第二”等仅为用于区分不同的对象,而不应对本发明实施例构成任何限定。

本发明实施例提供了一种固件升级方法、固件启动方法、固件生成方法及装置。具体地,本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置适用于(集成于)计算设备,所述计算设备可以为个人计算机、服务器、移动设备(例如:移动电话、个人数字助理(pda,personaldigitalassistant)、平板电脑)等设备。

如图1所示,所述固件升级方法包括:

步骤101、获取待进行升级的固件(firmware)的升级文件。

步骤102、对所述升级文件进行解析,以分离出所述升级文件中的内核和文件系统。

步骤103、分别从所述内核的头部和所述文件系统的头部获取第一rsa签名和第二rsa签名。

步骤104、从所述固件所对应的设备的预定存储空间中读取rsa公钥。

步骤105、使用所述rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值。

步骤106、分别计算所述内核的第三哈希值和所述文件系统的第四哈希值。

步骤107、将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第一对比结果。

步骤108、在所述第一对比结果为所述第一哈希值和所述第二哈希值分别与所述第三哈希值和所述第四哈希值一致(相等)时,根据所述升级文件对所述固件进行升级。

步骤109、在所述第一对比结果为所述第一哈希值与所述第三哈希值不一致或所述第二哈希值与所述第四哈希值不一致时,终止所述固件的升级。

本发明实施例所述的固件在经过上述步骤101至步骤109之后,是通过图3所示的固件启动方法来启动的,具体地,如图3所示,所述固件启动方法包括:

步骤301、分别从固件的内核的头部和所述固件的文件系统的头部获取第一rsa签名和第二rsa签名。

步骤302、从所述固件所对应的设备的预定存储空间中读取rsa公钥。

步骤303、使用rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值。

步骤304、计算所述第三哈希值和所述第四哈希值。

步骤305、将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第二对比结果。

步骤306、在所述第二对比结果为所述第一哈希值与所述第三哈希值一致以及所述第二哈希值与所述第四哈希值一致时,引导所述固件启动。

步骤307、在所述第二对比结果为所述第一哈希值与所述第三哈希值不一致或所述第二哈希值与所述第四哈希值不一致时,终止所述固件启动。

步骤308、在所述固件启动后,从所述固件的内核模块的尾部获取第三rsa签名。

步骤309、从所述固件所对应的设备的预定存储空间中读取rsa公钥。

步骤310、使用rsa公钥对所述第三rsa签名进行解密,以得到第五哈希值。

步骤311、计算所述内核模块的第六哈希值。

步骤312、将所述第五哈希值与预先计算得到的所述内核模块的第六哈希值进行对比,并生成第三对比结果。

步骤313、在所述第三对比结果为所述第五哈希值与所述第六哈希值一致时,加载所述内核模块。

步骤314、在所述第三对比结果为所述第五哈希值与所述第六哈希值不一致时,禁止加载所述内核模块。

本发明实施例所述的固件在经过上述步骤301至步骤314之后,是通过图1所示的固件升级方法来升级的。

本发明实施例所述的固件是通过如图5所示的固件生成方法来生成的,所述固件包括安装文件或升级文件。具体地,所述固件生成方法包括:

步骤501、遍历内核模块。

步骤502、计算所述内核模块的第六哈希值。

步骤503、使用rsa私钥对所述第六哈希值进行加密,以得到第三rsa签名,其中,所述第三rsa签名写入到所述内核模块的尾部。

步骤504、分别计算包括有所述内核模块的内核和文件系统的第一哈希值和第二哈希值,所述内核模块写入有所述第三rsa签名。

步骤505、使用rsa私钥分别对所述第一哈希值和所述第二哈希值进行加密,以得到第一rsa签名和第二rsa签名,其中,所述第一rsa签名和所述第二rsa签名分别写入到所述内核的头部和所述文件系统的头部。

步骤506、根据写入有所述第一rsa签名的所述内核和写入有所述第二rsa签名的所述文件系统生成固件。

在本发明实施例中,由于在内核、内核模块和文件系统上添加rsa签名,在升级、系统启动和内核模块加载阶段,对rsa签名进行认证,只有认证通过,才能正常运行(升级、系统启动和内核模块加载),否则终止执行。因此可有效解决升级时的固件损坏,以及防止未经授权的用户对固件进行篡改,即,防止被篡改的固件正常运行。

为了更好地实施以上方法,相应的,本发明实施例还提供一种固件升级装置、固件启动装置、固件生成装置,所述固件升级装置、所述固件启动装置、所述固件生成装置可以集成于(适用于)计算设备中。

如图2所示,所述固件升级装置包括升级文件获取模块201、解析模块202、第一签名获取模块203、第一解密模块204、第一计算模块205、第一对比模块206和升级模块207。

所述升级文件获取模块201用于获取待进行升级的固件的升级文件。

所述解析模块202用于对所述升级文件进行解析,以分离出所述升级文件中的内核和文件系统。

所述第一签名获取模块203用于分别从所述内核的头部和所述文件系统的头部获取第一rsa签名和第二rsa签名。

所述第一解密模块204用于从所述固件所对应的设备的预定存储空间中读取rsa公钥,并用于使用所述rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值。

所述第一计算模块205用于分别计算所述内核的第三哈希值和所述文件系统的第四哈希值。

所述第一对比模块206用于将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第一对比结果。

所述升级模块207用于在所述第一对比结果为所述第一哈希值和所述第二哈希值分别与所述第三哈希值和所述第四哈希值一致时,根据所述升级文件对所述固件进行升级,以及用于在所述第一对比结果为所述第一哈希值与所述第三哈希值不一致或所述第二哈希值与所述第四哈希值不一致时,终止所述固件的升级。

本发明实施例所述的固件在经过上述固件升级装置升级之后,是通过图5所示的固件启动装置来启动的,具体地,如图5所示,所述固件启动装置包括第二签名获取模块401、第二解密模块402、第二计算模块403、第二对比模块404、启动模块405、加载模块406。

所述第二签名获取模块401用于分别从固件的内核的头部和所述固件的文件系统的头部获取第一rsa签名和第二rsa签名。

所述第二解密模块402用于从所述固件所对应的设备的预定存储空间中读取rsa公钥,并用于使用所述rsa公钥对所述第一rsa签名和所述第二rsa签名进行解密,以分别得到第一哈希值和第二哈希值。

所述第二计算模块403用于计算所述第三哈希值和所述第四哈希值。

所述第二对比模块404用于将所述第一哈希值和所述第二哈希值分别与预先计算得到的所述内核的第三哈希值和所述文件系统的第四哈希值进行对比,并生成第二对比结果。

所述启动模块405用于在所述第二对比结果为所述第一哈希值与所述第三哈希值一致以及所述第二哈希值与所述第四哈希值一致时,引导所述固件启动,以及用于在所述第二对比结果为所述第一哈希值与所述第三哈希值不一致或所述第二哈希值与所述第四哈希值不一致时,终止所述固件启动。

所述第二签名获取模块401还用于在所述固件启动后,从所述固件的内核模块的尾部获取第三rsa签名。

所述第二解密模块402还用于从所述固件所对应的设备的预定存储空间中读取rsa公钥,并用于使用所述rsa公钥对所述第三rsa签名进行解密,以得到第五哈希值。

所述第二计算模块403还用于计算所述内核模块的第六哈希值。

所述第二对比模块404用于将所述第五哈希值与预先计算得到的所述内核模块的第六哈希值进行对比,并生成第三对比结果。

所述加载模块406用于在所述第三对比结果为所述第五哈希值与所述第六哈希值一致时,加载所述内核模块,以及用于在所述第三对比结果为所述第五哈希值与所述第六哈希值不一致时,禁止加载所述内核模块。

本发明实施例所述的固件在经过上述固件启动装置启动之后,是通过图2所示的固件升级装置来升级的。

本发明实施例所述的固件是通过如图6所示的固件生成装置来生成的,具体地,所述固件生成装置包括遍历模块601、第三计算模块602、加密模块603、固件生成模块604。所述固件包括安装文件或升级文件。

所述遍历模块601用于遍历内核模块。

所述第三计算模块602用于计算所述内核模块的第六哈希值。

所述加密模块603用于使用rsa私钥对所述第六哈希值进行加密,以得到第三rsa签名,其中,所述第三rsa签名写入到所述内核模块的尾部。

所述第三计算模块602还用于分别计算包括有所述内核模块的内核和文件系统的第一哈希值和第二哈希值,所述内核模块写入有所述第三rsa签名。

所述加密模块603还用于使用rsa私钥分别对所述第一哈希值和所述第二哈希值进行加密,以得到第一rsa签名和第二rsa签名,其中,所述第一rsa签名和所述第二rsa签名分别写入到所述内核的头部和所述文件系统的头部。

所述固件生成模块604用于根据写入有所述第一rsa签名的所述内核和写入有所述第二rsa签名的所述文件系统生成固件。

在本发明实施例中,由于在内核、内核模块和文件系统上添加rsa签名,在升级、系统启动和内核模块加载阶段,对rsa签名进行认证,只有认证通过,才能正常运行(升级、系统启动和内核模块加载),否则终止执行。因此可有效解决升级时的固件损坏,以及防止未经授权的用户对固件进行篡改,即,防止被篡改的固件正常运行。

本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置可以通过硬件实现,该硬件可以包括处理器、存储器、显示屏、通信电路等的任意组合,其中,存储器、显示屏、通信电路均与处理器电性连接。上述处理器、存储器、显示屏、通信电路等的任意组合用于实现本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置的功能、步骤。

其中,该处理器可例如为:cpu(centralprocessingunit,中央处理器)、gpu、npu(neuralprocessingunit,神经网络处理单元)、其他通用处理器、数字信号处理器(dsp,digitalsignalprocessor)、专用集成电路(asic,applicationspecificintegratedcircuit)、现场可编程门阵列(fpga,field-programmablegatearray)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器或者是任何常规的处理器等。

该存储器可以包括只读存储器和随机存取存储器,用于向处理器提供程序代码和数据。存储器还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。

本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置也可以通过软件实现,此时,本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置及其各个模块也可以为软件模块。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品(其载体可例如为本发明实施例的计算机可读存储介质)的形式实现。

本发明实施例提供的固件升级方法、固件启动方法、固件生成方法及装置还可以通过软件、硬件的组合来实现。

本发明实施例提供的固件升级装置、固件启动装置、固件生成装置可对应于执行本发明实施例中描述的方法,并且所述固件升级装置、固件启动装置、固件生成装置中的各个模块的上述和其它操作和/或功能用于实现本发明实施例提供的固件升级方法、固件启动方法、固件生成方法的相应流程。

本发明实施例提供的计算设备包括处理器和存储器,其中,处理器、存储器通过总线进行通信。所述存储器用于存储程序代码,所述计算设备运行时,所述处理器执行所述程序代码,以执行本发明实施例提供的固件升级方法、固件启动方法、固件生成方法。

本发明实施例的计算机可读存储介质存储有程序代码,所述程序代码用于使得计算机执行本发明实施例提供的固件升级方法、固件启动方法、固件生成方法。

所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘(solidstatedrive,ssd)。

所述程序代码的指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述程序代码的指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl,digitalsubscriberline))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。

综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。

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