基于改进PBFT算法的腐蚀监测数据共享系统
摘 要:在石化运输的腐蚀监测系统中,数据一般采用分布式存储,虽然目前存在多种基于云端的数据托管方案,但数据保密方式大多仅依靠算法加密,如何确保第三方的可信性是十分令人困扰的问题。为此,在腐蚀监测数据共享系统中,设计了结合信任机制与数据交互系统的改进的PBFT实用拜占庭容错协议(Practical Byzantine Fault Tolerance)共识算法(简称改进PBFT算法)。该系统可不依托第三方平台进行可靠的数据交付,从而确保了数据的可追溯性。在仿真测试实验中,对改进PBFT算法和传统的PBFT共识算法(简称传统PBFT算法)进行对比,结果显示,改进PBFT算法在数据稳定性和可靠性测试中优于传统PBFT算法。该系统解决了监测数据共享中不可追溯和易受攻击等难点问题,为进一步推动区块链技术在石化运输腐蚀监测信息化行业的发展奠定了基础。
关键词:区块链 腐蚀监测 拜占庭容错 共识算法 分布式存储 数据共享
随着万物互联的推行,国内石化行业腐蚀监测系统数字化建设迅速发展【1-2】,在以物联网技术构建的实用系统中,数据存储和传输过程中的可信度一直是亟待解决的热点问题【3-5】。现存的各项研究中,一般是通过对物联网架构层的不同阶段采取相应的技术手段,来解决数据存储和传输安全性问题。董绍华【6】通过对中国20年运输系统的发展状况进行总结,提出形成“三个一”技术群的方案,保障了石化运输系统的安全性,优化了风险评估与设备完整性评价。在此基础上,可进一步向着数据采集智能化、风险识别精准化、系统反馈自适应等方向发展。张曼杰【7】对具体的石化腐蚀监测系统进行了介绍,并详细分析了多种腐蚀监测方案,以网络层作为出发点,构建了基于区块链技术的云平台监测系统,将安全技术与腐蚀监测系统相结合,对失效部分进行大致判断,但该系统仍需要使用第三方平台进行托管,存在数据泄露的风险。张艺等【8】将区块链技术运用到具体的能源交易方案中,以实际案例为切入点,切实解决能源系统调度过程中的安全问题;通过构建区块链综合能源系统网络服务架构,实现经济和环保的最大效益;同时,通过具体的案例分析,对提高系统数据安全性的效果进行了验证,为能源调度的优化提供了理论支持。李嘉韩等【9】利用了区块链中的私有链技术,在企业内部小型系统中实现了高效的数据信息对称,使信息能够无差别对接,但私有链技术对于大型企业的数据共享来说适应度不高。随着信息技术的不断发展,对于腐蚀监测系统中数据的安全性、可靠性和可追溯性的要求也越来越高。基于第三方平台的数据存储方案逐渐增多,安全隐患和恶意攻击的事件数量也随之增加。若第三方平台不可信,则数据托管毫无安全性可言。通过传统分布式存储数据及基于第三方平台进行数据托管的安全性问题日渐凸显。因此,本文提出了基于改进的PBFT算法的区块链腐蚀监测数据共享系统。该系统能够通过分布式数据中心之间的共识机制来验证数据的可靠性,从而提高以物联网为基础的石化腐蚀监测系统中分布式数据中心之间数据存储的可信度,并对系统数据传输过程中可能存在的恶意存储中心数据伪造问题进行鉴别,对提高腐蚀监测系统预防安全事故响应速度以及延长硬件设备的使用寿命具有重要作用。
1 石化运输腐蚀监测系统
区块链腐蚀监测系统分为硬件设备和软件管理系统,其整体架构如图1所示。硬件设备搭建在实体管道上,每隔10 m安装1个内置超声波传感器和温度传感器的监测节点,采用LoRa模块进行无线传输,将数据上传至无线网关,无线网关利用MQTT协议【10】将数据封装上传到数据存储中心;软件管理系统主要由管理员层、连接池、密钥中心、各分布式数据存储中心组成的区块链网络结构,共识中心以及数据交互系统组成。
图1 区块链腐蚀监测系统架构
系统管理人员对收集的监测数据进行操作时,都会进行数字签名,确保数据的可追溯性。分布式数据存储中心将监测数据块和监测元数据块上传到区块链并记录至分布式账本,以确保数据完整且不被篡改。
软件系统加入改进的PBFT算法,通过共识中心、密钥中心、区块链分布式账本技术来实现数据安全与共识,使用搭载数据交互系统的分布式数据存储中心来构建和维护区块链分布式账本。区块链的网络架构由腐蚀监测节点组成,按照功能划分为3种节点,一为嵌入传感器的数据采集节点,二为数据汇聚节点——无线网关,三为分布式数据存储中心。其中,数据采集节点数量庞大,需要高效快捷简单的数据传输过程,故不参与区块链网络架构的搭建;无线网关作为普通节点;分布式数据存储中心作为共识节点,它是参与区块链共识网络架构的主要节点。普通节点只同步区块链账本,不参与记账。普通节点先根据节点ID对数据进行数字签名,再提交给共识节点,并将其打包封装成为监测数据块和监测元数据块。主节点发出请求并将所有的监测元数据块通过共识机制发布至区块链分布式帐本。
如图2所示,监测数据块与监测元数据块以管理员ID作为公钥,可在其中便捷地查看腐蚀监测系统中的数据。
图2 腐蚀监测数据的数据结构
1) 监测数据块详述
a) 时间戳:唯一标识每一时刻;
b) 监测节点ID:嵌入传感器的数据采集节点的ID;
c) 网关ID:无线网关的ID;
d) 数据描述:对于数据的类型和用途进行描述;
e) 原始数据:腐蚀监测数据的原始数据文件。
2) 监测元数据块详述
a) 里维斯特-沙米尔-阿德曼密码系统(Rivest-Shamir-Adleman,简称RSA)加密:数据文件采用RSA来进行加密,该算法是非对称加密算法中的一种,用来保证上链数据的隐私性。
b) 文件存储路径:为了减少区块链分布式账本的数据量,对于上链的元数据块不保存原始数据,而是对存储数据文件路径采用RSA算法加密。未经过管理员授权的用户只能对文件数据进行查看,不能修改。
1.1 改进的PBFT算法
经典的PBFT共识算法工作流程如图3所示。每次共识过程可以分为5个阶段,即请求、预准备、准备、确认和执行【11】。该过程由客户端发起请求消息,由主节点来启动全网的共识机制,副节点则通过信息交换和比对校验来达成共识。如式(1)所示,通信过程中网络带宽会随着节点数量的增多而急遽减小,在大量节点通信中,易造成系统的不安全性和过度的网络时延。
图3 PBFT共识算法工作流程
BandWidth=N·(N-1)·Blockchain
(1)
式中:BandWidth——网络带宽,bps;
N——共识过程中节点个数;
Blockchain——区块链中数据的传输速度,bps。
因此,在腐蚀监测系统中,采用改进的PBFT算法来解决这一问题。由于系统单独设计了安全保障模块,不涉及视图排序以及进一步验证提交信息与接收到的其他节点的广播信息是否一致的问题,故删除确认阶段。在节点之间的共识过程中,面对宕机和恶意节点的数据伪造等情况,设置消息最大时间等待机制。在发布广播准备消息之后,若最大等待时间内未收到来自其他主体的准备消息或确认消息,则丢弃该请求消息,并请求重发。该算法缩短了主体之间达到共识的时间,而对于副节点在较大的区块链网络中可能引发区块链分叉的问题,可以采用概率验证方案解决【12】。这样将有效地提高系统中消息传输的速率,缩短系统在信息传输过程中的时延。
传统分布式的PBFT算法采用投票机制选举出主节点,虽然投票机制可以加强系统的可靠性【13-15】,但此方式会加大算法的通信复杂度。在本研究系统中,将重新定义PBFT主节点的选举规则,即在节点加入系统时,采用信任管理机制【16-17】,对PBFT算法的共识节点进行信任度评判,以减少腐蚀监测数据在共识过程中受错误节点的影响。同时,使用分布式计算的改进信任网络对等模型(Peer Trust)与信誉系统(PTCTM)综合信任决策模型【18-19】对共识网络中每个节点的可信性进行度量,以便有效识别和抵御恶意节点的攻击,保障共识网络的安全和内部存储数据的可靠。
节点的信誉值采用Peer Trust模型中的公式进行计算,见式(2)和式(3)。
(2)
式中:T(u,w)——节点w通过计算的信誉值是u;
I(u)——节点u与网络中其他节点交易的次数;
s(u,i)——节点p(u,i)对节点u第i次交易的满意程度评分;
p(u,i),p(u,j)——分别为节点u在第i次和第j次交易的节点标记;
sim(p(u,i),w),sim(p(u,j),w)——计算节点p(u,i)和节点p(u,j)与节点w的相似度,用以衡量节点之间的信誉度。
sim(v,w)=
(3)
式中:I(x,y),I(x,w),I(x,v)——分别表示在窗口时间内节点x与节点y、节点w和节点v交易的总次数;
s(x,i)——节点p(x,i)对节点x第i次交易的满意程度评分;
IJS(v,w)——与节点v和节点w都进行过交易的节点集合。
在PTCTM信誉系统中,节点的评价指标扩展为五元等级评价并加上了3个数字特征(期望值、熵和超熵),以便全面地反映节点的信任情况;对于节点的摇摆行为,采用函数进行衰减处理,如式(4)所示。经上述处理后,通过信誉值排序选取信誉值最高的节点加入到共识网络中。因此,网络中的节点具有更高的信誉稳定性,降低了下一次共识过程中出现恶意节点的概率。
(4)
式中:T(u)——节点u当前信誉值;
α——惩罚参数,一般情况取大于1的数值;
Δ——通过实验获得可信任节点不确定因子的上界概率;
λ——不确定因子。
其中
(5)
1.2 数据交互系统
本研究提出了一种基于行为监测的数据交互方式。该方式通过交易过程中的序列号对分布式账本进行监控,并识别分布式存储中心管理员的操作权限,从而避免了外部第三方机构以及恶意攻击者对分布式存储中心数据的直接操作行为。
2 腐蚀监测数据存储方案
在腐蚀监测系统中,对分布式数据中心的数据共享、存储、校验和源头可追溯性问题的研究一直都是重点。数据中心的访问一直都受到严格的权限控制,一方面,由于数据的安全十分重要,数据只能在系统管理人员内部共享;另一方面,若数据因受到恶意攻击、窃取、丢失或篡改等,无法进行恢复而导致最终的预警方案误判,则将造成大量的人力和物力损耗。鉴于此,设计了改进的PBFT算法的腐蚀监测数据存储方案,对数据的安全性和可信度进行保障。
2.1 数据发布与存储
密钥中心采用RSA非对称加密算法,对数据包进行加密,私钥在管理员个人手中,用于腐蚀监测数据解密和签名。使用消息最大时间等待机制,确保数据时效性,若未在规定时间内接收到数据包,则进行选择重传。发布中心将间隔时间内收到的数据封装成块,在区块链网络成功共识后,通过数据交互系统将数据记录至分布式账本。具体的数据存储过程如图4所示。
图4 数据发布与共识过程
2.2 访问控制
区块链的共识账本所有人都能查看,而管理员查询各项数据并对其进行操作时,也需频繁访问数据存储中心,这就会使访问者在访问数据中心时出现效率低和时延问题。为了解决上述问题,本系统提供了访问连接池,使访问者在短时间内能够快捷地对数据存储中心的数据进行读取。
3 系统安全性和可靠性验证
3.1 实验准备
实验测试环境为Windows10操作系统,处理器为Intel(R)Core(TM)i7-8550U,RAM为12 GB,显卡为NVIDIA GeForce MX15,内存大小为2 GB。
3.2 安全性分析
本研究采用改进的PBFT算法并加入信任管理机制来保证系统中数据的安全性,下面从防篡改性、可靠性、稳定性以及网络攻击等方面分析系统的安全性保障。
3.2.1 数据加密、防篡改
采取如下措施对数据进行加密并防止篡改:对存储在系统中的数据进行密钥加密;在监测元数据块中存储时间戳、存储路径和加密数据的Hash值;数据访问操作中隐藏存储路径;区块链交易过程中都进行数字签名;当所有节点达成共识后再上传至区块链。数据的加密和区块链的共识机制可以保障交易数据的安全性和一致性。
3.2.2 算法可靠性与稳定性
对传统PBFT算法和改进PBFT算法进行测试比较,采用平均响应时间(MRT)和响应95%网络请求(TP95)来反映系统提供服务的可靠性,如图5~图7所示。由图7测试数据可以看出:改进PBFT算法的平均响应时间优于传统PBFT算法。
图5 传统PBFT算法的MRT与TP95响应时间
图6 改进PBFT算法的MRT与TP95响应时间
图7 传统PBFT算法与改进PBFT共识算法的MRT对比
算法的稳定性可以通过系统吞吐量测试来体现。测试采用峰组并发,设置用户数600,用户加入压力测试的间隔时间为1 s。通过控制变量来进行实验,测试PoW(Proof of Work)、PoS(Proof of Stake)、DPoS(Delegated Proof of Stake)、传统PBFT以及改进PBFT算法的吞吐量。
经典共识算法吞吐量对比见图8。传统PBFT算法与改进PBFT算法吞吐量对比见图9。由图8可见,PBFT共识算法在大量用户并发时,性能表现明显优于PoW、PoS以及DPoS共识算法。在图9所示的大部分时间段中,改进PBFT算法吞吐量高于传统的PBFT算法。由此可以得出改进PBFT算法更加稳定的结论。
图8 经典共识算法吞吐量对比
图9 传统PBFT算法与改进PBFT算法吞吐量对比
4 结论
针对石化运输腐蚀监测系统,本文设计了腐蚀监测的数据共享系统架构,提出了基于信任机制和数据交互系统的改进PBFT算法。改进的算法通过信誉值的计算以及在区块链网络中所有主体达成最终共识来实现数据的安全性、可靠性和一致性,能够有效地帮助系统进行安全存储和数据操作。仿真测试的结果显示,改进PBFT算法拥有更高的吞吐率和更快的响应速率。