基于区块链的微电网数据安全共享方案
2022-01-14张利华张赣哲陈世宏
张利华,曹 宇,张赣哲,黄 阳,陈世宏
(1.华东交通大学软件学院,南昌 330013;2.华东交通大学电气与自动化工程学院,南昌 330013)
0 概述
随着分布式清洁能源相关技术的日趋成熟完善,推动分布式能源系统在整个能源系统中占比、提高新能源渗透率成为未来世界能源技术的重要发展方向[1]。但由于传统微电网的集中运营管理方式需要通过第三方平台进行数据交换,数据存在被第三方平台复制、保存甚至倒卖等风险,数据资产得不到有效保障,泄露风险高[2]。此外,随着新能源的并网,还给微电网带来诸多挑战:由于智能电表记录的用户数据过于详细,并且其双向通信信道并不安全,一旦被攻击者破获,攻击者就会根据用户的实时用电数据推测并分析用户的日常作息规律,实施盗窃等犯罪行为,给用户造成难以估计的损失[3];普通用户很难获悉智能电表采集的用电数据,另外,科研人员可以利用这些数据进行科学研究,并为供电局每个季度的供电提供参考性意见,提高能源利用率,因此,这些数据拥有巨大的科研价值,但由于信息不透明、数据共享困难造成了数据资源的浪费和“信息孤岛”现象[4];当前微网的这种集中式运营管理方式已经不再适合大规模分布式能源并网,为适应分布式能源的接入并保障数据的安全,微电网的这种集中运营管理方式需要改变[5-6]。
针对以上微电网存在的问题,本文将区块链技术应用于能源数据共享领域,设计一种基于区块链的微电网数据安全共享方案。采用改进的ElGamal加密算法对采集的数据进行加密[7],通过对指数2k进制化,减少迭代次数,提高运行速度,并将打包好的数据区块对外广播,发起共识。在共识阶段,采用积分取代传统代币进行流通[8],规避金融风险,待共识达成后,将数据包存储在链下分布式数据库中,并将其存储地址返回至链上进行存储[9],实现数据的分布式存储,以解决区块链的存储难题,提高数据共享效率。同时,为解决传统权益证明(Proof of Stake,PoS)共识机制容易分叉的问题,对PoS 进行改进,节点在竞争记账权前要抵押部分积分,节点需定期检查最新区块,以防止其分叉。
1 相关研究
对于未涉及区块链技术的能源共享数据研究,文献[10]提出一个基于云的能源管理系统,由于异常检测技术的不足,会使网络和协议变得十分脆弱,系统可能会遭受攻击导致数据泄露、硬件损坏甚至断电,针对这些攻击,该方案也提出了应对措施,但这些措施仅停留在理论层面,并不能完全保证该系统可以抵御攻击;文献[11]提出一种基于密文策略属性的签名加密方案,该方案部分解密过程由第三方服务器完成,系统安全性依赖服务器的安全强度,一旦服务器遭到入侵,用户数据就有可能会泄露;文献[12]提出一个保护隐私的多权限基于属性的智能电网数据共享方案,该方案为保证数据的安全性,牺牲了加密时间,造成加密效率较低。
对于采用区块链技术的其他领域数据共享研究,文献[13]构建一种基于区块链的医疗数据共享模型,该系统将数据存储在中心化的数据库中,并未解决数据的存储问题;文献[14]提出一种基于区块链网络的医疗记录安全存储访问方案,该方案全程采用智能合约,导致系统开销过大。
对于采用区块链技术的能源数据共享研究,文献[15]提出一种基于联盟链的智能电网数据安全存储与共享系统,该系统采用的传统共识机制造成系统算力开销过大,消耗了大量的计算机算力;文献[16]设计一种基于区块链的电池健康数据共享模型,打破了制造商与用户之间的数据访问和共享壁垒,但是其仍存在一定的安全隐患;文献[17]设计一种基于区块链的动力电池数据监控与共享系统,该系统同样采用传统共识机制,致使运行效率低下;文献[18]构建一个解除监管的智能电网公平数据共享的区块链模型,对于服务提供者来说,虽然用户数据对提高其服务质量至关重要,但该模型在利用用户数据的同时引发了隐私保护问题。
综上所述,在已有研究中,区块链在能源领域的数据共享应用还存在空白等问题。针对微电网中智能电表通信信道不安全、数据信息不透明以及微电网集中运营管理的方式等问题,本文利用区块链技术,设计一种基于区块链的微电网数据安全共享方案,在实现用户用电数据隐私保护和数据安全共享的同时,也保证了交易速率。
2 方案架构
区块链按其去中心化程度的高低可以分为公有链、联盟链和私有链[19]。将区块链技术应用于能源领域中,各节点的加入或退出需要经过授权,否则过度开放的系统使各节点可以自由加入或退出,会给系统带来混乱,使管理更加困难。另外,用户的身份也需要实名,这样可以避免一些来历不明的用户给系统带来潜在的威胁。基于此,选用联盟链搭建该系统更加合适。
本文方案主要由智能电表(Smart Meter,SM)、数据采集器(Data Collector,DC)、监督中心(Supervise Center,SC)、分布式数据库(Distributed Database,DD)、联盟链系统(Consortium Blockchain System,CBS)、分布式应用(Distributed Application,DAPP)构成。因此,可以将其分为数据层、监督层、存储层、共识层、应用层共5 层。系统总体架构如图1 所示。
图1 系统的总体架构Fig.1 Overall architecture of the system
系统各部分的功能如下:
1)数据层主要完成对数据的采集清洗和加密并进行打包。每个DC 可以每隔一段时间完成对多块SM 数据的采集,本系统为每个DC 设置的SM 数量上限为5 块,时间间隔为15 min。
2)监督层发挥作用主要是在初始化阶段。用户需要在SC 完成账户注册,并把SM 接入DC。
3)共识层与存储层是该系统的核心。DC 采集的数据经过数据层的处理后,由共识层P2P 网络将数据包进行广播,发起共识,进入共识阶段。
4)存储层的主要任务是存储数据,并将存储索引返回至共识层。待各节点达成共识后,将数据包存储在位于存储层的DD 中,然后将存储地址返回至共识层中的CBS 存储。
5)最上层是应用层,查询者通过DAPP 发起数据访问申请,如果可以通过系统和用户对其身份的验证,则会自动触发智能合约,完成数据的共享。
3 方案设计
3.1 初始化
在初始化阶段主要完成账户注册和将SM 接入DC 两个任务。
账户注册的具体步骤如下:
1)用户利用一种改进的ElGamal 算法产生公钥和私钥。
2)将公钥和用户私人信息,如身份证号、门牌号、身份信息(该系统为每位用户的身份设置为普通家庭用户、政府机关、国网公司、科研学者、在校师生、其他用户)等,发送至SC。
3)SC 收到用户信息对其核查无误后,用SC 的私钥对用户公钥进行加密,形成数字签名sign,并将sign 返回给用户。
4)用户利用自己的公钥和sign 创建账户,其他用户可以用SC 的公钥验证sign 的真实性,从而保证账户的真实性。
将SM 接入DC 需要用户将自己的账户上传至DC,同时从DC 的数据库中下载最新数据。初始化阶段任务如图2 所示。
图2 初始化阶段任务Fig.2 Initialization phase tasks
3.2 数据采集
在用户完成注册并将SM 接入DC 后,用户加入该系统,随后进入数据采集阶段。该系统为每个DC设置的SM 数量上限是5 块,因此DC 中也存储着5 位用户的公钥,DC 对SM 的数据采集间隔设置为15 min,之后将采集来的数据进行清洗压缩,这样可以减小数据包的大小,提高数据质量,随后DC 利用每位用户各自的公钥对数据进行加密。加密过程如下:
1)用户随机选取一个充分大的素数p,然后再选一个整数g,g是p的原根,且1 2)将指数x进行2k进制化,然后计算y=gxmodp,并将y作为自己的公钥,x作为私钥。 3)在利用ElGamal 算法进行加密时,明文m以分组的方式进行加密,分组的长度应该小于lbp比特,用户随机选取一个整数r,1 该方案在对数据进行加密时,采用一种改进的ElGamal 加密算法。传统的加密算法由于指数序列过长,在计算过程中会进行多次迭代,采用幂剩余计算耗时太多,会造成算法运行效率低下。改进的算法通过对指数2k进制化,使其指数序列长度减小,从而减少了迭代次数,提高了运行速度。对指数2k进制化的过程定义为BR()函数,该函数的伪代码如算法1 所示。 算法1BR()函数 该过程只需要做2k次迭代运算,将所得结果存储在表中,该表只需要创建一次即可,在计算加解密求模运算时,直接通过查表就可以获得结果。 在对数据完成清洗压缩加密等操作后,将数据包进行广播,发起共识,进入共识阶段。 目前应用最为广泛的共识机制还是比特币系统所采用的工作证明机制(Proof of Work,PoW),但该机制要求计算大量的哈希会造成算力资源的严重浪费[20]。针对PoW 的缺陷,PoS 既可以保证PoW 共识机制中各节点的竞争力,又能使各节点自身做好优化,还提高了交易速度。因此,PoS 共识机制更适合该系统。但是,由于代币发行严重扰乱了经济金融秩序,因此早在2017 年代币发行在中国已经被禁止[21]。 本文针对传统的PoS 共识机制做出以下3 点改进: 1)用积分来代替代币进行流通,这样既可以规避代币流通的风险,又能通过为新加入的用户发放积分来使其做好自身优化。如果用户本身既可以购电,还可以发电售电,则会获得更多的积分,这就可以鼓励后加入的用户安装清洁能源发电装置,促进清洁能源的推广。 2)由于传统PoS 共识机制容易产生分叉的问题,因此该系统要求每个节点在竞争记账权生成区块前要先抵押一部分积分,而且抵押的积分一定要大于获得记账权奖励的积分,如果节点出现同时在两条链上产生区块,未在最新高度上产生区块等恶意行为,则系统会没收抵押积分,若节点未出现恶意行为,则系统会归还抵押积分。 3)各节点还要定期检查最新区块,检查时间间隔一定要小于最短的积分抵押时间,拒收重组记录过长的区块,这样就可以有效预防分叉问题。 各节点积分的获得遵循以下规则: 1)为鼓励用户加入该系统,系统会在用户注册加入时奖励用户一定的积分。 2)为鼓励用户使用清洁能源,用户在用电的过程中如果购买了清洁能源,系统会发放一部分积分。 3)为普及清洁能源,用户自己生产的清洁能源如果富余,可以将其出售,系统会奖励一定的积分。 4)如果节点通过竞争获得记账权,打包并整理区块,则系统也会奖励积分。 各节点的积分数学模型如式(1)所示: 其中:Ap表示节点通过竞争获得记账权奖励的积分;Ip表示用户加入系统时所获得的积分奖励;Sp表示销售每度清洁能源所获得的积分;Es表示销售的清洁能源电量;Pp表示购买每度清洁能源所获得的积分;Ep表示购买的清洁能源电量;Cp表示执行智能合约查询数据支付的积分。 节点通过竞争获得记账权奖励的积分涉及三部分,即获得记账权奖励的积分、抵押积分以及定期检查最新区块奖励的积分。因此,节点通过竞争获得记账权奖励的积分Ap的数学模型如式(2)所示: 其中:ARp表示获得记账权奖励的积分;Lp表示定期检查最新区块奖励的积分;Mp表示抵押积分;Rp表示返还积分,若节点出现上述恶意行为,则返还积分为零,否则抵押积分与返还积分数量相等;wi表示权重。 每位用户加入系统时所获得的积分奖励并不是完全一致的,系统会根据每位用户的基础设施投入、过往一年时间中每月的平均用电量以及用户过往是否存在电费拖欠等不良信誉情况发放积分。因此,用户加入系统时所获得的积分奖励Ip的数学模型如式(3)所示: 其中:Ii表示基础设施投入;Ae表示过往一年时间里每月的平均用电量;Nr表示用户过往无不良信誉情况系统奖励的积分,若用户存在不良信誉情况,则Nr为零;wi表示权重。 各节点会根据自己所拥有的5 位用户的积分之和来竞争记账权,积分多的节点更有可能获得记账权。获得记账权的节点将加密数据包存储在链下的DD 中,并将存储地址写入区块链,最后系统将会向全网节点进行广播同步数据。数据的存储过程如图3 所示。 图3 数据存储过程Fig.3 Data storage procedure 数据被存储在链下DD 后,若有查询方想查询用户数据,则需要通过DAPP 发起查询请求,随后系统会自动执行智能合约完成数据的共享。在以太坊中,智能合约的运行需要消耗gas[22]。在该方案中,用户可以使用初始化阶段和买卖清洁能源以及节点竞争记账权获得的积分代替gas 进行支付。只有当用户所持积分不小于执行智能合约所耗积分时,查询方才有可能成功访问数据。智能合约的运行流程如图4 所示,伪代码如算法2 所示。 图4 智能合约运行流程Fig.4 Procedure of smart contract operation 算法2智能合约 数据共享的具体过程如下: 1)查询方通过DAPP 发起查询请求,请求的信息包括用户身份、查询目的、数据有效时间等。 2)执行智能合约验证查询方身份,若查询方身份为其他用户,则该类用户只能查询自己的用电数据,否则系统会直接拒绝其查询请求,如若不是,则将查询方的请求信息发送给数据拥有者,若数据拥有者对其身份等请求信息验证通过,则针对查询方的请求信息制定相应的约束条件并将私钥上传,否则,拒绝其查询请求。 3)系统根据链上的存储索引查找链下DD 中存储的加密数据包,根据用户提供的私钥计算m=对其进行解密得到明文m。 4)将数据发送至查询方接入的DC,查询方就可以通过DAPP 下载获得所需数据。 5)如果查询方恰好是数据拥有者,则无需制定约束条件上传私钥,系统会直接根据链上的存储索引查找DD 中的数据包,并将其发送给用户接入的DC,用户通过DAPP 下载数据包后利用自己的私钥解密即可获得所需数据。 6)在完成数据共享的同时还需要对查询方账户积分进行清算。 该方案采用联盟链来搭建系统,利用非对称加密算法对数据进行加密,确保数据传输过程更加安全可靠[23]。针对系统及区块链的安全性,从以下8 个方面进行综合分析: 1)51%攻击 在该方案中,矿工挖矿的成本几乎为零,可以忽略不计。从本质上讲,PoS 共识机制使挖矿者与使用者合二为一,这意味着如果矿工发动51%攻击就需要掌握全网51%的币龄,几乎不可能实现,即使成功发起了51%攻击,PoS 也会使整个区块链P2P 网络不断健壮,而且本身作为全网最大的持币用户,遭受的损失也是最大的。因此,发起51%攻击很难实现。 2)女巫攻击 该方案中每一个新用户加入都需要在SC 中进行账户注册,在通过SC 的身份认证后才可以加入联盟链系统。因此,该方案可以有效防止女巫攻击。 3)无利害关系攻击 该方案对PoS 共识机制做出改进,为其加入惩罚机制,各节点需要抵押一部分积分才有权参与竞争获得记账权,而且抵押积分大于其收益。一旦节点出现在两条链上同时产生区块,未在最新高度上产生区块等恶意行为,系统将不再返还其抵押积分。因此,该方案可以有效预防无利害攻击。 4)长程攻击 该方案要求各节点要定期检查最新区快,而且检查时间间隔小于最短的积分抵押时间与拒收重组记录过长的区块。定期检查最新区块可以使在返还积分的时间段中,肯定包含至少一次检查,则节点不会选择攻击者创建的最长链。因此,该方案可以有效遏制长程攻击。 5)内部攻击 在初始化阶段,用户用SC 发来的数字签名sign和自己的公钥来创建账户,这些都是唯一的。另外,该方案采用的分布式存储也可以阻止系统中的恶意用户假冒其他合法用户身份发起内部攻击。 6)分布式拒绝服务攻击(Distributed Denial of Service,DDoS) 由于该方案使用了非对称加密算法来产生密钥并加密数据,因此若想感染某个节点是非常困难的。另外,区块链系统是分布式结构,即使某个节点出现故障,也不会影响其他节点的正常工作。因此,该方案可以有效防止DDoS 攻击。 7)修改攻击 在该方案中,每一个区块的区块头中都有上一区块的哈希值和当前区块的时间戳,这些可以保证发现数据是否被修改或移除过。因此,修改攻击对该方案无效。 8)共识周期攻击 如果有攻击者发送虚假请求更新共识周期,请求若想生效,则至少需要超过1/2 节点的签名,这种情况发生的概率极低,可以忽略不计。因此,该方案也可以防止共识周期攻击。 本文实验对算法的运行效率、系统开销以及区块链的交易吞吐量TPS(Transaction Per Second)3 个方面进行了测试,可以将其分为3 个实验。通过测试该方案在3 个实验中的表现并与其他方案做对比,可以具体观察该方案的性能表现。 在该实验过程中,采用第三代B+型树莓派(Raspberry Pi,RPi)作为硬件载体模拟节点,将Remix-IDE 作为以太坊智能合约的开发工具,使用Solidity 语言编写程序。该实验所涉及的软件和硬件具体参数如表1 所示。 表1 实验软件和硬件的参数Table 1 Parameters of experimental software and hardware 5.2.1 算法效率 该实验利用迭代次数和改进算法的迭代次数与传统算法的迭代次数之比来衡量算法的运行效率。由于运行效率受算法的指数x的二进制序列长度影响,因此通过改变其序列长度,观察迭代次数及其比值的变化,就可以了解算法的运行效率。算法效率对比实验如图5 所示。 图5 算法效率对比实验结果Fig.5 Experimental results of algorithm efficiency comparison 当指数x的二进制序列长度在100 bit 以上时,传统算法迭代次数曲线增长迅速,而改进算法迭代次数曲线增长缓慢,改进算法与传统算法迭代次数之比最高也不到0.50,改进算法较传统算法效率提高了3 倍。另外,随着序列长度的增加,迭代次数比值曲线呈现下降趋势,而且两条迭代次数曲线的差距越来越大,说明序列长度越大,改进算法的效果越好,运行效率较传统算法越高。 5.2.2 系统开销 由于该系统采用积分取代虚拟代币进行流通,而且在智能合约运行过程中会消耗gas。根据火币网实时数据,假设1gas=0.007 8p。该实验通过运行智能合约一个周期观察其消耗的积分来衡量系统的开销。对比方案选择文献[14]的医疗记录安全存储访问方案、文献[15]的智能电网数据安全存储与共享方案以及文献[16]的电池健康数据共享方案。系统开销对比实验如图6 所示。 图6 不同方案系统开销对比实验结果Fig.6 Experimental results of system overhead comparison of different schemes 文献[14]方案积分消耗在420p 以上,积分消耗最高,这是由于该方案在实现过程中全程采用智能合约的形式,导致系统开销过大。文献[15-16]方案较文献[14]方案积分消耗减少1/2 有余,这是因为两方案均仅在数据共享阶段使用智能合约,因此,积分消耗大幅减少。而本文方案积分消耗不足165p,较文献[14]方案消耗积分大幅减少,对比文献[15-16]方案(170p 以上)也有一些改进,这是由于本文方案将加密数据包存储在链下DD 中,而链上只存储数据存储索引,在进行数据查询时,相较于直接将数据存储在链上的传统方案系统开销更小。因此,本文方案开销相较于其他方案是最少的。 5.2.3 交易吞吐量 区块链的交易吞吐量是指单位时间内完成的交易数量,该实验将区块大小设置为固定值1 MB,通过设置不同的区块生成时间,测试不同时间的交易数量20 次,然后取其平均值并绘制曲线。对比方案同样选择文献[14]的医疗记录安全存储访问方案、文献[15]的智能电网数据安全存储与共享方案以及文献[16]的电池健康数据共享方案。图7 所示为TPS 实验结果对比。 图7 不同方案TPS 对比实验结果Fig.7 Experiment results of TPS comparison of different schemes 所有方案的TPS 均随出块时间的增大而降低,这是由于出块时间增大意味着相同时间内区块链处理的交易数量减少。文献[14]方案表现最差,最高刚超过50 tx/s,这是由于其过多使用智能合约,反而造成系统开销过大,降低了TPS。文献[15]方案最高接近200 tx/s,文献[16]方案最高刚超过250 tx/s,本方案最高可接近300 tx/s,这是由于文献[15-16]方案采用的均是传统的PoW 共识机制,而本文方案在PoS 共识机制的基础上有一定程度的改进。因此,该方案相较于其他方案的TPS 更高。 区块链技术因其去中心化和数据透明可追溯的特点,应用范围已渗透到各行各业。本文设计一个基于区块链的微电网数据安全共享方案,通过改变传统微电网的中心化运营方式,打破“信息孤岛”的困局,保护用户的用电隐私。但目前多数相关区块链技术的应用主要是围绕金融领域展开,这是由于其脱胎于虚拟货币,其核心技术即共识机制多数更适用于金融领域。受此限制,未来若要将区块链技术应用到更多领域,必须对共识机制进行改进,或者研发出更加适合其他领域的共识机制。因此,下一步将对现有的共识机制做出改进,将区块链技术推向更广更深层次的应用领域。3.3 数据存储
3.4 数据共享
4 安全性分析
5 性能评估
5.1 实验部署
5.2 结果分析
6 结束语