区块链技术在矿山物联网中的应用研究

2020-04-11 12:21秦晓伟王立兵汪磊李敬兆张小波
工矿自动化 2020年3期
关键词:共识分布式区块

秦晓伟,王立兵,汪磊,李敬兆,张小波

(1.安徽理工大学 电气与信息工程学院,安徽 淮南 232001;2.大同煤矿集团有限责任公司 安全监管五人小组管理部,山西 大同 037003; 3.安徽科艾网络技术有限公司,安徽 淮南 232001)

0 引言

近年来物联网发展取得了显著成果,被广泛应用于智能矿山、健康医疗、交通运输等领域[1-2]。煤矿企业通过物联网技术对采集的数据进行传输,但在数据传输过程中,由于人为隐瞒和疏忽会造成数据丢失。同时,矿山物联网中数据库的不完善使得存储的数据存在被篡改的风险。高效、安全地对煤矿企业生产过程数据进行传输和存储,保证数据的完整性及安全性,对于煤矿安全生产具有重要意义。

区块链作为一种计算机技术的新型应用模式,以去中心化、可信赖性和匿名性等特点迅速成为研究热点,在分布式环境中建立信任而不需要授权,链上数据能够实时共享[3-7]。区块链以分布式网络为基础,拥有独特的信任机制和区块数据的不可篡改性,符合物联网对信息安全技术的去中心化、去信任化需求,在物联网信息安全应用上具有天然的优势[8]。现阶段国内针对区块链技术在物联网工程中的应用研究,主要是利用区块链的加密技术和共识算法对物联网的信息共享安全机制进行改进,或是对物联网在应用区块链技术存储数据时的数据膨胀问题进行探索,解决存储数据时的资源消耗问题。葛琳等[9]提出了一种基于区块链的轻量级物联网信息共享安全框架,采用数据区块链和交易区块链的双链模式,在数据区块链中实现数据的分布式存储和防篡改,通过基于部分盲签名算法的改进算法,提升了交易效率,实现了隐私保护;但由于是基于公有区块链、联盟区块链和私有区块链的结合应用,且采用双链机制,信息交互复杂,在一些交易场景中会造成验证节点的资源浪费。乔蕊等[10]为解决大量物联网设备产生的动态数据安全存储与共享问题,提出了用于实现操作实体多维授权与动态数据存储的双联盟区块链结构,设计了基于验证节点列表的共识算法,给出了一种基于联盟区块链的动态数据溯源机制优化方案;但是联盟区块链相对于私有区块链和公有区块链来说,并不是完全去中心化的,理论上存在联盟之间联合起来修改数据的可能。

本文将区块链技术应用于矿山物联网数据传输与存储,通过基于实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法的共识模块和优化P2P传输协议,完成数据的全网共识,实现物联网数据传输安全防护,同时可节省网络资源;利用数据区块实现数据存储的去中心化,保证物联网数据可靠存储。

1 矿山私有区块链架构

矿山私有区块链包括数据层、传输层、共识层、合约层和展示层,如图1所示,其中数据层、传输层及共识层是私有区块链的核心。

图1 矿山私有区块链架构

1.1 数据层

数据层的功能是数据记录。利用默克尔树将采集的数据分成很多小的数据块并放在最底层,对这些小的数据块进行哈希处理,将2个最底层数据块的哈希值合并后再次哈希,得到一个高级别的数据块,重复上述过程直到最后只有1个根哈希。将默克尔树所产生的根哈希、时间戳等记录在数据区块,数据区块在进行连接时,新形成的数据区块会存储上一个数据区块的根哈希。通过数据区块和链式结构,数据能够在去中心化的情况下高效存储。

1.2 传输层

传输层的功能是让区块链上的节点共同对数据区块的内容和真实有效性进行判断及维护。传输层工作流程:区块链网络中1个节点将自身数据向其他节点进行广播,其他节点对该节点的数据进行验证,验证通过后继续传播。通常的数据获取以服务器和客户端为组成方式进行,服务器分发数据,客户端只有对其访问才能获得数据,中心化程度高。采用P2P协议后,每一个节点都可以既充当服务器又充当客户端,节点之间能进行交互,大大缩短了数据获取时间,提高了数据获取效率。

1.3 共识层

共识层的功能是让区块链网络中分散的节点快速、有效地达成共识。区块链网络中的节点依据共识算法制定的规则来更新区块链数据,保障区块链网络正常运行。目前常见的共识算法主要有PBFT,PoW(Proof of Work,工作量证明),PoS(Proof of Stake,股权证明)和DPoS(Delegated Proof of Stake,委托股权证明)[11-12],其特点对比见表1。本文采用PBFT算法。

表1 不同共识算法特点对比

2 基于区块链技术的矿山物联网数据传输与存储

矿山物联网的3层架构中,感知层主要利用无线传感设备采集数据,网络层实现感知层与应用层之间的数据交互传输,应用层对接收到的数据进行分析处理并向终端推送[13-15]。根据矿山物联网的3层架构,其安全防护体系也分为3层,如图2所示。矿山物联网的3层安全防护可通过区块链技术来实现,例如:在对感知层的感知节点设备安全进行防护时,区块链中的数据签名、节点认证、密钥管理等是可被利用的防护手段;对于网络层的无线安全传输来说,可利用区块链中的共识算法与P2P协议对需要传输的数据进行共识、验证操作;应用层中的数据存储可直接通过区块链中具备存储空间的节点来完成。其中矿山物联网中网络层数据安全传输和应用层数据可靠存储防护,是应用区块链技术提升矿山物联网安全性能的重点。

图2 矿山物联网安全防护体系

Fig.2 Security protection system of mine Internet of things

2.1 数据传输

矿山物联网中数据传输是否执行由区块链网络中具备相应算力的所有节点根据共识算法共同决定。在数据传输过程中,区块链网络节点分工、数据加密及数据共识是3个重要环节,如果采取集中式处理会极大提升数据传输的复杂程度。本文将矿山物联网中数据传输的3个环节进行模块化处理,即设置节点管理模块、加密模块和共识模块。节点管理模块对区块链网络各节点进行管理,实现节点鉴别、权限控制、节点划分等功能。加密模块对传输的数据进行加密,防止数据在传输过程中被恶意篡改、伪造甚至窃取,保证数据的真实性及可信任程度。共识模块的设计基于区块链网络相应节点的算力,不需要引入新设备。共识模块利用具备相应算力的区块链网络节点完成数据有效性的共识过程,减少虚假数据上传。

2.2 数据存储

考虑到矿山物联网中存在节点计算能力不均、部分节点没有足够空间进行数据存储等问题,提出一种基于私有区块链的数据存储结构,如图3所示。数据区块层临时存储经区块链网络上传的数据,区块链网络中的节点可通过该层实时传输数据。信息验证层依据PBFT算法对数据区块层中临时存储的数据进行验证,当数据被规定数量的验证节点验证通过,才会被存储在存储节点中并同步更新到整个私有区块链。存储层的存储节点需要有足够的存储空间来存储数据。

图3 基于私有区块链的数据存储结构

3 私有区块链中的数据共识

PBFT算法源于拜占庭问题(也称拜占庭将军问题),该问题的核心思想:假设系统中节点总数为x,恶意攻击节点数为y,如果系统整体满足x≥3y+1,则恶意攻击节点所产生的干扰决定(错误决定)就不会对系统的正常决定制定产生影响。PBFT算法在本质上是一种状态机副本复制算法,副本节点执行操作是在视图变更中执行的。以系统选取1个主节点为例,其余的作为副本节点,主节点一旦失效则会采取视图变更过程,此时副本节点会在试图变更中推选出1个新的主节点。副本节点在经过请求、预准备、准备、提交、应答之后完成验证通过的信息收集工作,并且判断是否达成全网共识(判断依据:当副本节点收到2y+1个验证通过的信息,且客户端收到超过y+1个相同的应答消息时,表明客户端发起的请求已经达成全网共识)。现实应用中可能会出现副本节点发送完消息,其他节点来不及作出反应的现象。因此设置响应阈值L和响应区间[o,s],状态o代表接收节点正在处理其他响应,状态s代表接收节点处理请求已完成,s=o+hL(h为正整数)。如果副本节点先到达状态s,副本节点对接收节点的传送就会停止,等待其余节点到达状态s后,副本节点与其余节点进行状态同步。

基于PBFT算法的矿山物联网数据共识过程如图4所示。首先,选取部分主节点作为记忆节点,依据设定好的记忆策略,对传输的数据分别进行签名。然后,按照时间戳信息对接收到的已签名数据进行排序(利用主节点充当排序节点),并确定数据的数量,将已经排序好的数据传送给指定的接收节点。最后,当接收节点接收到数据内容,且数据的签名信息及内容核对正确时,执行节点会生成数据区块并向整个私有区块链进行广播,接收节点完成对客户端发送数据的响应。

图4 基于PBFT算法的矿山物联网数据共识过程

P2P网络具有可扩展性极强、去中心化程度高、负载均衡的特点。P2P网络结构按照集中程度可划分为分布式、集合式和混合式3种。相较于集合式与混合式P2P网络结构,分布式P2P网络结构中的节点既可以充当服务器又可以充当客户端,更加有利于数据的传输与存储。分布式P2P网络结构分为结构化和非结构化2种。分布式结构化P2P网络采用的维护算法相比于分布式非结构化P2P网络采用的泛洪算法,能更有效地避免网络拥堵。在分布式结构化P2P网络中,所有资源通过1个具有唯一性的资源关键字来进行标志,资源关键字与资源的存储位置通过算法来进行映射[16]。网络中的节点只需要保存少量的路由信息,在需要查询网络中某个资源时,通过向后继节点发送关键字数据来查询所需资源的具体位置,对于减轻网络拥堵非常有利。

但分布式结构化P2P网络存在节点管理上的问题,各节点之间缺乏固定规则约束,且无法精确定位节点信息,进行节点查找时,会对网络资源造成极大的消耗。因此,在分布式结构化P2P网络中每2个节点之间设置1个共识模块,如图5所示。节点A与节点B之间通过共识验证后,如果节点B具有存储空间,则数据可直接存储在节点B中。

图5 P2P中的共识模块

根据应用共识模块的分布式结构化P2P网络结构,在基础的P2P协议上进行优化,内容如下:节点管理模块根据区块链网络中各节点的算力,分别确定主节点、接收节点和执行节点;利用加密模块在数据传输开始时为数据加密;共识模块中的节点能够完成基于PBFT算法的共识过程,同时由共识模块中主节点赋予数据不可伪造的签名,一旦有签名的数据发生改变,通过区块链网络很快就能检测到节点位置。

数据被赋予签名使得共识模块能够处理多个主节点,即能对多组数据进行排序、传输。数据上传过程中,客户端首先提交数据,数据传到主节点时,主节点先进行数据排序,然后在排序好的数据上加入签名信息并进行打包,随机发送给某个接收节点。该接收节点接收到数据后添加新的签名信息并进行打包,再发送给其他接收节点。最终的接收节点接收到数据后根据所有的签名信息对数据进行判断,若判断数据为不真实,则数据被丢弃。由于所有接收节点随机产生,所以要求共识模块有尽可能多的选择函数Selection(M)(M为接收节点选择集合)来随机选取接收节点。选择函数包括以下2种情况:① 如果M中只有1个参数m,则Selection(M)=m;② 如果M是1个空集,则Selection(M)=retreat。共识模块对数据进行处理的流程如图6所示,其中i为虚报或瞒报的客户端节点数。

图6 共识模块数据处理流程

4 测试验证

利用矿山物联网相关感知设备对某矿数据进行采样,将21 000条数据分为7组,每组3 000条数据。利用开源区块链平台搭建矿山私有区块链架构,在每2个发送端与接收端之间设置共识模块,测试共识模块中各节点对于各组数据传输的平均容错率与消耗时间,同时与未应用共识模块时的传输结果进行对比,结果见表2。可看出应用共识模块后,在数据传输过程中提高了容错率、减少了时间消耗。

表2 数据传输过程中平均容错率与时间消耗对比

为测试优化的P2P协议的有效性,与未优化的P2P协议在1组数据传输时的准确率、瞒报率和T-correct值(虚假数据上传风险率)进行对比,结果见表3。可看出应用优化的P2P协议后,收集到的数据更全面,准确率更高,瞒报率和T-correct更低,保证了数据传输时的完整性,降低了隐瞒数据的风险。

表3 不同协议下数据传输的准确率、瞒报率与T-correct对比

注:准确率=收到的数据条数/实际上传的数据条数;瞒报率=未收到数据条数/所有数据条数;T-correct=(3×准确率×瞒报率)/2×(准确率+瞒报率)。

私有区块链中存储节点的数据存储情况见表4。可看出随着数据量的增加,数据存储的可靠程度基本保持在较高水平。

表4 数据存储可靠程度

注:可靠程度=正确存储数据条数/目标存储数据条数。

5 结语

将区块链技术应用于矿山物联网,建立了矿山私有区块链架构,设计了基于共识模块和数据区块的矿山物联网数据传输与存储防护方案;应用PBFT算法设计数据共识过程,通过在分布式结构化P2P网络节点间设置共识模块并优化P2P传输协议,实现数据的安全性共识。测试结果表明,通过私有区块链的应用,数据传输准确性高、数据存储可靠,保障了煤矿安全生产。

猜你喜欢
共识分布式区块
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能
读懂区块链
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究