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

文档序号:16630112发布日期:2019-01-16 06:29阅读:408来源:国知局
固件升级方法及装置与流程

本申请涉及电子技术领域,尤其涉及一种固件升级方法及装置。



背景技术:

固件(firmware)是指设备内部保存的设备“驱动程序”,承担着操作系统最基础最底层的工作,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。可见,在硬件设备中,固件就是硬件设备的灵魂,决定着硬件设备的功能及性能。

为了修复产品缺陷、满足不断变化的需求和新功能、以及缩短产品周期,会对设备的固件进行升级。目前,在对固件进行升级的过程中,相关固件文件的保密程度较低,易于被篡改或破解,存在较大的安全隐患。

为解决上述技术问题,需要提出一种安全性较高的固件升级方法。



技术实现要素:

本说明书实施例的目的是提供一种固件升级方法及装置,本说明书实施例是这样实现的:

第一方面,提供了一种固件升级方法,应用于服务端,所述方法包括:

获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

第二方面,提供了一种固件升级方法,应用于终端设备,所述方法包括:

接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

根据所述第二固件文件的下载地址,获取所述第二固件文件;

采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

如果所述第二校验值与所述第一校验值匹配,则采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

使用所述源固件文件对所述终端设备进行固件升级。

第三方面,提供了一种固件升级装置,应用于服务端,所述装置包括:

获取模块,用于获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

加密模块,用于采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

第一校验模块,用于采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

发送模块,用于向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

第四方面,提供了一种固件升级装置,应用于终端设备,所述装置包括:

指令接收模块,用于接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

下载模块,用于根据所述第二固件文件的下载地址,获取所述第二固件文件;

第二校验模块,用于采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

解密模块,用于在所述第二校验值与所述第一校验值匹配的情况下,采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

升级模块,用于使用所述源固件文件对所述终端设备进行固件升级。

第五方面,提供了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

第六方面,提供了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

根据所述第二固件文件的下载地址,获取所述第二固件文件;

采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

如果所述第二校验值与所述第一校验值匹配,则采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

使用所述源固件文件对所述终端设备进行固件升级。

第七方面,提供了一种计算机存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

第八方面,提供了一种计算机存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

根据所述第二固件文件的下载地址,获取所述第二固件文件;

采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

如果所述第二校验值与所述第一校验值匹配,则采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

使用所述源固件文件对所述终端设备进行固件升级。

由以上本说明书实施例提供的技术方案可见,本说明书实施例中,通过对开发人员开发出的新固件文件(即源固件文件)进行多次加密和校验,来确保固件升级过程中固件文件的内容不被破解和篡改,安全性较高。

附图说明

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

图1是本说明书的一个实施例的固件升级方法的应用场景图;

图2是本说明书的一个实施例的固件升级方法的流程图;

图3是本说明书的另一个实施例的固件升级方法的流程图;

图4是本说明书的一个实施例的固件升级装置的结构示意图;

图5是本说明书的另一个实施例的固件升级装置的结构示意图;

图6是本说明书的一个实施例的电子设备的结构示意图;

图7是本说明书的另一个实施例的电子设备的结构示意图。

具体实施方式

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

本说明书实施例提供了一种固件升级方法及装置。

为了便于理解,下面首先对本说明书实施例中涉及到的一些概念及应用场景进行介绍。

空中下载技术(overtheair,ota):是指通过多样化的空中传输方法(包括不限于wifi、zigbee和ble等)将需要升级资源或配置分发到嵌入式终端设备上,使终端设备进行自动更新升级的技术。目前,终端设备的固件升级主要通过ota实现。

消息队列遥测传输(messagequeuingtelemetrytransport,mqtt):是ibm开发的一个即时通讯协议,属于轻量级传输协议。

非对称加密:非对称加密算法是一种密钥的保密方法,涉及公开密钥和私有密钥,其中,公开密钥与私有密钥是一对,如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密;如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。

对称加密:对称加密算法是一种密钥的保密方法,采用单钥密钥加密,同一个密钥可以同时用作数据的加密和解密,也称为单密钥加密。

数字摘要:数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是hash函数。数字摘要采用单向hash函数将需要加密的明文“摘要”成一串固定长度(例如128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。

启动装载(bootloader):是嵌入式系统在加电后执行的第一段代码,在它完成cpu和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。

本说明书实施例技术方案的应用场景:应用场景中包括:开发环境、管理中心、服务端和终端设备;其中,开发人员在开发环境中开发固件文件,开发人员开发的固件文件称为“源固件文件”,源固件文件用于终端设备的固件升级;管理中心用于对开发人员开发的源固件文件进行存储和版本信息管理,在开发人员开发出新的源固件文件后,管理中心会将新的源固件文件录入到该管理中心中,为了确保源固件文件的合法性,管理中心会对新的源固件进行非对称加密,并将非对称加密得到的固件文件提供给服务端;服务端对来自管理中心的固件文件进行一系列处理后,将处理后的固件文件的下载地址提供给终端设备;终端设备根据来自服务端的固件文件下载地址去下载固件文件,对下载得到的固件文件进行校验、解密,如果校验通过、且解密成功,则会得到源固件文件,使用源固件文件对终端设备的固件进行升级。

接下来对本说明书实施例提供的一种固件升级方法进行介绍。

图2是本说明书的一个实施例的固件升级方法的流程图,该方法应用于服务端,如图2所示,该方法可以包括以下步骤:步骤202、步骤204、步骤206和步骤208,其中,

在步骤202中,获取第一固件文件,其中,第一固件文件是采用第一密钥对源固件文件进行加密得到的,第一密钥为私有密钥。

本说明书实施例中,源固件文件为开发人员在开发环境中开发的固件文件,源固件文件为非加密的文件。

本说明书实施例中,在开发人员在开发环境中开发(或编译)出新的源固件文件后,会将其录入管理中心中进行存储,管理中心会对源固件文件进行非对称加密,得到非对称加密后的固件文件,即第一固件文件;具体的,管理中心可以采用rsa加密算法的私有密钥对源固件文件进行加密,得到第一固件文件。相应的,服务端从管理中心中获取第一固件文件。

在步骤204中,采用第二密钥对第一固件文件进行加密,得到第二固件文件。

本说明书实施例中,为了避免传输过程中固件文件的数据和业务逻辑的泄露,服务端会对第一固件文件进行加密。考虑到aes加密算法具备运算速度快,安全性高以及资源消耗少等优点,因此,可以优先选择采用aes加密算法对第一固件进行加密,此时,第二密钥为aes密钥。

在步骤206中,采用预设校验算法对第二固件文件进行校验,得到第一校验值。

本说明书实施例中,保证固件升级过程的安全性,服务端会对第二固件文件进行校验,其中,校验算法可以包括:sha256校验算法、sha128校验算法或md5校验算法。具体的,当校验算法为sha256校验算法时,第一校验值为256位的字符串;具体的,当校验算法为sha128校验算法时,第一校验值为128位的字符串;具体的,当校验算法为md5校验算法时,第一校验值为128位的字符串。

在步骤206中,向终端设备发送固件升级指令,其中,固件升级指令用于指示终端设备进行固件升级,固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值。

本说明书实施例中,当检测到终端设备中的固件版本低于源固件文件的版本时,向该终端设备发送固件升级指令。

考虑到固件升级指令中携带的数据量比较小,本说明书实施例中,可以通过轻量级传输协议,向终端设备发送固件升级指令;其中,轻量级传输协议可以包括:mqtt协议或coap协议。

本说明书实施例中,服务端可以接收终端设备上报的状态信息,其中,状态信息可以包括下述至少一项:固件的版本信息和固件的安装进度信息,固件的版本信息用于确定终端设备是否需要进行固件升级。

本说明书实施例中,如果终端设备在固件升级过程中发生错误,则服务端可以根据固件的安装进度信息进行错误定位。

本说明书实施例中,如果终端设备的固件升级失败,则服务端可以在终端设备重启时再次下发固件升级指令。

由上述实施例可见,该实施例中,通过对开发人员开发出的新固件文件(即源固件文件)进行多次加密和校验,来确保固件升级过程中固件文件的内容不被破解和篡改,安全性较高。

图3是本说明书的另一个实施例的固件升级方法的流程图,该方法应用于终端设备,如图3所示,该方法可以包括以下步骤:步骤302、步骤304、步骤306、步骤308和步骤310,其中,

在步骤302中,接收服务端发送的固件升级指令,其中,固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,第二固件文件是采用第二密钥对第一固件文件进行加密得到的,第一固件文件是采用第一密钥对源固件文件进行加密得到的,第一校验值是采用预设校验算法对第二固件文件进行校验得到的,第一密钥为私有密钥。

在步骤304中,根据第二固件文件的下载地址,获取第二固件文件。

本说明书实施例中,通过可以https证书认证的方式,验证固件文件的下载地址的合法性,从而确保固件升级指令中的固件文件下载地址和校验值未被篡改,相应的,上述步骤304具体可以包括以下步骤:

获取第二固件文件的下载地址对应的数字证书;

判断数字证书是否处于预设白名单中,如果数字证书处于预设白名单中,则从第二固件文件的下载地址获取第二固件文件,其中,预设白名单中的数字证书为合法数字证书。

本说明书实施例中,可以获取第二固件文件的下载地址对应的证书,通过预先存储的合法下载地址的根证书对所获取的证书进行验证;如果验证通过,则从第二固件文件的下载地址获取第二固件文件。具体的,在终端设备中预埋合法下载地址的根证书,当需要从下载地址获取固件文件(即需要与服务端进行通信)时,通过下载地址中包括的主机域名,获取主机(即服务端)的证书,使用预设的验证算法和预埋的根证书,对主机的证书进行验证,如果验证通过,则表明主机是合法的,此时从下载地址下载相应的固件文件,如果验证未通过,则表明主机是非法的,此时不从下载地址下载相应的固件文件。

在步骤308中,采用预设校验算法对第二固件文件进行校验,得到第二校验值。

本说明书实施例中,为了确保固件文件的合法性,终端设备会对下载得到的固件文件进行校验,得到校验值,通过将该校验值与固件升级指令中携带的校验值进行比较,确定该固件文件的合法性;其中,如果两者匹配(即相同),则表明该固件文件是合法的,未被篡改;如果两者不匹配(即不相同),则表明该固件文件是非法的,已被篡改,这种情况下,不再执行该固件文件的后续升级操作。

在步骤310中,如果第二校验值与第一校验值匹配,则采用第二密钥对第二固件文件进行解密得到第一固件文件,以及采用预先存储的第三密钥对第一固件文件进行解密得到源固件文件,第三密钥为第一密钥对应的公开密钥。

本说明书实施例中,终端设备会预先存储用于固件文件签名的公开密钥(即第三密钥)和私有密钥(即第一密钥)。

本说明书实施例中,使用固件升级指令中携带的密钥对下载得到的固件文件进行解密,得到解密后的固件文件。由于使用固件升级指令中携带的密钥解密得到的固件文件仍然为加密的固件文件、且是使用私有密钥加密的固件文件、且终端设备本地维护了该私有密钥对应的公开密钥,因此终端设备可以使用对应的公开密钥对前述固件文件进行解密,如果解密失败,则说明固件文件为非法的,已被篡改,在这种情况下,不再执行该固件文件的后续升级操作;如果解密成功,则根据解密得到的固件文件(即源固件文件)对终端设备进行固件升级。

在步骤312中,使用源固件文件对终端设备进行固件升级。

本说明书实施例中,可以将源固件文件写入终端设备的闪存中。在将源固件文件写入终端设备的闪存中后,可以立即重启终端设备以完成固件的升级;也可以设置预设时长后或到达预设时间点时,重启终端设备以完成固件的升级。

本说明书实施例中,可以对终端设备的闪存进行加密,以确保闪存中所存储数据的安全性。具体的,如果终端设备的闪存为加密的,则向闪存中写入数据时需要先对闪存进行解密,之后再写入数据;以及从闪存中读取数据时需要先对闪存进行解密,之后再读取数据。

本说明书实施例中,为了保证终端设备的启动装载bootloader不被篡改,可以采用第四密钥对终端设备的bootloader进行加密,并对加密后的bootloader进行校验,得到第三校验值;将第三校验值存储至终端设备的闪存中,以便当终端设备再次启动时需要对bootloader进行校验,只校验通过后才可以启动;在这种情况下,可以将第三密钥预先存储在bootloader中,以确保第三密钥的安全性。其中,第四密钥可以为securityboot开启后生成的一个256位的字符串,可以将该字符串作为aes密钥对bootloader进行加密,可以将第三校验值存储在闪存0x0开始的位置。

本说明书实施例中,终端设备可以向服务端上报状态信息,其中,状态信息包括下述至少一项:固件的版本信息和固件的安装进度信息,固件的版本信息用于确定终端设备是否需要进行固件升级,固件的安装进度信息用于服务端进行固件升级错误的定位。

由上述实施例可见,该实施例中,通过对开发人员开发出的新固件文件(即源固件文件)进行多次加密和校验,来确保固件升级过程中固件文件的内容不被破解和篡改,安全性较高。

图4是本说明书的一个实施例的固件升级装置的结构示意图,该固件升级装置应用于服务端,在一种软件实施方式中,固件升级装置400,可以包括:获取模块401、加密模块402、第一校验模块403和发送模块404,其中,

获取模块401,用于获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

加密模块402,用于采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

第一校验模块403,用于采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

发送模块404,用于向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

由上述实施例可见,该实施例中,通过对开发人员开发出的新固件文件(即源固件文件)进行多次加密和校验,来确保固件升级过程中固件文件的内容不被破解和篡改,安全性较高。

可选地,作为一个实施例,所述发送模块404,可以包括:

指令发送子模块,用于通过轻量级传输协议,向所述终端设备发送固件升级指令。

可选地,作为一个实施例,所述第二密钥包括:aes密钥。

可选地,作为一个实施例,所述预设校验算法包括:sha256校验算法、sha128校验算法或md5校验算法。

可选地,作为一个实施例,所述固件升级装置400,还可以包括:

接收所述终端设备上报的状态信息,所述状态信息包括下述至少一项:固件的版本信息和固件的安装进度信息。

图5是本说明书的另一个实施例的固件升级装置的结构示意图,该固件升级装置应用于终端设备,在一种软件实施方式中,固件升级装置500,可以包括:指令接收模块501、下载模块502、第二校验模块503、解密模块504和升级模块505,其中,

指令接收模块501,用于接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

下载模块502,用于根据所述第二固件文件的下载地址,获取所述第二固件文件;

第二校验模块503,用于采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

解密模块504,用于在所述第二校验值与所述第一校验值匹配的情况下,采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

升级模块505,用于使用所述源固件文件对所述终端设备进行固件升级。

由上述实施例可见,该实施例中,通过对开发人员开发出的新固件文件(即源固件文件)进行多次加密和校验,来确保固件升级过程中固件文件的内容不被破解和篡改,安全性较高。

可选地,作为一个实施例,所述下载模块502,可以包括:

证书获取子模块,用于获取所述第二固件文件的下载地址对应的证书;

验证子模块,用于通过预先存储的合法下载地址的根证书对所获取的证书进行验证;

固件文件下载子模块,用于在验证通过的情况下,从所述第二固件文件的下载地址获取所述第二固件文件。

可选地,作为一个实施例,所述固件升级装置500,还可以包括:

加密子模块,用于采用第四密钥对所述终端设备的bootloader进行加密,并对加密后的bootloader进行校验,得到第三校验值;

存储子模块,用于将所述第三校验值存储至所述终端设备的闪存中。

可选地,作为一个实施例,所述第三密钥预先存储在所述bootloader中。

可选地,作为一个实施例,所述升级模块505,可以包括:

升级子模块,用于将所述源固件文件写入所述终端设备的闪存中。

可选地,作为一个实施例,所述固件升级装置500,还可以包括:

上报模块,用于向所述服务端上报状态信息,所述状态信息包括下述至少一项:固件的版本信息和固件的安装进度信息。

图6是本说明书的一个实施例的电子设备的结构示意图,该电子设备可以为服务端,如图6所示,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成固件升级装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

可选地,作为一个实施例,所述向所述终端设备发送固件升级指令,包括:

通过轻量级传输协议,向所述终端设备发送固件升级指令。

可选地,作为一个实施例,所述第二密钥包括:aes密钥。

可选地,作为一个实施例,所述预设校验算法包括:sha256校验算法、sha128校验算法或md5校验算法。

可选地,作为一个实施例,所述方法还包括:

接收所述终端设备上报的状态信息,所述状态信息包括下述至少一项:固件的版本信息和固件的安装进度信息。

上述如本说明书图6所示实施例揭示的固件升级装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图2的方法,并实现固件升级装置在图2所示实施例的功能,本说明书实施例在此不再赘述。

图7是本说明书的另一个实施例的电子设备的结构示意图,该电子设备可以为终端设备,如图7所示,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成固件升级装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

根据所述第二固件文件的下载地址,获取所述第二固件文件;

采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

如果所述第二校验值与所述第一校验值匹配,则采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

使用所述源固件文件对所述终端设备进行固件升级。

可选地,作为一个实施例,所述根据所述第二固件文件的下载地址,获取所述第二固件文件,包括:

获取所述第二固件文件的下载地址对应的证书;

通过预先存储的合法下载地址的根证书对所获取的证书进行验证;

如果验证通过,则从所述第二固件文件的下载地址获取所述第二固件文件。

可选地,作为一个实施例,所述方法还包括:

采用第四密钥对所述终端设备的bootloader进行加密,并对加密后的bootloader进行校验,得到第三校验值;

将所述第三校验值存储至所述终端设备的闪存中。

可选地,作为一个实施例,所述第三密钥预先存储在所述bootloader中。

可选地,作为一个实施例,所述使用所述源固件文件对所述终端设备进行固件升级,包括:

将所述源固件文件写入所述终端设备的闪存中。

可选地,作为一个实施例,所述方法还包括:

向所述服务端上报状态信息,所述状态信息包括下述至少一项:固件的版本信息和固件的安装进度信息。

上述如本说明书图7所示实施例揭示的固件升级装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图3的方法,并实现固件升级装置在图3所示实施例的功能,本说明书实施例在此不再赘述。

本说明书实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法,并具体用于执行以下方法:

获取第一固件文件,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一密钥为私有密钥;

采用第二密钥对所述第一固件文件进行加密,得到第二固件文件;

采用预设校验算法对所述第二固件文件进行校验,得到第一校验值;

向终端设备发送固件升级指令,所述固件升级指令用于指示所述终端设备进行固件升级,所述固件升级指令中携带所述第二固件文件的下载地址、所述第二密钥和所述第一校验值。

本说明书实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图3所示实施例的方法,并具体用于执行以下方法:

接收服务端发送的固件升级指令,所述固件升级指令中携带第二固件文件的下载地址、第二密钥和第一校验值,所述第二固件文件是采用第二密钥对第一固件文件进行加密得到的,所述第一固件文件是采用第一密钥对源固件文件进行加密得到的,所述第一校验值是采用预设校验算法对所述第二固件文件进行校验得到的,所述第一密钥为私有密钥;

根据所述第二固件文件的下载地址,获取所述第二固件文件;

采用所述预设校验算法对所述第二固件文件进行校验,得到第二校验值;

如果所述第二校验值与所述第一校验值匹配,则采用所述第二密钥对所述第二固件文件进行解密得到所述第一固件文件,以及采用预先存储的第三密钥对所述第一固件文件进行解密得到所述源固件文件,所述第三密钥为所述第一密钥对应的公开密钥;

使用所述源固件文件对所述终端设备进行固件升级。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

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

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