CN116737207B - 一种固件升级方法、装置及设备 - Google Patents

一种固件升级方法、装置及设备 Download PDF

Info

Publication number
CN116737207B
CN116737207B CN202311000976.4A CN202311000976A CN116737207B CN 116737207 B CN116737207 B CN 116737207B CN 202311000976 A CN202311000976 A CN 202311000976A CN 116737207 B CN116737207 B CN 116737207B
Authority
CN
China
Prior art keywords
upgrade package
upgrade
firmware
power board
cloud server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311000976.4A
Other languages
English (en)
Other versions
CN116737207A (zh
Inventor
郝恩敬
张开川
刘小龙
蔡锋锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jidu Technology Co Ltd
Original Assignee
Beijing Jidu Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jidu Technology Co Ltd filed Critical Beijing Jidu Technology Co Ltd
Priority to CN202311000976.4A priority Critical patent/CN116737207B/zh
Publication of CN116737207A publication Critical patent/CN116737207A/zh
Application granted granted Critical
Publication of CN116737207B publication Critical patent/CN116737207B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种固件升级方法、装置及设备,包括:由云端服务器基于固件升级任务信息对需要下发的升级包的合法性及完整性进行校验,若校验通过,则使用第一密钥对需要下发的升级包进行加密后基于CMAC算法生成加密后的升级包的第一CMAC,并下发第一CMAC、加密后的升级包及加密后的第一密钥;物联网设备对加密的升级包进行CMAC验证后,基于OTA根密钥解密加密后的第一密钥后基于第一密钥解密升级包,并校验解密后的升级包具有合法性及完整性后写入升级包到对应的固件,若判断升级包写入失败则基于本地回滚或云端回滚重新写入历史版本的升级包。本申请可以实现高可靠的OTA升级,解决升级失败导致设备无法正常运行的问题。

Description

一种固件升级方法、装置及设备
技术领域
本申请属于物联网技术领域,尤其涉及一种固件升级方法、装置及设备。
背景技术
随着物联网技术的发展,越来越多的物联网设备产生,如电动汽车的充电桩。在充电桩的运行和维护周期中,通常使用远程空中下载(Over the Air,OTA)方式对充电桩内程序进行升级以完善功能、修复安全漏洞、优化使用体验等。
充电桩内部的电路板通常分为通信板和功率板,通信板负责与云端服务器交互并将交互信息转发到功率板,功率板则根据交互信息执行相应的操作。通信板和功率板通常由多种功能不同的固件组合而成,功能不同软件也不同,但所有固件需要OTA ,再加上升级链路较长,链路复杂,所以升级难度大,安全风险大,可靠性难以保障,易导致升级失败而造成设备无法启动。
针对上述问题,本申请提出一种固件升级方法、装置及设备,用于解决升级失败导致设备无法正常运行以及如何提升升级过程中数据安全性的问题,可以实现高可靠的OTA升级。
发明内容
第一方面,本申请提供了一种固件升级方法,应用于云端服务器,所述方法包括:
基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验, 所述固件升级任务信息包括携带升级包校验信息的升级包;
若校验通过,则使用第一密钥对需要下发的升级包进行加密后,基于分组加密的消息认证码CMAC算法生成加密后的升级包的第一CMAC,并将所述第一CMAC下发给物联网设备,所述第一CMAC用于验证所述加密的升级包的完整性,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥;
其中,所述固件升级任务采用如下任一方式创建:
基于用户的指令创建固件升级任务;
基于从物联网设备接收到的云端回滚请求,创建固件升级任务。
在一种可能的实施方式中,所述升级包校验信息包括物联网设备ID、固件ID及循环冗余校核CRC 校验码,所述物联网设备ID、固件ID用于校验所述需要下发的升级包的合法性,所述CRC 校验码用于校验所述需要下发的升级包的完整性。
第二方面,本申请提供了一种固件升级方法,应用于物联网设备,所述方法包括:
接收云端服务器发送的第一CMAC,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成,并在从云端服务器接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;
确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
校验解密后的升级包是否具有合法性及完整性,若否则上报云端服务器固件升级失败,若是则在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;或者在确定所述升级包对应功率板时,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件;
若确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚;
判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包。
在一种可能的实施方式中,所述解密后的升级包携带升级包校验信息,所述升级包校验信息包括物联网设备ID、固件ID及CRC 校验码;
所述校验解密后的升级包是否具有合法性及完整性,包括:
基于所述物联网设备ID、固件ID,对解密后的升级包的合法性进行校验;
基于所述CRC 校验码,对解密后的升级包的完整性进行校验。
在一种可能的实施方式中,所述判断本地回滚是否成功,包括:
对从本地存储空间中获取到的历史版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述历史版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
在一种可能的实施方式中,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板前,还包括:
通知功率板进入固件升级模式,并计算所述升级包的第一校验和,所述固件升级模式使功率板处于可以进行固件刷写升级的模式;
所述通信板将所述升级包和所述升级包的第一校验和作为升级指令转发到功率板。
在一种可能的实施方式中,所述将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件,包括:
所述功率板按照预设的下载参数分组下载所述升级包后,基于接收到的各组升级包计算出第二校验和,并判断所述第二校验和与所述第一校验和是否一致;
若是,则将所述升级包写入功率板上对应的固件;
若否,则所述功率板再次按照预设的下载参数分组下载所述升级包,直到所述第二校验和与所述第一校验和一致和/或达到设定的下载次数,且若达到设定的下载次数,所述第二校验和与所述第一校验和仍不一致,确定所述升级包写入失败。
在一种可能的实施方式中,所述通知功率板进入固件升级模式,包括:
通知功率板进入扩展模式,使功率板能够接收升级指令;
确定功率板进入扩展模式后,通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;
确定功率板进入总线静默模式后,通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能。
第三方面,本申请提供一种固件升级装置,包括:
第一校验模块,用于基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验, 所述固件升级任务信息包括携带升级包校验信息的升级包;其中,所述固件升级任务采用如下任一方式创建:基于用户的指令创建固件升级任务;基于从物联网设备接收到的云端回滚请求,创建固件升级任务;
加密模块,用于若校验通过,则使用第一密钥对需要下发的升级包进行加密后,基于分组加密的消息认证码CMAC算法生成加密后的升级包的第一CMAC,并将所述第一CMAC下发给物联网设备,所述第一CMAC用于验证所述加密的升级包的完整性,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥。
在一种可能的实施方式中,所述升级包校验信息包括物联网设备ID、固件ID及循环冗余校核CRC 校验码,所述物联网设备ID、固件ID用于校验所述需要下发的升级包的合法性,所述CRC 校验码用于校验所述需要下发的升级包的完整性。
第四方面,本申请提供一种固件升级装置,包括:
第二校验模块,用于接收云端服务器发送的第一CMAC,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成,并在从云端服务器接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;
解密模块,用于确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
升级包写入模块,用于校验解密后的升级包是否具有合法性及完整性,若否则上报云端服务器固件升级失败,若是则在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;或者在确定所述升级包对应功率板时,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件;
回滚模块,用于若确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚;判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包。
在一种可能的实施方式中,所述解密后的升级包携带升级包校验信息,所述升级包校验信息包括物联网设备ID、固件ID及CRC 校验码;
所述升级包写入模块校验解密后的升级包是否具有合法性及完整性,包括:
基于所述物联网设备ID、固件ID,对解密后的升级包的合法性进行校验;
基于所述CRC 校验码,对解密后的升级包的完整性进行校验。
在一种可能的实施方式中,所述回滚模块判断本地回滚是否成功,包括:
对从本地存储空间中获取到的历史版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述历史版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
在一种可能的实施方式中,所述升级包写入模块将所述升级包写入通信板,再将所述升级包由通信板转发到功率板前,所述升级包写入模块还用于:
通知功率板进入固件升级模式,并计算所述升级包的第一校验和,所述固件升级模式使功率板处于可以进行固件刷写升级的模式;
所述通信板将所述升级包和所述升级包的第一校验和作为升级指令转发到功率板。
在一种可能的实施方式中,所述升级包写入模块将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件,包括:
所述功率板按照预设的下载参数分组下载所述升级包后,基于接收到的各组升级包计算出第二校验和,并判断所述第二校验和与所述第一校验和是否一致;
若是,则将所述升级包写入功率板上对应的固件;
若否,则所述功率板再次按照预设的下载参数分组下载所述升级包,直到所述第二校验和与所述第一校验和一致和/或达到设定的下载次数,且若达到设定的下载次数,所述第二校验和与所述第一校验和仍不一致,确定所述升级包写入失败。
在一种可能的实施方式中,所述升级包写入模块通知功率板进入固件升级模式,包括:
通知功率板进入扩展模式,使功率板能够接收升级指令;
确定功率板进入扩展模式后,通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;
确定功率板进入总线静默模式后,通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能。
第五方面,本申请提供一种固件升级设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面中任一项所述的固件升级方法,或者执行如第二方面中任一项所述的固件升级方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行前述任一项所述的固件升级方法。
本申请的实施例提供的技术方案至少带来以下有益效果:
本申请在实现物联网设备的OTA升级过程中:
首先,通过在云端服务器下发升级包前和物联网设备端接受升级包后,均执行对升级包的合法性和完整性的校验,保证了数据包传输过程中的合法性,即使源头出错,物联网设备端也可以校验出来;
其次,采用包括MQTT双向身份认证、OTA动态密钥和CMAC校验等在内的多种安全机制,保证了信息安全性和物联网设备端从云端服务器下载的加密升级包的完整性,解决了下载过程中升级包被篡改的问题;
最后,在写入解密后的升级包到对应固件的过程中,不仅使用了新的固件升级模式以保证传输可靠性及降低信息泄露的风险,而且采用了本地回滚和云端回滚双重保障机制,以免出现若升级包写入失败导致物联网设备无法正常运行的情况。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的固件升级过程交互示意图;
图2为本申请实施例提供的通信板固件升级过程交互示意图;
图3为本申请实施例提供的功率板固件升级过程交互示意图;
图4为本申请实施例提供的固件升级装置示意图一;
图5为本申请实施例提供的固件升级装置示意图二;
图6为本申请实施例提供的固件升级设备示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。其中,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
随着物联网技术的发展,越来越多的物联网设备产生,如电动汽车的充电桩。在充电桩的运行和维护周期中,通常使用远程空中下载(Over the Air,OTA)方式对充电桩内程序进行升级以完善功能、修复安全漏洞、优化使用体验等。
充电桩内部的电路板通常分为通信板和功率板,通信板负责与云端服务器交互并将交互信息转发到功率板,功率板则根据交互信息执行相应的操作。通信板和功率板通常由多种功能不同的固件组合而成,功能不同软件也不同,但所有固件需要OTA ,再加上升级链路较长,链路复杂,所以升级难度大,安全风险大,可靠性难以保障,易导致升级失败而造成设备无法启动。
针对上述问题,本申请提出一种固件升级方法、装置及设备,首先,通过在云端服务器下发升级包前和物联网设备端接受升级包后,均执行对升级包的合法性和完整性的校验,保证了数据包传输过程中的合法性,即使源头出错,物联网设备端也可以校验出来;其次,采用包括MQTT双向身份认证、OTA动态密钥和CMAC校验等在内的多种安全机制,保证了信息安全性和物联网设备端从云端服务器下载的加密升级包的完整性,解决了下载过程中升级包被篡改的问题;最后,在写入解密后的升级包到对应固件的过程中,不仅使用了新的固件升级模式以保证传输可靠性及降低信息泄露的风险,而且采用了本地回滚和云端回滚双重保障机制,以免出现若升级包写入失败导致物联网设备无法正常运行的情况。
如图1所示,为本申请实施例所提供的固件升级过程交互示意图,包括如下步骤:
S101,由云端服务器基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验,所述固件升级任务信息包括携带升级包校验信息的升级包;其中,所述固件升级任务采用如下任一方式创建:
基于用户的指令创建固件升级任务;
基于从物联网设备接收到的云端回滚请求,创建固件升级任务。
在本申请实施例中的OTA升级过程中,需要由用户将需要下发的升级包上传到云端服务器后,由云端服务器发送到相应的物联网设备中对相应固件进行升级,并且云端服务器会通过任务监控功能监控物联网设备的升级过程,以确认升级结果并接收物联网设备升级失败时发送的用于请求历史版本升级包的云端回滚请求。因此,在一个或多个实施例中,所述固件升级任务可以是基于用户的指令创建固件升级任务,或者是基于从物联网设备接收到的云端回滚请求,创建固件升级任务。
在一个或多个实施例中,上述固件升级任务信息中升级包所携带的升级包校验信息包括物联网设备ID、固件ID及循环冗余校核(Cyclic Redundancy Check,CRC) 校验码,所述物联网设备ID、固件ID用于校验所述需要下发的升级包的合法性,所述CRC 校验码用于校验所述需要下发的升级包的完整性。
在本申请实施例中,所述物联网设备ID的作用是为了标识需要下发的升级包对应的物联网设备,可以是由物联网设备所属的公司名称、所属公司下设备类型编号、所属设备类型下的设备编号组成,也可以包括其他可以标识需要下发的升级包对应哪一个物联网设备的参数,本申请对此不作限定。
在本申请实施例中,所述固件ID的作用是为了标识需要下发的升级包对应的固件信息,固件ID可以由模块信息、固件长度及用于保存其他需求的验证信息的预留位组成。也可以包括其他可以标识需要下发的升级包对应的固件信息的参数,本申请对此不作限定。
示例性的,物联网设备为充电桩时,上述模块可以包括通信板(CommunicationBoard,CB)上的CB软件升级模块及蓝牙模组软件升级模块,以及功率板上的终端控制单元软件升级模块(Termination Control Unit,TCU)中央控制单元软件升级模块(CenterControl Unit, CCU)、功率控制单元软件升级模块(Power Control Unit,PCU)、输出控制单元软件升级模块(Outout Control Unit,OCU)及交直流转换单元软件升级模块(AC-DCControl Unit,ACDC)。
在S101中,利用所述物联网设备ID、固件ID校验需要下发的升级包的合法性,是为了确保云端服务器将升级包下发到正确的物联网设备,而CRC 是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,可以用来检测或校核数据传输或者保存后可能出现的错误,因此本申请实施例中,云端服务器下发升级包前利用升级包携带的CRC 校验码校验升级包的完整性,以确保下发到正确的物联网设备的升级包是完整的。
在一个或多个实施例中,云端服务器与物联网设备通信以实现OTA升级前,需要互相进行身份验证,以保证OTA升级过程中信息传输的安全性,因此,在物联网设备上电后,所述云端服务器会执行如下操作:
通过消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议,利用预先获得的证书授权(Certificate Authority,CA)证书验证物联网设备的CA证书是否合法;
确定物联网设备的CA证书合法后,基于MQTT密钥与物联网设备进行加解密通讯。
相应的,在物联网设备上电后,所述物联网设备会执行如下操作:
通过消息队列遥测传输MQTT协议,利用预先获得的CA证书验证云端服务器的CA证书是否合法;
确定云端服务器的CA证书合法后,基于MQTT密钥与云端服务器进行加解密通讯。
需要说明的是,CA证书是由认证机构服务者签发,是数字签名的技术基础保障,也是网上实体身份的证明,能够证明某一实体的身份及其公钥的合法性,证明该实体与公钥二者之间的匹配关系,因此本申请实施例中,只有通过CA证书互相验证通过的云端服务器和物联网设备才能进行加解密通信,可以保证OTA升级过程中升级包传输的安全性。
S102,若校验通过,则使用第一密钥对需要下发的升级包进行加密后,基于分组加密的消息认证码CMAC算法生成加密后的升级包的第一CMAC,并将所述第一CMAC下发给物联网设备,所述第一CMAC用于验证所述加密的升级包的完整性,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥;
在本申请实施例中,若云端服务器确认需要下发的升级包的合法性及完整性通过校验,则为了保证升级包在传输过程中的安全性,需要加密升级包后再下发加密后的升级包,因此,所述云端服务器需要使用第一密钥对需要下发的升级包进行加密后,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥,以免信息泄露。
作为一种可行的实施方式,所述云端服务器使用第一密钥对需要下发的升级包进行加密后,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥,包括:
使用第一密钥加对需要下发的升级包进行加密后,得到加密后的升级包;
使用动态密钥加密所述第一密钥,得到加密后的第一密钥;
向物联网设备下发所述加密后的升级包及所述加密后的第一密钥。
具体的,所述第一密钥和所述动态密钥均可以是由密钥管理平台生成的。
本申请通过利用第一密钥和动态密钥对需要下发的升级包进行双层加密,可以保证数据合法性,降低升级包被泄露的风险。
在一个或多个实施例中,在云端服务器下发加密后的升级包到物联网设备前,为了使物联网设备能够验证收到的加密升级包的完整性,所述云端服务器基于分组加密的消息认证码算法(Cipher Block Chaining-Message Authentication Code,CMAC)生成加密后的升级包的第一CMAC,并通过MQTT协议,将所述第一CMAC下发给物联网设备。
相应的,物联网设备利用接收到发送的第一CMAC以及基于上述CMAC算法和接收到的加密的升级包生成的第二CMAC对接收到的加密的升级包进行CMAC验证,即判断所述第一CMAC与所述第二CMAC是否一致,若一致则验证所述加密的升级包具有完整性,可以对所述加密的升级包进行解密,若不一致则上报给云端服务器以请求云端服务器再次下发升级包。
这样,本实施例中,对于云端服务器侧,在升级包下发时,首先对升级包进行合法性和完整性的校验以保证将完整升级包下发到正确的物联网设备,校验通过后使用双层密钥对升级包加密,以保证只有正确的物联网设备可以基于OTA根密钥解密,提高数据安全性,最后,基于加密的升级包生成第一CMAC,使物联网设备接收到加密的升级包后利用所述第一CMAC验证是否接受到完整的加密升级包,避免传输过程中升级包被篡改或使用不完整的升级包进行升级,而对于物联网设备侧,在接收到升级包后,所述升级包以密文的形式作为加密升级包保存,而所述物联网设备在利用所述加密升级包进行升级前,需先对所述加密升级包进行完整性校验和解密,且只有校验和解密通过的情况下才能进行下一步的升级,从而保证物联网设备固件升级的安全性。
S103,物联网设备接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
其中,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成。
为确保下载的升级包的完整性和安全性,物联网设备从云端服务器接收到加密后的升级包及加密后的第一密钥后,通过CMAC验证确认接收到的加密的升级包具有完整性后,由于下载的升级包为经第一密钥加密的密文升级包,因此,需要利用所述第一密钥对所述升级包进行解密,具体可以是基于空中下载OTA根密钥解密用于加密第一密钥的动态密钥得到解密的第一密钥,之后,利用解密的第一密钥对加密的升级包进行解密,以得到明文的升级包。
S104,物联网设备校验解密后的升级包是否具有合法性及完整性,若是则执行S105,若否则上报云端服务器固件升级失败;
在完成对加密升级包的CMAC验证及解密所述加密的升级包后,物联网设备需要根据所述解密后的升级包携带的升级包校验信息,对解密后的升级包的合法性及完整性进行校验,所述升级包校验信息包括物联网设备ID、固件ID及CRC 校验码,具体校验原理可参照前述实施例。
作为一种可行的实施方式,所述物联网设备校验解密后的升级包是否具有合法性及完整性,包括:
基于所述物联网设备ID、固件ID,对解密后的升级包的合法性进行校验;
基于所述CRC 校验码,对解密后的升级包的完整性进行校验。
S105,物联网设备写入升级包,并上报云端服务器开始安装;
在物联网设备对解密后的升级包的合法性及完整性进行校验后,若校验不通过则上报云端服务器固件升级失败,若检验通过则写入升级包到对应的固件。
在本申请实施例中,物联网设备内部的固件分布在通信板或功率板上,物联网设备通过通信板与云端服务器进行交互,而通信板又可以同功率板进行交互,转发云端服务器下发的数据到功率板。
因此,在本申请中物联网设备写入升级包时,需要根据升级包对应的固件将升级包写入通信板上对应的固件,或将升级包写入通信板后转发到功率板并写入功率板上对应的固件。
具体的,物联网设备在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;在确定所述升级包对应功率板时,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件。
在一个或多个实施例中,为了确保通信板与功率板之间的正常通信,在功率板和通信板上电后,所述通信板与所述功率板需要互相校验软件版本号是否一致,在校验通过后所述通信板与所述功率板进行通信并通过互相发送心跳报文保持连接。
在一个或多个实施例中,通信板包括第一通信模块,功率板包括第二通信模块,所述第一通信模块用于与云端服务器、通信板上其他固件及所述第二通信模块交互,所述第二通信模块除用于与所述第一通信模块交互外,还用于与功率板上其他固件交互。
作为一种可行的实施方式,所述升级包对应的固件处于通信板时,所述将所述升级包写入通信板上对应的固件,包括:
将所述升级包写入通信板的第一通信模块的微控制单元MCU的闪存FLASH中;
判断所述升级包是否对应所述第一通信模块,若是则将所述升级包写入所述第一通信模块MCU的可读存储器ROM中,若否则利用所述第一通信模块将所述升级包转发到所述升级包对应固件的MCU的FLASH与ROM中;
作为一种可行的实施方式,所述升级包对应的固件处于功率板时,所述将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件,包括:
将所述升级包写入通信板的第一通信模块中;
所述第一通信模块将所述升级包转发到功率板的第二通信模块的MCU的FLASH中;
判断所述升级包是否对应所述第二通信模块,若是则将所述升级包写入所述第二通信模块MCU的ROM中,若否则利用所述第二通信模块将所述升级包转发到所述升级包对应固件的MCU的FLASH与ROM中。
具体的,将所述升级包写入通信板的第一通信模块中可以是将所述升级包写入通信板的第一通信模块MCU中的FLASH中,即将通信板的第一通信模块MCU中的FLASH中存储了上一版本的升级包。
由于在S105中,物联网设备可能成功写入升级包,也可能写入失败,故为了保障物联网设备的正常运行,需要判断升级包是否写入成功并执行对应的措施,示例性的,若确定S105中升级包写入失败,则重新写入历史版本的升级包到所述升级包对应的固件中。
S106,物联网设备判断升级包是否写入成功,若是则上报云端服务器固件升级成功并上报当前升级包的版本号,若否则执行S107;
作为一种可行的实施方式,物联网设备采用如下方式判断升级包是否写入成功:
重新启动所述升级包对应的固件,并判断所述升级包对应的固件是否运行成功;
若所述升级包对应的固件运行成功,则所述升级包写入成功,若运行不成功,则所述升级包写入失败。
具体的,若升级包对应的固件为通信板上的第一通信模块,则在将所述升级包写入第一通信模块MCU的FLASH与ROM中后,重启所述MCU,并判断重启后所述MCU是否正常运行,若正常运行则升级包写入成功,反之则失败,需要从FLASH中调取上一版本的升级包写入ROM后再重启所述MCU,完成本地回滚。
S107,物联网设备进行本地回滚;
在本申请实施例中,若物联网设备确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚。
具体的,由前述实施例可知,第一通信模块MCU的FLASH存储了上一版本的升级包,因此物联网设备进行本地回滚时,可以从第一通信模块MCU的FLASH中获取上一版本的升级包,并且需要对所述上一版本的升级包的合法性及完整性进行校验,且只有在校验通过后才能将所述升级包写入对应的固件中并判断升级包是否写入成功。
S108,物联网设备判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则执行S109;
作为一种可行的实施方式,所述判断本地回滚是否成功,包括:
对从本地存储空间中获取到的历史版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述历史版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
具体的,由前述实施例可知,第一通信模块MCU的FLASH存储了上一版本的升级包,因此本地存储空间可以是第一通信模块MCU的FLASH,而物联网设备需要对从所述第一通信模块MCU的FLASH中获取到的上一版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述上一版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
在本申请实施例中,若获取到的上一版本的升级包成功写入对应的固件则本地回滚成功,物联网设备需要给云端服务器上报固件升级失败及本地回滚成功。若本地存储的上一版本的升级包的合法性及完整性未通过校验,或者在校验通过后所述升级包未成功写入对应的固件,则本地回滚失败,物联网设备需要上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包。
S109,物联网设备向云端服务器上报固件升级失败并发送云端回滚请求,回到S101重新创建固件升级任务。
需要说明的是,物联网设备上报本地回滚失败后,云端服务器重新创建的固件升级信息所对应的升级包,不限于上一版本的升级包,可以是设定的历史版本的升级包, 如上上版本的升级包,本申请对此不作限定。
本实施例中的物联网固件升级的方法,在OTA升级过程中,在云端服务器下发升级包前和物联网设备端接受升级包后,均执行对升级包的合法性和完整性的校验,通过双重验证保证了升级包传输过程中的合法性,即使源头出错导致下发到错误的物联网设备,物联网设备端也可以校验出来;同时物联网设备基于CMAC验证加密升级包的完整性,可以保证升级包的结构完整,而且双层加密的升级包可以使得升级包在传输过程中不易被恶意篡改,只有正确的物联网设备可以解密双层加密的升级包,使其准确性能够得以验证,而且为了避免在升级包安装失败导致物联网设备无法正常启动的问题,首先由物联网设备进行本地回滚,在本地回滚失败后再向云端服务器发起云端回滚请求,云端服务器会按照前述升级包下发的流程下发相应的软件,通过这两种回滚机制,可以大大减少升级安装失败带来的设备死机风险,进而提高固件升级的安全性。
下面对升级包分别对应物联网设备的通信板和功率板时,各自的固件升级过程交互流程进行详细说明。
如图2所示,为本申请实施例所提供的通信板固件升级过程交互示意图,包括如下步骤:
S200,通信板上电后基于CA证书完成与云端服务器的双向身份认证;
S201,由云端服务器基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验,所述固件升级任务信息包括携带升级包校验信息的升级包;
S202,若校验通过,则云端服务器使用第一密钥对需要下发的升级包进行加密后,再基于加密后的升级包生成第一CMAC及对所述第一密钥进行加密,向通信板下发第一CMAC、加密后的升级包及加密后的第一密钥;
S203,通信板从云端服务器接收到加密后的升级包及加密后的第一密钥后,对加密的升级包进行CMAC验证后,再基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;S204,通信板校验解密后的升级包是否具有合法性及完整性,若是则执行S205,若否则上报云端服务器固件升级失败;
S205,通信板将所述升级包写入通信板上对应的固件,并上报云端服务器开始安装;
S206,通信板判断升级包是否写入成功,若是则上报云端服务器固件升级成功并上报当前升级包的版本号,若否则执行S207;
S207,通信板从第一通信模块MCU的FLASH中获取上一版本的升级包并写入对应的固件,进行本地回滚;
S208,通信板判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则执行S209;
S209,通信板向云端服务器上报固件升级失败并发送云端回滚请求,回到S201重新创建固件升级任务;
S201~ S209的具体实施方式可参照前述实施例,此处不再详述。
如图3所示,为本申请实施例所提供的功率板固件升级过程交互示意图,包括如下步骤:
S300,通信板上电后基于CA证书完成与云端服务器的双向身份认证,功率板上电后完成与通信板的软件版本校验并在校验通过后与通信板保持互发心跳报文;
具体的,通信板与功率板通过向对方发送心跳报文,监控对方连接是否正常。
S301,由云端服务器基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验,所述固件升级任务信息包括携带升级包校验信息的升级包;
S302,若校验通过,则云端服务器使用第一密钥对需要下发的升级包进行加密后,再基于加密后的升级包生成第一CMAC及对所述第一密钥进行加密,向物联网设备下发第一CMAC、加密后的升级包及加密后的第一密钥;
S303,通信板从云端服务器接收到加密后的升级包及加密后的第一密钥后,对加密的升级包进行CMAC验证后,再基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
S304,通信板校验解密后的升级包是否具有合法性及完整性;
S305,通信板将所述升级包写入第一通信模块的MCU的FLASH中;
S306,通信板通知功率板进入固件升级模式,并计算所述升级包的第一校验和,功率板则根据接收到的通知处于可以进行固件刷写升级的模式;
具体的,所述固件升级模式包括扩展模式、总线静默模式及文件传输模式,其中,所述扩展模式是使功率板能够接收升级指令的模式;所述总线静默模式可以在确定功率板进入扩展模式后,使通信板和功率板都处于停止除固件升级之外的报文收发的模式;所述文件传输模式是在确定功率板进入总线静默模式后,使能功率板的文件上传下载功能。
作为一种可行的实施方式,所述通知功率板进入固件升级模式,包括:
由通信板通知功率板进入扩展模式,使功率板能够接收升级指令;
确定功率板进入扩展模式后,由通信板通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;
确定功率板进入总线静默模式后,由通信板通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能。
S307,通信板将所述升级包及所述第一校验和作为升级指令转发到功率板,功率板按照预设的下载参数分组下载所述升级包后,基于接收到的各组升级包计算出第二校验和;
S308,功率板判断所述第二校验和与所述第一校验和是否一致,若否则执行S309,若是则执行S310;
S309,判断是否达到设定的下载次数,若否则执行S307,若是则执行S312;
在本申请实施例中,通信板和功率板通过局域网络控制器(Controller AreaNetwork,CAN)通信,因此在功率板从通信板接收升级包时,需要按照预设的下载参数分组下载所述升级包,示例性的,所述下载参数可以包括格式、地址、大小、以及每组包最大数据量。
在一些实施例中,考虑到功率板从通信板接收升级包的过程中可能接收到不完整的升级包导致固件升级失败,所以功率板需要对接收到的升级包的完整性进行校验。
具体的,由通信板基于升级包所对应的各组数据计算出第一校验和,并将所述第一校验和与升级包作为升级指令一起发送给功率板,功率板在按照预设的下载参数接收所述升级包后,基于接收到的各组升级包计算出第二校验和,并通过判断所述第二校验和与所述第一校验和是否一致,来验证下载的升级包是否的完整性。
并且,在功率板判断所述第二校验和与所述第一校验和不一致后会重新按照预设的下载参数分组下载所述升级包,直到所述第二校验和与所述第一校验和一致和/或达到设定的下载次数。
S310,将所述升级包写入功率板上对应的固件,并上报云端服务器开始安装;
具体的,将所述升级包写入功率板上对应的固件,包括:通信板将所述升级包转发到功率板的第二通信模块的MCU的FLASH中后,功率板判断所述升级包是否对应所述第二通信模块,若是则将所述升级包写入所述第二通信模块MCU的ROM中,若否则利用所述第二通信模块将所述升级包转发到所述升级包对应固件的MCU的FLASH与ROM中。
S311,功率板判断升级包是否写入成功,若是则通知通信板并由通信板上报云端服务器固件升级成功并上报当前升级包的版本号,若否则执行S312;
S312,从第一通信模块MCU的FLASH中获取上一版本的升级包并写入对应的固件,进行本地回滚,回到S307;
具体的,功率板向通信板请求本地回滚后,回到S307,从第一通信模块MCU的FLASH中获取上一版本的升级包,进行本地回滚。
S313,功率板判断本地回滚是否成功,若是则通知通信板并由通信板上报云端服务器固件升级失败及本地回滚成功,若否则执行S314;
S314,功率板判断本地回滚失败后通知通信板,由通信板向云端服务器上报固件升级失败并发送云端回滚请求,回到S301重新创建固件升级任务;
本申请在前述实施例所提出的固件升级方法,首先,通过在云端服务器下发升级包前和物联网设备端接受升级包后,均执行对升级包的合法性和完整性的校验,保证了数据包传输过程中的合法性,即使源头出错,物联网设备端也可以校验出来;其次,采用包括MQTT双向身份认证、OTA动态密钥和CMAC校验等在内的多种安全机制,保证了信息安全性和物联网设备端从云端服务器下载的加密升级包的完整性,解决了下载过程中升级包被篡改的问题;最后,在写入解密后的升级包到对应固件的过程中,不仅使用了新的固件升级模式以保证传输可靠性及降低信息泄露的风险,而且采用了本地回滚和云端回滚双重保障机制,以免出现若升级包写入失败导致物联网设备无法正常运行的情况。
基于相同的发明构思,本申请实施例还提供一种固件升级装置,如图4所示,所述装置包括:
第一校验模块401,用于基于固件升级任务信息,对需要下发的升级包的合法性及完整性进行校验,所述固件升级任务信息包括携带升级包校验信息的升级包;其中,所述固件升级任务采用如下任一方式创建:基于用户的指令创建固件升级任务;基于从物联网设备接收到的云端回滚请求,创建固件升级任务;
加密模块402,用于若校验通过,则使用第一密钥对需要下发的升级包进行加密后,基于分组加密的消息认证码CMAC算法生成加密后的升级包的第一CMAC,并将所述第一CMAC下发给物联网设备,所述第一CMAC用于验证所述加密的升级包的完整性,再对所述第一密钥进行加密,向物联网设备下发加密后的升级包及加密后的第一密钥。
在一种可能的实施方式中,所述升级包校验信息包括物联网设备ID、固件ID及循环冗余校核CRC 校验码,所述物联网设备ID、固件ID用于校验所述需要下发的升级包的合法性,所述CRC 校验码用于校验所述需要下发的升级包的完整性。
在一种可能的实施方式中,还包括:
第一身份验证模块,用于通过消息队列遥测传输MQTT协议,利用预先获得的CA证书验证物联网设备的CA证书是否合法;
确定物联网设备的CA证书合法后,基于MQTT密钥与物联网设备进行加解密通讯。
基于相同的发明构思,本申请实施例还提供一种固件升级装置,如图5所示,所述装置包括:
第二校验模块501,用于接收云端服务器发送的第一CMAC,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成,并在从云端服务器接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;
解密模块502,用于确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
升级包写入模块503,用于校验解密后的升级包是否具有合法性及完整性,若否则上报云端服务器固件升级失败,若是则在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;或者在确定所述升级包对应功率板时,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件;
回滚模块504,用于若确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚;判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包。
在一种可能的实施方式中,所述解密后的升级包携带升级包校验信息,所述升级包校验信息包括物联网设备ID、固件ID及CRC 校验码;
所述升级包写入模块校验解密后的升级包是否具有合法性及完整性,包括:
基于所述物联网设备ID、固件ID,对解密后的升级包的合法性进行校验;
基于所述CRC 校验码,对解密后的升级包的完整性进行校验。
在一种可能的实施方式中,所述回滚模块判断本地回滚是否成功,包括:
对从本地存储空间中获取到的历史版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述历史版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
在一种可能的实施方式中,所述升级包写入模块将所述升级包写入通信板,再将所述升级包由通信板转发到功率板前,所述升级包写入模块还用于:
通知功率板进入固件升级模式,并计算所述升级包的第一校验和,所述固件升级模式使功率板处于可以进行固件刷写升级的模式;
所述通信板将所述升级包和所述升级包的第一校验和作为升级指令转发到功率板。
在一种可能的实施方式中,所述升级包写入模块将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件,包括:
所述功率板按照预设的下载参数分组下载所述升级包后,基于接收到的各组升级包计算出第二校验和,并判断所述第二校验和与所述第一校验和是否一致;
若是,则将所述升级包写入功率板上对应的固件;
若否,则所述功率板再次按照预设的下载参数分组下载所述升级包,直到所述第二校验和与所述第一校验和一致和/或达到设定的下载次数,且若达到设定的下载次数,所述第二校验和与所述第一校验和仍不一致,确定所述升级包写入失败。
在一种可能的实施方式中,所述升级包写入模块通知功率板进入固件升级模式,包括:
通知功率板进入扩展模式,使功率板能够接收升级指令;
确定功率板进入扩展模式后,通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;
确定功率板进入总线静默模式后,通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能。
在一种可能的实施方式中,还包括:
第二身份验证模块,用于所述通信板与所述功率板互相校验软件版本号是否一致,在校验通过后所述通信板与所述功率板进行通信并通过互相发送心跳报文保持连接。
在一种可能的实施方式中,还包括:
第三身份验证模块,用于通过消息队列遥测传输MQTT协议,利用预先获得的CA证书验证云端服务器的CA证书是否合法;
确定云端服务器的CA证书合法后,基于MQTT密钥与云端服务器进行加解密通讯。
基于相同的发明构思,本申请还提供一种固件升级设备600,如图6所示,包括至少一个处理器602;以及与所述至少一个处理器通信连接的存储器601;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述应用于云端服务器的固件升级方法,或者执行上述应用于物联网设备的固件升级方法。
存储器601用于存储程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器601可以为易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称RAM);也可以为非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solid-state drive,简称SSD);还可以为上述任一种或任多种易失性存储器和非易失性存储器的组合。
处理器602可以是中央处理器(central processing unit,简称CPU),网络处理器(network processor,简称NP)或者CPU和NP的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。
本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述实施例提供的固件升级方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其它可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (7)

1.一种固件升级方法,应用于物联网设备,其特征在于,包括:
通过消息队列遥测传输MQTT协议,利用预先获得的CA证书验证云端服务器的CA证书是否合法,确定云端服务器的CA证书合法后,基于MQTT密钥与云端服务器进行加解密通讯;
接收云端服务器发送的第一CMAC,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成,并在从云端服务器接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;
确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
校验解密后的升级包是否具有合法性及完整性,若否则上报云端服务器固件升级失败,若是则在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;或者在确定所述升级包对应功率板时,通知功率板进入固件升级模式,所述固件升级模式使功率板处于可以进行固件刷写升级的模式,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件;
若确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚;
判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包;
其中,所述通知功率板进入固件升级模式,包括:
通知功率板进入扩展模式,使功率板能够接收升级指令;
确定功率板进入扩展模式后,通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;
确定功率板进入总线静默模式后,通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能。
2.根据权利要求1所述的方法,其特征在于,所述解密后的升级包携带升级包校验信息,所述升级包校验信息包括物联网设备ID、固件ID及CRC 校验码;
所述校验解密后的升级包是否具有合法性及完整性,包括:
基于所述物联网设备ID、固件ID,对解密后的升级包的合法性进行校验;
基于所述CRC 校验码,对解密后的升级包的完整性进行校验。
3.根据权利要求1所述的方法,其特征在于,所述判断本地回滚是否成功,包括:
对从本地存储空间中获取到的历史版本的升级包的合法性及完整性进行校验,若校验不通过,确定本地回滚失败;
若校验通过,将所述历史版本的升级包写入所述升级包对应的固件,并判断所述升级包是否写入成功,若是则本地回滚成功,若否则本地回滚失败。
4.根据权利要求1所述的方法,其特征在于,将所述升级包写入通信板后,再将所述升级包由通信板转发到功率板前,所述方法还包括:
计算所述升级包的第一校验和;
所述将所述升级包由通信板转发到功率板,包括:
由所述通信板将所述升级包和所述升级包的第一校验和作为升级指令转发到功率板。
5.根据权利要求4所述的方法,其特征在于,所述将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件,包括:
所述功率板按照预设的下载参数分组下载所述升级包后,基于接收到的各组升级包计算出第二校验和,并判断所述第二校验和与所述第一校验和是否一致;
若是,则将所述升级包写入功率板上对应的固件;
若否,则所述功率板再次按照预设的下载参数分组下载所述升级包,直到所述第二校验和与所述第一校验和一致和/或达到设定的下载次数,且
若达到设定的下载次数,所述第二校验和与所述第一校验和仍不一致,确定所述升级包写入失败。
6.一种固件升级装置,应用于物联网设备,其特征在于,包括:
云端通讯认证模块,用于通过消息队列遥测传输MQTT协议,利用预先获得的CA证书验证云端服务器的CA证书是否合法,确定云端服务器的CA证书合法后,基于MQTT密钥与云端服务器进行加解密通讯;
第二校验模块,用于接收云端服务器发送的第一CMAC,所述第一CMAC由云端服务器基于CMAC算法和加密的升级包生成,并在从云端服务器接收到加密后的升级包及加密后的第一密钥后,基于所述CMAC算法和接收到的加密的升级包生成第二CMAC,并在判断所述第一CMAC与所述第二CMAC一致时,确认所述加密的升级包具有完整性;
解密模块,用于确认所述加密的升级包具有完整性后,基于空中下载OTA根密钥解密所述加密后的第一密钥,得到所述第一密钥并基于所述第一密钥解密所述升级包;
升级包写入模块,用于校验解密后的升级包是否具有合法性及完整性,若否则上报云端服务器固件升级失败,若是则在确定所述升级包对应通信板时,将所述升级包写入通信板上对应的固件;或者在确定所述升级包对应功率板时,通知功率板进入固件升级模式,所述固件升级模式使功率板处于可以进行固件刷写升级的模式,将所述升级包写入通信板,再将所述升级包由通信板转发到功率板,并将所述升级包写入功率板上对应的固件;其中,所述升级包写入模块通知功率板进入固件升级模式,具体包括:通知功率板进入扩展模式,使功率板能够接收升级指令;确定功率板进入扩展模式后,通知通信板和功率板都进入总线静默模式,所述总线静默模式使通信板和功率板都停止除固件升级之外的报文收发;确定功率板进入总线静默模式后,通知功率板进入文件传输模式,所述文件传输模式使能功率板的文件上传下载功能;
回滚模块,用于若确定所述升级包写入失败,从本地存储空间中获取历史版本的升级包,并将获取到的历史版本的升级包写入所述升级包对应的固件,进行本地回滚;判断本地回滚是否成功,若是则上报云端服务器固件升级失败及本地回滚成功,若否则上报云端服务器固件升级失败并发送云端回滚请求,以请求下载历史版本的升级包。
7.一种固件升级设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5中任一项所述的方法。
CN202311000976.4A 2023-08-09 2023-08-09 一种固件升级方法、装置及设备 Active CN116737207B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311000976.4A CN116737207B (zh) 2023-08-09 2023-08-09 一种固件升级方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311000976.4A CN116737207B (zh) 2023-08-09 2023-08-09 一种固件升级方法、装置及设备

Publications (2)

Publication Number Publication Date
CN116737207A CN116737207A (zh) 2023-09-12
CN116737207B true CN116737207B (zh) 2023-11-17

Family

ID=87906307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311000976.4A Active CN116737207B (zh) 2023-08-09 2023-08-09 一种固件升级方法、装置及设备

Country Status (1)

Country Link
CN (1) CN116737207B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116932012A (zh) * 2023-09-15 2023-10-24 合肥康芯威存储技术有限公司 一种基于数据校验的存储器固件升级方法、装置及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325818A (zh) * 2016-08-26 2017-01-11 珠海格力电器股份有限公司 远程升级固件的方法、装置和系统以及空调
CN109495307A (zh) * 2018-11-27 2019-03-19 北京车和家信息技术有限公司 系统升级方法、ota升级包加密方法、终端设备及车辆
KR20200060863A (ko) * 2018-11-23 2020-06-02 주식회사제이엘텍코퍼레이션 임베디드 시스템의 펌웨어 관리 시스템 및 방법
CN112579130A (zh) * 2020-12-28 2021-03-30 河南城拜检测技术有限公司 一种交互式的iap升级方法
CN113204358A (zh) * 2021-03-25 2021-08-03 联合汽车电子有限公司 软件包刷新服务方法、服务系统及可读存储介质
CN115643564A (zh) * 2022-09-27 2023-01-24 上汽通用五菱汽车股份有限公司 汽车安全的fota升级方法、装置、设备及存储介质
WO2023024895A1 (zh) * 2021-08-26 2023-03-02 长春捷翼汽车零部件有限公司 充电座和充电座升级的方法、装置、设备、存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204750B2 (en) * 2018-03-30 2021-12-21 Intel Corporation Systems, methods and apparatus for distributed software/firmware update and software versioning system for automated vehicles

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325818A (zh) * 2016-08-26 2017-01-11 珠海格力电器股份有限公司 远程升级固件的方法、装置和系统以及空调
KR20200060863A (ko) * 2018-11-23 2020-06-02 주식회사제이엘텍코퍼레이션 임베디드 시스템의 펌웨어 관리 시스템 및 방법
CN109495307A (zh) * 2018-11-27 2019-03-19 北京车和家信息技术有限公司 系统升级方法、ota升级包加密方法、终端设备及车辆
CN112579130A (zh) * 2020-12-28 2021-03-30 河南城拜检测技术有限公司 一种交互式的iap升级方法
CN113204358A (zh) * 2021-03-25 2021-08-03 联合汽车电子有限公司 软件包刷新服务方法、服务系统及可读存储介质
WO2023024895A1 (zh) * 2021-08-26 2023-03-02 长春捷翼汽车零部件有限公司 充电座和充电座升级的方法、装置、设备、存储介质
CN115643564A (zh) * 2022-09-27 2023-01-24 上汽通用五菱汽车股份有限公司 汽车安全的fota升级方法、装置、设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Neighborhood watch: Security and privacy analysis of automatic meter reading systems;Ishtiaq Rouf 等;《Proceedings of the 2012 ACM conference on Computer and communications security》;第462–473页 *
Over-the-air software updates in the internet of things: An overview of key principles;Jan Bauwens 等;《IEEE Communications Magazine》;第58卷(第2期);第35-41页 *
通讯终端安全层中加密算法的硬件实现;雷雪;《中国优秀硕士学位论文全文数据库 信息科技辑(月刊)》(第3期);第I136-939页 *

Also Published As

Publication number Publication date
CN116737207A (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
EP3690643B1 (en) Vehicle-mounted device upgrading method and related device
US10999078B2 (en) Software distribution processing device, software distribution processing method, and vehicle
CN112543927B (zh) 一种设备升级方法及相关设备
KR101838511B1 (ko) 암호화를 적용한 제어기 보안 방법 및 그 장치
US9544300B2 (en) Method and system for providing device-specific operator data for an automation device in an automation installation
CN103201996B (zh) 提供无线机动车访问的方法
KR101831134B1 (ko) 암호화를 적용한 제어기 보안 방법 및 그 장치
CN110708388B (zh) 用于提供安全服务的车身安全锚节点设备、方法以及网络系统
CN116737207B (zh) 一种固件升级方法、装置及设备
EP3893462A1 (en) Message transmission method and apparatus
CN113114699A (zh) 一种车辆终端身份证书申请方法
CN112583594B (zh) 数据处理方法、采集设备和网关、可信平台及存储介质
CN113791872B (zh) 基于云计算的认证方法及系统
KR101780280B1 (ko) 비밀키 교체 방식을 적용한 주행기록 보안 기법 및 및 그 장치
CN111064571B (zh) 一种通信终端、服务器及动态更新预共享密钥的方法
CN112182551A (zh) Plc设备身份认证系统和plc设备身份认证方法
CN110521166B (zh) 用于确保设备属性的至少一个运行值的真实性的方法、装置和计算机存储介质
CN113014592B (zh) 物联网设备自动注册系统和方法
CN113132995B (zh) 一种设备管控方法、装置、存储介质和计算机设备
CN114124578B (zh) 一种通信方法、装置、车辆及存储介质
WO2022241799A1 (zh) 一种密钥生成方法及装置
CN116226889A (zh) 写入安全信息的方法及装置
CN116860295A (zh) 固件升级方法、储能电源、介质、终端设备和储能系统
CN117270903A (zh) 车载应用更新方法、装置、设备以及计算机可读存储介质
CN111226214A (zh) 用于确认密码密钥的系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant