固件升级方法、系统和计算机可读存储介质与流程

专利2022-06-28  216


本公开涉及计算机
技术领域
,特别涉及一种固件升级方法、系统和计算机可读存储介质。
背景技术
:随着互联网技术的发展,终端的功能越来越多。终端中安装的固件需要不断更新,以修补漏洞或实现新的功能等。固件远程升级技术是指通过网络更新设备中的固件,为设备提供新的功能或者修补设备系统或软件存在的漏洞。当设备需要升级固件时,从固件存储中心下载最新固件包进行升级。技术实现要素:发明人发现:现有的设备固件远程升级技术,由于采用客户端对服务器的模式,存在着中心服务器被攻击或故障风险,导致设备固件升级失败,固件更新不安全、不及时。本公开所要解决的一个技术问题是:提高固件升级的安全性和及时性。根据本公开的一些实施例,提供的一种固件升级方法,包括:第一设备节点广播固件升级请求消息;第一设备节点接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,第一设备节点向第一验证节点发送固件下载请求消息;第一设备节点接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件;其中,第一设备节点和第一验证节点为区块链系统中的节点。在一些实施例中,固件的最新版本信息是第一验证节点查询区块链账本后获取的;或者固件的最新版本的下载地址信息是第一验证节点根据区块链账本记录的交易信息生成的;其中,区块链账本存储于第一验证节点。在一些实施例中,固件升级响应消息还包括:固件的最新版本的散列值;方法还包括:第一设备节点比对最新版本信息与第一设备节点的版本信息;在一致的情况下,第一设备节点将固件的最新版本的散列值与第一设备节点中固件的散列值进行比对,在一致的情况下,确认固件无需更新。在一些实施例中,该方法还包括:第一设备节点广播固件升级交易,以便区块链系统中的节点根据固件升级交易更新区块链账本;或者第一设备节点向第一验证节点返回固件升级成功消息,以便第一验证节点根据固件升级成功消息广播固件升级交易,以便区块链系统中的节点根据固件升级交易更新区块链账本。在一些实施例中,该方法还包括:第一设备节点接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的元数据,在第二设备节点的元数据包括:固件在第二设备节点的版本信息和第二验证节点的地址信息;第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息高的情况下,向第二验证节点请求更新固件;其中,第二验证节点为第二设备节点的固件版本的上传节点,第二验证节点与第一验证节点相同或不同。在一些实施例中,第一设备节点向第二验证节点请求更新固件包括:第一设备节点向第二验证节点发送固件升级请求消息;第一设备节点接收第二验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;第一设备节点向第二验证节点发送固件下载请求消息;第一设备节点接收第二验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件。在一些实施例中,该方法还包括:第二设备节点在确定第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点的固件的散列值;第二设备节点在接收到预设数量的认证通过响应消息的情况下,向第一设备节点发送固件升级响应消息,固件升级响应消息包括第二设备节点的固件的散列值,以便第一设备节点确定第一设备节点的固件的散列值与第二设备节点的固件的散列值一致;认证通过响应消息是区块链中验证节点比对第二设备节点的固件的散列值与固件的最新版本的散列值一致的情况下生成的。在一些实施例中,该方法还包括:第一设备节点接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的版本信息;第一设备节点在确定第二设备节点的版本信息比第一设备节点的版本信息低的情况下,向第二设备节点发送二次响应消息,二次响应消息包括固件在第一设备节点的元数据,在第一设备节点元数据包括:第三验证节点的地址信息,以便第二设备节点向第三验证节点请求更新固件;其中,第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。在一些实施例中,该方法还包括:第四验证节点接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息;第四验证节点广播固件发布交易信息,以便其他验证节点进行共识认证后根据固件发布交易信息更新区块链账本。根据本公开的另一些实施例,提供的一种固件升级系统,包括:设备节点和验证节点,设备节点包括:第一设备节点,验证节点包括:第一验证节点;第一设备节点用于广播固件升级请求消息,接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息,在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,向第一验证节点发送固件下载请求消息;接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件;第一验证节点用于接收固件升级请求消息,向第一设备节点返回固件升级响应消息,接收第一设备节点发送的固件下载请求消,向第一设备节点返回固件下载响应消息;其中,第一设备节点和第一验证节点为区块链系统中的节点。在一些实施例中,固件的最新版本信息是第一验证节点查询区块链账本后获取的;或者固件的最新版本的下载地址信息是第一验证节点根据区块链账本记录的交易信息生成的;其中,区块链账本存储于验证节点。在一些实施例中,固件升级响应消息还包括:固件的最新版本的散列值;第一设备节点还用于比对最新版本信息与第一设备节点的版本信息;在一致的情况下,将固件的最新版本的散列值与第一设备节点中固件的散列值进行比对,在一致的情况下,确认固件无需更新。在一些实施例中,第一设备节点还用于广播固件升级交易,以便区块链系统中的节点根据固件升级交易更新区块链账本;或者第一设备节点还用于向第一验证节点返回固件升级成功消息;第一验证节点还用于根据固件升级成功消息广播固件升级交易,以便区块链系统中的节点根据固件升级交易更新区块链账本。在一些实施例中,设备节点还包括:第二设备节点,验证节点还包括:第二验证节点;第一设备节点还用于接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的元数据,在第二设备节点的元数据包括:固件在第二设备节点的版本信息和第二验证节点的地址信息;在确定第二设备节点的版本信息比第一设备节点的版本信息高的情况下,向第二验证节点请求更新固件;第二设备节点用于向第一设备节点返回固件升级响应消息;第二验证节点用于接收第一设备节点的固件更新请求;其中,第二验证节点为第二设备节点的固件版本的上传节点,第二验证节点与第一验证节点相同或不同。在一些实施例中,第一设备节点还用于向第二验证节点发送固件升级请求消息;接收第二验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;向第二验证节点发送固件下载请求消息;接收第二验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;根据最新版本的下载地址信息更新固件;第二验证节点还用于接收第一设备节点发送的固件升级请求消息;向第一设备节点返回固件升级响应消息;接收第一设备节点发送的固件下载请求消息;向第一设备节点返回固件下载响应消息。在一些实施例中,第二设备节点还用于在确定第二设备节点的版本信息与第一设备节点的版本信息一致的情况下,广播固件认证消息,固件认证消息包括:第二设备节点的固件的散列值;在接收到预设数量的认证通过响应消息的情况下,向第一设备节点发送固件升级响应消息,固件升级响应消息包括第二设备节点的固件的散列值;第一设备节点还用于确定第一设备节点的固件的散列值与第二设备节点的固件的散列值是否一致;认证通过响应消息是区块链中验证节点比对第二设备节点的固件的散列值与固件的最新版本的散列值一致的情况下生成的。在一些实施例中,设备节点还包括:第二设备节点,验证节点还包括:第三验证节点;第一设备节点还用于接收第二设备节点返回的固件升级响应消息,固件升级响应消息包括固件在第二设备节点的版本信息;在确定第二设备节点的版本信息比第一设备节点的版本信息低的情况下,向第二设备节点发送二次响应消息,二次响应消息包括固件在第一设备节点的元数据,在第一设备节点元数据包括:第三验证节点的地址信息;第二设备节点用于向第一设备节点返回升级响应消息,,接收第一设备节点发送的二次响应消息;向第三验证节点请求更新固件;其中,第三验证节点为第一设备节点的固件版本的上传节点,第三验证节点与第一验证节点相同或不同。在一些实施例中,验证节点还包括:第四验证节点;第四验证节点用于接收固件提供方发送的固件上传请求消息,固件上传请求消息包括:最新版本的固件文件和版本信息;广播固件发布交易信息,以便其他验证节点进行共识认证后根据固件发布交易信息更新区块链账本。根据本公开的一些实施例,提供的一种固件升级系统,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如前述任意实施例的固件升级方法。根据本公开的一些实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的固件升级方法。本公开提出一种基于区块链的固件升级方法,针对现有固件升级时存在服务器单点故障风险、固件更新不及时、不安全等问题,提出基于区块链网络构建固件共享网络,设备作为区块链网络节点加入固件共享区块链网络中,设备发送固件升级请求到区块链网络中并接收区块链节点响应确定设备固件是否是最新的,如果不是最新,则通过区块链固件共享网络下载固件完成快速安全更新。利用区块链去中心化、可信、防篡改等特点实现设备固件版本的快速检查,并在需要时安全下载最新的固件,提高固件升级的安全性和及时性。通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。附图说明为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图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返回固件升级响应消息可以包括固件的最新版本信息,还可以包括:固件的文件名、固件的最新版本的散列值、固件片段长度、以及固件的最新版本的上传节点的地址信息trackerurl等信息;前述这些信息可以统称为固件的元数据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可以包含最新版本信息、最新版本文件名、最新版本的文件的散列值、固件的片段长度、trackerurl等信息。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为第一个进行固件升级的节点。第一设备节点可以根据trakerurl从验证节点中下载,否则根据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为第二设备节点的固件版本的上传节点,即trackerurl,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为第一设备节点的固件版本的上传节点,即trackerurl,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(securesocketslayer/transportlayersecurity,安全套接层/传输层安全),vpn(virtualprivatenetwork,虚拟专用网络)等与区块链系统中的验证节点连接,并向第四验证节点发送固件上传请求消息,包括:最新版本固件文件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例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)、数据库以及其他程序等。图6为本公开固件升级系统的另一些实施例的结构图。如图6所示,该实施例的固件升级系统60包括:存储器610以及处理器620,分别与存储器510以及处理器520类似。还可以包括输入输出接口630、网络接口640、存储接口650等。这些接口630,640,650以及存储器610和处理器620之间例如可以通过总线660连接。其中,输入输出接口630为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口650为sd卡、u盘等外置存储设备提供连接接口。本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页1 2 3 
技术特征:

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任一项所述方法的步骤。

技术总结
本公开涉及一种固件升级方法、系统和计算机可读存储介质,涉及计算机技术领域。本公开的方法包括:第一设备节点广播固件升级请求消息;第一设备节点接收第一验证节点返回的固件升级响应消息,固件升级响应消息包括固件的最新版本信息;在最新版本信息与固件在第一设备节点的版本信息不一致的情况下,第一设备节点向第一验证节点发送固件下载请求消息;第一设备节点接收第一验证节点发送的固件下载响应消息,固件下载响应消息包括:固件的最新版本的下载地址信息;第一设备节点根据最新版本的下载地址信息更新固件;其中,第一设备节点和第一验证节点为区块链系统中的节点。

技术研发人员:黄泽源;钟致民;陆钢;孔勇平;周丽莎;张会炎;缪翀莺;余冬苹
受保护的技术使用者:中国电信股份有限公司
技术研发日:2018.12.03
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-181.html

最新回复(0)