APP下载

基于联盟链的泛在电力物联网数据存储方案

2022-10-01张利华张赣哲万源华

计算机工程与设计 2022年9期
关键词:共识分布式加密

张利华,张赣哲,曹 宇,万源华,郑 琛

(1.华东交通大学 软件学院,江西 南昌 330013;2.华东交通大学 电气与自动化工程学院,江西 南昌 330013)

0 引 言

泛在电力物联网(ubiquitous power internet of things,UPIoT)是物联网技术在电力系统中的应用,随着泛在电力物联网的持续发展,未来的UPIoT设备数量将呈指数级增长[1],当面临着数以亿计的海量终端设备接入和传输数据时,由于电力数据价值的增长,UPIoT设备将会成为某些恶意用户攻击的对象[2];云存储方式导致服务器负荷过大,少部分的中心节点存储了海量的数据,由于缺少备份的数据,保证不了数据的安全性[3];UPIoT中各类传感器无法对用户的隐私数据做到完全保密,不具备抵抗诸如拒绝服务攻击等的隐私保护能力[4]。

数据量级从最初的GB、TB逐渐发展到PB(1024 TB)或EB(1 000 000 TB)甚至更高[5]。如何安全且高效的对PB或EB级别的数据进行存储成为UPIoT发展的一个重要难题。

1 相关研究

由于UPIoT的快速发展,集中式的数据存储模式难以应对日益多样化的数据,数据存储模式也由集中式向分布式转变[6,7]。针对HBase数据库查询灵活性低的问题,王德文等[8]提出优化行键设计,构造二级索引,提高变电站设备状态监测数据检索的灵活性。但是,随着索引文件的增加,更多的存储空间会被这些索引文件占用。在云存储环境下,非法用户获得对电子记录的控制权时,在云中存储的数据很容易被复制和篡改,这将给电子记录的所有者造成无法弥补的损失。

随着区块链技术的不断发展,已经有许多的学者对数据如何安全存储进行研究。文献[9]采用区块链技术来对电力数据进行安全存储,提出了一种基于区块链的多级加密电力营销数据存储机制,但是随着节点数目的增多,系统的存储效率会降低。文献[10]提出了一种基于区块链与边缘计算的物联网数据管理架构来支持分布式的物联网数据管理,可以为物联网数据提供分布式存储和访问控制,通过引入边缘计算,解决了区块链系统的可扩展性瓶颈问题。文献[11]实现了一个3层架构的区块链模型TBchain(three-tier architecture blockchain),通过分割区块链,将其中一部分锁定在更高级别区块链的区块中用以提高区块链的可伸缩性,以提高区块链中交易的吞吐量。通过TBchain将一部分交易存储在本地,增加了区块链的存储容量的可扩展性。文献[12]设计了一个充电交易数据存储方案,在电动汽车充电平台中利用区块链技术选定若干充电站作为数据中心节点。用户对交易后的个人数据进行加密用来控制数据的使用权,每个数据中心节点都使用一致性机制来对加密数据进行去中心化同步存储,能实现安全的数据存储。文献[10]与文献[11]都是采用增加区块链的可扩展性进而提高存储容量,文献[12]是通过加密控制数据使用权达到数据的安全有效存储,但是都不能实现既安全又高效地存储数据。

本方案将UPIoT感知层传输到平台层的数据进行链上与链下的混合存储,链下先使用加密算法将原始数据加密成密文,再将这些密文存放到数据库中,链上用来存放数据所对应的索引值与存储IP地址,运用改进的Hot-Stuff共识算法来形成统一的分布式数据账本,通过Key-Value键值对模型,实现数据的安全存储与查询。

本文的主要贡献如下:

(1)针对海量数据的安全存储问题,提出了一种基于联盟链的UPIoT数据存储方案。

(2)通过认证协议建立起用户和设备端之间的双向可追溯,防止恶意用户造成数据的泄露,保障了所有者数据的安全可靠。

(3)引入一种信任管理机制,确保参与共识的节点可靠,采用Hot-Stuff共识算法提高分布式一致性算法的效率,实现了快速响应,同时具备高吞吐和低时延的特性,又运用签名算法来保证物联网区块链中的高层次安全。

2 系统框架

所提出的数据存储框架如图1所示,UPIoT中海量数据被各类传感器所感知,经由网络层的控制网关进入联盟链平台上的服务器。在平台层,区块链技术被用来存储和处理这些数据[13]。实现了中心节点数据在平台层的备份,避免了中心节点故障时对整个网络的重大影响。限制了存储在联盟链上的数据,只存储数据的哈希值,然后对数据进行加密并存储在链下数据库中。系统框架主要包括UPIoT设备、网关、联盟链和链下数据库。

图1 系统框架

(1)UPIoT设备

UPIoT设备[14]主要包括部署在电气设备、输电线路和附属设施中的各种传感器和智能电表。如温度、湿度、声音和红外传感器,还有一些传感器可以获取GIS局部放电、绕组变形和超声等数据。

(2)网关

网关负责交易管理,以及转发网络中终端发起的交易,验证账本中新交易的合法性,维护统一账本。它具有强大的计算能力和较大的存储空间。

(3)联盟链

联盟链是一个具有不信任节点的半封闭生态交易网络。它需要授权才能加入和退出,是一个组织内部使用的区块链,需要提前指定几个节点作为记账人。每个区块的交易由所有预先选定的记账人决定。其它节点可以交易,但它们没有记账权限。由于电力设备泛在网本质上是一个集中分布式网络,联盟链保留了一些集中控制的功能[15],且信息处理功能和扩展性强。所以在本次设计中,选择了部分集中的联盟链。

(4)链下数据库

所用的链下数据库Redis是一个非关系数据库(NoSQL数据库),是一个Key-Vaule型数据库[16]。它的主要特点是具有极高的并发读写性能。它能以最快的速度每秒处理100 000多个读写操作,适合于高并发的情况。

3 方案描述

将联盟链应用到UPIoT数据存储的场景之中,提出基于联盟链的UPIoT数据存储模型,用联盟链平台替代原先的云平台。该模型的数据存储主要由两部分组成:一是链下数据库,它存储大部分数据;二是联盟链,它存储数据的索引值并为分布式存储数据库提供系统安全支撑。

主要包括以下流程,UPIoT设备感知到的各类数据存储在联盟链平台上和Redis数据库中,用户可以对这些数据进行访问和管理,存储架构如图2所示。

图2 UPIoT设备数据存储架构

3.1 认证协议

建立个人实体身份与接入设备身份的映射关系,实现用户(User)与设备端(Device)的双向可追溯性验证,防止恶意节点接入。首先,描述了用户和设备端之间基于证书的认证协议。

(1)身份验证初始化

步骤1 用户U和设备端D持有他们的证书CertU和CertD。 证书具有以下数据结构

CertU={IDU,KUpub,DateU,Issuer,SigCA(·)}

(1)

CertD={IDD,KDpub,DateD,Issuer,SigCA(·)}

(2)

其中,ID是设备或用户的身份信息,Kpub是公钥,Date是证书发布的日期,Issuer是发行人,SigCA是证书的签名。

步骤2 U选择一个随机整数rU, 1≤rU≤n-1, 其中G是基点,并且计算

QU=rUG

(3)

步骤3 D选择一个随机整数rD, 1≤rD≤n-1, 其中G是基点,并且计算

QD=rDG

(4)

(2)D验证U

步骤1 用户U通过KDpub对CertU加密,如下所示

CU=EKDpub(CertU)

(5)

步骤2 U然后将QU和CU传递给设备端D。

步骤3 D然后计算

KDU=rDQU=rDrUG

(6)

步骤4 一旦D接收到QU和CU, 则D通过KDU验证CertU的有效性;如果验证正确,则表明CertU是由U发出的。

(3)U验证D

步骤1 设备端D通过KUpub对CertD加密,如下所示

CD=EKUpub(CertD)

(7)

步骤2 D然后将QD和CD传递给用户U。

步骤3 U然后计算

KUD=rUQD=rUrDG

(8)

步骤4 一旦U接收到QD和CD, 则U通过KUD验证CertD的有效性;如果验证正确,则表明CertD是由D发出的。

事实上,很容易看出KUD=rUrDG=rDrUG=KDU, 这就是一个会话密钥。

3.2 改进的Hot-Stuff共识算法

由于联盟链是一种分布式、去中心化的链式结构,必须有共识机制来对交易进行验证以及对产生的区块验证和打包,最后才能形成一个统一的分布式账本。在电力物联网联盟链的场景中,共识节点没有主观恶意动机。只有网络出现故障,或者通信中断,才会出现拜占庭节点。本方案所用到的共识机制为改进的Hot-Stuff算法,Hot-Stuff算法[17,18]是一种PBFT的改进算法,它将PBFT中的准备和承诺阶段合并成一个阶段,能够在很大程度上提升内部共识的效率。

不同于PBFT的网状通信网络拓扑,Hot-Stuff是星形通信网络拓扑,即每次通信都依靠主节点,所以主节点的选取至关重要。在Hot-Stuff中,每个视图只有一个主节点,主节点是以轮转的方式交替更换,一旦主节点出现问题,由备份节点发起视图转换功能。由于泛在电力物联网中的大多数设备为低功耗设备,如传感器,无法承担共识任务,它是一种资源受限的节点,不具备参与联盟链网络分布式共识的能力。而对于有些计算能力和存储能力强的节点,如网关,可以承担共识任务,充当共识节点,它们不仅可以进行数据存储交易,执行共识算法,还可以为数据拥有者提供存储空间以存储数据。所以可以将设备分为两类,一类是共识节点,另一类是其它节点。

为了减小电力数据在共识过程中受到故障节点的影响,必须先对参与共识的节点进行可靠性考查,用百分数来对节点进行量化与评估。如果节点发生错误的次数越多,则说明它发生故障的概率越大,那么它的信任度越低,可靠性就越差,在下一阶段被选为共识节点的概率就越小。

一个设备出现多次故障的时间间隔x是服从指数分布的,所以采用指数分布来构建一段时间内节点的信任值。

系统采用先进的监测技术监测节点Ni在一小段时间t内发生故障的次数fi,则每个节点中的λi=fi/t, 然后,为了避免偶然性,我们可以通过概率密度函数或概率分布函数求出在一大段时间T内节点Ni发生故障的概率

(9)

最后,每个节点Ni的信任度TNi=1/PNi×100%。 通过对节点进行这样的处理之后,可以选取出稳定可靠的主节点,避免频繁的进行视图更换,降低了通信复杂度。

分布式共识达成过程如下:

(1)客户端发送交易请求消息m至网络中的节点,包括主节点和其它备份节点。

(2)主节点收到客户端上传的请求消息m,赋予消息序列号n,计算得到预准备消息 (pre-prepare,H(m),n,v), 其中H(·) 是单向哈希函数,v代表的是此时的视图(view),主节点将预准备消息发送给其它备份节点。

(3)备份节点收到预准备消息后,验证H(m) 的合法性,若验证通过,则备份节点计算准备消息 (pre-prepare,H(m),n,v) 并将其在全网广播。同时,所有节点收集准备消息,如果它们的数量大于或等于2f+1个,则将其组成准备证书。

(4)如果在准备阶段中,节点收集到准备消息并生成了准备证书,那么节点将计算承诺消息 (commit,n,v) 并广播,将消息m放到本地日志中。如果合法的承诺消息数量大于或等于2f+1个,则将其组成承诺证书,至此消息m完成最终确认。

(5)主节点将交易记录打包成区块并添加到联盟链中,备份节点验证区块并将区块同步到联盟链。

为了解决数据存储中高层次的数据安全问题,当客户端向认可节点提交高级安全建议时,系统启动签名算法。客户端将提议消息m提交给认可节点Pi(1≤i≤n) 和管理节点PM。

y=gxmodp

(10)

其中,公钥为y,私钥为x,将y发送给管理节点PM。

步骤2 对于消息m,首先随机选取整数k∈[1,p-2], 然后计算

r=gkmodp

(11)

s=(h(m)-xr)k-1mod(p-1)

(12)

则m的签名为 (r,s), 其中h(·) 为Hash函数。将 (r,s) 发送给管理节点PM。

步骤3 管理节点要验证以下条件是否满足

yrrs=gh(m)modp

(13)

如果上式成立,则 (r,s) 是消息m的有效签名;反之,则是无效签名。

3.3 数据存储

电力物联网联盟链的交易流程如图3所示。

图3 电力物联网联盟链交易流程

UPIoT设备终端或网关发起新的数据存储交易,加密算法和数据签名确保数据不可被篡改,交易请求会触发预先部署在区块链上的智能合约,然后在P2P网络上进行交易的广播,共识机制会验证交易并记账,产生新的区块,在P2P网络中广播验证结果,最后网内各节点验证该区块内数据无误后加入本地账户。

通过可信计算对主要数据进行加密和存储,实现数据的安全存储,并通过可信计算验证系统在数据存储中的完整性。数据区块需要加密的原因是联盟链是一个去中心化的系统,所有参与的节点都可以检查链上的内容[19]。使用参数xc,f∈{0,1} 表示数据文件fi∈F是否会存储在共识节点ci上,其中共识节点ci∈C。 则数据文件在共识节点的存储情况表示为

(14)

则存储在共识节点ci处的数据文件份数为

Ωi,|F|=xi,1+xi,2+…+xi,|F|

(15)

为了防止存储的数据文件丢失,数据文件fj可以在多个节点备份,则fj的副本数量为

Ω|C|,j=x1,j+x2,j+…+x|C|,j

(16)

用户请求访问数据必须先经过身份认证,为了确保个人隐私保护和信息安全,所提方案先将原始数据加密成密文再进行存储,所用到的数据加密算法是密钥长度为192 bit 的对称加密算法AES[20]。

4 安全性分析

针对UPIoT感知层设备所采集的海量数据信息,这些数据信息涉及到用户的个人隐私[21],需要对其进行安全性分析,数据安全包括数据的机密性、可用性和完整性。

(1)数据机密性分析。方案通过AES加密算法对原始的UPIoT数据进行加密,使数据以密文的形式进行传输与存储,数据保密意味着数据只对授权方公开[22],未授权者短时间内无法得知数据内容,可以更有效的对数据进行保护,因此可以保证数据的机密性。

(2)数据可用性分析。数据可用性与授权用户能否随时随地访问数据有关,区块链网络上有许多备份节点,这些备份节点可以保证单个系统发生故障时,数据可恢复。

(3)数据完整性分析。数据完整性是在数据的整个生命周期中维护并保证数据的准确性和一致性[23]。数据完整性验证过程描述如下:

当数据所有者(data owner,DO)需要验证存储在联盟区块链中的数据的完整性时。首先,UPIoT设备生成不同大小的数据块(DataBlock),在每个数据块生成后,然后将其上传到区块链平台(blockchain platform,BCP)。DO使用本地加密库获取数据块的哈希值,UPIoT设备上的数据所有者应用程序(data owner application,DOA)在本地加密哈希(数据块),然后使用唯一的数据块ID写入数据完整性服务(data integrity service,DIS),稍后可以使用该ID查询加密的Hash(DataObject)。在DOA将数据块上传到BCP后,数据块应该存储在与数据块哈希值相同的数据块ID中。如果BCP有数据块的另一个对象ID,BCP需要发回对象ID,DOA在数据块ID和BCP中的对象ID之间建立连接。将对象ID标识为BCP中存储的数据块的标识。

UPIoT设备上的DOA或由UPIoT设备以外的其它机器托管的DOA需要验证数据集完整性时,使用该数据集中数据块的一些对象ID来挑战BCP。BCP使用对象ID计算相应数据块的哈希值并将其返回给DOA。在接收到BCP的反馈后,DOA使用连接到对象ID的块ID来查询DIS并得到数据块的加密散列,DOA对加密后的数据块哈希进行解密,并与BCP的反馈进行比较。

5 实验及分析

5.1 实验准备

实验环境:4台PC机搭建基于联盟链的多级分布式系统,每台PC机的配置均为32 GB RAM和Intel i5处理器,操作系统为Windows 10企业版64位。同时,众多类型的UPIoT设备采用笔记本电脑来模拟,实验平台由基于以太坊的Solidity语言来实现,系统模型中存储的数据均为普通的文档数据。同时,借助IPFS实现本文提出的链上与链下混合存储的机制。

5.2 实验评估

将所提方案与文献[8]以及文献[9]数据存储方案进行3方面的对比,一是CPU的能耗;二是节点连接耗时;三是数据吞吐量。将这3个作为性能指标来具体评估所提出的方案。为了能更好地模拟出在UPIoT环境下本文所提出的数据存储模型,实验选用了2、4、6、8、10、12个节点。通过实验得到图4、图5和图6。

图4 CPU能耗对比

图5 节点连接耗时对比

图6 系统吞吐量的对比

CPU的能耗与节点个数的关系如图4所示,通过增加节点的数量来监测节点CPU的能耗情况,由图4可以看出,在12节点处,文献[8]方案的CPU能耗为0.08 kW·h,文献[9]为0.075 kW·h,而本文所提方案的CPU能耗为0.07 kW·h,这说明相比于文献[8]与文献[9]所提方案,采用本方案的存储机制CPU能耗更低,因此计算开销也更小。

节点连接耗时与节点个数的关系如图5所示,节点连接耗时反映出共识速率,通过图5可以发现,节点数量较少时,3种方案的节点连接耗时差异不大,当节点数量变多,节点连接耗时变长,比如在节点数量为10时,文献[8]的节点连接耗时为50 ms,文献[9]为40 ms,而本方案为33 ms,与文献[8]以及文献[9]所提方案对比连接耗时更少,这意味着共识速率越快。

图6是系统吞吐量与节点个数之间的关系,由图6可以看出,随着节点数目的增多,3种方案的系统吞吐量都随之增加,在2节点到6节点之间,曲线比较陡峭,此时增速最快。在节点数量为6时,文献[8]的系统吞吐量为100 tx/s,文献[9]为130 tx/s,本方案为140 tx/s。而在6节点之后,曲线趋于平缓,增速较慢。这说明3种方案在处理少量节点都有着较高的效率,但随着节点数量的增加,存储的效率会降低。在相同节点处,本文所提方案达到的吞吐量最高,这表明本方案与其它两种方案相比,存储的效率得到了改进。

6 结束语

针对UPIoT中海量数据的存储问题,采用分布式数据存储方式,将联盟链技术与之相结合,提出了先加密数据,采用链下和链上混合存储的方案,使数据以分散的方式安全存储,解决了数据集中存储的潜在安全风险,保证了UPIoT中数据的安全存储。区块链以较小的成本开销实现了数据的分布式安全存储,对泛在电力物联网的发展产生深远影响,下一步的研究方向可以针对具体的泛在电力物联网应用场景来对本方案进行改进和优化。

猜你喜欢

共识分布式加密
基于RTDS的分布式光伏并网建模研究
一种新型离散忆阻混沌系统及其图像加密应用
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
基于预处理MUSIC算法的分布式阵列DOA估计
加密与解密
DES 对称加密和解密算法的安全性应用
基于DDS的分布式三维协同仿真研究
“慢养孩子”应成社会普遍共识