基于区块链的电力数据安全共享研究
2022-11-25程晗蕾
程晗蕾,鲁 静,齐 荣
(远光软件股份有限公司,广东 珠海 519085)
0 引言
随着信息技术的高速发展,电网逐步实现智能化,形成智能电网,使电力系统在运行过程中的“电力流、信息流、业务流”得以集中管控。
电力数据在采集、存储、流转及使用过程中往往会面临一系列的安全问题。2018-09-13,国家能源局发布《关于加强电力行业网络安全工作的指导意见》,对加强电力企业数据安全保护、支持网络安全自主创新与安全可控等方面提出了要求。
1 智能电网边缘数据管理现状
在智能电网中,电力公司根据大量边缘终端采集设备(如智能终端、传感器、芯片、智能电表、信号采集器等)实时采集到的用户电量数据和电网监控数据,调整电网运行状态。
智能电表将采集到的电量、电价数据传输给电力用户用电信息采集系统及MIS系统后,由其进行中心化归集、整理、挖掘、分析,再反馈给其他电力管理系统来改善电力交易质量。然而,通常这些边缘传感节点的计算能力和资源存储能力有限,易遭受DDoS攻击。这种中心化的电力数据存储和共享模式,存在多个数据安全问题。
(1) 数据面临单点故障。当前电力数据管控仍是集中式的,智能电网系统存在数据中心这类可信中心节点。一旦中心服务器失效,有可能造成数据全部丢失,且难以进行完整性恢复。
(2) 数据易遭受重发攻击。数据在传输过程中,任一环节都存在数据被恶意篡改和窃取的可能性,使数据的真实性遭到质疑。攻击者可能运用非法手段截获正在传输的数据,然后伪造该数据并重发给电网公司或用户,导致数据机密性不可控,甚至使电力交易双方之间可能遭受经济损失。
(3) 隐私信息泄露。由于边缘终端采集节点桥接用户和智能电网为了能够及时响应用户,通常会存储一些敏感信息,包括用户分时电力消耗信息、用户物理身份标识、电网监控及调用信息等。这些高价值的敏感数据是网络攻击者集中攻击的对象。
(4) 数据无法安全管控。当前电力业务较为繁杂,且各系统存在“数据孤岛”,相关主体在处理业务时,电力数据跨组织、跨部门的交叉使用现象屡见不鲜。这种情况下,电力公司往往很难追溯越权访问、下载或篡改数据等不合规行为。此外,目前电子数据审计记录依然存在无痕篡改的可能性,无法完全保障多方之间的电力数据共享行为被全周期、实时监控,且每一次的访问授权操作也无法做到有迹可循。
传统互联网技术不能很好解决上述问题,因此,有必要运用新技术构建去中心化的电力数据存储和共享机制,保障智能电网的安全运行。
2 区块链技术
比特币是区块链技术的首个成功应用,最早于2008年由化名为“中本聪”的学者在论文《比特币:一种点对点电子现金系统》中提出。在比特币网络中,无需第三方中间机构参与,交易双方可自信任地完成点对点加密货币交易。从2009-01-03比特币创世区块诞生至今,比特币系统在无人管控下长期稳定运行十余年,区块链作为其底层支撑技术逐渐受到全球学术界和工业界的广泛关注。
区块链本质上是一个去中心化的分布式账本,并由多个分散节点严格遵照一定的共识规则来共同维护更新。每个账本都是将数据区块由时间戳链接而成的链式数据结构,并以密码学方式保证其不可篡改性和不可伪造性。
每个区块可包含多条数据或交易。区块由区块头和区块体两部分组成。区块头中包含当前区块的目标哈希值、区块版本号、前一个区块的哈希、随机数、默克尔树根、当前区块高度及时间戳等信息。区块体中包含该区块的全部交易。
由于区块始终通过区块头的哈希引用到前一个区块,且区块哈希是区块中全部交易的默克尔根节点哈希值,因此,前一个区块的交易中任一微小变动都会导致整条链发生改变,且很容易检测到变化。因此,数据一旦分布式上链,便不可篡改。任何人都可以对账本进行核查,但不存在单一用户可以对它进行控制。
根据节点是否能自由加入或退出区块链网络参与记账,将区块链划分为公有链、私有链和联盟链。
(1) 公有链。普遍应用于数字货币交易,最具有代表性的是比特币和以太坊。它们的区块链网络完全开放,任何用户和组织可匿名加入分布式网络参与交易和竞争新区块的记账权,链上数据全局可见,但记账性能较低,每笔交易确认时间较长。
(2) 私有链。与公有链相反,对参与节点具有严格的身份准入限制,数据写入和访问权限由单个组织的运营者完全控制,偏弱中心化的网络,但数据或交易达成共识时间较多,记账效率更高。
(3) 联盟链。介于公有链和私有链之间,可实现“多中心化”,是企业级区块链应用中最常应用的分布式网络架构。它允许多个组织作为联盟成员协同记账,并仅允许特定组织加入该网络。尽管每个组织都拥有全量账本,但仅能写入/读取与自身相关的数据,其他链上数据需授权才可见,具有很强的隐私保护机制,更多适用于不同组织之间的B2B交易。相较于公有链,联盟链的参与记账节点数量有限,可以更快达成一致性共识,数据上链的吞吐量更高。
3 安全存储与共享实施方案
3.1 能源联盟链
在智能电网中,由数据采集基站通过有线或无线传感网络将边缘终端设备采集的电力交易和监控数据进行整合,再中继给邻近的数据采集基站。能源联盟链体系涉及4层架构,即数据感知层、网络传输层、能源区块链层和分布式应用层,并提出跨区域的数据采集基站作为全节点构建能源联盟链。
(1) 数据感知层。通过电网各个环节的边缘设备节点来采集、读取和传输充电、用电、电流、设备运行状态等信息。
(2) 网络传输层。网络中的节点之间通过Gossip协议来进行状态同步及数据接入和传输。
(3) 能源区块链层。负责对多源数据进行可信分布式存储,并对请求数据访问的节点进行身份校验与智能合约授权。
(4) 分布式应用层。依托建设的能源区块链产品,分析和处理电力数据,并输出决策,为企业内部和外部用户提供优质电力运营服务。
数据采集基站负责缓存不同边缘设备节点采集到的电力数据、执行共识验证流程、校验缓存数据完整性等工作。每个基站均保存了一个完整的联盟分布式账本,但仅对与自己相关的数据拥有权限。
在微电网内,多个边缘终端采集设备作为轻量节点与邻近的数据采集基站组成边缘能源私有链。这些边缘采集节点无需保存所属链中所有数据和交易内容,只需存储区块头与自己相关的交易细节,并通过Merkle证明来判断交易是否在当前的区块链交易列表中。
3.2 边缘数据安全存储流程
本模型提出边缘智能终端将采集到的数据进行加密,并将本地元数据经加密后上传至所属能源私有链安全存储,而关联的全量数据和元数据索引则经附近的数据采集基站运行共识验证后,执行智能电网去中心化的安全可靠数据存储。
(1) 区块链系统初始化和密钥生成。系统首先选择一个安全参数λ,计算需公开的初始化参数pp,秘密保存的主密钥x(x∈Z*q)。智能电网产生的电力数据流拥有哈希标识符ID,为了保障节点的身份合法性,本系统通过PKI证书体系为节点提供CA证书。对于每个采集节点而言,以其哈希地址、数据流ID、时间戳、CA证书为输入,输出独一无二的通用唯一识别码(Universally Unique Identifier,UUID),并以此作为节点身份ID被登记上链。通过该UUDI不能查验到采集终端的地理位置等任何隐私信息。输入UUID,根据密钥生成函数,可获得该采集节点的公私钥对。
(2) 数据加密和签名。利用国密算法加密电力数据得到密文,并对其使用对应采集节点的私钥进行数字签名。签名密文经Merkle运算得到哈希值,以区块头形式分布式存储于所属的私有链中,而密文则同步上传至邻近的数据采集基站。该基站根据接收到的密文数据生成哈希索引。
(3) 编译访问策略。电力数据实际拥有者(即某一边缘采集节点)将数据访问策略编译为智能合约,并上传安装至数据采集基站节点上,最终在Docker容器中运行。当第三方节点/用户发送的数据访问请求满足合约中预设条件(包括需要数据共享范围、共享时间段、共享次数、能否复制或下载、能否增添新内容等),则自动触发合约执行,从而向该节点开放数据访问接口。每一次访问将以交易形式记录于区块链上,可被公开审计。
(4) 数据区块的共识过程。考虑到边缘采集节点通常还具有执行电力交易和账户资金转账功能,使用DPoS共识协议来完成电力元数据的上链。通过集体投票来选举出记账节点,并由该节点完成数据打包出块。投票权重与每个采集节点在全网上链的数据量和电力交易量成正比,激励更多节点选出最有效的记账人。
3.3 执行合约化的数据共享
每个数据采集基站节点根据从不同采集节点中继获得电力数据,以表格的形式编排,并可指定多列为索引字段,创建区域数据共享资源目录。数据请求者可使用一个或多个关键词进行查询,进而获取匹配的记录。
3.3.1 基于智能合约的数据共享流程
当第三方节点/用户发起数据访问请求时,区块链会员管理机制对该请求者执行UUID身份认证。若身份合法,则匹配相应的数据共享策略,同时将共享请求发送至共享策略合约并触发预置条件,每次触发时都会自动生成共享令牌(Token)。该共享令牌是由随机校验码和对应合约发布者公钥封装组成,并由数据采集基站节点进行数字签名。该令牌作为请求交易确认发回智能合约。
数据采集基站节点接收到共享令牌,并携带该令牌访问该数据的第三方节点/用户。该节点用数据采集基站节点的公钥对共享令牌进行签名验证,得到随机校验码和合约发布者的公钥,验证其正确性。验证通过后,数据所有者根据数据采集基站节点的公钥解密出授权策略,策略合约里会封装数据访问操作权限,包括需要数据共享范围、共享时段、共享次数、能否复制或下载、能否增添新内容等。
根据合约里的访问约束条件,对第三方节点/用户提供的证明进行核验。若所有的条件和证明都合规、合理,则将核验通过结果返回给共享策略合约。共享策略合约根据核验结果自动放行或阻断数据采集基站节点的共享数据API接口,完成电力数据的可控安全共享。
3.3.2 数据共享交易的共识上链
方案中访问策略编译为智能合约,当代码合约完成后,以交易形式广播给其他节点共识验证,再存储于分布式账本中。
采用Raft一致性协议算法来完成共享交易的共识上链。首先从众多的数据采集基站节点中取出领导节点,再由该节点通知其他节点同步记账。具体选举过程如下。
(1) 初始状态下,集群中所有的数据采集基站节点处于跟随者状态。
(2) 当其中一个跟随者节点在选举时间内未收到领导节点的心跳消息,则转化为候选者状态。
(3) 候选者节点向其他跟随者节点发出要求选举自己的投票请求。
(4) 当某一候选节点接收到集群中超过半数的投票,则其身份转换为领导者状态。
(5) 成为领导者之后,领导节点将定时向跟随节点同步日志通知。跟随节点遵从其指令将新的日志内容追加到各自日志中。
(6) 大多数跟随节点将交易记录写入账本后,确认追加成功,发出确认成功信息。
(7) 在下一个心跳中,领导节点会通知所有跟随节点更新确认的记账内容。对于每个新的交易记录,都会重复上述过程。
每一次的授权和访问行为经过共识验证后,都会以交易哈希形式记录于区块链上,不可篡改,可实时追溯。
4 安全性能分析
(1) 所有节点的身份都是以企业级CA系统签发的CA证书作为输入条件生成。通过该身份,可以使节点对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网络中信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性。
(2) 将访问策略编译为智能合约,能够实现对电力数据的自主访问控制。同时,将合约编译权利与合约校验权利分离给边缘采集节点(数据实际拥有者)和数据采集基站(数据资源提供者),能够实现对数据的安全访问,防止非法串谋泄露。
(3) 利用区块链对数据执行分布式安全存储,这种存储方法不依赖于传统数据中心存储,避免了传统中心式的单节点故障。节点之间通过端—端的方式来完成数据传输和访问授权。
(4) 采用Raft共识算法,具有较高的容错性,共识效率较高,且实现易工程化。Raft容错性高于经典PBFT共识,具有更高的安全性。研究学者尝试将PBFT与Raft两种协议融合为RBFT共识协议,该共识协议的通信开销为4.06×104比特,相较于经典PBFT通信开销(3.51×106比特)降低了98.8 %。随着网络节点的增多,该共识协议通信开销越大,并能保证高共识效率,其系统每秒交互量约为经典PBFT的300 %~400 %,更适用于对系统交互要求更高的联盟链应用场景。
5 结束语
随着智能电网中接入的边缘智能终端设备日益增多,传统中心化的数据存储和共享模式难以满足多主体之间的实时交互需求。区块链作为一种分布式数据账本技术能够实现节点之间端—端的数据安全共享。跨网的双层多链的数据存储系统将数据分布式存储于第一层的能源私有链上,实现数据安全存储,同时将数据访问控制合约部署于第二层的能源联盟链上,自动执行安全有效的数据共享访问。在未来工作中,还将开展仿真实验,以求通过量化分析进一步验证本方案的逻辑性。