固件升级方法及系统、服务器、智能设备、可读存储介质与流程

文档序号:18463658发布日期:2019-08-17 02:15阅读:193来源:国知局
固件升级方法及系统、服务器、智能设备、可读存储介质与流程

本发明涉及固件升级技术领域,尤其涉及一种固件升级方法及系统、服务器、智能设备、可读存储介质。



背景技术:

目前,嵌入式智能设备已经被广泛应用,应用场景也更加复杂多变。在一些应用场景下,存在对智能设备的固件系统进行固件升级的需求。

传统升级固件都是现场更新固件,即工程师在现场对硬件进行固件更新。这种现场更新方式因成本高效率低已不能适应社会生产力发展的要求。

目前,越来越多的智能设备或硬件支持远程在线升级,即智能设备或硬件自动向云端的服务器请求升级固件。这种远程进行固件升级方式无需用户操作或干预,给用户带来了便捷。但是,上述远程升级方式的数据传输安全性较低。



技术实现要素:

本发明解决的技术问题是远程进行固件升级时数据传输安全性较低。

为解决上述技术问题,本发明实施例提供一种固件升级方法,包括:将目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息;分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个所述数据包进行加密,得到n个加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;向智能设备发送所述目标固件对应的数据信息,所述数据信息包括:所述目标固件容量、所述加密数据包的数目n以及所述目标固件的版本信息;在接收到所述智能设备发送的成功接收所述数据信息的反馈信息后,向所述智能设备发送n个所述加密数据包。

可选的,在所述将目标固件对应的数据进行分割之前,还包括:对所述智能设备进行认证。

可选的,所述对所述智能设备进行认证,包括:接收所述智能设备发送的第一加密数据,所述第一加密数据为所述智能设备采用第二公钥对第一签名数据、第一随机数以及所述智能设备的标识信息进行加密得到,所述第一签名数据为所述智能设备采用第一私钥对与当前固件相关的信息进行签名得到;采用第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,所述第二私钥与所述第二公钥对应;根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;当对所述第一签名数据验证成功后,采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到第二签名数据;采用所述第一公钥对所述第二签名数据及第二随机数进行加密,得到第二加密数据,并将所述第二加密数据发送至所述智能设备;使得所述智能设备采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证;接收到所述智能设备对所述第二签名数据的验证成功信息后,完成对所述智能设备的认证。

可选的,在所述将目标固件对应的数据进行分割之前,还包括:与所述智能设备进行密钥协商,根据第一秘密信息、预设随机数以及第一计数器计数生成所述包密钥;其中,所述第一秘密信息根据第二私钥以及所述智能设备的第一公钥生成。

可选的,所述采用包密钥对每个所述数据包进行加密,包括:采用所述包密钥并基于对称加密算法对每个所述数据包进行加密。

可选的,所述在接收到所述智能设备发送的成功接收所述数据信息的反馈信息后,向所述智能设备发送n个所述加密数据包,包括:在接收到所述智能设备发送的成功接收所述数据信息的反馈信息后,向所述智能设备发送第1个所述加密数据包;在接收到所述智能设备反馈的第i个所述加密数据包成功接收的反馈信息之后,向所述智能设备发送第i+1个所述加密数据包,其中,1≤i≤n-1。

可选的,所述将目标固件对应的数据进行分割,得到n个数据段,包括:将所述目标固件对应的数据进行平均分割,得到n个大小相同的所述数据段。

可选的,所述完整性验证信息为哈希值,所述哈希值根据每个所述数据段生成。

本发明实施例还提供另一种固件升级方法,包括:接收目标固件对应的数据信息,所述数据信息由服务器生成,包括:所述目标固件容量、加密数据包的数目n以及所述目标固件的版本信息,其中n为所述目标固件对应的所述加密数据包的数目,所述服务器将所述目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息,分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个数据包进行加密,得到n个所述加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;当成功接收到所述数据信息后,向所述服务器发送已成功接收所述数据信息的反馈信息,使得所述服务器在接收到所述数据信息的反馈信息后,向智能设备发送n个所述加密数据包;接收n个所述加密数据包。

可选的,在接收目标固件对应的数据信息之前,还包括:对所述服务器进行认证。

可选的,所述对所述服务器进行认证,包括:采用第二公钥对第一签名数据、第一随机数以及智能设备的标识信息进行加密得到第一加密数据,并将所述第一加密数据发送至所述服务器,所述第一签名数据为采用第一私钥对与当前固件相关的信息进行签名得到;使得所述服务器接收到所述第一加密数据之后,采用与所述第二公钥对应的第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;接收第二加密数据;所述第二加密数据为所述服务器对所述第一签名数据验证成功后,采用所述第一公钥对第二签名数据及第二随机数进行加密得到,其中,所述第二签名数据为所述服务器采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到;采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证,当对所述第二签名数据验证成功之后,向所述服务器反馈所述第二签名数据的验证成功信息,使得所述服务器接收到所述第二签名数据的验证成功信息之后,完成对所述服务器的认证。

可选的,在所述接收服务器发送的目标固件对应的数据信息之前,还包括:与所述服务器进行密钥协商,根据第二秘密信息、预设随机数以及第二计数器计数生成所述包密钥对应的解密密钥;其中,所述第二秘密信息根据第一私钥以及所述服务器的第二公钥生成。

本发明实施例还提供一种服务器,包括:分割单元,适于将目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息;加密单元,适于分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个所述数据包进行加密,得到n个加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;第一发送单元,向智能设备发送所述目标固件对应的数据信息,所述数据信息包括:所述目标固件容量、所述加密数据包的数目n以及所述目标固件的版本信息;以及在接收到所述智能设备成功接收所述数据信息的反馈信息后,向所述智能设备发送n个所述加密数据包。

可选的,所述服务器还包括:第一认证单元,适于对所述智能设备进行认证。

可选的,所述第一认证单元,适于接收所述智能设备发送的第一加密数据,所述第一加密数据为所述智能设备采用第二公钥对第一签名数据、第一随机数以及所述智能设备的标识信息进行加密得到,所述第一签名数据为所述智能设备采用第一私钥对与当前固件相关的信息进行签名得到;采用第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,所述第二私钥与所述第二公钥对应;根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;当对所述第一签名数据验证成功后,采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到第二签名数据;采用所述第一公钥对所述第二签名数据及第二随机数进行加密,得到第二加密数据,并将所述第二加密数据发送至所述智能设备;使得所述智能设备采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证;接收到所述智能设备对所述第二签名数据的验证成功信息后,完成与所述智能设备的认证。

可选的,所述服务器还包括:第一协商单元,适于在将目标固件对应的数据进行分割之前,与所述智能设备进行密钥协商,根据第一秘密信息、预设随机数以及第一计数器计数生成所述包密钥;其中,所述第一秘密信息根据第二私钥以及所述智能设备的第一公钥生成。

可选的,所述加密单元,适于采用所述包密钥并基于对称加密算法对每个所述数据包进行加密。

可选的,所述第一发送单元,适于在接收到所述智能设备发送的成功接收所述数据信息的反馈信息后,向所述智能设备发送第1个所述加密数据包;以及在接收到所述智能设备反馈的第i个所述加密数据包成功接收的反馈信息之后,向所述智能设备发送第i+1个所述加密数据包,其中1≤i≤n-1。

可选的,所述分割单元,适于将所述目标固件对应的数据进行平均分割,得到n个大小相同的所述数据段。

可选的,所述完整性验证信息为哈希值,所述哈希值根据每个所述数据段生成。

本发明实施例还提供一种智能设备,包括:第一接收单元,适于接收服务器发送的目标固件对应的数据信息,所述数据信息包括:所述目标固件容量、加密数据包的数目n以及所述目标固件的版本信息,其中n为所述目标固件对应的所述加密数据包的数目,所述服务器将所述目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息,分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个所述数据包进行加密,得到n个加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;第二发送单元,适于当成功接收到所述数据信息后,向所述服务器发送已成功接收所述数据信息的反馈信息,使得所述服务器在接收到所述数据信息的反馈信息后,向智能设备发送n个所述加密数据包;第二接收单元,适于接收n个所述加密数据包。

可选的,所述智能设备还包括:第二认证单元,适于对所述服务器进行认证。

可选的,所述第二认证单元,适于采用第二公钥对第一签名数据、第一随机数以及智能设备的标识信息进行加密得到第一加密数据,并将所述第一加密数据发送至所述服务器,所述第一签名数据为采用第一私钥对与当前固件相关的信息进行签名得到;使得所述服务器接收到所述第一加密数据之后,采用与所述第二公钥对应的第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;接收第二加密数据;所述第二加密数据为所述服务器对所述第一签名数据验证成功后,采用所述第一公钥对第二签名数据及第二随机数进行加密得到,其中,所述第二签名数据为所述服务器采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到;采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证,当对所述第二签名数据验证成功之后,向所述服务器反馈所述第二签名数据的验证成功信息,使得所述服务器接收到所述第二签名数据的验证成功信息之后,完成对所述服务器的认证。

可选的,所述服务器还包括:第二协商单元,适于在接收服务器发送的目标固件对应的数据信息之前,与所述服务器进行密钥协商,根据第二秘密信息、预设随机数以及第二计数器计数生成所述包密钥对应的解密密钥;其中,所述第二秘密信息根据第一私钥以及所述服务器的第二公钥生成。

本发明实施例还提供另一种服务器,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一种固件升级方法的步骤。

本发明实施例还提供另一种智能设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一种固件升级方法的步骤。

本发明实施例还提供一种固件升级系统,包括上述任一种服务器和上述任一种智能设备。

本发明实施例还提供一种计算机可读存储介质,用于服务器,计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一种固件升级方法的步骤。

本发明实施例还提供另一种计算机可读存储介质,用于智能设备,计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一种固件升级方法的步骤。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

将目标固件对应的数据进行分割得到n个数据段,将每个数据段及对应的完整性验证信息组成一个数据包,并采用每个数据包一一对应的包密钥对该数据包进行加密,并将加密后的n个加密数据包发送至智能设备。通过将目标固件对应的数据分成多个数据段,并采用不同的包密钥对数据包进行加密,实现“一包一密”,从而可以提高在固件升级过程中,目标固件对应的数据在数据传输中的安全性。

附图说明

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

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

图3是本发明实施例中的一种固件升级原理图;

图4是本发明实施例中的一种服务器的结构示意图;

图5是本发明实施例中的一种智能设备的结构示意图;

图6为本发明实施例中的一种服务器与智能设备的认证过程示意图。

具体实施方式

如前所述,目前,越来越多的智能设备或硬件支持远程在线固件升级,即智能设备或硬件自动向云端的服务器请求升级固件。这种远程进行固件升级方式无需用户操作或干预,给用户带来了便捷。但是,上述远程升级方式的数据传输安全性较低。

本发明实施例中,将目标固件对应的数据进行分割得到n个数据段,将每个数据段及对应的完整性验证信息组成一个数据包,并采用每个数据包一一对应的包密钥对该数据包进行加密,并将加密后的n个数据包发送至智能设备。通过将目标固件对应的数据分成多个数据段,并采用不同的包密钥对数据包进行加密,实现“一包一密”,从而可以提高在固件升级过程中,目标固件对应的数据在数据传输中的安全性。

为使本发明实施例的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

本发明实施例提供一种固件升级方法,可以用于服务器。参照图1,给出了本发明实施例中一种固件升级方法的流程图,以下通过具体步骤进行说明。

步骤11,将目标固件对应的数据进行分割,得到n个数据段。

在具体实施中,可以采用多种方式触发固件升级操作。

在本发明一实施例中,智能设备定期访问服务器,获取服务器上是否存在某一个固件对应的更新版本。当智能设备检测到服务器上存在该固件的更新版本时,可以向服务器发起固件升级操作请求,从而触发固件升级操作。

在本发明另一实施例中,当服务器检测到智能设备对应的固件存在较低版本时,触发固件升级操作。

本发明实施例中,为便于描述,将服务器上所存在的某一个固件的更新版本简称为目标固件。

在具体实施中,在进行固件升级时,服务器可以将目标固件对应的数据进行分割,得到n个数据段,并为每个数据段分配一一对应的完整性验证信息。数据段对应的完整性验证信息可以验证该数据段的正确性,以校验该数据段在数据传输过程中是否发生错误。

在本发明实施例中,数据段对应的完整性验证信息可以为哈希(hash)值。可以理解的是,在实际应用中,也可以采用其他能够验证数据段正确性的信息作为完整性验证信息,可以根据实际应用需求进行选择。

在具体实施中,服务器可以将目标固件对应的数据进行平均分割,从而得到n个大小相同的数据段;服务器也可以将目标固件对应的数据进行非平均分割,从而得到n个大小不同的数据段。

步骤12,分别将每个数据段及对应的完整性验证信息组成一个数据包,并采用包密钥对每个数据包进行加密,得到n个加密数据包。

在具体实施中,服务器在得到n个数据段之后,可以分别将每个数据段及其一一对应的完整性验证信息组成一个数据包,从而可以得到n个数据包。之后,采用与数据包一一对应的包密钥对该数据包进行加密,从而得到n个加密数据包。

在具体实施中,服务器可以采用包密钥并基于对称加密算法对每个数据包进行加密。可以理解的是,服务器也可以采用其他加密算法对每个数据包进行加密,只需满足智能设备能够对加密的数据包进行解密即可,此处不再赘述。

步骤13,向智能设备发送目标固件对应的数据信息。

在具体实施中,为了提高数据传输的准确性,服务器可以将目标固件对应的数据信息发送至智能设备,以告知智能设备所需的目标固件的相关数据信息。在本发明实施例中,目标固件的数据信息可以包括:目标固件容量、加密数据包的数目n以及目标固件的版本信息。可以理解的是,数据信息还可以包括其他与目标固件相关的信息。

在本发明实施例中,为了进一步提高数据传输安全,目标固件的数据信息还可以包括数据信息所对应的完整性验证信息。数据信息对应的完整性验证信息可以是数据信息对应的hash值。之后,服务器还可以采用包密钥对数据信息进行加密,并将加密之后的数据信息发送至智能设备。

当智能设备接收到数据信息之后,可以向服务器发送已成功接收所述数据信息的反馈信息,反馈信息用于标识智能设备已成功接收到数据信息。

步骤14,在接收到智能设备发送的成功接收数据信息的反馈信息后,向智能设备发送n个加密数据包。

在具体实施中,当服务器接收到智能设备发送的反馈信息后,可以将n个加密数据包发送至智能设备。

在本发明一实施例中,为进一步提高数据传输的安全性,每次向智能设备发送一个加密数据包。具体而言,当服务器接收到智能设备发送的已成功接收到数据信息的反馈信息后,向智能设备发送第1个加密数据包,并等待智能设备的反馈信息。当智能设备接收到第1个加密数据包之后,可以反馈第1个加密数据包接收成功信息。例如,发送一个ack信号作为第1个加密数据包接收成功的信息。在服务器接收到智能设备反馈的已成功接收到第1个加密数据包的反馈信息之后,向智能设备发送第2个加密数据包。以此类推,在服务器接收到智能设备反馈的已成功接收到第i个加密数据包的反馈信息之后,向智能设备发送第i+1个加密数据包,以此类推,直至完成n个加密数据包的发送,其中,1≤i≤n-1。

由上述方案可知,将目标固件对应的数据进行分割得到n个数据段,将每个数据段及对应的完整性验证信息组成一个数据包,并采用每个数据包一一对应的包密钥对该数据包进行加密,并将加密后的n个数据包发送至智能设备。通过将目标固件对应的数据分成多个数据段,并采用不同的包密钥对数据包进行加密,实现“一包一密”,从而可以提高在固件升级过程中,目标固件对应的数据在数据传输中的安全性。

在具体实施中,为了进一步提高固件升级过程中数据传输的安全性,在将目标固件对应的数据进行分割之前,还可以对智能设备进行认证。

参照图6,给出了本发明实施例中的一种服务器与智能设备之间的认证过程示意图。下面结合图6,对服务器与智能设备的认证过程进行说明,具体可以包括如下步骤:

智能设备具有第一私钥以及与第一私钥对应的第一公钥。服务器具有第二私钥以及与第二私钥对应的第二公钥。智能设备与服务器可以进行公钥交换,当二者进行公钥交换之后,智能设备可以获取到服务器的第二公钥,服务器可以获取到智能设备的第一公钥。

步骤s601,智能设备生成第一加密数据。

在具体实施中,智能设备采用第一私钥对与当前固件相关的信息进行签名得到第一签名数据。智能设备产生第一随机数,采用第二公钥对第一签名数据、第一随机数以及智能设备的标识信息进行加密生成第一加密数据。智能设备的标识信息可以为智能设备的id,也可以为其他能够唯一标识智能设备的信息。

步骤s602,智能设备将第一加密数据发送至服务器。

步骤s603,服务器接收第一加密数据。

步骤s604,服务器对第一加密数据进行解密,并对第一签名数据进行验证。

在具体实施中,在服务器接收到第一加密数据后,采用第二私钥对第一加密数据进行解密,获取智能设备的标识信息及第一签名数据。根据所获取到的智能设备的标识信息,查询智能设备的第一公钥。服务器采用第一公钥对第一签名数据进行解密,并对第一签名数据进行验证。

步骤s605,服务器生成第二加密数据。

当服务器对第一签名数据验证成功后,采用第二私钥对第一随机数、第一签名数据的验证成功信息以及服务器相关信息进行签名得到第二签名数据。服务器产生第二随机数,采用第一公钥对第二签名数据及第二随机数进行加密,生成第二加密数据。

步骤s606,服务器将第二加密数据发送至智能设备。

步骤s607,智能设备接收第二加密数据。

步骤s608,智能设备对第二加密数据进行解密,并对第二签名数据进行验证。

智能设备接收到第二加密数据之后,采用第一私钥对第二加密数据进行解密,获取第二随机数以及第二签名数据,并采用第二公钥对第二签名数据进行验证。

步骤s609,智能设备发送第二签名数据的验证成功信息至服务器。

当智能设备对第二签名数据验证成功之后,发送第二签名数据的验证成功信息至服务器。

步骤s610,服务器接收第二签名数据的验证成功信息,完成与智能设备的认证。

当服务器接收到智能设备对第二签名数据的验证成功信息后,完成与智能设备的认证。

在具体实施中,在步骤11之前,也即在将目标固件对应的数据进行分割之前,服务器还可以与智能设备进行密钥协商,以确定包密钥的生成方式。

在具体实施中,服务器可以先与智能设备进行认证,完成认证后,与智能设备进行密钥协商,在与智能设备完成密钥协商后执行步骤11。

在具体实施中,服务器可以与智能设备进行公钥交换,服务器将第二公钥交给智能设备,智能设备将第一公钥交给服务器。

在具体实施中,服务器可以采用椭圆曲线密码学(ellipticcurvecryptography,ecc)算法得到对应的第二公钥及第二私钥。智能设备可以采用ecc得到第一公钥及第一私钥。可以理解的是,服务器和智能设备也可以采用其他加密算法生成各自的公钥及私钥。

服务器可以根据第二私钥及第一公钥生成第一秘密信息,并根据第一秘密信息、预设随机数以及第一计数器计数生成包密钥。第一计数器的初始计数为0,服务器每发送一个数据包或者接收到一个数据包,第一计数器的计数加1。随着数据包的发送及接收,第一计数器计数不同,故服务器生成的每个数据包对应的包密钥不同。

智能设备可以根据第一私钥及第二公钥生成第二秘密信息,并根据第二秘密信息、预设随机数及第二计数器计数生成包密钥对应的解密密钥。第二计数器的初始计数为0,智能设备每发送一个数据包或者接收到一个数据包,第二计数器的计数加1。随着数据包的发送及接收,第二计数器计数不同,故服务器生成的每个数据包对应的包密钥不同。

在具体实施中,预设随机数可以采用第二随机数,也可以采用第一随机数,还可以采用其他服务器与智能设备协商的随机数,此处不做限定。

采用ecc密钥协商,服务器可以得到第一秘密信息,智能设备可以得到第二秘密信息,第一秘密信息与第二秘密信息互为共享的秘密信息。同时通过设置与服务器对应的第一计数器,与智能设备对应的第二计数器,可以同步包密钥以及与包密钥对应的解密密钥的生成,可以实现一个数据包对应一个包密钥和解密密钥,安全性较高。

由于智能设备的固件通常存储于闪存(flash)中,在固件升级过程中,将目标固件的数据分成n个加密数据包进行发送,并单独对每个加密数据包进行处理,无需一次性接收完整的固件数据,从而可以减小智能设备进行固件升级时所占用的内存。

本发明实施例还提供另一种固件升级方法,可以用于智能设备。参照图2,给出了本发明实施例中另一种固件升级方法的流程图,具体可以包括以下步骤。

步骤21,接收目标固件对应的数据信息。

在具体实施中,在对智能设备进行固件升级时,智能设备可以接收目标固件对应的数据信息。

目标固件对应的数据信息可以由服务器生成。数据信息可以包括:目标固件容量、加密数据包的数目n以及目标固件的版本信息,其中n为目标固件对应的加密数据包的数目。

在具体实施中,服务器将目标固件对应的数据进行分割,得到n个数据段,并为每个数据段分配一一对应的完整性验证信息,分别将每个数据段及对应的完整性验证信息组成一个数据包,得到n个数据包。采用与数据包一一对应的包密钥对该数据包进行加密,从而得到n个加密数据包。

服务器生成对应的n个加密数据包后,可以进一步生成目标固件对应的数据信息,通过数据信息将目标固件容量、加密数据包的数目n以及目标固件的版本信息等发送至智能设备。智能设备在接收到数据信息之后,可以获知目标固件的相关信息。

步骤22,当成功接收到数据信息后,向服务器发送已成功接收数据信息的反馈信息。

在具体实施中,当智能设备接收到数据信息后,可以对数据信息进行解密并确认。例如,根据数据信息中携带的hash值,确认接收到的数据信息是否正确。当确认成功接收到数据信息之后,向服务器发送已成功接收到数据信息的反馈信息。

步骤23,接收n个加密数据包。

在具体实施中,服务器在接收到智能设备反馈的已成功接收到数据信息的反馈信息后,向智能设备发送n个加密数据包。

在具体实施中,为进一步提高数据传输的安全性,服务器可以如下方式发送n个加密数据包:

服务器每次向智能设备发送一个加密数据包。具体而言,当服务器接收到智能设备反馈的已成功接收到数据信息的反馈信息后,向智能设备发送第1个加密数据包,并等待智能设备的反馈。当智能设备成功接收到第1个加密数据包之后,可以反馈已成功接收到第1个加密数据包的反馈信息。在接收到智能设备反馈的已成功接收到第1个加密数据包的反馈信息之后,向智能设备发送第2个加密数据包,以此类推,在接收到智能设备反馈的已成功接收到第i个加密数据包的反馈信息之后,向智能设备发送第i+1个加密数据包,以此类推,直至完成n个加密数据包的发送,其中,1≤i≤n-1。

在具体实施中,在智能设备接收到n个加密数据包之后,还需要对n个加密数据包进行解密,在解密时需要采用与包密钥对应的解密密钥。与包密钥对应的解密密钥是智能设备与服务器进行密钥协商,并根据第二秘密信息、预设随机数以及第二计数器计数生成。第二秘密信息根据智能设备第一私钥以及服务器的第二公钥生成,第二计数器的初始计数为0,智能设备每收一个数据包或者每发送一次数据包第二计数器的计数加1。

在具体实施中,为了进一步提高固件升级过程中的数据传输安全性,在执行步骤21之前,也即智能设备在接收目标固件对应的数据信息之前,还可以对服务器进行认证。

在本发明实施例中,智能设备可以采用如下方式对服务器进行认证:

智能设备采用第一私钥对与当前固件相关的信息进行签名得到第一签名数据。智能设备产生第一随机数,采用第二公钥对第一签名数据、第一随机数以及智能设备的标识信息进行加密得到第一加密数据,并将第一加密数据发送至服务器。智能设备的标识信息可以为智能设备的id,也可以为其他能够唯一标识智能设备的信息。

服务器接收到第一加密数据后,采用第二私钥对第一加密数据进行解密,获取智能设备的标识信息。根据所获取到的智能设备的标识信息,查询智能设备的第一公钥。服务器采用第一公钥对第一签名数据进行解密,并对第一签名数据进行验证。当对第一签名数据验证成功后,采用第二私钥对第一随机数、第一签名数据的验证成功信息以及服务器相关信息进行签名得到第二签名数据。服务器产生第二随机数,并采用第一公钥对第二签名数据及第二随机数进行加密,得到第二加密数据,并将第二加密数据发送至智能设备。

智能设备接收到第二加密数据之后,采用第一私钥对第二加密数据进行解密,获取第二随机数以及第二签名数据,并采用第二公钥对第二签名数据进行验证,并核对第一随机数的一致性。当对第二签名数据验证成功之后,也即第一随机数的一致性核对通过时,发送第二签名数据的验证成功信息至服务器,完成对服务器的认证。

当服务器接收到智能设备对第二签名数据的验证成功信息后,完成对智能设备的认证。

为了便于本领域技术人员更好的理解和实现本发明实施例,结合图3,给出了本发明实施例中一种固件升级原理图,以下进行详细说明。

步骤31,服务器与智能设备进行互相认证。

在具体实施中,服务器与智能设备的认证过程可以参考图6及本发明上述实施例中对服务器与智能设备的认证过程中的描述,此处不再赘述。

步骤32,服务器与智能设备进行ecc密钥协商。

在具体实施中,服务器与智能设备进行ecc密钥协商,并进行公钥交换,从而服务器可以获取到智能设备的第一公钥,并根据第一公钥及第二私钥生成第一秘密信息。服务器根据第一秘密信息、预设随机数以及第一计数器计数生成包密钥。由于服务器每发送或者接收到一个数据包之后,第一计数器计数会发生变化,从而每次对待发送的数据包进行加密时所生成的包密钥不同,从而可以确保每个数据包均对应有一一的包密钥。

智能设备可以获取到服务器的第二公钥,并根据第二公钥及第一私钥生成第二秘密信息,智能设备根据第二秘密信息、预设随机数以及第二计数器计数生成包密钥对应的解密密钥。

第一计数器和第二计数器的初始化计数可以相同,如均可以从0开始,在服务器和智能设备的正常发送数据过程中,服务器采用第i个包密钥对第i个数据包进行加密得到第i个加密数据包。智能设备生成用于解密第i个加密数据包的第i个解密密钥,第i个解密密钥与第i个包密钥相对应,采用第i个解密密钥可以解密第i个加密数据包。

步骤33,服务器将目标固件对应的数据进行分割并打包处理。

例如,服务器将目标固件对应的数据包分割成10个片段,得到10个数据段。每个数据段均有对应的hash值,每个数据段与对应的hash值组成一个数据包,得到10个数据包。

步骤34,服务器对每个数据包进行加密,然后将加密数据包发送至智能设备,每个数据包采用不同的包密钥。

在具体实施中,向智能设备发送目标固件的数据信息对应的数据包,也可以采用对应的包密钥进行加密,在目标固件的数据信息对应的数据包中包括相对应的hash值。

例如,数据信息包括:目标固件容量为1500m,加密数据包的数目为10个,v3版本。

服务器在接收到智能设备发送的成功接收数据信息的反馈信息后,第一计数器计数加1。服务器根据第一秘密信息、预设随机数以及加1后的第一计数器计数生成第1个数据包对应的包密钥,并对第1个数据包进行加密,得到第1个加密数据包,并发送至智能设备。等待智能设备对第1个加密数据包的接收反馈。当接收到第1个加密数据包的接收成功反馈之后,第一计数器计数再加1。服务器根据第一秘密信息、预设随机数以及再加1后的第一计数器计数生成第2个数据包对应的包密钥,并对第2个数据包进行加密,得到第2个加密数据包,并发送至智能设备,以此类推,直至完成10个加密数据包的发送。

步骤35,智能设备对接收到的加密数据包进行解密并进行hash值核对。

当智能设备接收到数据信息后,通过hash值对数据信息进行验证,当验证结果正确时,向服务器反馈成功接收数据信息的反馈信息。

当接收到第1个加密数据包时,采用所生成的与第1个加密数据包的包密钥对应的解密密钥对第1个加密数据包进行解密,并通过hash值对第1个加密数据包进行验证。当验证成功时,向服务器发送成功接收第1个加密数据包的反馈信息。以此类推,完成10个加密数据包的接收。

参照图4,本发明实施例还提供一种服务器。服务器40可以包括:分割单元41、加密单元42、第一发送单元43,其中:

分割单元41,适于将目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息;

加密单元42,适于分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个所述数据包进行加密,得到n个加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;

第一发送单元43,向智能设备发送所述目标固件对应的数据信息,所述数据信息包括:所述目标固件容量、所述加密数据包的数目n以及所述目标固件的版本信息;以及在接收到所述智能设备成功接收所述数据信息的反馈信息后,向所述智能设备发送n个所述加密数据包。

在具体实施中,所述服务器40还可以包括:第一认证单元44,适于对所述智能设备进行认证。

在具体实施中,所述第一认证单元44,适于接收所述智能设备发送的第一加密数据,所述第一加密数据为所述智能设备采用第二公钥对第一签名数据、第一随机数以及所述智能设备的标识信息进行加密得到,所述第一签名数据为所述智能设备采用第一私钥对与当前固件相关的信息进行签名得到;采用第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,所述第二私钥与所述第二公钥对应;根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;当对所述第一签名数据验证成功后,采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到第二签名数据;采用所述第一公钥对所述第二签名数据及第二随机数进行加密,得到第二加密数据,并将所述第二加密数据发送至所述智能设备;使得所述智能设备采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证;接收到所述智能设备对所述第二签名数据的验证成功的反馈信息后,完成对所述智能设备的认证。

在具体实施中,所述服务器40还可以包括:第一协商单元45,适于在所述将目标固件对应的数据进行分割之前,与所述智能设备进行密钥协商,根据第一秘密信息、预设随机数以及第一计数器计数生成所述包密钥;其中,所述第一秘密信息根据第二私钥以及所述智能设备的第一公钥生成。

在具体实施中,所述加密单元42,适于采用所述包密钥并基于对称加密算法对每个所述数据包进行加密。

在具体实施中,所述第一发送单元43,适于在接收到所述智能设备发送的成功接收所述数据信息的反馈信息后,向所述智能设备发送第1个所述加密数据包;以及在接收到所述智能设备反馈的第i个所述加密数据包成功接收的反馈信息之后,向所述智能设备发送第i+1个所述加密数据包,其中1≤i≤n-1。

在具体实施中,所述分割单元41,适于将所述目标固件对应的数据进行平均分割,得到n个大小相同的所述数据段。

在具体实施中,所述完整性验证信息为哈希值,所述哈希值根据每个所述数据段生成。

在具体实施中,所述服务器40的工作原理及工作流程可以参考本发明上述实施例中提供的一种固件升级方法中的描述,此处不再赘述。

参照图5,本发明实施例还提供一种智能设备。所述智能设备50可以包括:第一接收单元51、第二发送单元52及第二接收单元53,其中:

第一接收单元51,适于接收服务器发送的目标固件对应的数据信息,所述数据信息包括:所述目标固件容量、加密数据包的数目n以及所述目标固件的版本信息,其中n为所述目标固件对应的所述加密数据包的数目,所述服务器将所述目标固件对应的数据进行分割,得到n个数据段,每个所述数据段存在一一对应的完整性验证信息,分别将每个所述数据段及对应的所述完整性验证信息组成一个数据包,并采用包密钥对每个所述数据包进行加密,得到n个加密数据包;其中,每个所述数据包均存在一一对应的所述包密钥;

第二发送单元52,适于当成功接收到所述数据信息后,向所述服务器发送已成功接收所述数据信息的反馈信息,使得所述服务器在接收到所述数据信息的反馈信息后,向智能设备发送n个所述加密数据包;

第二接收单元53,适于接收n个所述加密数据包。

在具体实施中,所述智能设备50还可以包括:第二认证单元54,适于对所述服务器进行认证。

在具体实施中,所述第二认证单元54,适于采用第二公钥对第一签名数据、第一随机数以及智能设备的标识信息进行加密得到第一加密数据,并将所述第一加密数据发送至所述服务器,所述第一签名数据为采用第一私钥对与当前固件相关的信息进行签名得到;使得所述服务器接收到所述第一加密数据之后,采用与所述第二公钥对应的第二私钥对所述第一加密数据进行解密,获取所述智能设备的标识信息及所述第一签名数据,根据所述智能设备的标识信息获取所述智能设备的第一公钥,采用所述第一公钥对所述第一签名数据进行验证;接收第二加密数据;所述第二加密数据为所述服务器对所述第一签名数据验证成功后,采用所述第一公钥对第二签名数据及第二随机数进行加密得到,其中,所述第二签名数据为所述服务器采用所述第二私钥对所述第一随机数、所述第一签名数据的验证成功信息以及服务器相关信息进行签名得到;采用所述第一私钥对所述第二加密数据进行解密,获取所述第二随机数以及所述第二签名数据,并采用所述第二公钥对所述第二签名数据进行验证,当对所述第二签名数据验证成功之后,向所述服务器反馈所述第二签名数据的验证成功信息,使得所述服务器接收到所述第二签名数据的验证成功信息之后,完成对所述服务器的认证。

在具体实施中,所述智能设备50还可以包括:第二协商单元55,适于在接收服务器发送的目标固件对应的数据信息之前,与所述服务器进行密钥协商,根据第二秘密信息、预设随机数以及第二计数器计数生成所述包密钥对应的解密密钥;其中,所述第二秘密信息根据第一私钥以及所述服务器的第二公钥生成。

在具体实施中,所述智能设备50的工作原理及工作流程,可以参考本发明实施例提供的上述任一种固件升级方法中的描述,此处不再赘述。

本发明实施例还提供另一种服务器,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行本发明实施例提供的上述任一种用于服务器的固件升级方法的步骤。

本发明实施例还提供另一种智能设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行本发明实施例提供的上述任一种用于智能设备的固件升级方法的步骤。

本发明实施例还提供一种固件升级系统,包括本发明实施例提供的上述任一种服务器和上述任一种智能设备。

在具体实施中,固件升级系统的工作原理及工作流程,可以参考本发明上述实施例中对服务器和智能设备的描述,以及提供的固件升级方法中的描述,此处不再赘述。

本发明实施例还提供一种计算机可读存储介质,用于服务器,计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行本发明实施例提供的上述任一种用于服务器的固件升级方法的步骤。

本发明实施例还提供一种计算机可读存储介质,用于智能设备,计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行本发明实施例提供的上述任一种用于智能设备的固件升级方法的步骤。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于任一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

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