发明内容
有鉴于此,本发明提供了一种区块链网关切换方法及装置,主网关动态切换,主网关遭受攻击其他网关可以代替主网关工作,保证电力物联网正常运行。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种区块链网关切换方法,应用于电力物联网中的网关,电力物联网中的所有网关组成一条私有区块链,所述方法包括:
在电力物联网启动或电力物联网选举出主网关的情况下,判断是否接收到私有区块链中其他网关发送的主网关认证信息;
若未接收到私有区块链中其他网关发送的主网关认证信息,生成随机数,利用预设哈希算法,计算随机数对应的哈希值;
判断计算得到的哈希值是否满足预设难度;
若计算得到的哈希值不满足所述预设难度,返回执行所述判断是否接收到其他网关发送的主网关认证信息;
若计算得到的哈希值满足所述预设难度,向私有区块链中其他网关发送携带有随机数和自身网关信息的主网关认证信息,并在其他网关认证通过后成为新的主网关;
若接收到私有区块链中其他网关发送的主网关认证信息,对主网关认证信息进行认证,在认证通过的情况下,确定新的主网关。
可选的,所述预设哈希算法为SHA-256安全哈希算法。
可选的,所述判断计算得到的哈希值是否满足预设难度,包括:
判断计算得到的哈希值是否满足预设难度对应的哈希值字符串的格式。
可选的,所述向私有区块链中其他网关发送携带有随机数和自身网关信息的主网关认证信息,包括:
利用自身公钥对随机数和自身网关信息进行加密,生成主网关认证信息;
向私有区块链中其他网关发送主网关认证信息。
可选的,所述对主网关认证信息进行认证,包括:
利用自身私钥对主网关认证信息进行解密,得到解密后的随机数和网关信息;
利用预设哈希算法,计算解密后的随机数对应的哈希值;
在确定解密后的随机数对应的哈希值满足预设难度的情况下,确定对主网关认证信息认证通过。
可选的,在成为新的主网关之后,所述方法还包括:
接收待接入设备或所述待接入设备通过私有区块链中其他网关发送的接入请求;
对所述接入请求进行解析,得到所述待接入设备的设备信息;
利用预设接入算法,对所述待接入设备的设备信息进行身份验证。
可选的,在确定新的主网关之后,所述方法还包括:
在新的主网关遭受到攻击产生故障的情况下,判断是否满足预设规则;
若满足预设规则,成为私有区块链中新的主网关。
一种区块链网关切换装置,应用于电力物联网中的网关,电力物联网中的所有网关组成一条私有区块链,所述装置包括:
第一判断单元,用于在电力物联网启动或电力物联网选举出主网关的情况下,判断是否接收到私有区块链中其他网关发送的主网关认证信息,若是,触发主网关认证单元,若否,触发哈希值计算单元;
所述主网关认证单元,用于对主网关认证信息进行认证,在认证通过的情况下,确定新的主网关;
所述哈希值计算单元,用于生成随机数,利用预设哈希算法,计算随机数对应的哈希值;
第二判断单元,用于判断计算得到的哈希值是否满足预设难度,若否,触发所述第一判断单元,若是,触发认证信息发送单元;
所述认证信息发送单元,用于向私有区块链中其他网关发送携带有随机数和自身网关信息的主网关认证信息,并在其他网关认证通过后成为新的主网关。
可选的,所述第二判断单元,具体用于判断计算得到的哈希值是否满足预设难度对应的哈希值字符串的格式。
可选的,所述认证信息发送单元,具体用于:
利用自身公钥对随机数和自身网关信息进行加密,生成主网关认证信息;
向私有区块链中其他网关发送主网关认证信息。
可选的,所述主网关认证单元,具体用于:
利用自身私钥对主网关认证信息进行解密,得到解密后的随机数和网关信息;
利用预设哈希算法,计算解密后的随机数对应的哈希值;
在确定解密后的随机数对应的哈希值满足预设难度的情况下,确定对主网关认证信息认证通过。
可选的,所述装置还包括接入设备验证单元,用于:
在成为新的主网关之后,接收待接入设备或所述待接入设备通过私有区块链中其他网关发送的接入请求;
对所述接入请求进行解析,得到所述待接入设备的设备信息;
利用预设接入算法,对所述待接入设备的设备信息进行身份验证。
可选的,所述装置还包括容灾处理单元,用于:
确定新的主网关之后,在新的主网关遭受到攻击产生故障的情况下,判断是否满足预设规则;
若满足预设规则,成为私有区块链中新的主网关。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种区块链网关切换方法,将电力物联网中的所有网关组成一条私有区块链,在每轮主网关选举过程中,最先根据随机数计算出满足预设难度的哈希值的网关成为本轮主网关,在切换过程中,各网关身份平等,任何一个网关均有可能成为主网关,实现了真正的分布式主网关动态切换,可以有效地抵御电力物联网常见攻击,大大的提升电力物联网的安全性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过研究发现:电力物联网因电网网架分布式结构的边缘属性和业务特征,大量终端节点为计算存储能力弱的受限设备,设备之间未实现全面的互联互通,使得传统的安全防护手段,如防火墙,入侵检测系统等不能很好的应用于电力物联网。
电力物联网中,网关是实现感知设备、终端设备与网络设备互联互通的中间件,在协议转换、设备接入认证、数据传输等方面起重要作用,也是整个网络可靠运行的关键。为了提高电力物联网的安全性,增强其抵御攻击的能力,尤其是DDoS攻击这类成本低、复杂度低,影响范围大的攻击,本发明提供了一种基于区块链的主网关动态切换方法,实现了分布式主网关动态切换,可以有效地抵御电力物联网常见攻击,大大的提升电力物联网的安全性。
具体的,本实施例公开的一种区块链网关切换方法,应用于电力物联网中的网关,电力物联网中的所有网关组成一条私有区块链,形成一个P2P网络,每个网关为私有区块链中的一个节点,请参阅图1,该方法包括以下步骤:
S101:电力物联网启动或电力物联网选举出主网关。
可以理解的是,在电力物理网刚刚启动时,不存在主网关,或基于预设条件选择一个主网关,但是这个主网关由于不是根据预设难度得出的,需要重新选举主网关。
在电力物联网正常运行过程中,若刚选举出主网关,则开始下一轮的主网关选举。
S102:判断是否接收到私有区块链中其他网关发送的主网关认证信息。
在每轮主网关选举过程中,哪个网关最先计算得到满足预设难度的哈希值,通过向其他网关发送主网关认证信息,成为主网关。则对于私有区块链中任意一个网关,在未接收到其他网关发送的主网关认证信息的情况下,根据随机数计算满足预设难度的哈希值,在接收到其他网关发送的主网关认证信息的情况下,则对该主网关认证信息进行验证。
若未接收到私有区块链中其他网关发送的主网关认证信息,S103:生成随机数,利用预设哈希算法,计算随机数对应的哈希值。
预设哈希算法可以为SHA-256安全哈希算法,也可以为其他哈希算法,优选使用SHA-256安全哈希算法,此算法输出是固定的256位,目前还未出现对SHA256的有效攻击,安全性可以保障。
S104:判断计算得到的哈希值是否满足预设难度。
需要说明的是,难度越大,根据随机数计算出满足预设难度的哈希值的时间越长,因此,可以通过调整预设难度的难度值来调整主网关的更换周期。
具体可以依据实际情况自由设定难度值,如将预设难度设置为生成的哈希值中3个前导0,则对应的难度值为3,如0008aa078e76be9c5be14f7a9fdfad77cdce3eb2409734accfCa1c7581eae9fc,即计算出的哈希值如果前三位为0,则该哈希值满足预设难度。随着要求的前导0难度增加,需要用来计算的时间也会随之增加,则难度增大,主网关更换周期延长。
难度值和随机数记录在区块链中,由网关构成的私有区块链中,区块由区块头和业务信息组成,请参阅图2,区块头共80字节,版本号4字节,上一区块Hash值32字节,Merkle根Hash值32字节,时间戳4字节,难度值4字节,随机数(nonce)4字节。业务信息附在区块头后。
若计算得到的哈希值不满足预设难度,返回执行S102。
也就是说,网关通过不断更新随机数,再根据更新后的随机数计算哈希值,直到计算出满足预设难度的哈希值。
若计算得到的哈希值满足预设难度,S105:向私有区块链中其他网关发送携带有随机数和自身网关信息的主网关认证信息,并在其他网关认证通过后成为新的主网关。
需要说明的是,主网关认证信息包括发送网关的用于计算出满足预设难度的哈希值的随机数以及网关信息。为了提高数据传输的安全性,网关利用自身公钥对随机数和自身网关信息进行加密,生成主网关认证信息,并向私有区块链中其他网关发送该主网关认证信息。
若接收到私有区块链中其他网关发送的主网关认证信息,执行S106:对主网关认证信息进行认证,在认证通过的情况下,确定新的主网关。
具体的,网关利用自身私钥对接收到的主网关认证信息进行解密,得到解密后的随机数和网关信息。然后利用预设哈希算法,计算解密后的随机数对应的哈希值,若该哈希值满足预设难度,则确定对接收到的主网关认证信息认证通过,若该哈希值不满足预设难度,则确定对接收到的主网关认证信息认证未通过。
本实施例公开的一种区块链网关切换方法,将电力物联网中的所有网关组成一条私有区块链,在每轮主网关选举过程中,最先根据随机数计算出满足预设难度的哈希值的网关成为本轮主网关,在切换过程中,各网关身份平等,任何一个网关均有可能成为主网关,实现了真正的分布式主网关动态切换,可以有效地抵御电力物联网常见攻击,大大的提升电力物联网的安全性。
基于本实施例公开的一种区块链网关切换方法,保证了部署架构的分布式和去中心化。系统中,假设在T0时刻网关G0成功计算出符合要求的Hash值,那么G0成为主网关,在T1时刻网关G1可能在下一个循环中替换G0。
主网关功能与其他网关基本相同,网关捕获的攻击日志等信息会上传到私有区块链,其他节点将在私有区块链中同步上传的数据。
在由网关组成的私有区块链中,每个节点即网关都有完整的数据,这些数据以安全的方式存储,以便将来进行攻击取证。
除此之外,主网关还负责在电力物联网设备身份认证接入过程中,选择相应的接入组对设备进行身份认证工作,以及将认证、交易等信息上传到私有区块链中。
请参阅图3所示的网关架构图,待接入设备向区域网关(设备所在范围物理距离最近的网关)发送接入请求命令:
Request_src={ID,port,service,state}
接入请求命令中包含设备信息,设备信息包括:设备ID,端口,服务类型,运行状态。
其中,服务类型在不同场景可能不同。如外网用户业务,省公司业务,网络中心业务,分公司业务等等,对业务类型可进行统一编号。
运行状态可能有:正常,异常,故障,停止等,对运行状态可进行统一编号。
区域网关将接入请求命令Request_src进行公钥编码:
Kpublic=(E,N)Enc2=(Request_src)EmodN)
区域网关将编码后的接入请求命令发送到主网关。
需要说明的是,当接入设备与主网关的物理距离最近,接入设备也可以直接将接入请求命令发送给主网关。
主网关使用私钥解码得到与设备信息相关的Dec2=((Enc2)Dmod N)并利用接入算法对设备进行验证。
合法接入的电力物联网终端根据其配置及所在区域不同由不同的区域网关进行管理,电力物联网业务系统的每次合法接入形成一个区块。区块中除了包括形成链式存储结构所需的信息外,还包含设备接入所需的节点接入业务系统的时间,节点设备ID,业务状态,公钥和数字证书,权限等级信息以及当前时刻所对应主网关信息。新工业物联网节点申请加入时,向其所属区域网关发出认证请求,区域网关会将请求转发给主网关,主网关根据接入算法认证设备,认证通过后生成新加入工业物联网节点的数字证书,并将接入过程记录在一个新的区块中。接入成功的物联网节点的业务功能通过链上部署的智能合约来实现。保障了大规模分布式电力工业物联网节点的接入过程存储在可方便查询、透明、无法篡改的区块链分布式账本中。
基于区块链的动态网关架构,通过选举的方式确定主网关,完成目标Hash值计算的网关被设定为主网关。在切换过程中,各网关身份平等,任何一个网关G均有可能成为主网关,由此形成了一个分布式的动态网关切换模型。由主网关来执行设备接入认证算法。当存在攻击时,如DDoS攻击,攻击使某一网关发生故障,其他网关会代替此网关工作,若主网关发生故障,也不会影响系统运行,系统会自动选举出新的主网关。由此可提升整个系统的安全性与抗攻击能力。
基于上述实施例公开的一种区块链网关切换方法,本实施例对应公开了一种区块链网关切换装置,应用于电力物联网中的网关,电力物联网中的所有网关组成一条私有区块链,请参阅图3,所述装置包括:
第一判断单元100,用于在电力物联网启动或电力物联网选举出主网关的情况下,判断是否接收到私有区块链中其他网关发送的主网关认证信息,若是,触发主网关认证单元200,若否,触发哈希值计算单元300;
所述主网关认证单元200,用于对主网关认证信息进行认证,在认证通过的情况下,确定新的主网关;
所述哈希值计算单元300,用于生成随机数,利用预设哈希算法,计算随机数对应的哈希值;
第二判断单元400,用于判断计算得到的哈希值是否满足预设难度,若否,触发所述第一判断单元,若是,触发认证信息发送单元500;
所述认证信息发送单元500,用于向私有区块链中其他网关发送携带有随机数和自身网关信息的主网关认证信息,并在其他网关认证通过后成为新的主网关。
可选的,所述第二判断单元400,具体用于判断计算得到的哈希值是否满足预设难度对应的哈希值字符串的格式。
可选的,所述认证信息发送单元500,具体用于:
利用自身公钥对随机数和自身网关信息进行加密,生成主网关认证信息;
向私有区块链中其他网关发送主网关认证信息。
可选的,所述主网关认证单元200,具体用于:
利用自身私钥对主网关认证信息进行解密,得到解密后的随机数和网关信息;
利用预设哈希算法,计算解密后的随机数对应的哈希值;
在确定解密后的随机数对应的哈希值满足预设难度的情况下,确定对主网关认证信息认证通过。
可选的,所述装置还包括接入设备验证单元,用于:
在成为新的主网关之后,接收待接入设备或所述待接入设备通过私有区块链中其他网关发送的接入请求;
对所述接入请求进行解析,得到所述待接入设备的设备信息;
利用预设接入算法,对所述待接入设备的设备信息进行身份验证。
可选的,所述装置还包括容灾处理单元,用于:
确定新的主网关之后,在新的主网关遭受到攻击产生故障的情况下,判断是否满足预设规则;
若满足预设规则,成为私有区块链中新的主网关。
本实施例公开的一种区块链网关切换装置,将电力物联网中的所有网关组成一条私有区块链,在每轮主网关选举过程中,最先根据随机数计算出满足预设难度的哈希值的网关成为本轮主网关,在切换过程中,各网关身份平等,任何一个网关均有可能成为主网关,实现了真正的分布式主网关动态切换,可以有效地抵御电力物联网常见攻击,大大的提升电力物联网的安全性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。