张利华 万源华 付东辉
1(华东交通大学软件学院 江西 南昌 330000)
2(华东交通大学电气与自动化工程学院 江西 南昌 330000)
智能电网是一种智能化的新型电网,相比传统电网,智能电网具有智能化程度与安全性高、交互性好、环境友好,以及可以实现供应商与用户之间的双向通信等突出优点。随着智能电网和网络通信的大力发展,智能电网实现了与用户的双向通信,但也带来了诸多安全威胁。为了保证网络信息的安全,人们还需要对智能电网的数据安全采取有效的保护措施。
智能电网的用电数据关系到用户的隐私和信息的安全,确保用电记录数据的隐私安全既是社会道德的责任,也是法律的硬性要求。数据匿名技术能够保护用电数据的安全,针对数据隐私保护问题,国内外已经提出了许多关于数据隐私保护的技术。k-匿名技术[1]是通过创建匿名数据集从而使每个敏感信息和剩下的k-1个记录拥有不可区分性。与k-匿名类似的延伸有t-closeness[2],该技术是对敏感信息进行重新分布从而实现隐私保护;同样还有L-多样性[3],它对敏感信息的隐私保护方法是针对敏感数据使用尽可能多的数据集。相关研究证实了只需提供少量高维度的数据或者数据点,上述方法实现的匿名数据集就很可能被解匿名。其他的隐私保护方法还有同态加密[4],加密敏感隐私数据并允许任何计算运行在密文上;差分隐私[5],该技术是通过增加噪声来起到保护隐私的作用。
区块链技术是比特币的底层核心技术。一个区块链系统是由一批分布(在全球)的节点组成的,其中每个节点都是一台自主的设备(计算机)。系统存在的目的是为了维护一个分布式的账本。该账本由一个接一个的数据区块(block)通过有序连接组合成一个链条,这个账本被称为区块链。系统内的任何一个节点都可以拥有整条区块链上完整的数据。区块链技术应用非常广泛,近几年有研究人员将其应用在智能电网中。
针对智能电网用电数据存储的研究,国内外有不少学者采用不同的技术来保证其数据存储的安全性。张少敏等[6]针对智能电网的数据安全问题提出了无证书环签密方案,采用无证书签密的方式保护用户的用电数据安全,但是该方案依然存在过于中心化的问题。传统的智能电网用电数据存储普遍采用集中化模式,通过创建愈来愈坚固的墙来保证数据安全,例如采取更复杂的加密方案,加强多因子认证控制等。但是一旦敌手黑进了系统,系统所有数据就会被泄露出去,存在着单点失败难题。因此,需要依靠可信第三方机构的诚实性。Zyskind等[7]提议应用区块链技术来保护数据存储和访问控制管理。该解决方案将加密的数据存储在受信任的第三方托管服务中,并将事件日志记录在区块链上,但仍存在数据泄漏的风险,并且未实现去中心化。Azaria等[8]提出基于区块链的数据共享系统,通过分布式记录管理系统处理相关数据,提供给矿工汇总的权限并向簿记员奖励数据,然而数据使用效率不高。吴振铨等[9]针对智能电网的用电数据安全和共享问题做出深入研究,方案采用了区块链技术,但随着数据的不断增长,区块链的存储容量将受到限制。
云存储的主要显著特点是集成度很高、快速、应用范围广泛,在云存储的应用过程中,最重要的一个环节就是对大数据的存储,与传统数据存储系统相比,云存储的数据存储更加复杂多变,相较于文献[9]数据存储系统成本会大范围减少。本文结合区块链技术和云存储技术,提出一种基于区块链的用电数据存储方案。通过实用拜占庭协议实现网络节点的共识,访问控制机制可实现用电数据信息的共享,使用区块链存储有关用电量数据的公共信息,其真实数据被加密并存储在数据库或云中,方便有效地实现了敏感电力数据的存储和信息的共享,大大减少了系统的计算开销。
本文提出一个基于区块链的用电数据存储方案(PDSB)。PDSB方案利用区块链的加密算法、点对点网络传输技术、共识机制等网络技术来保证用电数据的安全存储和共享。用电数据存储链(EDSC)结合区块链和链下云存储两种技术来实现用电数据的安全存储和共享,其体系结构如图1所示。
图1 EDSC链体系结构
EDSC链体系结构主要由发电方、用户、电网和云服务提供商构成,电网负责给用户提供相关ID、账户编号,电网或其他机构可以有偿使用用电数据。EDSC链接收两种不同类型的交易,即数据存储和访问控制,并且用户匿名参与交易。由于区块链上的数据信息公开,所以区块链上公共账本上不会出现敏感的用电数据信息。考虑到区块链上的存储容量容易受到限制[10],PDSB方案创新性地将用电数据的重要隐私数据信息保存在链下的云存储中,区块链在EDSC链体系中起到对云存储重要数据的引用作用。
在PDSB方案中,云存储通过网络计算、集群文件系统和分层存储等现有技术,借助硬件/软件将网络中的大量存储设备集成在一起,并为调用和存储数据提供标准的存储接口。与传统存储方法相比,云存储的出现使得人们可以以更低的成本享受几乎无限的存储空间,而不是购买昂贵的存储设备。图2为云存储系统架构图。
图2 云存储系统架构
在云存储系统中,包括四个部分,分别是访问层、接口层、管理层和存储层。首先,访问层加密用户数据信息,通过API接口将其传送到服务管理器;服务管理器(即基础管理层)对数据信息进行一系列加工,将其保存在存储层;存储层负责压缩和删除冗余文件来节约系统成本,从而提高存储空间使用率。
PDSB方案中按照区块链的分层结构(如图3)给出用户用EDSC链各层的设计,分层结构由数据层、网络层、共识层、应用层组成。
图3 EDSC链的分层结构
在PDSB方案中各个加入其中的交易商可以作为网络节点,他们负责向全网读取用户的用电数据信息,同时共同维护着全网的数据库,EDSC链的数据块结构如图4所示。管理节点和普通节点均为计算节点,在基于区块链的用电数据存储系统中,会将用电数据信息进行运算加工产生一种数据结构,用电数据区块分别包含了4个内容:区块ID,证据区块头部信息,用电数据详情,区块保全用电数据总数。
图4 EDSC链的数据块结构
将用电数据的信息摘要和用电数据在云存储中的具体位置信息存储在EDSC链的数据层中,并将各个区块按照时间顺序连接成一条区块链。创世区块由用电数据存储系统产生,新产生的区块经过全网节点的验证后被加入到区块链中,一旦数据加入到区块链上,系统将永久保存。
在EDSC链中每个区块中加入时间戳来保证区块按照时序进行连接,用电数据信息经过哈希函数的运算可以使其不被篡改,然后采用公钥加密方式验证身份认证,所有技术进行整合确保了EDSC链的安全。EDSC链的交易结构如图5所示。
图5 EDSC链的交易数据结构
在EDSC链交易过程中,交易类型字段决定交易类型并由其标识,指示节点采用不同的规则来验证交易是否有效。在用电数据存储交易中,用户重要的敏感用电数据存储在区块链下的云存储中,全部以密文形式存储,而区块链只存储用户公开可用的数据及其资源的简要总结,用户相关数据信息的引用和原始数据的哈希值存储在区块链。在用电数据存储交易中,数据生产者将元数据data、用电记录值M和数据签名一起写入区块链{M;data;Sig(M;data)}。访问控制交易时,用电数据拥有者将主体对资源的权限写入区块链中,URI为资源,而pko为主体用数据使用者的公钥,用访问对象公钥pko对用电数据解密密钥k进行加密。随后加上有效期和签名,如:{URI;permission;pko;expiration;Sig(URI;permission;pko);Epko(k)},其中:expiration为时间戳;Epko(k)为pko对k加密。当撤销其所有权限时,表明被授予的权限permission为空集。区块链掌握着链下用电数据云存储的管理权限,控制着用户的访问权限。
EDSC链网络层是一个实现网络中各个节点之间相互通信的P2P网络。网络中的任何一个节点均为平等的,各个节点都能够产生新的信息同时也能够接收相关信息,各个节点共同维护一个公共账本来达到通信的一致性。
在PDSB方案中,网络中的任何一个节点都能产生一个新区块,然后节点将产生区块的信息向全网进行广播,其他节点收到相关信息后将对其进行验证,如果验证通过则继续转发。网络节点通过共识机制验证相关信息,一旦新区块被大部分节点认可后,新产生的区块将加入到这条区块链上。普通节点的产生通过管理节点对新加入节点的验证,图6为节点认证协议流程。
PDSB方案中电网控制中心为管理节点,新节点可以是科研机构或云服务提供商或其他合法机构,普通节点是经过管理节点验证通过后的有效节点。网络中如果有新节点申请加入网络,需要通过管理节点的验证,验证通过后将新节点的信息广播到其他节点上,其他节点收到新节点信息后将其存储起来,通过共识验证后决定新节点是否可以加入网络,加入网络后的新节点保全网络信息。
共识层是区块链的核心技术,包括共识机制和共识算法。共识层可以使区块链网络中的分布式节点达到共识。EDSC链采用实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)机制[11]来保证分布式账本的一致性。
在智能电网EDSC链系统中,包含智能电网传感器感知节点(Sensor Node,SN)和数据采集基站(DS)。智能电网EDSC链可以采用实用拜占庭(PBFT)算法共识机制进行区块共识。PBFT算法适用于异步拜占庭容错,主要结论是n≥3f+1,其中:n表示系统中参与共识的总节点数;f表示系统在共识过程中所允许出现的故障节点数。
在共识节点总数为n的系统中,如果故障节点不多于f个,则认为共识结果是可接受的。具体共识过程如图7所示,其中:DSi(i=0,1,2,…,n)表示采集基站;SNi表示采集基站DSi管理范围内的传感器感知节点。SNi将采集的监测数据发送给DSi,DSi将用电数据处理后在DS之间竞争写入数据区块的权限,假设在本轮共识中DS0获得了写入权限,那么DS0就成为本轮共识的唯一主节点,主节点DS0负责将新数据区块写入当前区块链。
图7 拜占庭算法
EDSC链预选节点共识过程描述如下:
(1) 主节点广播区块阶段,主节点DS0将数据区块、新数据区块的哈希值和其数字签名广播至其从节点以备查验。
(2) 从节点验证区块阶段,每个从节点对主节点发来的数据区块和数字签名进行验证,根据排序模拟执行这些交易数据并向全网广播。
(3) 从节点比较与确认阶段,各节点汇总整理其他节点发来的交易结果和哈希摘要。
(4) 主节点反馈阶段,主节点整理所有从节点发送的消息。如果收到2f+1条commit消息,即可提交新区块和各从节点的审计结果到本地的区块链和状态数据库[12]。同时,将得到验证的新数据区块附上主节点的数字签名广播至从节点。自此,该数据区块将以时间先后的顺序存储到EDSC链中。
假如主节点在汇总过程中发现有至少f+1个从节点不接受主节点发送的数据区块和哈希摘要,主节点将分析和校验所有从节点的审计结果,主节点可重新发送数据区块给所有的从节点进行再一次校验。如果接受主节点审计结果的从节点数量仍大于等于f+1,系统可重新选择主节点,再次进行共识计算,直至满足生产数据区块的要求。
在EDSC链中,分别有用电数据的发布、用电数据的存储、用电数据的共享。
2.4.1用电数据发布
用户在电网控制中心注册身份时,控制中心会为该用户产生相应的ID、账户编号等用户数据(M)。当产生用电数据时,随即控制中心将为相关用电数据生成哈希,然后将用电数据的哈希、用电数据的摘要(Digest)通过发行方的私钥(Sk)进行签名,最后将其发布在EDSC链上。通过对称密钥(k)的方式对用电数据进行加密[13],采用用户的公钥(Pk)对加密密钥进行加密,然后将其一并发送给用户,详细过程如算法1所示。
算法1用电数据发布
输入:M。
输出:用电数据交易。
Begin
生成一个用电数据M;
产生一个需保存在EDSC链上的数据{Digest;H(M);Sig(Digest|H(M))}将其广播至网络;
使用对称密钥对初始用电数据信息与哈希值签名后的值进行加密处理,使用用户的公钥进行加密得到信息{Enck(Digest|M|H(M)|Sig(Digest|M|H(M)));Enc(k)}后一并发给用户;
end
2.4.2用电数据存储
电网控制中心将用电数据发送给用户,用户验证数据签名并用私钥解密用电数据的加密密钥,同时真实用电数据和签名也被解密出来,最后把用电数据和签名用新生成的加密密钥进行加密并将其存放在链下云存储中保存起来,具体过程如算法2所示。
算法2用电数据存储
输入:加密后的用电数据{Enck(Digest|M|H(M)|Sig(Digest|M|H(M)));Enc(k)}。
输出:用电数据存储的位置。
Begin
用户用私钥解密Enc(k)得到对称密钥k;
利用k解密Digest、M、H(M)、Sig(Digest|M|H(M));
利用公钥验证签名是否正确;
if True
通过M计算得到其哈希值将其与H(M)作比较;
if 哈希值一致
用电数据真实;
else
将其丢弃;
end
else
将其丢弃;
if 数据正确
加密用电数据及其签名并存储在云存储中,标记存储位置;
end
end
2.4.3用电数据共享
通过授权后的用电数据会把共享数据的使用权限和使用期限以及在云存储的位置信息的解密密钥一并写入区块链中,然后云存储管理端会根据此信息来设置访问控制[14]方案,详细过程如算法3所示。
算法3用电数据共享
输入:请求用户的公钥及其用电数据。
输出:生成访问控制交易。
Begin
定位用电数据在云存储中的位置URI及其对应的加密密钥k;
产生的访问控制交易中对应信息写入该交易
{URI;perm;pko;expiration;Sig(URI;perm;pko);Epko(k)}
向用户用电数据存储链网络广播该交易;
end
在随机预言模型下,利用该方案中的PBFT共识算法证明PDSB方案的正确性。
定理1随机预言模型下,假设存在若干个节点可以进行欺骗和共谋,对数据可以进行篡改,那么本文方案中的共识算法可以有效地解决该难题。
证明在区块链计算过程中为了阻断节点的共谋和欺骗,加入了管理节点和节点认证机制[15]。采用节点认证机制,使得管理节点向网络广播注册的新节点的认证信息。为了防止恶意节点共谋,因此管理节点需要通过分区计算节点选举,可以将不作为的管理节点重新选举被其他合格的节点所替换[16]。这样,可以保证每个参与节点的可信度和数量,保证共识节点的临界值的作用。在一个由n个节点组成的共识网络中,提供拥有的f=(n-1)/3容错率,该算法有很好的可用性和很强的安全性,并且对任何网络环境均适用。由于发送者的签名包含在节点所请求的信息中,恶意节点将不能伪造该请求,并且恶意节点只能试图将系统的状态倒退到过去,导致系统内部的分叉,从而使得在区块链的某一高度处有两条链成为可能。假设在共识网络中,共识节点分为三个部分,如R1、R2、F,即R=R1∪R2∪F,且R1∩R2=∅,R1∩F=∅。R1、R2都是一组诚实的共识节点,只有集合中的节点可以相互通信。假设这组恶意节点是F,F的节点可以与整个网络中的任何节点通信。如果F希望系统出现分叉,那么需要在与R1达成共识并同时释放该块之后,在不联系R2的情况下达成第二个共识,然后撤销R1与该区块的共识。满足上述的条件,需要:|R1|+|F|≥n-f,且|R2|+|F|≥n-f。当在情况最坏时,有|F|=f,此时恶意节点的个数上升为系统中所能承受的最大值,上述关系即列为|R1|≥n-2f,|R2|+|F|≥n-2f。两式相加可得|R1|+|R2|≥2n-4f,化简可得n≤3f。由已知f=(n-1)/3可得n≤n-1,假设不成立,因此得证系统在容错范围内无法被“分叉”,同时,证明了该系统保证网络中的任何节点能够共同维护唯一被认可的EDSC链,从而起到了防篡改的作用。
建立一个由10台运行Linux操作系统的计算机仿真平台,每台计算机参数如下:8 GB内存,i5- 4590 CPU和HD Graphics 4600显卡,Linux系统版本是Ubuntu 16.04。将每台计算机分别看作一个网络节点进行测试。在Anaconda环境中利用Jupter Notebook软件进行仿真实验。Jupter Notebook软件的操作界面如图8所示。
图8 Jupter Notebook操作界面
在联盟链网络中选取10个节点,对不同数量的节点分别测试,对比计算机CPU耗能,比较各个方案的性能。
PDSB方案将用户少量的重要数据提取存储在各个网络节点中,其他的数据假设存在云存储中(由于设备有限,所以该方案的大批量的用电数据作暂时删除处理,删除数据假设存放在云存储中),文献[9]保存完整用电数据存储在各个网络节点上。PDSB方案和文献[9]方案的理论测试对比如图9所示。
图9 CPU能耗对比
随着网络节点数量的增加,文献[9]的节点计算开销逐步增加,本文方案相较于文献[9]网络节点的计算开销大幅降低。在联盟链环境中,选择若干个网络节点进行性能测试。实验结果表明,PDSB方案在计算开销上有较好的改善。
同时PDSB方案采用文献[17]中的攻击模型来分析区块链潜在的被攻击风险,图10为恶意节点攻击成功率。
图10 恶意节点攻击成功率
假设w为网络恶意节点伪造区块链的概率,α、β为整数,r是诚实节点产生区块链的概率,wn是恶意节点控制全网n个节点的概率。则wn的计算如式(1)所示。
(1)
正常节点与恶意节点区块数量差距的规律满足泊松分布概率密度,即期望值:
(2)
攻击者节点攻击成功的概率P为:
(3)
设定w的值为0.2、0.4和0.6进行测试,如图10所示,随着正常节点与伪造节点的数量增长,恶意节点攻击成功的概率P急剧下降。诚实节点和恶意节点数之差超过10个,由此可以得出恶意节点攻击的概率几乎为零。
本文方案是一个新近提出的基于区块链的用电数据云存储方案,该方案采用PBFT共识机制达成网络节点的共识。
现有智能电网用电数据的保护都是基于密码学的安全性设计的,无论是基于大数据还是基于云平台,都不可避免地会遭受数据被恶意篡改等安全问题。EDSC链基于区块链本身的数据结构特点辅以密码学技术对智能电网用电数据展开设计,下面从机密性、完整性、防篡改、不依赖可信第三方(已修改、区块链特性)、计算开销等方面性能进行对比,如表1所示。
表1 方案比较
从特性对比可以看出,本文提出的PDSB方案具有一定的优势。
比特币虽然很快被人们所淡忘,但是它背后的区块链技术却受到各国科研机构的关注,从一个不成熟的技术到现在的逐渐成熟。本文巧妙地结合了区块链技术和云存储技术,提出一个基于区块链的用电数据云存储方案。该方案可以有效地保护用电数据的安全性,其不依赖可信第三方、无可信中心的设计也使得该方案具有很强的灵活性,同时大大降低了节点之间的计算开销。该方案还有很多不足的地方,如在现有的智能电网中的具体实施可能会遇到一些问题和挑战。本文对区块链技术在用电数据的安全存储这一应用展开了探索,希望可以对后续的相关研究提供一些启发和思路。