CN111258599A - 固件升级方法、***和计算机可读存储介质 - Google Patents
固件升级方法、***和计算机可读存储介质 Download PDFInfo
- Publication number
- CN111258599A CN111258599A CN201811461954.7A CN201811461954A CN111258599A CN 111258599 A CN111258599 A CN 111258599A CN 201811461954 A CN201811461954 A CN 201811461954A CN 111258599 A CN111258599 A CN 111258599A
- Authority
- CN
- China
- Prior art keywords
- firmware
- node
- verification
- response message
- equipment
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种固件升级方法、***和计算机可读存储介质,涉及计算机技术领域。本公开的方法包括:第一设备节点广播固件升级请求消息;第一设备节点接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,第一设备节点向第一验证节点发送固件下载请求消息;第一设备节点接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件;其中,第一设备节点和第一验证节点为区块链***中的节点。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种固件升级方法、***和计算机可读存储介质。
背景技术
随着互联网技术的发展,终端的功能越来越多。终端中安装的固件需要不断更新,以修补漏洞或实现新的功能等。
固件远程升级技术是指通过网络更新设备中的固件,为设备提供新的功能或者修补设备***或软件存在的漏洞。当设备需要升级固件时,从固件存储中心下载最新固件包进行升级。
发明内容
发明人发现:现有的设备固件远程升级技术,由于采用客户端对服务器的模式,存在着中心服务器被攻击或故障风险,导致设备固件升级失败,固件更新不安全、不及时。
本公开所要解决的一个技术问题是:提高固件升级的安全性和及时性。
根据本公开的一些实施例,提供的一种固件升级方法,包括:第一设备节点广播固件升级请求消息;第一设备节点接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,第一设备节点向第一验证节点发送固件下载请求消息;第一设备节点接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件;其中,第一设备节点和第一验证节点为区块链***中的节点。
在一些实施例中,固件的最新版本信息是第一验证节点查询区块链账本后获取的;或者固件的最新版本的下载地址信息是第一验证节点根据区块链账本记录的交易信息生成的;其中,区块链账本存储于第一验证节点。
在一些实施例中,固件升级响应消息还包括:固件的最新版本的散列值;方法还包括:第一设备节点比对最新版本信息与第一设备节点的版本信息;在一致的情况下,第一设备节点将固件的最新版本的散列值与第一设备节点中固件的散列值进行比对,在一致的情况下,确认固件无需更新。
在一些实施例中,该方法还包括:第一设备节点广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本;或者第一设备节点向第一验证节点返回固件升级成功消息,以便第一验证节点根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
在一些实施例中,该方法还包括:第一设备节点接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的元数据,在第二设备节点的元数据包括:固件在第二设备节点的版本信息和第二验证节点的地址信息;第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息高的情况下,向第二验证节点请求更新固件;其中,第二验证节点为第二设备节点的固件版本的上传节点,第二验证节点与第一验证节点相同或不同。
在一些实施例中,第一设备节点向第二验证节点请求更新固件包括:第一设备节点向第二验证节点发送固件升级请求消息;第一设备节点接收第二验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;第一设备节点向第二验证节点发送固件下载请求消息;第一设备节点接收第二验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件。
在一些实施例中,该方法还包括:第二设备节点在确定第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点的固件的散列值;第二设备节点在接收到预设数量的认证通过响应消息的情况下,向第一设备节点发送固件升级响应消息,固件升级响应消息包括第二设备节点的固件的散列值,以便第一设备节点确定第一设备节点的固件的散列值与第二设备节点的固件的散列值一致;认证通过响应消息是区块链中验证节点比对第二设备节点的固件的散列值与固件的最新版本的散列值一致的情况下生成的。
在一些实施例中,该方法还包括:第一设备节点接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的版本信息;第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息低的情况下,向第二设备节点发送二次响应消息,二次响应消息包括固件在第一设备节点的元数据,在第一设备节点元数据包括:第三验证节点的地址信息,以便第二设备节点向第三验证节点请求更新固件;其中,第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。
在一些实施例中,该方法还包括:第四验证节点接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息;第四验证节点广播固件发布交易信息,以便其他验证节点进行共识认证后根据固件发布交易信息更新区块链账本。
根据本公开的另一些实施例,提供的一种固件升级***,包括:设备节点和验证节点,设备节点包括:第一设备节点,验证节点包括:第一验证节点;第一设备节点用于广播固件升级请求消息,接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息,在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,向第一验证节点发送固件下载请求消息;接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件;第一验证节点用于接收固件升级请求消息,向第一设备节点返回固件升级响应消息,接收第一设备节点发送的固件下载请求消,向第一设备节点返回固件下载响应消息;其中,第一设备节点和第一验证节点为区块链***中的节点。
在一些实施例中,固件的最新版本信息是第一验证节点查询区块链账本后获取的;或者固件的最新版本的下载地址信息是第一验证节点根据区块链账本记录的交易信息生成的;其中,区块链账本存储于验证节点。
在一些实施例中,固件升级响应消息还包括:固件的最新版本的散列值;第一设备节点还用于比对最新版本信息与第一设备节点的版本信息;在一致的情况下,将固件的最新版本的散列值与第一设备节点中固件的散列值进行比对,在一致的情况下,确认固件无需更新。
在一些实施例中,第一设备节点还用于广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本;或者第一设备节点还用于向第一验证节点返回固件升级成功消息;第一验证节点还用于根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
在一些实施例中,设备节点还包括:第二设备节点,验证节点还包括:第二验证节点;第一设备节点还用于接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的元数据,在第二设备节点的元数据包括:固件在第二设备节点的版本信息和第二验证节点的地址信息;在确定第二设备节点的版本信息比第一设备节点的版本信息高的情况下,向第二验证节点请求更新固件;第二设备节点用于向第一设备节点返回固件升级响应消息;第二验证节点用于接收第一设备节点的固件更新请求;其中,第二验证节点为第二设备节点的固件版本的上传节点,第二验证节点与第一验证节点相同或不同。
在一些实施例中,第一设备节点还用于向第二验证节点发送固件升级请求消息;接收第二验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;向第二验证节点发送固件下载请求消息;接收第二验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件;第二验证节点还用于接收第一设备节点发送的固件升级请求消息;向第一设备节点返回固件升级响应消息;接收第一设备节点发送的固件下载请求消息;向第一设备节点返回固件下载响应消息。
在一些实施例中,第二设备节点还用于在确定第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点的固件的散列值;在接收到预设数量的认证通过响应消息的情况下,向第一设备节点发送固件升级响应消息,固件升级响应消息包括第二设备节点的固件的散列值;第一设备节点还用于确定第一设备节点的固件的散列值与第二设备节点的固件的散列值是否一致;认证通过响应消息是区块链中验证节点比对第二设备节点的固件的散列值与固件的最新版本的散列值一致的情况下生成的。
在一些实施例中,设备节点还包括:第二设备节点,验证节点还包括:第三验证节点;第一设备节点还用于接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的版本信息;在确定第二设备节点的版本信息比第一设备节点的版本信息低的情况下,向第二设备节点发送二次响应消息,二次响应消息包括固件在第一设备节点的元数据,在第一设备节点元数据包括:第三验证节点的地址信息;第二设备节点用于向第一设备节点返回升级响应消息,,接收第一设备节点发送的二次响应消息;向第三验证节点请求更新固件;其中,第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。
在一些实施例中,验证节点还包括:第四验证节点;第四验证节点用于接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息;广播固件发布交易信息,以便其他验证节点进行共识认证后根据固件发布交易信息更新区块链账本。
根据本公开的一些实施例,提供的一种固件升级***,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如前述任意实施例的固件升级方法。
根据本公开的一些实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的固件升级方法。
本公开提出一种基于区块链的固件升级方法,针对现有固件升级时存在服务器单点故障风险、固件更新不及时、不安全等问题,提出基于区块链网络构建固件共享网络,设备作为区块链网络节点加入固件共享区块链网络中,设备发送固件升级请求到区块链网络中并接收区块链节点响应确定设备固件是否是最新的,如果不是最新,则通过区块链固件共享网络下载固件完成快速安全更新。利用区块链去中心化、可信、防篡改等特点实现设备固件版本的快速检查,并在需要时安全下载最新的固件,提高固件升级的安全性和及时性。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开的一些实施例的固件升级方法的流程示意图。
图2示出本公开的另一些实施例的固件升级方法的流程示意图。
图3示出本公开的又一些实施例的固件升级方法的流程示意图。
图4示出本公开的一些实施例的固件升级***的结构示意图。
图5示出本公开的另一些实施例的固件升级***的结构示意图。
图6示出本公开的又一些实施例的固件升级***的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
针对现有固件升级时存在服务器单点故障风险、固件更新不及时、不安全等问题,提出本方案。本公开的固件升级***由多个区块链节点组成,例如可以通过BitTorrent实现。本公开中区块链节点是区块链***中的节点。一组区块链节点可以表示为B={b1,b2,...,bn}和bi∈B。区块链节点可以包括:设备节点和验证节点。设备节点例如为终端设备,一组设备节点可以表示为D={d1,d2,...,dn}和di∈D,验证节点可以由Tracker服务器担任,一组验证节点可以表示为V={v1,v2,...,vn},vi∈V和验证节点可以只作为响应节点,响应设备节点固件升级请求,提供固件的升级版本等,后续将进行详细介绍。验证节点的功能也可以集成于设备节点上。
下面通过表1列出本公开中将要用到的缩写的中文含义。
表1
下面结合图1进行描述本公开固件升级方法的一些实施例。
图1为本公开固件升级方法一些实施例的流程图。如图1所示,该实施例的方法包括:步骤S102~S110。固件升级***中的任意设备节点都可以作为第一设备节点执行以下步骤,任意验证节点也可以作为第一验证节点执行以下步骤。
在步骤S102中,第一设备节点广播固件升级请求消息。
第一设备节点可以向固件升级***中的区块链节点广播固件升级请求。每个设备节点di可以具有唯一的设备节点标识IDdi、公私钥对(PUBdi,PRIdi)。第一设备节点di向区块链***广播固件升级请求消息例如包括固件在第一设备节点的版本信息FVdi,第一设备节点的标识,还可以包括:第一设备节点的公钥PUBdi,随机数r,以及固件升级请求消息的签名SIGNdi(REQ)。固件升级请求消息可以表示为[REQ(IDdi,PUBdi,FVdi,r),SIGNdi(REQ)]。对固件升级请求消息进行签名,携带随机数是为了提高节点之间信息交互的安全性,降低消息被篡改的概率。
在步骤S104中,第一设备节点接收第一验证节点返回的固件升级响应消息。
固件升级请求消息在区块链***中广播后,其他设备节点dj或验证节点vi都可以作为响应节点分别响应请求消息。在同时接收到设备节点和验证节点的固件升级响应消息的情况下,第一设备节点优先处理验证节点的响应消息。
第一验证节点vi接收到固件升级请求消息REQ,验证SIGNdi(REQ)验证消息真实性和完整性,执行智能合约。固件的最新版本信息可以存储于区块链账本L中,第一验证节点vi可以查询区块链账本L后获取。第一验证节点vi可以将固件在第一设备节点di的版本信息FVdi与固件的最新版本信息FVnew进行比对,确定第一设备节点di的固件是否为最新版本。
第一验证节点vi返回固件升级响应消息可以包括固件的最新版本信息,还可以包括:固件的文件名、固件的最新版本的散列值、固件片段长度、以及固件的最新版本的上传节点的地址信息Tracker URL等信息;前述这些信息可以统称为固件的元数据MVnew,元数据可以存储于区块链账本L中。每个响应节点vi也具有唯一标识IDvi、公私钥对(PUBvi,PRIvi)。第一验证节点vi生成固件升级消息例如为[E(RES),SIGNvi(E(RES))],E(RES)为使用PUBdi对消息RES(IDvi,PUBvi,MVnew,r+1)加密得到的信息,SIGNvi(E(RES))为对E(RES)的签名结果。
在步骤S106中,在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,第一设备节点向第一验证节点发送固件下载请求消息。
第一设备节点di接收到固件升级响应消息后可以从中提取出固件的最新版本信息FVnew,将最新版本信息FVnew与第一设备节点的版本信息FVdi进行比对,确定是否一致。第一设备节点和第一验证节点都可以比对FVnew和FVdi,以实现双方验证,提高安全性。
具体过程例如为第一设备节点di接收到固件升级响应消息[E(RES),SIGNvi(E(RES))],提取SIGNvi(E(RES))验证真实性和完整性,使用私钥PRIdi解密E(RES)得到RES(IDvi,PUBvi,MVnew,r+1)。从MVnew提取FVnew等信息,确认FVdi≠FVnew,第一设备节点di则生成固件下载请求。
固件下载请求消息例如包括固件的最新版本的散列值。第一设备节点根据最新版本的散列值向第一验证节点请求下载固件的最新版本。第一设备节点di例如生成REQ_DL(IDdi,PUBdi,H(Fnew),r+2),使用PUBvi加密REQ_DL得到E(REQ_DL)并附上签名SIGNdi(E(REQ_DL))得到[E(REQ_DL),SIGNdi(E(REQ_DL))]作为固件下载请求消息发送给第一验证节点vi。
在步骤S108中,第一设备节点接收第一验证节点发送的固件下载响应消息。
第一验证节点vi接收到固件下载请求后,可以查询固件的最新版本的下载地址信息生成固件下载响应消息,固件下载相应消息包括固件的最新版本的下载地址列表。固件的最新版本的下载地址列表可以是根据区块链账本记录的交易信息生成。区块链账本可以存储于验证节点中。验证节点可以根据区块链账本获取元数据文件MVnew和最新版本的下载地址列表LVnew。MVnew可以包含最新版本信息、最新版本文件名、最新版本的文件的散列值、固件的片段长度、Tracker URL等信息。LVnew可以包含固件最新版本的文件的散列值和具有最新版本的区块链节点的IP地址等信息。固件的元数据等固件信息以及设备节点的固件升级信息存储于区块链分布式账本中,可信、防篡改、可溯源,提高了固件升级的安全性。
具体过程例如为第一验证节点vi接收到固件下载请求[E(REQ_DL),SIGNdi(E(REQ_DL))]后,可以提取SIGNdi(E(REQ_DL))验证真实性和完整性,使用私钥PRIvi解密E(REQ_DL),得到REQ_DL(IDdi,PUBdi,H(Fnew),r+2),根据IDdi、H(Fnew)生成固件的最新版本的下载地址列表LVnew。第一验证节点vi生成RES_DL(IDvi,PUBvi,LVnew,r+3),使用PUBdi对消息加密得到E(RES_DL),附上签名SIGNvi(E(RES_DL))得到固件下载响应消息[E(RES_DL),SIGNvi(E(RES_DL))]返回给第一设备节点di。
在步骤S110中,第一设备节点根据最新版本的下载地址信息更新固件。
如果第一验证节点返回的LVnew为空列表,则表示第一设备节点di为第一个进行固件升级的节点。第一设备节点可以根据Traker URL从验证节点中下载,否则根据LVnew提供的路由信息进行固件的最新版本的下载。
例如,第一设备节点di接收到响应消息[E(RES_DL),SIGNvi(E(RES_DL))],提取SIGNvi(E(RES_DL))验证真实性和完整性,使用私钥PRIdi解密E(RES_DL)得到RES_DL(IDvi,PUBvi,LVnew,r+1)。第一设备节点di从LVnew获取固件的最新版本存储的区块链节点的IP地址和端口等信息,可以通过点对点下载固件的最新版本的文件Fnew。第一设备节点di可以从LVnew选取距离最近或者网络状况最好的节点下载固件的最新版本的文件Fnew。
在一些实施例中,本公开的方法还包括:步骤S112,在最新版本信息与第一设备节点的版本信息一致的情况下,第一设备节点将固件的最新版本的散列值与第一设备节点中固件的散列值进行比对,以确定固件是否需要更新。在一致的情况下,确认固件无需更新,在不一致的情况下,第一设备节点可以执行步骤S106~S110。
FVdi=FVnew的情况下,具体过程例如为:第一设备节点di接收到固件升级消息响应消息[E(RES),SIGNvi(E(RES))],提取SIGNvi(E(RES))验证真实性和完整性,使用私钥PRIdi解密E(RES)得到RES(IDvi,PUBvi,MVnew,r+1),从MVnew提取FVnew、H(Fnew),确认FVdi=FVnew后,进而比较H(Fdi)是否等于H(Fnew)。如果H(Fdi)=H(Fnew),则第一设备节点di的版本为最新且固件未被篡改,流程结束。否则执行步骤S106~S110。
在一些实施例中,本公开的方法还包括:步骤S114~S116。
在步骤S114中,第一设备节点向第一验证节点返回固件升级成功消息。
例如,第一设备节点di安装Fnew,设备固件升级完成,生成RES_UD(IDdi,PUBdi,H(Fnew),r+4),附上签名SIGNdi(REQ_UD)得到[REQ_UD,SIGNdi(REQ_UD)]作为固件升级成功消息发送给第一验证节点vi。
在步骤S116中,第一验证节点根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
例如,第一验证节点vi接收到固件升级成功消息EQ_UD,验证SIGNdi(REQ_UD)验证消息真实性和完整性,生成第一设备节点di固件升级交易T,广播T到其他节点,区块链***中的验证节点V验证交易,并一段时间内通过共识机制与其他设备节点的固件升级交易打包生成设备固件升级的区块B,验证节点V更新区块链账本。共识机制例如包括:PBFT(拜占庭容错)等共识机制,不限于所举示例。
固件升级交易的内容如表2所示。固件升级交易的内容包括:固件升级交易的散列值、固件升级时间、设备节点信息、固件升级日志。
表2
固件升级交易的散列值 |
固件升级时间 |
设备节点信息 |
固件升级日志 |
在一些实施例中,可以由第一设备节点广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。固件升级的相关信息可以作为固件升级交易记录在区块链账本中,这样节点可以查询区块链账本获知哪些节点具有固件的最新版本,从而实现上述固件升级的过程。
上述实施例提出一种基于区块链的固件升级方法,针对现有固件升级时存在服务器单点故障风险、固件更新不及时、不安全等问题,提出基于区块链网络构建固件共享网络,设备作为区块链网络节点加入固件共享区块链网络中,设备发送固件升级请求到区块链网络中并接收区块链节点响应确定设备固件是否是最新的,如果不是最新,则通过区块链固件共享网络下载固件完成快速安全更新。利用区块链去中心化、可信、防篡改等特点实现设备固件版本的快速检查,并在需要时安全下载最新的固件,提高固件升级的安全性和及时性。此外,基于区块链***的分布式模型,设备通过点对点网络实现快速固件版本校验和更新,降低节点的消息并发压力和网络压力。区块链节点无需管理大量的密钥,减小安全风险。
第一设备节点广播固件升级请求消息,也会被其他设备节点接收到,第一设备节点可以与其他设备节点进行交互,下面结合图2描述本公开的固件升级方法的另一些实施例。
图2为本公开固件升级方法另一些实施例的流程图。如图2所示,该实施例的方法包括:步骤S202~S218。固件升级***中除第一设备节点以外的任意设备节点都可以作为第二设备节点执行以下步骤。
在步骤S202中,第一设备节点广播固件升级请求消息。
第一设备节点可能与验证节点没有直接通信连接,这种情况下固件升级请求会广播至与其通信连接的其他设备节点。固件升级请求消息的内容可以参考前述实施例,第一设备节点di广播的固件升级请求消息例如为[REQ(IDdi,PUBdi,FVdi,r),SIGNdi(REQ)]。
第二设备节点接收到固件升级请求消息可以获取固件在第一设备节点的版本信息,可以将第一设备节点的版本信息与第二设备节点的版本信息进行比对,确定是否一致。例如,第二设备节点dj作为响应节点接收到第一设备节点di的固件升级请求消息REQ,验证SIGNdi(REQ)验证消息真实性和完整性,比较第一设备节点di的版本信息FVdi和第二设备节点dj的版本信息FVdj。在FVdi<FVdj,即第二设备节点的版本信息比第一设备节点的版本信息高的情况下,执行步骤S204~S206。在FVdi>FVdj,即第二设备节点的版本信息比第一设备节点的版本信息低的情况下,执行步骤S208~S212。在FVdi=FVdj,即第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,执行步骤S214~S218。
以下步骤S204~S206为FVdi<FVdj的情况下执行的步骤。
在步骤S204中,第一设备节点接收第二设备节点返回的固件升级响应消息。固件升级响应消息包括固件在第二设备节点的元数据,在第二设备节点的元数据包括:固件在第二设备节点的版本信息和第二验证节点的地址信息。
例如,第二设备节点dj生成RES(IDdj,PUBdj,MVdj,r+1),使用PUBdi对消息加密得到E(RES),附上签名SIGNdj(E(RES))得到消息[E(RES),SIGNdj(E(RES))]作为固件升级响应消息返回给第一设备节点di。MVdj为固件在第二设备节点的元数据,包括:固件在第二设备节点的版本信息FVdj和第二验证节点vj的地址信息,第二验证节点vj为第二设备节点的固件版本的上传节点,即Tracker URL,MVdj还可以包括:第二设备节点的固件版本的文件名、文件的散列值、固件的片段长度等信息,与MVnew类似。第二验证节点可能与第一验证节点相同或不同。
在步骤S206中,第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息高的情况下,向第二验证节点请求更新固件。
第一设备节点从固件升级响应消息中提取第二设备节点的版本信息,并与自身的版本信息进行比对,双向验证第二设备节点的版本信息比第一设备节点的版本信息高。例如,第一设备节点di提取SIGNdj(E(RES))验证真实性和完整性,使用私钥PRIdi解密E(RES)得到RES(IDdj,PUBdj,MVdj,r+1),第一设备节点di从MVdj提取FVdj等数据,比较FVdi和FVdj。
进一步,步骤S206具体可以包括以下子步骤。
(1)第一设备节点向第二验证节点发送固件升级请求消息。
如果第一设备节点无法直接向第二验证节点发送消息,可以通过第二设备节点或其他节点转发固件升级请求消息。例如,第一设备节点di生成REQ(IDdj,PUBdj,FVdj,r+3),附上签名SIGNdj(REQ)得到[REQ,SIGNdj(REQ)]作为固件升级请求消息发送至第二验证节点vj。以下步骤(2)-(5)与前述实施例中步骤S104~S110类似,具体细节可以参考步骤S104~S110。
(2)第一设备节点接收第二验证节点返回的固件升级响应消息。
固件升级响应消息例如包括固件的最新版本的元数据。例如,第二验证节点vj接收到固件升级请求消息,验证SIGNdj(REQ)验证消息真实性和完整性,执行智能合约。第二验证节点vj从区块链账本L中查询最新版本的固件发布交易区块并获取对应的MVnew。第二验证节点vj生成RES(IDvi,PUBvi,MVnew,r+4),使用PUBdj对消息加密得到E(RES),附上签名SIGNvi(E(RES))得到固件升级响应消息[E(RES),SIGNvi(E(RES))]返回给第一设备节点di。
(3)第一设备节点向第二验证节点发送固件下载请求消息。
例如,第一设备节点di接收到固件升级响应消息[E(RES),SIGNvi(E(RES))],提取SIGNvi(E(RES))验证真实性和完整性,使用私钥PRIdj解密E(RES)得到RES(IDvi,PUBvi,MVnew,r+4),从MVnew提取H(Fnew)等信息,第一设备节点di生成REQ_DL(IDdj,PUBdj,H(Fnew),r+5),使用PUBvi加密REQ_DL得到E(REQ_DL)并附上签名SIGNdj(E(REQ_DL))得到[E(REQ_DL),SIGNdj(E(REQ_DL))]作为固件下载请求消息发送给第二验证节点vj。
(4)第一设备节点接收第二验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息。
例如,第二验证节点vj接收固件下载请求消息[E(REQ_DL),SIGNdj(E(REQ_DL))],提取SIGNdj(E(REQ_DL))验证真实性和完整性,使用私钥PRIvi解密E(REQ_DL),得到REQ_DL(IDdj,PUBdj,H(Fnew),r+5),根据IDdj、H(Fnew)生成固件的最新版本的下载地址列表LVnew。进一步第二验证节点vj生成RES_DL(IDvi,PUBvi,LVnew,r+6),使用PUBdj对消息加密得到E(RES_DL),附上签名SIGNvi(E(RES_DL))得到固件下载相应消息[E(RES_DL),SIGNvi(E(RES_DL))]返回给第一设备节点di。
(5)第一设备节点根据最新版本的下载地址信息更新固件。
例如,第一设备节点di接收到固件下载响应消息[E(RES_DL),SIGNvi(E(RES_DL))],提取SIGNvi(E(RES_DL))验证真实性和完整性,使用私钥PRIdj解密E(RES_DL)得到RES_DL(IDvi,PUBvi,LVnew,r+6)。第一设备节点di从LVnew获取最新版本的区块链节点的IP地址和端口等信息,通过区块链***点对点下载最新固件文件Fnew。
(6)第一设备节点向第二验证节点返回固件升级成功消息。
例如,第一设备节点di安装Fnew,设备固件升级完成,生成RES_UD(IDdj,PUBdj,H(Fnew),r+7),附上签名SIGNdj(REQ_UD)得到[REQ_UD,SIGNdi(REQ_UD)]作为发送固件升级成功消息给第二验证节点vj。
(7)第二验证节点根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
例如,第二验证节点vj接收到固件升级成功消息,验证SIGNdj(REQ_UD)验证消息真实性和完整性,生成第一设备节点di的固件升级交易T,广播T到其他验证节点,区块链***中的验证节点V验证交易,并一段时间内通过共识机制与其他设备节点的固件升级交易打包生成设备固件升级交易的区块B,验证节点V更新区块链公共账本。
步骤(6)~(7)与前述实施例中步骤S114~S116类似,具体细节可以参考步骤S114~S116。
以下步骤S208~S212为FVdi>FVdj的情况下执行的步骤。
在步骤S208中,第一设备节点接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的版本信息。
例如,第二设备节点dj生成RES(IDdj,PUBdj,FVdj,r+1),使用PUBdi对消息加密得到E(RES),附上签名SIGNdj(E(RES))得到消息[E(RES),SIGNdj(E(RES))]作为固件升级响应消息返回给第一设备节点di。
在步骤S210中,第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息低的情况下,向第二设备节点发送二次响应消息,二次响应消息包括固件在第一设备节点的元数据,在第一设备节点元数据包括:第三验证节点的地址信息。第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。
例如,第一设备节点di提取SIGNdj(E(RES))验证真实性和完整性,使用私钥PRIdi解密E(RES)得到RES(IDdj,PUBdj,FVdj,r+1)。第一设备节点di比较FVdi和FVdj,确认FVdi>FVdj,第一设备节点di生成RES(IDdi,PUBdi,MVdi,r+2),附上签名SIGNdi(RES)得到消息[RES,SIGNdi(RES)]作为二次响应消息返回给第二设备节点dj。MVdi包括固件在第一设备节点的版本信息FVdi和第三验证节点vk的地址信息,第三验证节点vk为第一设备节点的固件版本的上传节点,即Tracker URL,MVdi还可以包括:第一设备节点的固件版本的文件名、文件的散列值、固件的片段长度等信息,与MVnew类似。
在步骤S212中,第二设备节点向第三验证节点请求更新固件。
进一步,步骤S212具体可以包括以下子步骤。
(1)第二设备节点向第三验证节点发送固件升级请求消息。
固件升级请求消息包括:第一设备节点的版本信息。
(2)第二设备节点接收第三验证节点返回的固件升级响应消息。
固件升级响应消息例如包括固件的最新版本的元数据。
(3)第二设备节点向第三验证节点发送固件下载请求消息。
固件下载请求消息包括:固件的最新版本的散列值。
(4)第二设备节点接收第三验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息。
(5)第二设备节点根据最新版本的下载地址信息更新固件。
(6)第二设备节点向第三验证节点返回固件升级成功消息。
(7)第三验证节点根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
步骤S212的子步骤与步骤S206的子步骤类似,可以参考步骤S206的实现细节。
以下步骤S214~S218为FVdi=FVdj的情况下执行的步骤。
在步骤S214中,第二设备节点在确定第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点的固件的散列值。
例如,第二设备节点dj生成REQ(IDdj,PUBdj,H(FVdj),r),附上签名SIGNdj(RES)得到固件认证消息[E(RES),SIGNdj(RES)]广播到区块链***中请求其他区块链节点验证。节点确认H(Fdj)=H(Fnew),则向第二设备节点dj返回认证通过响应消息,否则返回认证失败响应消息。
在步骤S216中,第二设备节点在接收到预设数量的认证通过响应消息的情况下,向第一设备节点发送固件升级响应消息,固件升级响应消息包括第二设备节点的固件的散列值。
例如,第二设备节点dj若得到超过预设数量(例如6个)其他区块链节点确认H(Fdj)=H(Fnew),则第二设备节点dj生成RES(IDdj,PUBdj,H(Fdj),r+1),使用PUBdi对消息加密得到E(RES),附上签名SIGNdj(E(RES))得到固件升级消息[E(RES),SIGNdj(E(RES))]返回给第一设备节点di。
在步骤S218中,第一设备节点根据固件升级响应消息确认固件是否需要更新。
第一设备节点确定第一设备节点的固件的散列值与第二设备节点的固件的散列值一致,则固件不需要更新,否则,执行步骤S204~S206。
例如,第一设备节点di提取SIGNdj(E(RES))验证真实性和完整性,使用私钥PRIdi解密E(RES)得到RES(IDdj,PUBdj,H(FVdj),r+1),第一设备节点di比较H(Fdi)和H(Fdj),确认是否一致,如果是则流程结束。
上述实施例的方法,固件版本等固件信息以及设备固件升级信息存储于区块链分布式账本中,可信、防篡改、可溯源且无单点故障风险。基于区块链网络的分布式模型,设备通过点对点网络实现快速固件版本校验和更新,降低节点的并发压力和网络压力。设备节点间实现相互固件版本校验,具有一定的自治性,能够及时实现固件版本的更新。此外,相对于现有的固件升级方法,区块链节点无需管理大量的密钥,减小安全风险。
下面结合图3描述固件文件的上传过程的一些实施例。
图3为本公开固件升级方法又一些实施例的流程图。如图3所示,该实施例的方法包括:步骤S302~S306。固件升级***任意验证节点都可以作为第四验证节点执行以下步骤。
在步骤S302中,第四验证节点接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息。
第四验证节点可以与前述的第一、第二、第三验证节点相同或不同。固件供应商节点:通过安全通道接入区块链并向验证节点提供最新版本固件文件,固件供应商节点不在区块链***中。固件供应商节点可以通过例如SSL/TLS(Secure Sockets Layer/TransportLayer Security,安全套接层/传输层安全),VPN(Virtual Private Network,虚拟专用网络)等与区块链***中的验证节点连接,并向第四验证节点发送固件上传请求消息,包括:最新版本固件文件Fnew、版本信息FVnew、SIGN(Fnew)固件签名等发布到第四验证节点。
在步骤S304中,第四验证节点广播固件发布交易信息。
例如,第四vl验证SIGN(Fnew),将Fnew、FVnew存储于vl数据库;生成固件元数据MVnew,并生成固件发布交易T。
固件发布交易T的内容如表3所示。
表3
固件发布交易的散列值 |
固件发布时间 |
固件提供方信息 |
固件版本信息 |
固件元数据 |
在步骤S306中,区块链***中验证节点进行共识认证后根据固件发布交易信息更新区块链账本。
固件发布交易T广播到其他验证节点,经过验证节点V共识认证,生成固件发布交易的区块B,验证节点V更新区块链公共账本L。本公开中设备节点根据其设备性能可选择保持或不保持L。
区块的内容如表4所示。
表4
区块大小 |
区块版本号 |
上一区块头的散列值 |
Merkle根 |
时间戳 |
Nonce |
交易类型 |
交易个数 |
区块体 |
需要说明的是,本公开中“第一”、“第二”、“第三”、“第四”的表述仅用于说明节点具备的不同功能,并不起到其他限制作用。固件升级***中的设备节点都可以作为第一设备节点或第二设备节点执行上述实施例的步骤,验证节点都可以作为第一验证节点、第二验证节点、第三验证节点或第四验证节点执行上述实施例的步骤。
本公开还提供一种固件升级***,下面结合图4进行描述。
图4为本公开固件升级***的一些实施例的结构图。如图4所示,该实施例的装置40包括:设备节点410和验证节点420;设备节点410包括:第一设备节点412,验证节点420包括:第一验证节点422。第一设备节点412和第一验证节点422为区块链***中的区块链节点。
第一设备节点412用于广播固件升级请求消息,接收第一验证节点422返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息,在最新版本信息与固件在第一设备节点412的版本信息不一致的情况下,向第一验证节点422发送固件下载请求消息;接收第一验证节点422发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件。
在一些实施例中,固件升级响应消息还包括:固件的最新版本的散列值。第一设备节点412还用于比对最新版本信息与第一设备节点的版本信息;在一致的情况下,将固件的最新版本的散列值与第一设备节点412中固件的散列值进行比对,在一致的情况下,确认固件无需更新。
第一验证节点422用于接收固件升级请求消息,向第一设备节点412返回固件升级响应消息,接收第一设备节点412发送的固件下载请求消,向第一设备节点412返回固件下载响应消息。
在一些实施例中,固件的最新版本信息是第一验证节点422查询区块链账本后获取的;或者固件的最新版本的下载地址信息是第一验证节点422根据区块链账本记录的交易信息生成的;区块链账本存储于验证节点420。
在一些实施例中,第一设备节点412还用于广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本;或者第一设备节点412还用于向第一验证节点422返回固件升级成功消息;第一验证节点422还用于根据固件升级成功消息广播固件升级交易,以便区块链***中的节点根据固件升级交易更新区块链账本。
在一些实施例中,设备节点410还包括:第二设备节点414,验证节点420还包括:第二验证节点424。
第一设备节点412还用于接收第二设备节点414返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点414的元数据,在第二设备节点414的元数据包括:固件在第二设备节点414的版本信息和第二验证节点424的地址信息;在确定第二设备节点414的版本信息比第一设备节点412的版本信息高的情况下,向第二验证节点424请求更新固件;
第二设备节点414用于向第一设备节点412返回固件升级响应消息。第二验证节点424用于接收第一设备节点412的固件更新请求;第二验证节点424为第二设备节点414的固件版本的上传节点,第二验证节点424与第一验证节点422相同或不同。
在一些实施例中,第一设备节点412还用于向第二验证节点424发送固件升级请求消息;接收第二验证节点424返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;向第二验证节点424发送固件下载请求消息;接收第二验证节点424发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件。
第二验证节点424还用于接收第一设备节点412发送的固件升级请求消息;向第一设备节点412返回固件升级响应消息;接收第一设备节点412发送的固件下载请求消息;向第一设备节点412返回固件下载响应消息。
在一些实施例中,第二设备节点414还用于在确定第二设备节点414的版本信息与第一设备节点412的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点414的固件的散列值;在接收到预设数量的认证通过响应消息的情况下,向第一设备节点412发送固件升级响应消息,固件升级响应消息包括第二设备节点414的固件的散列值。
第一设备节点412还用于确定第一设备节点412的固件的散列值与第二设备节点414的固件的散列值是否一致。认证通过响应消息是区块链中验证节点比对第二设备节点的固件的散列值与固件的最新版本的散列值一致的情况下生成的。
在一些实施例中,验证节点还包括:第三验证节点426。第一设备节点412还用于接收第二设备节点414返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点414的版本信息;在确定第二设备节点414的版本信息比第一设备节点412的版本信息低的情况下,向第二设备节点414发送二次响应消息,二次响应消息包括固件在第一设备节点412的元数据,在第一设备节点412元数据包括:第三验证节点426的地址信息。
第二设备节点414用于向第一设备节点412返回升级响应消息,接收第一设备节点412发送的二次响应消息;向第三验证节点426请求更新固件;第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。
在一些实施例中,验证节点还包括:第三验证节点428。第四验证节点428用于接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息;广播固件发布交易信息,以便其他验证节点进行共识认证后根据固件发布交易信息更新区块链账本。
本公开的实施例中的固件升级***可各由各种计算设备或计算机***来实现,固件升级***中的设备节点或验证节点均可各由各种计算设备或计算机***来实现,下面结合图5以及图6进行描述。
图5为本公开固件升级***的一些实施例的结构图。如图5所示,该实施例的固件升级***50包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行本公开中任意一些实施例中的固件升级方法。
其中,存储器510例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)、数据库以及其他程序等。
图6为本公开固件升级***的另一些实施例的结构图。如图6所示,该实施例的固件升级***60包括:存储器610以及处理器620,分别与存储器510以及处理器520类似。还可以包括输入输出接口630、网络接口640、存储接口650等。这些接口630,640,650以及存储器610和处理器620之间例如可以通过总线660连接。其中,输入输出接口630为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口650为SD卡、U盘等外置存储设备提供连接接口。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、***、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (20)
1.一种固件升级方法,包括:
第一设备节点广播固件升级请求消息;
所述第一设备节点接收第一验证节点返回的固件升级响应消息,所述固件升级响应消息包括固件的最新版本信息;
在所述最新版本信息与所述固件在所述第一设备节点的版本信息不一致的情况下,所述第一设备节点向所述第一验证节点发送固件下载请求消息;
所述第一设备节点接收所述第一验证节点发送的固件下载响应消息,所述固件下载响应消息包括:所述固件的最新版本的下载地址信息;
所述第一设备节点根据所述最新版本的下载地址信息更新所述固件;
其中,所述第一设备节点和所述第一验证节点为区块链***中的节点。
2.根据权利要求1所述的固件升级方法,其中,
所述固件的最新版本信息是所述第一验证节点查询区块链账本后获取的;或者
所述固件的最新版本的下载地址信息是所述第一验证节点根据区块链账本记录的交易信息生成的;
其中,所述区块链账本存储于所述第一验证节点。
3.根据权利要求1所述的固件升级方法,其中,
所述固件升级响应消息还包括:所述固件的最新版本的散列值;
所述方法还包括:
所述第一设备节点比对所述最新版本信息与所述第一设备节点的版本信息;
在一致的情况下,所述第一设备节点将所述固件的最新版本的散列值与所述第一设备节点中固件的散列值进行比对,在一致的情况下,确认所述固件无需更新。
4.根据权利要求1所述的固件升级方法,还包括:
所述第一设备节点广播固件升级交易,以便区块链***中的节点根据所述固件升级交易更新区块链账本;或者
所述第一设备节点向所述第一验证节点返回固件升级成功消息,以便所述第一验证节点根据所述固件升级成功消息广播固件升级交易,以便区块链***中的节点根据所述固件升级交易更新区块链账本。
5.根据权利要求1所述的固件升级方法,还包括:
所述第一设备节点接收第二设备节点返回的固件升级响应消息,所述固件升级响应消息包括所述固件在所述第二设备节点的元数据,在所述第二设备节点的元数据包括:所述固件在所述第二设备节点的版本信息和第二验证节点的地址信息;
所述第一设备节点在确定所述第二设备节点的版本信息比所述第一设备节点的版本信息高的情况下,向所述第二验证节点请求更新所述固件;
其中,所述第二验证节点为第二设备节点的固件版本的上传节点,所述第二验证节点与所述第一验证节点相同或不同。
6.根据权利要求5所述的固件升级方法,其中,
所述第一设备节点向所述第二验证节点请求更新所述固件包括:
所述第一设备节点向所述第二验证节点发送固件升级请求消息;
所述第一设备节点接收所述第二验证节点返回的固件升级响应消息,所述固件升级响应消息包括固件的最新版本信息;
所述第一设备节点向所述第二验证节点发送固件下载请求消息;
所述第一设备节点接收所述第二验证节点发送的固件下载响应消息,所述固件下载响应消息包括:所述固件的最新版本的下载地址信息;
所述第一设备节点根据所述最新版本的下载地址信息更新所述固件。
7.根据权利要求5所述的固件升级方法,还包括:
所述第二设备节点在确定所述第二设备节点的版本信息与所述第一设备节点的版本信息一致的情况下,广播固件认证消息,所述固件认证消息包括:所述第二设备节点的所述固件的散列值;
所述第二设备节点在接收到预设数量的认证通过响应消息的情况下,向所述第一设备节点发送固件升级响应消息,所述固件升级响应消息包括所述第二设备节点的所述固件的散列值,以便所述第一设备节点确定所述第一设备节点的所述固件的散列值与所述第二设备节点的所述固件的散列值一致;
所述认证通过响应消息是区块链中验证节点比对所述第二设备节点的所述固件的散列值与所述固件的最新版本的散列值一致的情况下生成的。
8.根据权利要求1所述的固件升级方法,还包括:
所述第一设备节点接收第二设备节点返回的固件升级响应消息,所述固件升级响应消息包括所述固件在所述第二设备节点的版本信息;
所述第一设备节点在确定所述第二设备节点的版本信息比所述第一设备节点的版本信息低的情况下,向所述第二设备节点发送二次响应消息,所述二次响应消息包括所述固件在所述第一设备节点的元数据,所述在所述第一设备节点元数据包括:第三验证节点的地址信息,以便所述第二设备节点向所述第三验证节点请求更新所述固件;
其中,所述第三验证节点为第一设备节点的固件版本的上传节点,所述第三验证节点与所述第一验证节点相同或不同。
9.根据权利要求1-8任一项所述的固件升级方法,还包括:
第四验证节点接收固件提供方发送的固件上传请求消息,所述固件上传请求消息包括:最新版本的固件文件和版本信息;
所述第四验证节点广播固件发布交易信息,以便其他验证节点进行共识认证后根据所述固件发布交易信息更新所述区块链账本。
10.一种固件升级***,包括:设备节点和验证节点,所述设备节点包括:第一设备节点,所述验证节点包括:第一验证节点;
所述第一设备节点用于广播固件升级请求消息,接收第一验证节点返回的固件升级响应消息,所述固件升级响应消息包括固件的最新版本信息,在所述最新版本信息与所述固件在所述第一设备节点的版本信息不一致的情况下,向所述第一验证节点发送固件下载请求消息;接收所述第一验证节点发送的固件下载响应消息,所述固件下载响应消息包括:所述固件的最新版本的下载地址信息;根据所述最新版本的下载地址信息更新所述固件;
所述第一验证节点用于接收所述固件升级请求消息,向所述第一设备节点返回固件升级响应消息,接收所述第一设备节点发送的固件下载请求消,向所述第一设备节点返回固件下载响应消息;
其中,所述第一设备节点和所述第一验证节点为区块链***中的节点。
11.根据权利要求10所述的固件升级***,其中,
所述固件的最新版本信息是所述第一验证节点查询区块链账本后获取的;或者
所述固件的最新版本的下载地址信息是所述第一验证节点根据区块链账本记录的交易信息生成的;
其中,所述区块链账本存储于所述验证节点。
12.根据权利要求10所述的固件升级***,其中,
所述固件升级响应消息还包括:所述固件的最新版本的散列值;
所述第一设备节点还用于比对所述最新版本信息与所述第一设备节点的版本信息;在一致的情况下,将所述固件的最新版本的散列值与所述第一设备节点中固件的散列值进行比对,在一致的情况下,确认所述固件无需更新。
13.根据权利要求10所述的固件升级***,其中,
所述第一设备节点还用于广播固件升级交易,以便区块链***中的节点根据所述固件升级交易更新区块链账本;或者
所述第一设备节点还用于向所述第一验证节点返回固件升级成功消息;所述第一验证节点还用于根据所述固件升级成功消息广播固件升级交易,以便区块链***中的节点根据所述固件升级交易更新区块链账本。
14.根据权利要求10所述的固件升级***,其中,所述设备节点还包括:第二设备节点,所述验证节点还包括:第二验证节点;
所述第一设备节点还用于接收第二设备节点返回的固件升级响应消息,所述固件升级响应消息包括所述固件在所述第二设备节点的元数据,在所述第二设备节点的元数据包括:所述固件在所述第二设备节点的版本信息和第二验证节点的地址信息;在确定所述第二设备节点的版本信息比所述第一设备节点的版本信息高的情况下,向所述第二验证节点请求更新所述固件;
所述第二设备节点用于向所述第一设备节点返回固件升级响应消息;
所述第二验证节点用于接收所述第一设备节点的固件更新请求;
其中,所述第二验证节点为第二设备节点的固件版本的上传节点,所述第二验证节点与所述第一验证节点相同或不同。
15.根据权利要求14所述的固件升级***,其中,
所述第一设备节点还用于向所述第二验证节点发送固件升级请求消息;接收所述第二验证节点返回的固件升级响应消息,所述固件升级响应消息包括固件的最新版本信息;向所述第二验证节点发送固件下载请求消息;接收所述第二验证节点发送的固件下载响应消息,所述固件下载响应消息包括:所述固件的最新版本的下载地址信息;根据所述最新版本的下载地址信息更新所述固件;
所述第二验证节点还用于接收所述第一设备节点发送的固件升级请求消息;向所述第一设备节点返回固件升级响应消息;接收所述第一设备节点发送的固件下载请求消息;向所述第一设备节点返回固件下载响应消息。
16.根据权利要求14所述的固件升级***,其中,
所述第二设备节点还用于在确定所述第二设备节点的版本信息与所述第一设备节点的版本信息一致的情况下,广播固件认证消息,所述固件认证消息包括:所述第二设备节点的所述固件的散列值;在接收到预设数量的认证通过响应消息的情况下,向所述第一设备节点发送固件升级响应消息,所述固件升级响应消息包括所述第二设备节点的所述固件的散列值;
所述第一设备节点还用于确定所述第一设备节点的所述固件的散列值与所述第二设备节点的所述固件的散列值是否一致;
所述认证通过响应消息是区块链中验证节点比对所述第二设备节点的所述固件的散列值与所述固件的最新版本的散列值一致的情况下生成的。
17.根据权利要求10所述的固件升级***,其中,所述设备节点还包括:第二设备节点,所述验证节点还包括:第三验证节点;
所述第一设备节点还用于接收第二设备节点返回的固件升级响应消息,所述固件升级响应消息包括所述固件在所述第二设备节点的版本信息;在确定所述第二设备节点的版本信息比所述第一设备节点的版本信息低的情况下,向所述第二设备节点发送二次响应消息,所述二次响应消息包括所述固件在所述第一设备节点的元数据,所述在所述第一设备节点元数据包括:第三验证节点的地址信息;
所述第二设备节点用于向所述第一设备节点返回升级响应消息,接收所述第一设备节点发送的二次响应消息;向所述第三验证节点请求更新所述固件;
其中,所述第三验证节点为第一设备节点的固件版本的上传节点,所述第三验证节点与所述第一验证节点相同或不同。
18.根据权利要求10-17任一项所述的固件升级***,其中,所述验证节点还包括:第四验证节点;
第四验证节点用于接收固件提供方发送的固件上传请求消息,所述固件上传请求消息包括:最新版本的固件文件和版本信息;广播固件发布交易信息,以便其他验证节点进行共识认证后根据所述固件发布交易信息更新所述区块链账本。
19.一种固件升级***,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-9任一项所述的固件升级方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现权利要求1-9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811461954.7A CN111258599B (zh) | 2018-12-03 | 2018-12-03 | 固件升级方法、***和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811461954.7A CN111258599B (zh) | 2018-12-03 | 2018-12-03 | 固件升级方法、***和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111258599A true CN111258599A (zh) | 2020-06-09 |
CN111258599B CN111258599B (zh) | 2023-06-20 |
Family
ID=70946580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811461954.7A Active CN111258599B (zh) | 2018-12-03 | 2018-12-03 | 固件升级方法、***和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111258599B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052021A (zh) * | 2020-08-12 | 2020-12-08 | 中钞***产业发展有限公司杭州区块链技术研究院 | 联盟区块链升级的方法、装置、设备及存储介质 |
CN112162768A (zh) * | 2020-10-14 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链升级方法和*** |
CN112464190A (zh) * | 2020-12-17 | 2021-03-09 | 深圳市飞思捷跃科技有限公司 | 一种基于区块链的物联网平台高可用高安全方法 |
CN112559005A (zh) * | 2020-11-27 | 2021-03-26 | 南京南瑞信息通信科技有限公司 | 基于区块链与分布式存储的物联网设备固件更新方法及*** |
CN114268614A (zh) * | 2020-09-15 | 2022-04-01 | 松下家电(中国)有限公司 | 一种设备固件升级方法、装置及*** |
WO2022111214A1 (zh) * | 2020-11-30 | 2022-06-02 | 青岛海尔电冰箱有限公司 | 基于区块链的冰箱程序的升级方法及冰箱 |
CN114765620A (zh) * | 2020-12-30 | 2022-07-19 | 深圳市雷鸟网络传媒有限公司 | 固件发布方法、装置、终端设备及计算机可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576828A (zh) * | 2009-06-01 | 2009-11-11 | 中兴通讯股份有限公司 | 软件版本升级方法及装置、服务器 |
CN106325929A (zh) * | 2016-08-22 | 2017-01-11 | 合肥华凌股份有限公司 | 一种固件升级方法、固件升级装置、冰箱和服务端 |
CN106557339A (zh) * | 2015-09-28 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 设备固件的升级方法和装置 |
CN106980511A (zh) * | 2017-05-09 | 2017-07-25 | 深圳市乐得瑞科技有限公司 | 固件升级方法、装置及*** |
CN107423100A (zh) * | 2017-07-31 | 2017-12-01 | 上海爱优威软件开发有限公司 | 一种终端ota升级固件的方法、装置和*** |
TWI614713B (zh) * | 2017-01-23 | 2018-02-11 | 現代財富控股有限公司 | 基於區塊鏈的智能合約版本控管系統及其方法 |
CN108270874A (zh) * | 2018-02-05 | 2018-07-10 | 武汉斗鱼网络科技有限公司 | 应用程序的更新方法及装置 |
CN108738017A (zh) * | 2017-04-21 | 2018-11-02 | 网件公司 | 网络接入点中的安全通信 |
CN108881312A (zh) * | 2018-08-24 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 智能合约升级方法、***和相关设备以及存储介质 |
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
-
2018
- 2018-12-03 CN CN201811461954.7A patent/CN111258599B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576828A (zh) * | 2009-06-01 | 2009-11-11 | 中兴通讯股份有限公司 | 软件版本升级方法及装置、服务器 |
CN106557339A (zh) * | 2015-09-28 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 设备固件的升级方法和装置 |
CN106325929A (zh) * | 2016-08-22 | 2017-01-11 | 合肥华凌股份有限公司 | 一种固件升级方法、固件升级装置、冰箱和服务端 |
TWI614713B (zh) * | 2017-01-23 | 2018-02-11 | 現代財富控股有限公司 | 基於區塊鏈的智能合約版本控管系統及其方法 |
CN108738017A (zh) * | 2017-04-21 | 2018-11-02 | 网件公司 | 网络接入点中的安全通信 |
CN106980511A (zh) * | 2017-05-09 | 2017-07-25 | 深圳市乐得瑞科技有限公司 | 固件升级方法、装置及*** |
CN107423100A (zh) * | 2017-07-31 | 2017-12-01 | 上海爱优威软件开发有限公司 | 一种终端ota升级固件的方法、装置和*** |
CN108270874A (zh) * | 2018-02-05 | 2018-07-10 | 武汉斗鱼网络科技有限公司 | 应用程序的更新方法及装置 |
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN108881312A (zh) * | 2018-08-24 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 智能合约升级方法、***和相关设备以及存储介质 |
Non-Patent Citations (2)
Title |
---|
张偲: "区块链技术原理、应用及建议", 《软件》 * |
张偲: "区块链技术原理、应用及建议", 《软件》, vol. 37, no. 11, 15 November 2016 (2016-11-15), pages 51 - 54 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052021A (zh) * | 2020-08-12 | 2020-12-08 | 中钞***产业发展有限公司杭州区块链技术研究院 | 联盟区块链升级的方法、装置、设备及存储介质 |
CN114268614A (zh) * | 2020-09-15 | 2022-04-01 | 松下家电(中国)有限公司 | 一种设备固件升级方法、装置及*** |
CN112162768A (zh) * | 2020-10-14 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链升级方法和*** |
CN112559005A (zh) * | 2020-11-27 | 2021-03-26 | 南京南瑞信息通信科技有限公司 | 基于区块链与分布式存储的物联网设备固件更新方法及*** |
WO2022111214A1 (zh) * | 2020-11-30 | 2022-06-02 | 青岛海尔电冰箱有限公司 | 基于区块链的冰箱程序的升级方法及冰箱 |
CN112464190A (zh) * | 2020-12-17 | 2021-03-09 | 深圳市飞思捷跃科技有限公司 | 一种基于区块链的物联网平台高可用高安全方法 |
CN114765620A (zh) * | 2020-12-30 | 2022-07-19 | 深圳市雷鸟网络传媒有限公司 | 固件发布方法、装置、终端设备及计算机可读存储介质 |
CN114765620B (zh) * | 2020-12-30 | 2024-04-02 | 深圳市雷鸟网络传媒有限公司 | 固件发布方法、装置、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111258599B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111258599B (zh) | 固件升级方法、***和计算机可读存储介质 | |
CN110912937B (zh) | 一种基于区块链的数字存证平台和存证方法 | |
US11914712B1 (en) | Blockchain based secure naming and update verification | |
CN112837160B (zh) | 基于区块链的跨链交易方法、装置和计算机可读存储介质 | |
CN107396360B (zh) | 区块验证方法及装置 | |
US20210157788A1 (en) | Data processing method and apparatus based on blockchain network, electronic device, and storage medium | |
CN111373400B (zh) | 用于实现用于去中心化标识的解析器服务的***和方法 | |
CN102170440B (zh) | 适用于存储云间数据安全迁移的方法 | |
WO2018076760A1 (zh) | 基于区块链的交易事务处理方法、***、电子装置及存储介质 | |
WO2018059334A1 (zh) | 区块链网络、分支节点、区块链网络应用方法及存储介质 | |
CN112861190B (zh) | 数据跨链协同方法、***及装置 | |
CN110599095B (zh) | 基于区块链网络的危废处理方法及区块链网络的节点 | |
CN111144881A (zh) | 对资产转移数据的选择性访问 | |
SE541713C2 (en) | Method and system for registering digital documents | |
CN112235420B (zh) | 基于区块链的数据同步方法、***及相关设备 | |
CN109474606A (zh) | 文件传输方法、装置、计算机设备及存储介质 | |
CN103595802A (zh) | 家庭网关软件远程自动升级的方法 | |
CN102830992A (zh) | 插件加载方法及*** | |
EP4216077A1 (en) | Blockchain network-based method and apparatus for data processing, and computer device | |
CN114567643B (zh) | 跨区块链的数据流转方法、装置及相关设备 | |
CN106209754A (zh) | 版本控制***中对软件包自动签名的方法和*** | |
CN111786781A (zh) | 一种ssl证书监控方法、***、装置、设备及存储介质 | |
JPWO2019142884A1 (ja) | ブロック検証装置、ブロック検証方法、及びプログラム | |
KR102564488B1 (ko) | 블록체인 기반 IoT 기기 펌웨어 공급 시스템 및 이를 이용하는 펌웨어 업데이트 방법 | |
CN102299927B (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 |