一种基于区块链的环境监测的可信管理

2023-03-04 06:37沈苏彬
计算机技术与发展 2023年2期
关键词:私钥监测数据共识

刘 江,沈苏彬

(1.南京邮电大学 物联网学院,江苏 南京 210046;2.南京邮电大学 通信与网络技术国家工程研究中心,江苏 南京 210046)

0 引 言

自1950年以来,全球人口的快速增长造成严重的环境问题[1]。虽然环保组织面对环境恶化问题,不断健全环保措施,为保护环境做出巨大的贡献,但是仍然需要更加具有应用价值的环境监测管理的解决方案,建立更加全面的环境监测的管理机制,以促进改善环境污染。

目前,地方环境机构负责管理运作当地的监测系统并承担环境保护的大部分责任,地方机构会实施环境监测,通过对环境数据合理的分析制定相关的策略[2]。但是,这种由地方主管部门维护和运营的中心化管理方式,导致环境监测数据的采集、存储、使用对外界缺乏透明度,外界并不知道监测数据的真实性、完整性[3],不同部门间协同工作困难。因此,缺乏透明度的中心化的环境监管产生的环境监测数据脆弱、易篡改,影响监测数据的可信度,可能导致分析员对环境污染做出不正确的评估[4]。针对此问题,区块链[5]的去中心化[6]、去信任化、不可伪造[7]、数据透明[8]等特点为该文解决环境监测的管理问题提供了解决方案。增加环境监测数据管理的透明度,保证环境监测数据的可信。

该文对现有环境监测的区块链应用技术方案进行了分析,做了以下具有创新性的研究工作:

(1)由于区块链应用更多涉及数据的存储和使用,导致环境监测的区块链应用将区块链作为一类数据库使用,忽略区块链具有密码、安全等相关的技术特征,无法保证数据源上链的真实性。该文将区块链应用于环境监测的信任管理,在保证环境数据共享、透明、不可篡改、可追溯的前提下,提出环境监测数据源的真实性验证机制,保证监测数据源的真实性。此外,目前基于区块链的环境监测的研究,仅仅关注环境相关数据上链存储,往往忽略采集设施的监管。该文提出将采集设备的运行状态信息(如电量状态、开关状态)一同上链存储,提高非现场监管效率,增强监测结果的可信程度。

(2)环境数据是海量的,不及时的处理往往造成数据的堆积甚至丢失,另外部分不合格的环境状况需要实时的应对,尤其是污染源存在急性危害的情况,所以环境问题需要得到高效的处理。为了保证管理效率,通过对现有的共识机制进行研究对比,从理论上选用实用拜占庭容错 (Practical Byzantine Fault Tolerance,PBFT) 机制进行链的构建与更新。但是目前相关的研究比较少,此外,在环境监测这种网络规模应用中,节点数量过多导致PBFT共识算法通信开销过大、延迟高。针对此问题,该文提出基于位置分组的实用拜占庭容错(Practical Byzantine Fault Tolerance based on Location Grouping,LG-PBFT)共识算法,通过组内组间两层共识结构分解共识任务,提高通信效率。

(3)通过以上的研究结果,借助以太坊平台及其智能合约技术,构建仿真实验的方案。通过现有的实验平台模拟数据上链,仿真实验证明了取得的技术研究结论的有效性和实用性。同时,从通信开销、容错能力等方面分析验证LG-PBFT的优越性。

1 相关工作和问题分析

传统的环境监测系统仍然采用关系数据库来存储监测数据,然而这种数据集中控制的方式造成数据的管理缺乏透明度[9]。虽然有关学者已经使用大数据以及云存储技术来改进监控和存储方法[10],但是数据被篡改的问题仍未解决。文献[11-13]提出区块链技术如何用于环境管理,并论述了区块链应用有助于解决全世界关注的环境问题。

EMChain[9]创造让用户与用户、用户与CP直接对接结算的生态圈。EMChain利用区块链的防伪、防篡改特性,记录每一笔交易和用户点击,使各行业的环境监测系统行业上下游链条透明、高效。但是,其无法保证环境数据源上链的真实性。文献[14]提出一种环境监测数据传输方案,利用智能合约对环境监测数据实时分析并对外发布结果。其中,将区块链作为一类数据库使用,缺乏对区块链特有的技术特征的讨论。文献[15]将区块链引入工业领域,结合区块链和物联网两大关键技术,不仅提高了效率、透明度和可视性,还提供了新的商业机会,为工业领域带来商业价值。其未考虑物联网设备在区块链应用中存在的计算和存储能力的局限性。文献[16]通过使用基于私有区块链的安全访问控制进行农业环境监控,为环境监测管理提供一种新颖的远程用户身份验证方案。该方案通过私有区块链访问控制算法授权,并使用超级账本进行应用。此外,方案中使用PBFT共识算法完成共识,但是并未考虑在参与方过多的情况下开销过大的问题。文献[17]利用区块链技术建立水质信息系统,将关键的水质信息上传至区块链,实现链上的信息存取。其中,上链的信息不包括设备本身的状态,本方案认为设备的状态信息是提高非现场监管的关键信息之一。

该文在第2章提出了基于区块链去中心化环境监测的可信管理解决方案,方案中明确区块链应用于环境监测管理存在的一些困难和挑战,即如何保证环境监测数据源的真实性以及如何管理监测数据等相关技术问题需要进一步解决,研究内容如下:

首先,如何界定基于区块链的环境监测的信任管理的操作方与参与方。信任操作对应比特币系统中的“交易”,在环境监测的应用场景中,将“环境监测数据的采集、存储”作为可信管理的信任操作,需要研究定义其数据结构以及处理过程。

其次,如何构建区块。参照比特币中块的构建与形成对环境数据块进行构建。而区块的构建与形成涉及监测数据执行方身份的真实性验证和数据的完整性验证,所以监测数据块中包含数据源所有者和完整性验证相关数据项,以此实现对环境数据的可信管理。

最后,如何通过形成的区块完成链的构建。虽然链结构可以依据比特币系统,但是基于专有链的环境监测的可信管理利用工作量证明机制这类强共识算法进行链的构建与更新,无法及时高效地处理数据,因此,为了保证应用效率,通过对现有的共识机制进行研究对比,选择合适的共识机制完成链的构造与更新。

2 基于区块链的环境监测的可信管理方法

本章的研究内容是根据前文需要解决的理论和技术问题,提出基于区块链环境监测的可信管理方法,分析环境监测应用场景下的需求,对环境监测管理的总体框架、功能、流程等进行研究设计,实现环境监测数据的可信管理。

2.1 环境监测的可信管理的组成

区块链的去中心化、开放、防篡改特性是实现物联网设备采集的环境监测数据真实性和有效性的关键,其去中心化的验证为采集数据的可信管理提供了有效保证。该文明确环境监测可信管理的对象是监测数据,需要对监测数据进行采集、存储、访问。

采集方主要指环境监测设备,它负责获取环境监测数据并上传,主要对水、空气等污染源进行监测,保证环境数据是所在监测点的监测数据。监管方主要指环境管理中涉及的相关方,例如环境监管方、第三方运维机构、司法机构等等,共同参与环境监测数据的正确性评估。它将区块链去中心化的验证与存储方式应用于环境管理,负责收集环境监测数据并进行真实性验证,实现监测数据共通共享。使用方指环境监测数据的需求者,可以通过相关服务平台访问监测数据,或是校验监测数据。

2.2 环境监测的可信管理的功能模型

本节研究一种基于区块链的环境监测的功能管理模型,研究环境监测数据的采集方、监管方、使用方之间的联系和各自的职能,研究基于区块链的环境监测数据的可信采集、可信存储、可信访问及其验证的功能结构。如图1所示,基于区块链环境监测可信管理的功能应用结构模块分成两类,一种是通过虚线表示的实体,主要包括采集方、监管方、使用方等;另一种是实线表示的功能部件,这些功能部件包括:区块链应用控制、区块链应用监管、网络的创建、信任操作的验证、身份注册、区块链的构造等。

该方案依据比特币应用系统,构建环境监测的功能管理模型。在模型中,“采集方”通过“身份注册”功能,获得授权并发现网络中存在的其他节点,加入区块链网络,成为网络中可以被探查的应用存在。“监管方”作为系统的初始运行节点,自身具备可信的身份标识,并提供对采集方上传环境监测数据的验证操作。监管方同时为“使用方”提供环境数据访问服务,满足使用方对环境监测数据的需求。

图1 功能模型示意图

参与方通过“网络的创建”功能发现其他参与方节点、连接对等网络、获得待验证的环境监测数据、广播已验证成功的区块,这个功能对应比特币中对等节点网络的建立。“信任操作的验证”功能指环境监测数据的验证,通过采集方提供环境监测数据结构和约定的验证逻辑,实现环境数据的可信操作,这是区块链构建和更新的前提。监管方通过去中心化的可信操作验证功能实现可信“交易”,完成“区块链的构造”的功能。“区块链的构造”的功能指环境监测数据块和链的形成与更新,参照比特币系统的块和链结构,进行环境数据块和链的结构设计,进而选用共识机制完成链的构建。“区块链应用控制”和“区块链应用监管”保证环境监测应用服务可以被监管,且不会违反隐私保护以及互联网安全的法律法规。

2.3 环境监测数据的可信表示

通过Hash函数SHA-256实现数字签名可以保证消息的完整性。节点在拥有来源于椭圆曲线加密算法公私钥的前提下,使用Hash函数签名并验证消息的完整性[13]。在环境监测的应用场景中,采集方摒弃中心化服务机构,提供可识别的环境监测数据和身份,与此同时监管方作为接收方需要验证监测数据的真实性,也就是需要采集方提供证明,保证环境监测数据是由数据持有方上传的。采集方发送至区块链的交易数据通过加密的方式,可以证明数据的出处,并且不会被篡改。为了保证采集方身份可信,该文设置只有经过授权的采集设备才可以上链存储数据。采集方在注册身份时会拥有自己的公私钥对,将物联网设备厂家的生产标识和公钥相互映射,由此作为参与方的唯一身份标识,将它保存在本地访问控制身份列表中,从而表明该设备已经被授权。而私钥由采集设备保存,不对外公布。本课题可以通过判断采集设备的身份是否存在本地身份列表中,找到对应的公钥验证环境监测数据的真实性。

环境数据采集方会遇到以下问题,如修改设备参数、移动设备采样位置、更改设备工作状态等。环境监测数据除了包含一些常规的环境数据,也可以将一些存在安全隐患且能够获取的数据参数一同打包上传,实时了解设备工作状态,避免问题的产生。因此,环境监测数据结构包括:采集设备的唯一虚拟身份标识(DID)、采集设备的参数(PARA)、环境监测数据结果(Info)、监测位置(GPS)、时间戳(Timestamp)、采集方的数字签名(sign)。

区块链节点的基本功能是维护一个账本,新的数据只能在账本的末尾添加但不会立刻添加,待解决的数据会被定期组成一个块。因此,采集方发送的监测数据不会立刻上链,而是定期地组成区块等待验证。如图2所示,环境监测数据通过监管方的验证生成区块上链,区块包括父块哈希、区块高度、时间戳。块n-1的加密哈希包括在块n内,块n的加密哈希包括在块n+1内,意味着每个块的内容可以经过一条哈希链有序地找到下一个区块,并通过时间戳给区块一个唯一标识,使它们的内容是不可变的。在区块生成过程中,Merkle根哈希值是环境监测数据的哈希记录通过Merkle树的哈希过程产生的。随着时间的流逝,带有时间戳唯一凭证的区块不断生成,将会增强环境监测数据链的安全。

图2 块和链结构

2.4 共识机制

环境监测的区块链应用中,选择适用于环境监测的共识算法是完成环境数据区块链的更新与构建的前提。PBFT算法是Castro和Liskov[18]在1999年提出的,将对等网络中的节点分为主节点和副节点,主节点通过视图编号和节点个数来确定。p=vmod|R|,v指视图编号,p指主节点号,|R|指节点数。客户端负责发送共识请求消息,由主节点作为记账节点生成环境监测数据区块发起共识。副节点负责验证主节点和其他副节点上传的消息,并将最终的执行结果返回客户端。如表1所示,该文对以下共识算法进行对比研究,如工作量证明(Proof of Work,PoW)算法、权益证明(Proof of Stake,PoS)算法、股份授权证明(Delegated Proof of Stake,DPoS)算法。

表1 共识算法对比

PBFT工作流程如图3(a)所示。

(1)请求阶段:客户端上传数据,请求主节点发起共识。

(2)预准备阶段:对等网络中每一个节点收到上传的消息后继续广播,主节点收到共识请求后,为请求数据分配编号,然后发出预准备阶段消息<mess>给各个副节点。其中,pre-pre是共识处于预准备阶段,v是视图编号,n是消息序列号,dig是消息散列值,mess是请求数据。

(3)准备阶段:副节点收到预准备阶段消息后进行验证。验证通过后该节点将会向其他节点发送的准备阶段消息<mess>。其中,pre表示消息处于准备阶段,id是数字签名。同时需要接收来自其他节点的准备消息并验证其合法性。倘若验证收集超过总节点数三分之二的正确消息,则该节点可进入准备状态。

(4)确定阶段:当节点进入准备阶段,可以广播确认消息,进入最终的确定阶段告诉其他节点自己已经处于消息准备阶段。进入准备状态的节点如果能够集齐超过三分之二验证通过的准备阶段消息,表示主节点的提案通过。

(5)回复阶段:副本节点验证提案通过后,给客户端回复消息。一旦收到超过总节点数的三分之一,则说明验证通过,本轮共识结束。

PBFT算法随着节点数的增多,通信次数会呈指数级增长。由于在环境监测的应用场景中,参与共识的节点会形成大规模的网络。为了克服该PBFT共识算法节点数多、通信开销大的问题。在本应用场景下,根据环境监测参与方位置相对分散且固定的特性,提出一种基于位置分组的PBFT共识算法(Practical Byzantine Fault Tolerance based on location grouping,LG-PBFT),改进措施如下:

(1)在参与共识节点位置相对分散且固定的情况下,根据位置将所有的节点分成k个数量均等的小组。每个小组内通过PBFT共识算法达成共识,小组主节点之间也通过PBFT共识达成最终消息的一致性。记账节点在主节点间通过轮换的方式进行选举,以此提高系统的安全性。

(a)PBFT共识流程

LG-PBFT共识算法流程如图3(b)所示。

初始准备阶段:LG-PBFT首先根据共识节点的位置情况,通过区域位置形成初始分组,事先约定初始分组每一个小组节点数量的范围,并且选定各个小组的主节点以及防止主节点故障的备用主节点,每一轮共识需要从所有小组主节点中随机性选出记账节点发起共识。

执行阶段:记账节点将信息分发给各个主节点。首先在组内,小组主节点带领组内副节点进入PBFT共识。其次组内完成共识后,记账节点带领各个小组主节点进入组间PBFT共识。算法通过组内和组间两层共识结构分解共识任务,减少通信开销。

2.5 环境监测数据的真实性验证流程

如图4所示,在初始化阶段,监管方作为区块链的初始节点运行,只有经过授权的采集方才可发布监测数据,采集方注册时会生成自己的公私钥对(PKi,SKi),其中PKi、SKi分别代表设备的公钥、私钥。采集方的唯一标识DID完成注册时会配备其公钥保存至区块链。只有被授权的采集方才可以采集环境监测数据并发布至区块链网络等待验证。

图4 环境监测时序图

采集方运行后,通过网络的创建和维护,可以感知其他节点的存在。采集方负责把自动采集的环境监测数据进行哈希处理获得数字摘要,通过自己的私钥对数字摘要签名,最后将身份、数字摘要、签名以及相关数据一同打包发送至区块链网络。公式如下:

hash=Hash(GPS,Info,para,timestamp)

(1)

sign = SignSKi(hash)

(2)

其中,GPS是环境监测点位,Info是监测数据,para是设备参数,timestamp是监测时间。采集方获得环境监测数据通过Hash计算获得数字摘要hash,并使用自己的私钥对数字摘要签名Sign获得sign。最后采集方将所有的数据项打包,上传至区块链网络等待验证。

真实性验证前提:私钥用于签名,公钥用于解密验证。私钥签名的信息只有公钥可以解密。私钥由持有者保管,公钥对外公布。当数据持有者身份被授权并提供监测数据的身份证明,身份验证通过则监测数据真实。公式如下:

∃x∃y(K(x,y)⟺D(x,S(y,m)))

(3)

∀x(V(x)⟹R(x))

(4)

∃x∃y∃z(K(x,y)∧R(z))

(5)

其中,x、y、z为变元,m为明文,K(x,y)指一对公私钥(x,y),S(y,m)指用私钥y对明文m签名,D(x,s)指用公钥x对密文s解密,V(x)指身份x验证通过,R(x)指身份x确认。公式3、4是验证成立前提。公式3指公钥能够解密私钥加密的内容,表明数据持有者拥有对应私钥验证通过。公式4指身份验证通过可以确认身份是真实的。公式5作为结论说明持有者身份被授权并且有公钥对应的私钥验证通过,数据真实。

监管方探测到采集方发来的监测数据后通过信任操作的验证功能,对环境监测数据进行真实性验证,真实性验证过程主要分为两个部分。首先,验证发送数据的监测设备身份的真实性,提取数据中的身份,并查看身份是否被授权,验证通过后利用身份找出对应的公钥并验证监测数据的完整性。根据前提,真实性验证过程公式如下:

∀x(V(x)⟹R(x))

(6)

V(DID)⟹R(DID)

(7)

R(DID)

(8)

∃x∃y(K(x,y)⟺D(x,S(y,m)))

(9)

K(PKi,SKi)⟺D(PKi,S(SKi,hash))

(10)

K(PKi,SKi)

(11)

K(PKi,SKi)∧R(DID)

(12)

其中,PKi为公钥,SKi为私钥,DID为授权身份。公式7、8通过全称量词消去原则表示只要身份被授权则采集方身份确认。公式10、11通过存在量词消去原则表示若存在公钥可以解密数字签名信息,则这是一对公私钥。公式12表示采集方已经被授权,并且授权的身份携带的私钥与本地保存的公钥是一对公私钥。通过以上推理过程可得数据持有者身份验证通过,持有者拥有该公钥相对应的私钥,数据验证通过,监测数据真实。

在所有参与方节点中按照预定的协议选择主节点发起共识,在交易池中选择一个经过验证的交易被打包到新的区块中。建立新的区块后,用私钥数字签名,并向其他节点发送新的区块和签名,以验证区块中的交易是否有效,并验证指向前区块的哈希指针是否有效。该文采用实用拜占庭容错共识机制,就提出的新区块达成共识,各参加者可以将新区块连接到当前环境数据链的尾部。若交易成功上链,则交易真实可信,最终完成区块链的构造与更新。

环境监测数据的访问者,也可通过上链的数据获得存证编号和原文,若有校验的需求,可以将存证编号和原文上传,通过与上述类似的验证过程获得验证后的结果,实现监测数据的可信访问。

3 仿真实验与模拟

基于第2章的研究结果,本章构建仿真实验的方案。仿真实验主要包括:实验环境搭建、仿真实现、仿真测试与分析。仿真通过选用测试环境,制定测试用例,得出相应的测试结果。与此同时,本课题对优化后的LG-PBFT共识算法从通信开销、容错能力等方面进行性能分析与模拟,验证其优越性。

3.1 测试环境与合约部署

仿真实验环境Intel(R) Pentium(R) Gold G5400 CPU@3.7 GHz,运行内存为 8G,64位操作系统。当前区块链开发平台主要是以太坊平台[19]和Hyperledger Fabric超级账户平台[20]。该文选择了以太坊为开发平台,实验环境是基于Ubuntu18.0.4系统,利用Ganache客户端快速生成一个具有10个节点的本地私有区块链网络。利用Ganache客户端,用Solidity语言编写了智能合约,并借助Truffle框架。用truffle compile命令编译该合约,编译后生成一个扩展名为.json的文件,最后使用truffle migrate命令将智能合约部署到启动的区块链上。

3.2 测试方案与结果分析

环境监测系统运行,智能合约实现采集方填写注册信息完成注册,已经注册授权的身份可以实现环境监测数据上传。采集设备上传的数据通过合约指定的验证逻辑对收到的环境数据进行真实性验证,确定信息中的身份和监测数据都是可信的。如果采集设备身份存在问题或是监测数据被改动,则验证无法通过。针对该环境监测数据可信管理的功能设计的测试用例如表2所示,测试结果如图5所示。

表2 测试用例

图5 智能合约测试结果

上述测试结果说明,环境监测数据在基于区块链的去中心化方式下可以实现监测数据的可信采集和真实性验证,保证了环境监测数据的可信管理。证明了基于区块链环境监测的可信管理方案的有效性和实用性。

3.3 LG-PBFT性能分析

(1)通信开销分析。

通过MATLAB结合上文LG-PBFT的研究对结果进行分析处理。若参与共识节点总数为N,分为k个小组。由记账节点发起共识,将消息发送给所有小组的主节点,主节点间所需要的通信次数记为G,共识通信的三个阶段通信次数记为G1、G2、G3,可得:

G1=k-1

(13)

G2=(k-1)2

(14)

G3=k(k-1)

(15)

G=G1+G2+G3=2k(k-1)

(16)

小组主节点收到信息发起组内共识,每个小组有N/k个节点,组内的共识通信总数记为M,三个阶段的通信次数记为M1、M2、M3,可得:

(17)

(18)

(19)

(20)

若全部节点通过PBFT算法三阶段共识次数记为Q,可得:

Q=2N(N-1)

(21)

由公式16、20、21将PBFT与LG-PBFT的通信次数比记为Z,可得:

(22)

如图6所示,当k=1或N时,PBFT与LG-PBFT通信开销一样,Z=1。若k增大到一个极值点,则小组间的通信开销明显增多。但是总的来说,LG-PBFT的通信开销会小于PBFT。

图6 通信次数对比曲线

(2)容错能力分析。

情况一:若恶意节点均匀分布,这种情况下,LG-PBFT共识算法中的恶意节点占节点总数的1/3。若共识结果正确,则能够容忍的恶意节点数可得如下公式:

(23)

其中,f是能够容忍的恶意节点数量,k是小组数量,N是节点总数。

情况二:若恶意节点是集中在某几个小组,由于小组内使用PBFT共识。只要能够控制超过1/3的主节点,就可以控制最终的结果,控制一个主节点必须控制一个小组内超过1/3的副节点。所以可得公式如下:

(24)

情况三:直接控制主节点,若能直接控制超过1/3的主节点,则直接影响最终的结果。可得公式如下:

(25)

结合以上三种情况分析,三种情况的容错性对比如图7所示。由于LG-PBFT共识算法中主节点的选举是动态轮换的,并且节点位置是均匀分布的,所以在环境监测的应用场景中,排除大面积集中的节点损坏或是被攻击的情况下,仍然可以保持情况一具有较高的容错性。在本课题的应用场景中,设备的损坏具有随机性,表明LG-PBFT共识算法的应用具有优越性。

图7 容错能力对比曲线

4 结束语

针对目前环境监测数据不透明、易篡改等问题,提出了基于区块链的环境监测可信管理方案,通过对环境数据结构、区块和链结构及其构造的研究与设计,解决了环境监测数据源的真实性以及如何管理监测数据等相关技术问题。上述方案首先利用区块链特性,实现去中心化的验证过程,保证了环境采集方获取的数据能够实时上传存证,从而在一个可信的环境下实现环境监测数据的可信管理。其次,上述方案借助以太坊平台通过智能合约技术进行仿真实验,验证了方案的有效性、可行性与正确性。最后,针对本课题选用的PBFT共识算法通信开销过大、高延迟、低吞吐量等问题,提出LG-PBFT共识算法,减少了通信开销,提高了通信效率。但是,如何实现位置上的最优分组,在接下来的工作中,将会对分组的方法进一步研究,以提高系统的共识效率。

猜你喜欢
私钥监测数据共识
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
GSM-R接口监测数据精确地理化方法及应用
一种基于虚拟私钥的OpenSSL与CSP交互方案
GPS异常监测数据的关联负选择分步识别算法
“慢养孩子”应成社会普遍共识