基于双联盟链的智能电网数据共享模型
2021-04-20张利华王欣怡胡方舟白甲义
张利华,王欣怡*,胡方舟,黄 阳,白甲义
(1.华东交通大学软件学院,南昌 330013;2.华东交通大学电气与自动化工程学院,南昌 330013)
0 引言
随着智能电网的信息化建设,电力行业在发电、输电、变电、配电、用电和调度等各环节积累了海量数据[1]。例如电源管理单元每年为一个典型电力公司带来近40 TB 的新数据[2]。电力大数据已经成为电力公司的新型资产[3],对电力数据进行研究能促进电力公司的业务管理更加精细、高效。管理并利用好日益庞大的电力数据,成为电网企业亟须解决的问题。
随着互联网技术的高速发展,人们大规模运用数字化手段提升电力数据的存储与共享的效率。现有的电力数据存储与共享方案在不断优化的同时,仍存在以下问题[4-6]:1)电力数据多以区块链结合云服务器的方式存储,云服务器中心化存储存在越权修改、恶意泄露的风险;2)电力数据仅在电力专网中流转,存在信息“孤岛”现象,和电网外研究机构间缺少安全高效的共享渠道;3)数据的可追溯性不强,面临自然灾害、存储主机故障导致数据丢失的风险。
区块链是一种对等网络中各节点遵从特定共识机制的分布式数据库,具有防篡改、可追溯、去中心化的特点[7],区块链技术的逐渐成熟有望解决智能电网数据共享存在的安全性低、可扩展性差等问题。本文基于区块链、星际文件系统(Inter Planetary File System,IPFS)、跨链、代理重加密和安全多方计算等技术,提出以下解决方案:
1)使用分布式文件存储系统IPFS 结合区块链存储电力数据[8],将多重签名公证人跨链技术[9]应用于数据安全共享当中,解决了智能电网数据仅限在内部利用导致的“信息孤岛”现象,尽可能发挥电力数据的价值。
2)使用代理重加密技术解决单节点跨链数据数据共享过程的隐私保护问题[10]。引入全同态加密,在无须解密电力数据密文的情况下,解决智能电网端数据重构问题[11]。
3)将安全多方计算应用于数据共享当中,用以解决多节点跨链数据共享时的隐私保护问题。
1 相关工作
对于电网数据的储存与共享,已有许多学者进行相关研究。与本文相关的研究工作可以归纳为三个方面:
1)数据存储。Zhang等[12]提出了一种基于联盟区块链的安全数据存储与共享系统方案,该方案主要解决集中存储的安全问题,并采用拜占庭容错共识机制对数据进行验证;但该方案没有描述数据如何加密,也没有合理的成本分析。Nizamuddin等[13]提出一种基于区块链的文档共享和版本控制解决方案和框架,使用IPFS 加密存储档案原始数据,利用智能合约触发、追踪每一笔文档共享交易;未考虑在不同的文件管理系统间进行文档安全共享。López 等[14]针对智能移动数据市场多为中央服务器存储,容易受到黑客攻击的问题,提出了一个多层区块链框架,在双方授权的情况下才能进行数据交易;但数据存储于个人云服务或者个人设备中,存在数据滥用的风险。
2)隐私保护。重视数据隐私和安全保护已成为世界性的趋势[15]。Zhou 等[16]提出了一轮通信可验证全同态秘密共享(Fully Homomorphic Non-interactive Verifiable Secret Sharing,FHNVSS)方案,引入非交互式安全多方计算技术,并结合全同态加密技术,实现了对用户的数据秘密共享;但其未考虑数据的安全存储问题。Narayanan 等[17]提出一种安全认证与云端数据共享系统架构,使用SALSA20 加密算法和基于密度的带噪应用程序聚类算法进行加密和数据索引,能解决现有加密方案无法提供适当的数据安全保障的问题;但该方案使用信任中心进行用户数据监管,存在隐私泄露风险。Guo 等[18]基于一种新颖的对称同态加密技术,提出了一种有效的智能网格轻量化聚合方案,保证了用电数据的机密性、完整性和用户隐私;但方案的计算开销随数据量增加成指数级增长,仅适合轻量级电网数据聚合。
3)数据共享。Jiang 等[19]提出一种用于安全云存储的加密数据共享方案(Data Sharing scheme based on Conditional Proxy Broadcast Re-Encryption,CPBRE-DS),利用广播加密实现广播动态数据共享,通过使用代理重加密技术,云服务器直接将加密数据共享给目标用户;但是,广播加密存在密钥管理困难、结合云存储平台使用存在效率低下等问题,且该方案将数据存储在半可信云设备中,存在数据泄露风险。Sun 等[20]提出一种用于云数据共享的代理广播重加密(Proxy Broadcast Re-Encryption,PBRE)技术,通过提出代理广播再加密的概念尝试解决云数据共享问题,能抵抗共谋攻击;但支持用户动态加入或离开共享组,不适合电网环境下的数据共享场景。罗文俊等[21]提出一个基于区块链的电子医疗病例安全共享方案,将分布式密钥生成技术结合基于身份的代理重加密方案,实现了单对用户间加密数据共享;但是该方案未考虑多用户间如何进行数据共享。
为了提高智能电网电力数据共享的安全性、隐私性和可扩展性,解决电网数据信息“孤岛”现象,本文提出基于双联盟链的智能电网数据共享模型(Data Sharing model based on Double Consortium Blockchains in smart grid,DSDCB)。该模型将联盟链结合IPFS 集群高效存储电力数据,使用多重签名公证人实现数据跨链,基于全同态加密、代理重加密、安全多方计算技术,在保证隐私不被泄露的情况下进行数据安全共享。
2 整体框架
2.1 模型框架
DSDCB模型框架如图1所示。
图1 本文模型框架Fig.1 Framework of proposed model
包括以下三个部分:
1)智能电网联盟链(Smart Grid Consortium Blockchain,SGCB)。电网调度中心将数据采集基站采集的电力数据文件加密上传至私有IPFS 集群。上传前,IPFS 自动检测电力文件是否重复以节约宽带,存储未重复电力文件并返回文件指纹。电网调度中心将文件哈希值(Hash)、文件指纹等信息上链存储。使用IPFS 结合联盟链存储的方式减轻了链上数据存储和高频访问的压力[22]。将Hash 与下载文件哈希值对比校验,确保上传文件保存完整未被篡改。
2)多重签名公证人。基于公证人创建投票合约,从智能电网联盟链和数据研究联盟链中选举出一组可信节点作为公证人。公证人调用身份控制合约分别对数据共享双方身份认证后进行签名,当签名数达到预设数量时,公证人根据请求内容通过联盟链和IPFS 集群下载相应电力数据文件密文,使用电网调度中心提供的代理重加密密钥,对密文进行重加密后链下传输电力数据文件,接收者使用自己私钥解密获得电力数据明文,完成数据共享。
3)数据研究联盟链(Data Research Consortium Blockchain,DRCB)。该链节点为政府机关、高校、科研院所等电力数据研究机构。各机构从数据研究联盟链获得IPFS文件指纹、上传节点ID 等信息,从公有IPFS 集群下载相应电力数据文件。
2.2 合约架构
DSDCB 智能合约体系由两部分构成:一部分是数据研究联盟链中区块链数据备份合约(Block Data Backup Contract,BDBC),存储共享的电力数据;另一部分是智能电网联盟链中区块链数据管理合约(Block Data Manage Contract,BDMC),执行电力数据存储与访问请求等相应的合约。BDBC 和BDMC 均包括身份控制合约(Identity Control Contract,ICC)和数据管理合约(Data Manage Contract,DMC),如图2所示。
BDBC 和BDMC 作为全局合约记录其联盟链中所有节点身份标志(NA-ID)、对应公钥(PubKey)、注册时间和对应的ICC与DMC。
BDMC 中ICC 用于节点身份管理,包括公证人创建投票合约(Notary Creation Vote Contract,NCVC)和数据权限控制合约(Data Authority Control Contract,DACC)。其中:NCVC用于选举可信节点作为公证人,DACC 用于电力数据的权限控制。
图2 智能合约架构Fig.2 Architecture of smart contracts
BDMC 中DMC 用于实现电力数据保护、验证、密文处理和共享等业务逻辑,包括数据存储合约(Data Storage Contract,DSC)、数据共享(存储)合约(Date Sharing(Storage)Contract,DSSC)和同态加密合约(Homomorphic Encryption Contract,HEC)。其中,DSC 用于存储电力数据的属性信息,包括电力数据对象的IPFS 文件指纹、Hash、创建时间等。DSSC用于双联盟链之间共享的档案信息,包括电力数据标识(Data-ID)、节点身份标识(NA-ID)和共享时间等。如果DataID 对应的属性DGrade 值为0,则双联盟链内所有节点均可访问;如值≥1,则仅特定节点有权访问。HEC 根据请求对电力数据进行同态运算处理。
3 基于双联盟链的数据共享模型
将DSDCB 中各节点分为数据提供方、数据需求方、公证人三个角色。数据需求方发起申请数据共享请求;数据提供方对其进行身份验证后提供重加密密钥给公证人;公证人下载所请求的电力数据,对数据进行校验处理后,再将电力数据加密传输给数据需求方。数据共享结构如图3所示。
图3 数据共享结构Fig.3 Data sharing structure
3.1 单节点跨链数据共享
将代理重加密技术引入DSDCB,能有效防止半诚实公证人窃取电力数据[23],在减轻电网调度中心负担的同时,增强电力数据跨链传输的安全性和隐私性。考虑到数据需求方可能请求特定数据,引入全同态加密技术,在无须解密的情况下,对电力密文进行合理整合。
单节点跨链数据共享模型设计思路如图4 所示。数据研究联盟链中某个节点请求跨链数据共享。电网调度中心利用DACC 验证数据需求方的身份和权限。电网调度中心使用自己私钥ski和数据需求方提供的公钥pkj生成代理重加密密钥rki→j,将代理重加密密钥和数据需求方请求内容提供给多重签名公证人。当前公证人将数据提供方的请求信息写入DSSC 中,返回对应的IPFS 文件指纹,通过文件指纹下载相应加密电力数据文件,使用陷门验证是否是数据需求方所请求电力数据。调用HEC,根据请求内容对下载的电力数据密文进行合理整合。使用代理重加密密钥rki→j对密文数据进行二次加密,将二次加密后的密文数据通过链下通道传给数据需求方。数据需求方用自己的私钥skj解密得到所需电力数据明文。
图4 单节点跨链数据共享模型Fig.4 Single-node cross-chain data sharing model
基于代理重加密的单节点跨链数据共享模型由以下8 个算法组成:Setup、KeyGen、Encrypt、Trapdoor、Test、ReKeyGen、ReEnc和Decrypt。
1)Setup(1λ) 。输入系统安全参数1λ,初始化算法输出系统公共参数pp。
2)KeyGen(pp)。输入公共参数pp,密钥生成算法给用户i输出公钥pki和私钥ski。
3)Encrypt(pki,m)。由数据提供方执行,输入公钥pki和电力数据m。输出密文Ci,将密文Ci上传至智能电网私有IPFS集群。
4)Trapdoor(Ci,pki)。输入密文Ci,用户的私钥pki。根据部分密文输出陷门td。
5)Test(Ci,Cj,tdi,tdj)。将用户生成的陷门td和含有关键字的密文C上传由IPFS 集群进行测试,利用用户上传的陷门对储存的密文关键字进行测试,测试结果相等返回1,不相等则返回0。检索是否搜索到用户所需要的数据,即检测电力数据是否mi=mj。
6)ReKeyGen(ski,pkj)。输入数据提供方(用户i)私钥ski和数据需求方(用户j)公钥pkj,输出重加密密钥rki→j。
7)ReEnc(Ci,rki→j)。输入智能电网私有IPFS 集群所下载的密文Ci和代理重加密密钥rki→j,输出代理重加密密文Cj。
8)Decrypt():
a)Decrypt(ski,Ci)。由数据提供方(用户i)执行,解密密文。输入密钥ski,密文Ci,输出电力数据m。
b)Decrypt(skj,Cj)。由数据需求方(用户j)执行,数据提供方授权数据需求方解密密文。输入数据需求方私钥skj,重加密密文Cj,输出电力数据m。
3.2 安全多方跨链数据共享
当数据研究联盟链中多个节点为了进行不同的数据研究,需要在保证各节点隐私的情况下,分别从智能电网联盟链请求特定数据共享时,采用安全多方计算(Secure Multi-Party Computation,SMPC)的方式实现[24]。安全多方计算是n个参与者P1,P2,…,Pn,共同执行一个计算任务:
每一方Pi只能输入自己的xi,并且最终只能得到自己的输出yi。通过安全多方计算可以解决不可信群体间协同工作的问题,能保证多方参与者之间共同完成计算任务而不会泄露各自的隐私信息。
在单节点跨链数据共享模型基础上,结合安全多方计算技术实现多节点跨链数据共享模型,设计思路如图5 所示。由图5 可知:数据需求方生成电力数据共享请求后,公证人根据数据需求方请求内容从IPFS 集群查询原始数据,调用HEC,计算不同节点所请求的数据集合(密文s)。将密文s其分割成多个信息块,通过代理重加密对密文分片重加密后进行跨链传输,数据需求方根据指定重构算法进行密文分片重构得到密文s,将得到的电力数据集合密文s上传至公有IPFS集群和数据研究联盟链上。此过程中,每个节点均不知道智能电网元数据及其他数据需求方请求内容。各节点从研究数据联盟链和公有IPFS集群中自行下载所请求的电力数据。
图5 多节点跨链数据共享流程Fig.5 Flowchart of multi-node cross-chain data sharing
安全多方计算模型中的秘密共享[25-27]能安全地共享某个秘密。DSDCB 的秘密共享技术基于使用拉格朗日插值法的Shamir Secret Sharing Scheme[28]实现。假设有t个节点分别向智能电网联盟链请求电力数据d1,d2,…,dt。
步骤1 数据提供方将电力数据d1,d2,…,dt基于全同态加密技术转换成密文s,生成k-1 个随机数{a1,a2,…,ak-1},得到多项式:
步骤2 从式(4)中生成n个点。通过函数Scatter()分发给每个参与者Pi(i∈n),即有n个参与者共同参与密文s的共享,将s切分成n份(i,si)。
步骤3 调用函数Gather()收集密文片段si,由式(5)得f(x)中a0=s,因此问题转换为利用n个点中的k个点求f(x),且已知k个点可以唯一决定一条k-1次方的曲线。使用拉格朗日插值法实现并得到密文片段si:
步骤4 使用Recon()函数将密文重构,将收集到k(k≤(n-1)/2)份以上的密文分片重构出s,密文s为所请求的电力数据d1,d2,…,dt的集合。
4 安全性分析
4.1 单节点跨链安全性分析
定理1在数据共享中,设电网调度中心A 和公证人S 均可信,且数据提供方B 私钥skB未被泄露。则攻击者C 无法获得电力数据明文。
证明
情况一 C给A发送电力数据共享请求。
A 接收C 发送的电力数据共享请求,由于C 没有节点信息,无法通过DACC 的节点身份与权限校验,因此C 请求失败,无法得到电力数据明文。
情况二 C 拦截B 已发出的电力数据共享请求再次发送给A。
A 将C 视为B,因为B 拥有节点身份能通过DACC 校验,A使用自己私钥结合B公钥生成代理重加密密钥。将代理重加密密钥提供给S。S 根据请求内容下载相应电力数据文件,并使用代理重加密密钥生成重加密密文发送给C。由于C 没有私钥skB,仍无法得到电力数据明文。
定理2在数据共享中,设电网调度中心A 可信,公证人S 半可信,且数据提供方B 私钥skB未被泄露,则公证人S 无法获得电力数据明文。
证明
情况一 重加密前,S尝试获得电力数据明文。
S根据文件指纹从智能电网私有IPFS 集群下载相应加密电力数据文件,此时,S 尝试解密得到电力数据明文。由于A的私钥仅由自己保管与使用,且A是可信的,因此,S无法获取到A的私钥,无法解密得到电力数据文件明文。
情况二 重加密后,S尝试获得电力数据明文。
下载得到相应加密电力数据文件后,S使用A提供的代理重加密密钥得到电力数据重加密密文,此时,S 尝试获得电力数据明文。由于数据提供方B 的私钥仅由自己保管与使用,且私钥未被泄露,因此,S 无法获取到B 的私钥,S 无法解密得到电力数据文件明文。
由定理1 和定理2,DSDCB 能抵抗51%攻击、女巫攻击、重放攻击和中间人攻击:
1)51%攻击。实验结果表明进行51%攻击是非常困难的[29],且如果发生51%攻击,由于区块链存储的是IPFS 集群文件指纹,并未存储电力数据文件,因此不会对元数据产生影响。因此,DSDCB能抵抗51%攻击。
2)女巫攻击。由于电网调度中心A 在接收到电力数据共享请求时,首先校验节点身份权限再进行数据共享。即攻击者无法通过伪造多个无效身份,对系统数据冗余机制造成影响,因此,DSDCB能抵抗女巫攻击。
3)重放攻击。模型中链下传输的是电力数据重加密密文,且密钥均由节点保管而不在模型中流通。攻击者拦截节点共享请求但无法获取相应节点私钥,即无法对接收到的电力数据重加密密文解密,因此,DSDCB能抵抗重放攻击。
4)中间人攻击。DSDCB 中的“中间人”为多重签名公证人。多重签名公证人机制需要由多位公证人在各自账本上签名达成共识后才能完成跨链共享;且密钥由本人保管不在模型中流通,公证人无法获取电网调度中心A 或数据提供方B私钥,即公证人在数据共享各环节均无法获得电力数据文件明文。因此,DSDCB能抵抗中间人攻击。
4.2 安全多方跨链安全性分析
安全多方跨链数据共享模型主要通过安全多方计算计算实现,安全多方计算模型一般分为半诚实模型和恶意模型[30]。半诚实模型中的半诚实参与方会忠实执行模型,但会尝试获得模型执行结果和更多参与者的隐私信息;恶意模型中的恶意参与方会违背模型命令或者恶意传输错误数据。
定理3在恶意模型下,若恶意参与方数量不超过k个,则电力数据密文s不会被泄露。
证明 假设恶意攻击者的数量为k-1,即恶意攻击者只知道“f1(x),f2(x),…,ft(x) 是k-1 次多项式”。其中,f1(x),f2(x),…,ft(x)可以被表示为如下形式:
设k-1个恶意攻击者分别为SC1,SC2,…,SCk-1,其他的参与方都是诚实者。其中,SCi的分片为f1(xi),f2(xi),…,ft(xi)。为求各分片的系数,将k-1个恶意攻击者建立如下形式的t个方程组:
在第i个方程组中,由于r(A)≠r(A|Xi),线性方程组式(8)无解,类比得到其他方程组均无解。对i∈[1,t],si为自由变量,因此当恶意攻击者的数量为k-1时,s无法被确定。
对恶意攻击者的数量逐次递减进行类比分析,得证,恶意攻击者的数量不超过k的情况下,均不能得到电力数据密文s。
定理4在半诚实模型下,若诚实参与方数量超过1 个,则电力数据密文s不会被泄露。
证明 令参与方的数量为j,j个参与方P1,P2,…,Pj请求电力数据内容为x1,x2,…,xj,则密文s可表示为:
设诚实参与方的数量为2,令P1和P2是两个诚实参与方,而其他都是半诚实攻击者。在计算得到密文s后,半诚实攻击者可联合得到:
由于P1和P2不会暴露自己的电力数据请求内容x1和x2,因此半诚实攻击者无法从式(10)解出x1和x2。得证,半诚实攻击者仅能得到自己所请求的电力数据,无法获取其他参与者的隐私信息。
综上所述,在DSDCB 中,诚实参与方请求的秘密是安全且保密的充要条件是:恶意参与方不超过k个,诚实参与方的数量超过1个。
5 方案性能分析
DSDCB 以Remix-IDE[13]作为以太坊智能合约的开发工具,使用Solidity 0.4.7 编写,在以太坊测试网Ropsten-Test Network 上运行,运行在Ubuntun 18.04 LTS 电脑上,测试电脑的配置是:ryzen 1700 3.0 GHz 8C16T、16 GB DDR4 2 666 MHz。本章将通过3 个指标评估此模型:1)单节点跨链数据共享计算成本;2)安全多方跨链数据共享的运行时间;3)电力数据索引值上链区块同步时间。
5.1 计算成本
将DSDCB 与Sun 等的PBRE 方案[20]和Jiang 等的CPBRE-DS 方案[19]比较,分析DSDCB 的单节点跨链数据共享计算成本。为了便于理解,定义了以下符号:ta和tm分别是点加法和点乘法,tb是双线性对计算,在算法中点乘法比点加法复杂,双线性配对计算比点乘法复杂,即ta<tm<tb。另外,n表示完整用户集大小,r表示一次共享一个文件的目标用户集大小。计算成本对比结果如表1所示。
对于DSDCB 和CPBRE-DS 方案,所有算法的计算代价与完整用户集的大小无关,其中DSDCB 和CPBRE-DS 方案的“Encrypt”和“Decrypt-Ⅱ”与目标用户集的大小成线性关系。另一方面,除了DSDCB 的“Decrypt-Ⅱ”的效率略低于CPBREDS 方案外,DSDCB 的其他算法都明显比CPBRE-DS 的效率高,而DSDCB 的所有算法都比PBRE 的效率高。在整体计算成本上,所提出的DSDCB 优于CPBRE-DS 方案,远优于PBRE方案。
表1 不同算法的计算成本对比Tab.1 Computational cost comparison of different algorithms
5.2 运行时间
将DSDCB与FHNVSS方案[16]进行对比,测试DSDCB的安全多方跨链数据共享的算法运行时间。将算法核心部分分割为秘密s分片函数Fragment 和秘密恢复函数Recover,分发者使用Fragment算法产生核心分片,接收者使用Recover恢复请求的结果。在实际使用中,由于两个算法属于不同的参与方,因此,在电脑上模拟分别执行,令k表示请求可以处理的多项式最大次数,设置k从4 到10,测试函数Fragment 和Rcover 的运行效率,测试结果分别如图6~7所示。
图6 基于最大可寻址请求度的算法性能(Fragment)Fig.6 Algorithm performance based on tmaximum addressable request degree(Fragment)
图7 基于最大可寻址请求度的算法性能(Recover)Fig.7 Algorithm performance based on maximum addressable request degree(Recover)
从图6~7 可以得到函数Fragment 和函数Recover 均只需消耗非常少的时间,函数Recover 消耗的时间高于函数Fragment。DSDCB 的运行时间略低于FHNVSS 方案算法运行时间,且DSDCB 比FHNVSS 方案有更好的安全性,因此,DSDCB更符合实际需求。
5.3 同步时间
通过测试子节点区块同步时间,评估DSDCB 的链上存储网络性能。设置1 个主节点,当主节点完成电力数据索引值上链后,分别测试4~10 个子节点的同步时间,每个节点进行10 次测试计算平均同步时间。分别对200 组、400 组、600 组电力数据索引值上链同步时间测试进行对比,实验结果如图8所示。仿真结果表明,DSDCB模型能正常运行,在较理想的情况下,节点平均同步时间小于10 ms。随着子节点数量增加,平均同步时间逐渐增加;随着存储的电力数据索引值增大,平均同步时间逐渐增加,但涨幅较小。因此,DSDCB 模型基本满足电力数据存储所需的处理速度。
图8 联盟链区块同步时间Fig.8 Block synchronization time of consortium blockchain
6 结语
本文设计了一种基于双联盟链的智能电网数据安全共享模型(DSDCB),使用分布式文件存储系统IPFS 结合联盟链实现电力数据高效存储;通过多重签名公证人技术实现电力数据跨链;引入全同态加密对电力数据进行合理整合;结合代理重加密与安全多方计算技术,实现了单节点与多节点分别进行跨链电力数据安全共享。实验结果表明,DSDCB 是有效的。未来研究工作中,将进一步研究更安全高效的跨链方法,进一步提高系统效率。