基于联盟区块链的安全能源交易方案
2020-06-20龙洋洋陈玉玲
龙洋洋,陈玉玲*,辛 阳,豆 慧
(1.公共大数据国家重点实验室(贵州大学),贵阳 550025;2.贵州大学计算机科学与技术学院,贵阳 550025;3.北京邮电大学网络空间安全学院,北京 100876)
(∗通信作者电子邮箱61997525@qq.com)
0 引言
目前,在微网和园区中,能源交易主要是以集中式优化决策的资源配置方式为主,建立一个易于设置、易于采用的控制中心来处理和管理能源交易。但该方法需要耗费的人力物力成本较高,缺乏对隐私的保护和匿名性,存在单点故障问题。控制中心可以直接或间接地查看用户的隐私数据,根据所获取到的数据分析和预测用户的下一步行为。同时,控制中心的故障会对支付和认证活动造成干扰,阻碍提供可用性和可靠性安全目标。针对这一弊端,需要寻求一种去中心化的管理方式来对能源交易进行管理,降低成本,实现能源交易的自主管理,并且保障信息的安全性。区块链技术结合数字签名和分布式共识机制,是一种实现信息安全的数据存储和分布式计算的新兴技术,最早应用于比特币[1]。然而,在能源互联网中,参与能源交易的主体数量多,如果采用公有链,则每笔交易的执行都需要传播给全网绝大多数节点并通过验证,交易速度比较缓慢,不能适应能源互联网高频交易的需要。此外,倘若所有节点都存储所有的历史交易信息,存储容量会很大,成本较高。因此在能源互联网的能源交易中,可以采用联盟链。联盟链的核心在于将区块链的节点分为全节点和轻节点两类,全节点保存了历史完整的交易信息,对区块链具有读写权限,而轻节点只保存了自身相关的身份信息,只具有读取权限,需要通过相关的协议向全节点发送读取请求来确认与自身相关的交易是否成功写入区块链,如简单支付验证(Simple Payment Verification,SPV)协议[2]。
目前关于区块链应用于能源互联网的研究大多只是简单地提出了应用方案,将去中心化的交易架构应用于能源互联网,没有针对能源互联网中的隐私保护进行分析[3-8]。欧盟的Scanergy项目提出发行NRG 币作为能源交易的代币进行微网中的能源交易[3]。美国LO3 Eenergy 公司推出的Trans Active Grid项目只是将区块链技术应用在能源节点数量有限的微电网场景[4]。文献[5-9]分别探讨了将区块链技术应用到智能电网、车载网、智能家居和产业物联网以实现分布式交易,但这些文献对区块链应用于能源互联网的隐私问题都缺乏讨论,不足以支撑用户的多样化需求。
将区块链技术应用到能源互联网中带来的隐私问题,主要是由于区块链中记录交易数据的分布式全局账本在网络中都是公开的,任意攻击者都能间接或者直接地获取到钱包账户和交易行为等信息,导致隐私的泄露。例如,对账本数据进行分析整理,攻击者可以通过数据挖掘算法获取任意账户的交易信息,还可以分析同一用户所持账户之间的交易关系图谱等。目前已经出现一些隐私保护机制[10],主要思想是在不影响交易以及存储效率的情况下,对公开数据中的部分信息进行隐藏,增加数据分析的难度。文献[11]提出了基于拉格朗日乘值法的隐私保护策略,文献[12]提出了一种实现信息的隐私保护的优化策略,文献[13]提出了一种集成微电网的隐私保护模型,以减少相互之间的数据共享。在不知道用户信息的情况下,文献[14]采用在线验证机制来解决电动车的隐私保护问题。文献[15]提出一种基于低密度校验码编解码技术来实现通信数据的隐私保护。文献[16]利用访问控制来实现对隐私数据的保护。这些方法都对区块链技术在能源互联网中的隐私数据进行了一定的保护,但仍然存在两个亟待解决的问题:由于存储在区块中的噪声记录会引起分布式账本发生故障,现有的隐私保护机制大多数无法在不影响分布式能源交易系统运行效率的情况下,对隐私进行保护;攻击者可能不需要准确的数据就可以获取用户的隐私。因此,需要提出一种能保护用户隐私的能源互联网交易模型。
本文在现有研究的基础上,引入弱中心化的监管方式,并结合智能合约[17]的需求侧响应,提出一种基于联盟区块链的安全能源交易模型,帮助能源交易实体双方快速、可信、安全的交易。该模型通过一个一对多的账户匹配机制将小规模邻近分布式能源交易的趋势隐藏,防止基于数据挖掘算法的相关攻击和确保交易实体之间交易信息的准确性。
1 基于联盟区块链的安全能源交易模型
本文提出的模型构成要素包括监管中心(Supervision Center,SC)、本地聚合商(Logical Business Component,LBC)、交易实体三个核心对象,如图1所示。
在模型中,参与交易的实体包括能源买家、能源卖家。交易实体可以根据自己的能源需求和状态,选择出售或购买能源;本地聚合商作为可信能源中介,保存完整的区块链数据,并为能源节点提供电力接入点和无线通信服务。每次能源出售节点都会向最近的本地聚合商发送能源售出的请求,经本地聚合商对能源节点的交易请求核实,并向所有本地聚合商广播这一需求,为能源节点进行电力交易对的匹配;监管中心作为能源交易的监管部门,对本地聚合商、交易实体进行授权的同时,也对交易数据进行有效的监管。
图1 能源区块链网络Fig.1 Energy blockchain network
由于所有的交易数据均持有本地聚合商的数字签名,若存在恶意的本地聚合商对交易数据更改,被更改的交易数据很容易被监管中心统计和定位。经监管中心核实之后,该本地聚合商无法再进行任何与交易相关的行为。
能源交易模型由三个部分组成:用户注册、交易和验证,如图2所示。
1)用户注册:为了加强监管和识别恶意用户,用户在参与交易前需要在监管中心进行注册。本文采用半中心化的联盟区块链系统,设置由代币银行和交易服务器组成的本地聚合商,让本地聚合商管理交易及用户账户的信息,只有被授权的用户才能进入交易系统。
2)用户交易:参与交易的交易实体根据自身能源状态选择出售或购买能源,由本地聚合商对交易对象进行匹配和参与能源区块链系统的共识过程。
3)交易验证:由于联盟区块链可以通过选定的节点来执行共识过程,每笔交易的执行只需要传播给预选节点进行验证。在模型中,参与验证的节点为本地聚合商。
2 模型交易具体流程
如图2 所示,本地聚合商包含两个实体,即交易服务器(Transaction Server,TS)和存储池。TS 主要负责从交易实体中收集能源请求,对交易实体进行匹配,并为能源交易节点提供交易代币和代币兑换服务。存储池用于存储完整的区块链信息。其中,交易代币类似于NRG 币,交易代币的流通对模型交易效率、安全性均无影响。
2.1 用户注册
在用户注册过程中,监管中心的角色可定义为第三方证书授权机构,每个用户向监管中心提交相关信息,经过监管中心授权以后,用户获得数字证书以及自己的公钥和私钥。
用户向监管中心提交自己的信息(姓名、年龄、身份证号等),监管中心使用非对称加密算法为用户生成一组公钥PKi和私钥SKi,并使用其私钥SKsc对用户的公钥PKi进行加密,形成数字签名sign,最终将公钥PKi、私钥SKi以及数字签名sign返回给用户。用户经监管中心注册之后,就是一个合法节点。其他用户可以使用监管中心的公钥PKsc来验证数字签名sign的合法性。另外,在合法节点参与交易之前,需要接入本地聚合商,并将自己的账户上传到本地聚合商,同时从本地聚合商中下载最新的交易数据,同步交易数据信息。其中,本地聚合商中已经存储了完整的区块链数据,无论交易数据有多庞大,用户不需要再存储和验证整个区块链上的交易数据,只需要同步区块头数据即可,每个区块头的大小只保持80 字节的大小,极大地减小了用户在存储方面的负担。
图2 能源区块链网络交易流程Fig.2 Transaction process in energy blockchain network
2.2 模型交易和区块链共识过程
能源出售方向本地聚合商以智能合约的形式发送售能请求,经TS核实无误后,为卖家用户选择交易账户,并给该账户分配一个钱包,用于存储交易代币。账户选择完毕,TS 将请求信息打包,并广播到所有本地聚合商中以供买方匹配。TS如何为卖家用户选择交易账户在2.3节进行详细描述。
交易双方匹配成功后,能源购买方从本地聚合商处接收出售方所提交的售电合约Script,并产生新的合约newScript与出售方协商价格。与出售方达成协议后买方通过自己的钱包向出售方支付代币,并生成交易记录发送给出售方。出售方对交易记录进行验证并进行数字签名,将交易记录上传给本地聚合商进行验证。
由于所有本地聚合商都是经监管中心注册的可信节点,本文采取三阶段共识机制。
第一阶段是记账节点的选取。所有的本地聚合商收集一段时间内产生的交易信息,然后对交易信息进行加密和数字签名,并将加密后的交易记录写入区块中。类似于比特币,查找一个有效的工作量证明(一个满足特定难度的哈希值),通过生成一个随机数x,并结合前一个区块的哈希值、时间戳、交易merkle 根等信息(定义为data)计算其所构建区块的哈希值。如式(1)所示:
其中,Difficulty是一个由系统控制的整数,主要用来调整随机数x的查找速度。最快找出随机数的本地聚合商为当前共识过程的记账节点,记作lbc。
第二阶段是lbc将区块数据、随机数、时间戳信息打包并广播给其他本地聚合商,交由其他本地聚合商对区块数据进行验证。验证结束后,其余本地聚合商将验证结果进行数字签名,并互相把验证结果互相比对,最终向lbc反馈比对结果,反馈信息包括每一个本地聚合商的验证结果、数字签名、比对结果。
第三阶段是lbc对收到的反馈进行数理统计分析,若所有的本地聚合商都同意区块数据,记账节点则将当前经过验证的区块数据进行数字签名,并向其他本地聚合商发送一份确认结果,以便于存储。
共识过程完成,区块数据由记账节点有序写入区块链,记账节点收到奖励的交易代币。若存在本地聚合商对区块的数据存在异议,记账节点将进一步分析验证结果,并再次给存在异议的本地聚合商发送区块数据。在这一共识过程中,所有的验证结果均持有各自的数字签名,很容易统计和查找。
2.3 账户匹配机制
安全能源交易模型的提出,需要解决在实现隐私保护的同时,不影响模型交易的效率与交易数据的完整性这一问题。本文基于上述交易模型提出一个账户保护机制,通过一对多的方式来实现对销售方的交易数据进行隐藏,如图3所示。
图3 账户匹配机制Fig.3 Account mapping mechanism
如图3 所示,当卖家向自己的钱包账户中存储代币时,此一对多的账户匹配机制至少能给卖家提供两种方式:创建一个新的账户并向该账户的钱包中存储代币;向原有账户的钱包存储代币。选择哪种方式取决于卖家交易代币的数量。
模型设置一个动态随机数B用于决定是否创建新的账户,B的设定由分布式预测函数T()生成。此动态随机数的设定主要是为了防止数据挖掘算法对随机数的检测。当卖家所需存储的交易代币数量小于B,则将交易代币存储至已存在的账户钱包;当存储的交易代币大于B时,模型就会创建一个新的账户,并将交易代币存储在该新建的账户中。在账户创建的过程中,有两种模式可供选择,定义为Mt和Mf,Mt表示创建新的账户进行交易代币的存储,Mf表示卖家选择原有账户的钱包进行交易代币的存储。若由函数f()决定选取哪种模式。f(si,vi,Mt)指为卖家si的第i笔能源交易选取模式Mt,其中vi为卖家的第i笔能源交易量。
该机制的提出需要解决三个关键问题:
①随机数该如何设置,即使随机数能设置为一个动态改变的变量,单一随机数控制模式的选取能在一定程度上有效防御攻击,但还是不足以抵御应用数据挖掘算法发起的相关攻击。攻击者可以观察区块链里的共享交易记录信息,并针对所获取到的售电量等信息,猜测出账户与随机数之间的关系,进而发起攻击。为了解决这一问题,本文使用分布式预测函数T()来对随机数B的波动范围进行控制。随机数B源于卖家的历史交易数据,是一个交易量预测值,而不是状态变量。将经过分布式预测函数T()所创建的预测值作为随机数B,其数学表达式如式(2)所示:
其中:vi表示卖家第i笔能源交易量;Vi-1表示卖家si的前i-1笔能源交易量之和;e1和e2表示当前能源交易量vi所占的权重值以及前i-1 笔平均能源交易量交易所占的权重值,范围在(0,1)。卖家的总能源交易量是一个可以计算的值,使用Vi表示卖家Si的前i笔能源交易量之和,用式(3)表示:
②在相邻的用户交易过程中,有许多用户很少或从不出售能源,新账户的创建会使得这些用户的账户更加明显,尤其是在一个小规模的环境中。因此,新账户创建的同时也需要对这些不活跃账户进行隐藏。针对这一问题,模型通过虚拟账户的创建来对这些不活跃账户隐藏。模型将能源交易数额较少的账户标记为不活跃账户,使用限制参数m来估计不活跃账户的状态,任意账户累计交易量少于m的账户均属于不活跃账户。同时,维持不活跃账户的个数所占的比例在一个固定的阶段,使用n表示,范围在(0,1)。定义卖家si所持账户为集合R=Ria∪Ra,其中Ria为不活跃账户集合,Ra为活跃账户集合。使用N表示卖家si所持账户总数,K表示不活跃账户个数在满足式(4)时,模型将创建一个虚拟账户。
③针对f(si,vi,Mf),什么时候需要选取Mf模式,即Mf模式下如何选择账户。攻击者对分布式共享账本数据进行分析整理,可以通过数据挖掘算法获取账户的交易信息,还可以分析同一用户所持账户之间的交易关系图谱。为了解决这一问题,在Mf模式下选择原有账户时,模型根据账户的创建时间先后顺序,从不活跃账户中选择创建最早的账户为当前交易的账户。
账户匹配算法可以用以下伪代码表示:
算法1 账户映射算法。
3 算例分析
为了分析模型的相关特点,在Ubuntu 16.04环境下,基于超级账本(Hyper-ledger Fabric 1.0)技术建立了仿真平台,硬件参数如下:16 GB 内存,i5-6500 CPU 和GeForce GT 730 显卡。实验基于一组相邻用户对隐私保护性能进行对比分析,并将模型与比特币交易模型所需的交易验证时间进行对比分析。除此之外,还对模型的安全性进行评估。
实验选取了500 个能源节点来部署智能电表与光伏发电机,测试使用与不使用模型时交易的分布和趋势。其中,包含200个买方节点,200个售方节点,100个本地聚合商节点。图4(a)描述了从买方节点和卖方节点中随机选取的50 个相邻用户在同一个月的光伏发电机发电情况,定义为A 组。在图4(a)中,有50个邻居用户,其平均收集电量为90.79 kW·h,范围为[62,124]。图4(b)显示了相同用户群体在同一月份的电量消耗情况。在图4(b)中,平均能耗为80.31 kW·h,范围为[52,115]。图4(c)描述了从买方节点和卖方节点中随机选取的100 个相邻用户在同一个月的光伏发电机发电情况,定义为B 组。由于附近的地理位置,收集电量相似。在图4(c)中,有100个邻居用户,其平均收集电量为89.58 kW·h,范围为[25,149]。相应地,图4(d)显示了相同用户群体在同一月份的电量消耗情况。在图4(d)中,平均能耗为79.54 kW·h,范围为[40,111]。
图4 两组能源的收集与消耗情况Fig.4 Energy collection and consumption of two groups
图5 展示了与A 组同一时间段从原始交易记录中检索到的50 个相邻用户的能源销售分布情况。在图5 中,对这些明显不同的售能数据进行标记,容易看出至少4 家卖家的销售电量超出正常生活用电或远低于平均销售电量。图6 展示了与B 组同一时间段从原始交易记录中检索到的100 个相邻用户的能源销售分布情况。在图6 中,对这些明显不同的售能数据进行标记,容易看出很多卖家的能源交易数量与其他卖家明显不同。可以表明这些用户家里配置了较多的光伏发电机,或很少呆在家里,除去日常用电之外,还有大量的电量剩余。同时,还可以表明这些售电量较低的用户家里配置了较多的电力设备。
图5 与A组同时段检索到的50个相邻用户的原始售能分布Fig.5 Original energy sales distribution of 50 neighboring users retrieved in the same time period as group A
图7 和图8 显示了使用随机数B来限制活跃卖家的能源销售情况。在图7中,模型为卖家创建了14个账户,其中新账户10个,虚拟账户4个。在图8中,模型为卖家创建了45个账户,其中新账户38 个,虚拟账户7 个。容易看出,模型不仅为活跃卖家创建了新的账户,这些创建出的新账户可以屏蔽邻近账户的分布,这在很大程度上保护了卖家的隐私。此外,模型也为不活跃的卖家创建了虚拟账户,其中虚拟账户为销售能量为0 的账户。实验结果表明模型可以从整体上对卖家的售能分布情况进行隐藏,提高用户的隐私保护性能。
图6 与B组同时段检索到的100个相邻用户的原始售能分布Fig.6 Original energy sales distribution of 50 neighboring users retrieved in the same time period as group B
图7 与A组同时段检索到的50个相邻用户使用模型后的售能分布Fig.7 Energy sales distribution after using model of 50 neighboring users retrieved in the same time period as group A
图8 与B组同时段检索到的100个相邻用户使用模型后的售能分布Fig.8 Energy sales distribution after using model of 100 neighboring users retrieved in the same time period as group B
在比特币交易模型中,交易验证时间需要60 min[16],当能源交易的次数增加时,需要花费的交易验证时间高于基于联盟链区块链的安全能源交易模型的交易验证时间。针对模型的交易性能,实验设定一个本地聚合商完成交易验证所需的时间为10 min、每小时的能源交易次数为{1,2,3,4,5},并从100个本地聚合商中随机选取40个节点,观察4 h内在比特币交易模型和基于联盟链区块链的安全能源交易模型下的交易验证时间变化。其中,交易验证时间是指本地聚合商完成能源交易共识的时间。
如图9 所示,与比特币交易模型相比较,基于联盟链区块链的安全能源交易模型在应用于能源交易时,具有较低的交易验证时间,这是由于交易的共识过程均由本地聚合商执行,达成共识的时间更少,故在同等时间下,本文模型的能源节点在区块链上持续进行能源交易所花费的时间更少。实验结果表明,基于联盟链区块链的安全能源交易模型支持快速的能源交易。
图9 两种交易模型交易速度对比Fig.9 Transaction speed comparison of two transaction models
不同于传统的通信安全和隐私保护,基于联盟链区块链的安全能源交易模型使用联盟区块链技术来确保能源交易的安全性,与区块链相关的安全性分析主要包括三个方面[18]:1)可信中介的去除。不同于传统依赖可信中介的集中式交易,经监管中心注册的能源节点以点对点的方式交易能源,所有能源节点接入经授权的本地聚合商进行能源交易,各能源节点具有平等的交易权。在没有可信中介机构参与的情况下,模型是安全且可信的。2)账户安全。由于每个用户都持有多个交易账户,攻击者不能使用数据挖掘相关的算法来分析区块链中共享数据与用户的关系,账户的安全能得到有效的保障。3)交易验证安全。所有交易数据均由其他本地聚合商公开验证。由于巨大的成本开销,恶意节点难以篡改交易数据。即使恶意节点篡改了交易数据,在构造区块之前,就会查找并纠正经篡改交易数据。综上所述,可认为模型是安全的。
4 结语
本文主要对邻近能源互联网交易的隐私保护进行研究:借助联盟区块链技术提出了一种能保护用户隐私的能源互联网交易模型,并讨论了模型在隐私保护性能、安全性、交易效率等方面的优缺点。实验结果表明,联盟区块链结合能源互联网能在不影响交易性能的情况下,有效防止攻击者直接获取和分析交易信息。同时表明,本文方案能够较好地应用在能源互联网场景。
区块链技术作为一种多方参与、多方维护的新兴技术,虽然能实时追溯交易记录,但用户自身的账户信息在传播过程中也会存在人为泄露的安全问题。未来将结合代理重加密、同态加密等密码学技术保护用户隐私信息。