掌桥专利:专业的专利平台
掌桥专利
首页

固件升级方法、电子设备以及计算机可读存储介质

文献发布时间:2023-06-19 18:34:06


固件升级方法、电子设备以及计算机可读存储介质

技术领域

本申请涉及固件升级技术领域,特别涉及固件升级方法、电子设备以及计算机可读存储介质。

背景技术

终端设备的固件升级通常可以采用有线传输数据的方式或者无线传输数据的方式进行固件升级。

本申请发明人在长期研究中发现,在固件升级过程中,存在固件被攻击或者被篡改的风险,进而升级后无法保证终端设备的安全性。

发明内容

本申请提供固件升级方法、电子设备以及计算机可读存储介质,能够提高固件升级的安全性。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种固件升级方法,该方法包括:终端设备向服务器发送固件升级请求;接收服务器发送的加密固件数据;加密固件数据包括加密固件以及固件描述文件;根据固件描述文件对加密固件进行摘要校验;在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

其中,固件描述文件包括第一摘要值、第二摘要值和固件基本数据;其中,第一摘要值由终端密钥得到;第二摘要值基于固件基本数据和未加密的固件数据得到;根据固件描述文件对加密固件进行摘要校验,包括:根据第一摘要值得到服务器密钥;利用服务器密钥解密加密固件,得到固件明文;利用固件明文和固件基本数据得到第三摘要值;根据第三摘要值和第二摘要值对加密固件进行摘要校验。

其中,固件描述文件包括密钥密文,密钥密文是利用终端密钥对服务器密钥加密得到;根据第一摘要值得到服务器密钥,包括:根据第一摘要值确定出终端密钥;利用终端密钥解密密钥密文,得到服务器密钥。

其中,固件描述文件包括第一固件MAC值;根据固件描述文件对加密固件进行MAC校验,包括:利用终端密钥和第三摘要值得到第二固件MAC值;根据第一固件MAC值和第二固件MAC值对加密固件进行MAC校验。

其中,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级,包括:对加密固件进行解密,将解密后的固件明文存储至非易失性存储器中,替换非易失性存储器中的原始固件。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种固件升级方法,该方法包括:接收第一终端设备发送的固件升级请求;向第一终端设备发送加密固件数据;加密固件数据包括加密固件以及固件描述文件;以使第一终端设备根据固件描述文件对加密固件进行摘要校验;以及在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;以及在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

其中,接收终端设备发送的固件升级请求之前,包括:接收第二终端设备发送的固件数据和终端密钥;利用终端密钥和固件数据得到加密固件以及固件描述文件。

其中,固件描述文件包括第一摘要值、第二摘要值、密钥密文、固件基本数据和第一固件MAC值;利用终端密钥和固件数据得到加密固件以及固件描述文件,包括:利用终端密钥和固件数据得到加密固件以及固件描述文件,包括:利用终端密钥得到第一摘要值;利用固件基本数据和固件数据得到第二摘要值;利用终端密钥对服务器密钥加密得到密钥密文;利用终端密钥和第二摘要值得到第一固件MAC值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种电子设备,该电子设备包括处理器以及与处理器耦接的存储器和通信模组;其中,存储器用于存储计算机程序,处理器用于执行计算机程序,以实现如上述任一技术方案提供的方法。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序在被处理器执行时,实现如上述任一技术方案提供的方法。

区别于现有技术,本申请的固件升级方法,终端设备在获取到加密固件数据后,通过对加密固件进行摘要校验以及MAC校验,以此确定出固件数据的完整性和安全性,进而在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级,能够提高固件升级的安全性。

附图说明

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

图1是本申请提供的加密固件数据一实施例的结构示意图;

图2是本申请提供的固件升级方法一实施例的流程示意图;

图3是本申请提供的固件升级方法另一实施例的流程示意图;

图4是本申请提供的步骤33一实施例的流程示意图;

图5是本申请提供的固件升级方法另一实施例的流程示意图;

图6是本申请提供的固件升级方法一应用场景示意图;

图7是本申请提供的电子设备一实施例的结构示意图;

图8是本申请提供的计算机可读存储介质一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

固件(Firmware)是一种写入存储器中的程序。即固件是指终端设备内部保存的设备“驱动程序”,通过固件,终端设备的操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。固件是担任着一个系统最基础最底层工作的软件。

用户可以通过开发固件的不同功能,然后将开发的固件烧录至终端设备,完成对终端设备的固件升级,以使终端设备实现新固件的功能。

随着科技的发展,云端升级技术应用的越来越普遍,随之而来的升级过程中带来的安全性问题,基于此,本申请提出以下任一实施例以解决固件升级涉及的安全性问题。

当开发者在具有固件开发功能的终端设备上开发出新的固件或者新版本固件后,将该固件发送至服务器,以使服务器对固件进行处理。同时,在将固件发送至服务器时,将终端密钥也发送至服务器。其中,该服务器可以是FOTA(Firmware Over-The-Air,移动终端的空中下载软件升级)平台。

服务器在接收到固件以及终端密钥后,对固件进行处理。如,确定出固件基本数据、第一摘要值、第二摘要值、密钥密文、第一固件MAC值。

其中,固件基本数据可以是固件的上传时间、固件大小、固件版本等数据。

第一摘要值由终端密钥得到。其中,计算摘要值的方式可以采用相关摘要算法对终端密钥进行计算。如采用MD5信息摘要算法。则可以利用第一摘要值参与后续的校验。

第二摘要值基于固件基本数据和未加密的固件得到。其中,计算摘要值的方式可以采用相关摘要算法对固件基本数据和未加密的固件得到进行计算,如MD5信息摘要算法。则可以利用第一摘要值参与后续的校验。

密钥密文是利用终端密钥对服务器密钥加密得到。其中,服务器密钥是随机生成的,如,服务器按照预设周期随机生成服务器密钥,然后在该预设周期内若接收到固件数据,则利用该服务器密钥对固件数据进行相应操作。以及利用终端密钥对服务器密钥加密得到密钥密文。预设周期结束后,该预设周期内生成的服务器密钥将被删除,有效避免该服务器密钥被恶意获取到。又如,服务器接收到固件数据时,随机生成服务器密钥,然后利用该服务器密钥对固件数据进行相应操作。以及利用终端密钥对服务器密钥加密得到密钥密文。然后将服务器密钥删除,有效避免该服务器密钥被恶意获取到。即,服务器可以对不同版本的固件数据使用不同的服务器密钥进行加密等操作。

第一固件MAC值是通过终端密钥和第二摘要值进行MAC运算得到的。

然后再利用服务器密钥对固件进行加密,得到加密固件。

即经服务器处理后的固件数据包括如图1所示的内容。

在终端设备需要进行固件升级时,则可以采用以下技术方案进行。

参阅图2,图2是本申请提供的固件升级方法一实施例的流程示意图。应用于终端设备,该方法包括:

步骤21:终端设备向服务器发送固件升级请求。

在一些实施例中,终端设备向服务器发起固件版本查询,则可以获取到对应的固件升级下载链接。其中,终端设备将当前的固件版本发送至服务器,以使服务器检测是否有高于此固件版本的固件,若是,则向终端设备发送对应固件的下载链接。可以理解,不同版本的固件在服务器中具有不同的存储位置,则存在对应的下载链接。

终端设备根据此下载链接下载对应的加密固件数据。

步骤22:接收服务器发送的加密固件数据;加密固件数据包括加密固件以及固件描述文件。

终端设备可以根据上述的下载链接从服务器下载加密固件数据。

步骤23:根据固件描述文件对加密固件进行摘要校验。

在一些实施例中,固件描述文件中包括服务器对加密固件数据未加密时的相关处理数据。如,上述的第一摘要值、第二摘要值和固件基本数据。

可以利用第一摘要值在终端设备中获取到终端设备中预先存储的终端密钥。具体的,第一摘要值具有唯一性,因此,可以对终端设备中预先存储的终端密钥采用相同的摘要算法计算得到相应的终端摘要值,然后比较第一摘要值和终端摘要值是否相同,若是,则可以利用终端密钥解密密钥密文,得到对应的服务器密钥。

然后利用服务器密钥对加密固件进行解密,得到固件明文,利用固件明文和固件基本数据得到第三摘要值。

对第二摘要值和第三摘要值进行摘要校验。

步骤24:在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验。

MAC算法(Message Authentication Codes)是一种带秘密密钥的Hash函数,消息的散列值由只有通信双方知道的秘密密钥来控制。此时Hash值称作MAC值。

固件描述文件包括第一固件MAC值。在摘要校验通过后,只能保证服务器在发送加密固件过程中的安全性,并不能保证服务器中的加密固件在服务器发送之前是否被修改,因此,还需要终端设备对加密固件进行MAC校验。

因第一固件MAC值是在服务器上通过终端密钥和第二摘要值进行MAC运算得到的,则此时可以在终端设备上再次通过终端密钥和第三摘要值进行MAC运算得到第二固件MAC值。对第一固件MAC值和第二固件MAC值进行MAC校验,以确定固件数据是否被修改。

在本实施例中,上述的秘密密钥为终端密钥。

步骤25:在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

在本实施例中,终端设备在获取到加密固件数据后,通过对加密固件进行摘要校验以及MAC校验,以此确定出固件数据的完整性和安全性,进而在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级,能够提高固件升级的安全性。

参阅图3,图3是本申请提供的固件升级方法另一实施例的流程示意图。该方法包括:

步骤31:终端设备向服务器发送固件升级请求。

步骤32:接收服务器发送的加密固件数据;加密固件数据包括加密固件以及固件描述文件。

固件描述文件包括第一摘要值、第二摘要值和固件基本数据;其中,第一摘要值由终端密钥得到;第二摘要值基于固件基本数据和未加密的固件数据得到。

步骤33:根据第一摘要值得到服务器密钥。

固件描述文件包括密钥密文,密钥密文是利用终端密钥对服务器密钥加密得到。

在一些实施例中,参阅图4,步骤33可以是以下流程:

步骤41:根据第一摘要值确定出终端密钥。

可以利用第一摘要值在终端设备中获取到终端设备中预先存储的终端密钥。具体的,第一摘要值具有唯一性,因此,可以对终端设备中预先存储的终端密钥采用相同的摘要算法计算得到相应的终端摘要值,然后比较第一摘要值和终端摘要值是否相同,若相同,则可以利用终端密钥执行步骤42。

步骤42:利用终端密钥解密密钥密文,得到服务器密钥。

因此密钥密文是在服务器上通过终端密钥对服务器密钥加密,则可以在终端设备上利用终端密钥对密钥密文解密,得到服务器密钥。

步骤34:利用服务器密钥解密加密固件,得到固件明文。

在一些实施例中,步骤34利用服务器密钥解密加密固件的方式是在运行内存中实现,则并未完全对加密固件解密,实质只得到了对应散列数据。可以理解,这些散列数据也可以作为固件明文。

步骤35:利用固件明文和固件基本数据得到第三摘要值。

采用与计算第二摘要值相同的摘要算法对固件明文和固件基本数据得到第三摘要值。

步骤36:根据第三摘要值和第二摘要值对加密固件进行摘要校验。

摘要校验的方式可以参考上述任一实施例,这里不做赘述。

在校验未通过时,删除获取到的加密固件数据,不进行固件升级。

在校验通过时,执行步骤37。

步骤37:在摘要校验通过后,利用终端密钥和第三摘要值得到第二固件MAC值。

因上述的第二摘要值是固件明文和固件基本数据得到,因此并不能保证服务器中的加密固件数据没有被修改,如,在服务器中对固件基本数据进行修改后得到第二摘要值以及对固件进行修改。

那么在终端设备中计算第三摘要值时,依然是采用的修改后的固件基本数据和固件进行计算的,此时也能保证摘要校验通过,但实质上固件数据被修改了,即通过摘要校验无法完全保证固件数据的安全性,由此需要再次进行MAC校验。

因第一固件MAC值是在服务器中通过终端密钥和第二摘要值进行MAC运算得到的,因此,可以在终端设备中利用终端密钥和第三摘要值得到第二固件MAC值。

步骤38:根据第一固件MAC值和第二固件MAC值对加密固件进行MAC校验。

因终端密钥具有唯一性,则可以根据第一固件MAC值和第二固件MAC值对加密固件进行MAC校验,在校验通过时,可以确定固件数据安全,执行步骤39。在校验未通过时,删除获取到的加密固件数据,不进行固件升级。

步骤39:在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

对加密固件进行解密,将解密后的固件明文存储至非易失性存储器中,替换非易失性存储器中的原始固件。

在本实施例中,通过在服务器中对固件进行处理得到对应的固件描述文件,以使终端设备在获取到加密固件数据后,通过对加密固件进行摘要校验以及MAC校验,以此确定出固件数据的完整性和安全性,进而在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级,能够提高固件升级的安全性。

参阅图5,图5是本申请提供的固件升级方法另一实施例的流程示意图。应用于服务器,该方法包括:

步骤51:接收终端设备发送的固件升级请求。

在一些实施例中,在步骤51之前可以是:接收开发固件的终端设备发送的固件数据和终端密钥;利用终端密钥和固件数据得到加密固件以及固件描述文件。

其中,固件描述文件包括第一摘要值、第二摘要值、密钥密文、固件基本数据和第一固件MAC值;利用终端密钥和固件数据得到加密固件以及固件描述文件,包括:利用终端密钥得到第一摘要值;利用固件基本数据和固件数据得到第二摘要值;利用终端密钥对服务器密钥加密得到密钥密文;利用终端密钥和第二摘要值得到第一固件MAC值。

步骤52:向终端设备发送加密固件数据;加密固件数据包括加密固件以及固件描述文件。

终端设备根据固件描述文件对加密固件进行摘要校验;以及在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;以及在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

在其他实施例中,终端设备可以按照上述任一实施例的方式,进行固件升级。

可以理解,上述任一实施例之间的实现流程可以进行合理融合,形成完整的固件升级方式。在本实施例中,通过在服务器中对固件进行处理得到对应的固件描述文件,以使终端设备在获取到加密固件数据后,通过对加密固件进行摘要校验以及MAC校验,以此确定出固件数据的完整性和安全性,进而在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级,能够提高固件升级的安全性。

参阅图6,图6是本申请提供的固件升级方法一应用场景示意图。

固件开发端将开发的新版本固件和对应的终端密钥上传至服务器,以及将终端密钥发送至对应的终端设备。

服务器利用终端密钥对上传的新版本固件进行处理。首先计算新版本固件对应的固件描述文件。

如,确定出固件基本数据、第一摘要值、第二摘要值、密钥密文、第一固件MAC值。

其中,固件基本数据可以是固件的上传时间、固件大小、固件版本等数据。

第一摘要值由终端密钥得到。其中,计算摘要值的方式可以采用相关摘要算法对终端密钥进行计算。如采用MD5信息摘要算法。则可以利用第一摘要值参与后续的校验。第一摘要值后续在终端设备中查找对应的预置终端密钥。

第二摘要值基于固件基本数据和未加密的固件得到。其中,计算摘要值的方式可以采用相关摘要算法对固件基本数据和未加密的固件得到进行计算,如MD5信息摘要算法。则可以利用第一摘要值参与后续的校验。第二摘要值因包含固件基本数据和未加密的固件两部分,能够确保固件基本数据和未加密的固件不会被恶意篡改。

密钥密文是利用终端密钥对服务器密钥加密得到。服务器密钥用于加密固件开发端上传的固件。

第一固件MAC值是通过终端密钥和第二摘要值进行MAC运算得到的。

然后终端设备进行固件升级时,向服务器发起版本查询,获取固件升级下载链接,将经过服务器处理后的,携带认证信息的加密固件下载到终端设备中。具体地,下载至终端设备的非易失性存储器的对应区域。

然后终端设备进行固件校验,检查固件的完整性、真实性和保密性。

首先进行摘要校验,具体地,终端设备首先根据第一摘要值在存储器中查找与第一摘要值匹配一致的终端密钥,使用终端密钥解密密钥密文,获取服务器密钥,利用服务器密钥解密加密固件,得到固件明文。然后终端设备基于固件明文和固件基本数据计算第三摘要值,检查第三摘要值是否和第二摘要值一致。如果一致,则能够证明其完整性,进一步进行MAC校验,如果不一致,则结束升级流程,擦除升级固件。第三摘要值计算时对固件密文进行解密,得到固件明文仅仅用于计算摘要,并不会将明文写入到存储器中。

然后进行摘要校验,MAC校验。具体地,终端设备根据解密后计算的第三摘要值和终端密钥,进行MAC运算,得到第二固件MAC值。将第二固件MAC值和第一固件MAC值进行比对,如果比对一致,则通过,如果不一致,则结束升级流程,擦除升级固件。

因为MAC运算所使用的密钥源自终端密钥,所以MAC值一致能够证明固件的真实性。

然后进行固件解密,具体地,在摘要校验和MAC校验均通过后,升级固件的完整性、真实性和机密性能够得到证明,将固件密文进行解密,并擦除存储器中原来固件的执行区域,将升级固件的明文烧写的该执行区域,最后擦除升级标志,重启即可跳转使用新的固件。

在上述任一实施例中,上述的终端密钥和服务器密钥可以是对称密钥,终端设备可以是物联网中的嵌入式设备,因嵌入式设备的硬件相对不够完善,资源有限,因此基于纯对称算法的MAC认证,终端设备只需要预置终端密钥,所需要的算力和内存占用更少,计算速度更快。

参阅图7,图7是本申请提供的电子设备一实施例的结构示意图。该电子设备70包括处理器71以及与处理器71耦接的存储器72和通信模组73;其中,存储器72用于存储计算机程序,处理器71用于执行计算机程序,以实现以下方法:

终端设备向服务器发送固件升级请求;接收服务器发送的加密固件数据;加密固件数据包括加密固件以及固件描述文件;根据固件描述文件对加密固件进行摘要校验;在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级;

或,接收第一终端设备发送的固件升级请求;向第一终端设备发送加密固件数据;加密固件数据包括加密固件以及固件描述文件;以使第一终端设备根据固件描述文件对加密固件进行摘要校验;以及在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;以及在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

可以理解,处理器71还用于执行计算机程序,以实现上述任一实施例的方法。

参阅图8,图8是本申请提供的计算机可读存储介质一实施例的结构示意图。该计算机可读存储介质80存储有计算机程序81,计算机程序81在被处理器执行时,实现以下方法:

终端设备向服务器发送固件升级请求;接收服务器发送的加密固件数据;加密固件数据包括加密固件以及固件描述文件;根据固件描述文件对加密固件进行摘要校验;在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级;

或,接收第一终端设备发送的固件升级请求;向第一终端设备发送加密固件数据;加密固件数据包括加密固件以及固件描述文件;以使第一终端设备根据固件描述文件对加密固件进行摘要校验;以及在摘要校验通过后,根据固件描述文件对加密固件进行MAC校验;以及在MAC校验通过后,对加密固件进行解密,并利用解密后的加密固件对终端设备进行固件升级。

可以理解,计算机程序81在被处理器执行时,还用于实现上述任一实施例的方法。

在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是根据本申请说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 一种固件刷新方法、系统、电子设备及计算机可读存储介质
  • 多联机系统固件升级方法、计算机装置及计算机可读存储介质
  • 远程固件升级方法、装置及计算机可读存储介质
  • 服务器固件升级方法、装置、系统及计算机可读存储介质
  • 机器人控制方法、装置、电子设备和计算机可读存储介质
  • 固件升级方法、固件、电子设备和计算机可读存储介质
  • 固件升级方法、装置、电子设备及计算机可读存储介质
技术分类

06120115615508