张利华,胡方舟,黄 阳,万源华,李晶晶
1.华东交通大学软件学院,南昌330013
2.华东交通大学电气与自动化工程学院,南昌330013
微电网是结合分布式发电、负荷、储能装置及控制而形成的一个单一可控的独立供电系统,其电源多为容量较小的分布式电源,因此微电网是大电网的有力补充,也是智能电网领域的重要组成部分[1].微电网电力交易的方案存在着很多问题.例如:电力交易无法追踪溯源,缺乏安全可信任的支撑等,这些问题导致目前微电网电力交易规模很小.微电网具有分布式部署的特点,存在节点之间的信任认证不统一、不同区域的节点认证成本过高等问题[2].
2008年,一位化名为“中本聪”的学者提出“A peer-to-peer electrontic cash system”[3],由此诞生了比特币,而区块链技术就是比特币的核心技术.区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证其不可篡改和不可伪造的去中心化、去信任的分布式共享总账系统.从数据安全的角度来看,区块链实质上是一种不可能被更改的分布式数据库.攻击者必须控制至少51%的节点才能更改分布式数据库,而实际上区块链上的节点成千上万,可见攻击者几乎不可能做到[4].
区块链技术运用非对称加密、数字签名、工作量证明等机制实现了点对点交易[3].工信部在《中国区块链技术和应用发展白皮书(2016)》中指出区块链的应用已延伸到物联网、智能制造、供应链管理、数字资产交易等多个领域,并且有能力引发新一轮的技术创新和产业变革.基于区块链的交易模式无需承担交易机构的运行管理成本,此外分布式数据库存储方式又降低了购买服务器的成本,并且能够保证交易数据的透明和安全[4].
基于上述微电网及区块链技术的特点,本文提出了微电网基于联盟链的身份认证方案.微电网结合区块链技术,既能保留其原先分布式部署的特点又能有效解决微电网节点之间的身份认证问题.
相对于公有链,联盟链、私有链具有以下优势:1)成员只要得到管理方的许可即可改变区块链运行规则而不必征求其他节点的意见,具有较高的效率;2)交易的确认只在机构内部人员之间进行而不涉及外部用户,从而提升了联盟链、私有链之间的共识效率.在使用过程中,联盟链、私有链要求所有节点的身份都经过认证便于监管,因而得到了监管机构更多的支持.然而,私有链的写入权限由某个组织或机构控制,且参与节点的资格被严格控制,可见私有链的扩展性不强.本文经过比较选择采用联盟链.
文献[5]设计了一个三层模型,分别是电力控制中心、配电网、智能电表.该方案通过盲签名方式实现智能电表的身份认证,即以使签名者不清楚签名内容生成认证凭证的方式实现身份认证;同时该方案还实现了消息认证、身份隐私保护、请求消息的保密、消息的可追溯性.然而,该方案中的智能电表需要频繁地与控制中心交互信息,造成了智能电表过多的性能损耗.文献[6]使用环签名实现智能电表的身份认证及隐私保护.在该方案中,发电方将一个社区或者一栋建筑物的用电量进行聚合后不会泄露用户用电的信息,但计算复杂且通信开销大.文献[7]是通过给智能电表颁发证书的方式进行身份认证的,将智能电表一方作为操作域而将用户作为客户域,使用可信第3 方作为证书发送方,但该方案缺少了智能电表与发电方的身份认证过程.文献[8]基于区块链的智能电表身份认证方案,由可信第3 方分发密钥对,再由密钥对生成自身公钥和私钥;根据公钥加密、私钥解密原理解决身份认证问题,同时采用信誉值的方法解决节点信任问题.该方案能有效保护用户身份信息,不过计算量较大.文献[9]基于区块链的智能物件认证技术方案设计,采用零知识证明(zero-knowledge proof, ZKP)解决智能物件的身份认证问题,同时结合DH 密钥交换算法解决物件之间的共识问题.然而,该方案采用的DH 密钥交换算法计算量大,通常适用于智能物件节点数量不多的情况,而不适用于节点众多的情况.
微电网电表安装在微电网节点,记录用户的发电以及用电情况.这种电表本身的运算能力以及数据存储能力并不强,于是将系统分为四部分:管理机构(management organization,MO)、区域管理器(region manager, RM)、微电网节点(micro-grid node, MN)、云端数据中心(clould data center, CDC),系统结构如图1所示.管理机构对区域管理器以及微电网节点提供身份管理,但是不参与电力交易以及身份认证的过程;区域管理器是某一个区域的电力管理中心,用来验证微电网电表的身份信息并对微电网电表的请求进行响应,也可以和其他区域进行电力交易.本方案身份认证协议是基于零知识证明中的Feige-Fiat-Shamir(FFS)[10]身份识别协议.
图1 微电网节点的架构示意图Figure 1 Architecture diagram of micro-grid node
微电网节点都安装有一个身份认证的模块,该模块将零知识证明算法用于新节点的认证.本方案将计算能力及存储能力较强的区域管理器认定为联盟链的授权节点,而将微电网节点认定为联盟链的一般节点.
2.2.1 系统初始化
微电网节点向区域管理器提出注册申请并且附着系统时间戳T,区域管理器在验证时间戳T之后向管理机构申请,管理机构筛选申请是否符合条件,如果符合就向云端数据中心申请.云端数据中心再次筛选申请是否符合条件,通过验证以后将微电网节点的ID 发送给区域管理器,区域管理器再将ID 号发给微电网节点.系统初始化流程如图2所示.
图2 微电网节点系统初始化Figure 2 Initialization of micro-grid node system
2.2.2 微电网的身份认证阶段
根据FFS 身份识别协议,由可信赖第3 方选n=p1p2,p1、p2为两个大素数,并选择k个不同的随机数v1,v2,···,vk,vi是modn的平方剩余,且可逆.以v1,v2,···,vk为证明者P的公钥,计算最小正整数si,将作为P的私人密钥.零知识证明的流程见图3.具体协议如下:
1)P选择随机数r(r 2)V选择k个随机二进制串传送给P,其中bi ∈{0,1}. 3)P计算出并发送给V. 4)V验证 根据FFS[10]协议,将云端数据中心视为可信第3 方,微电网节点视为验证者P,区域管理器视为被验证者V.每个新加入的微电网节点需要计算出x=r2modn作为自己的零知识证明值用以验证.只要新节点通过验证,区域管理器就将该节点的ID 号写入Merkle tree,并在整个联盟链中全网广播.ID 写入Merkle tree 的流程如图4所示. 图3 零知识证明流程图Figure 3 Zero-knowledge proof flow chart 图4 ID 写入Merkle tree 的流程图Figure 4 Write ID to Merkle tree flowchart 区块链共识机制主要分为工作量证明(proof of work, PoW)、权益证明(proof of stake,PoS)、实用拜占庭容错系统(practical Byzantine fault tolerance, PBFT)、瑞波共识机制算法(Ripple consensus protocol, RCP)[11].PoW 证明的优点是完全去中心化、节点自由进出,但是这种证明也存在以下缺点:1)比特币已经吸引全球大部分的算力,其他区块链应用很难获得相同的算力来保障自身的安全;2)挖矿造成大量的资源浪费;3)共识达成的周期较长,不适合商业应用.PoS 的优点是在一定程度上缩短了共识达成的时间,但还需要“挖矿”,本质上没有解决商业的应用.PBFT 的优点是不需要“挖矿”,也不需要多重验证交易,节省了等待确认交易安全性的时间,但不适合节点数量过大的区块链系统,扩展性差.RCP 的优点是不需要“挖矿”,适用于节点众多的环境,可以让系统中所有节点在一个相对很短的时间内自动接收总账本交易记录的更新.由于微电网环境下涉及的节点众多,需要一个共识机制速率大且计算开销较小的一个共识机制.根据以上对比可知瑞波共识机制适用于由微电网节点组成的联盟链. 瑞波共识机制是一种基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付与清算功能.在瑞波网络中,交易由客户端(应用)发起,由追踪节点(tracking node)或验证节点(validating node)将交易广播到整个网络中.追踪节点的主要功能是分发交易信息以及响应客户端的账本请求.除包含追踪节点的所有功能外,验证节点还能够通过共识协议在账本中增加新的账本实例数据.瑞波共识机制节点交互过程见图5,其投票流程见图6. 瑞波共识的达成发生在验证节点之间,每个验证节点均预先配置了一份可信任节点名单(unique node list, UNL).在名单上的节点可对交易能否达成进行投票,每隔数秒瑞波网络将进行以下共识,具体步骤如下: 步骤1每个验证节点会不断收到从网络发送来的交易,将这些交易与本地账本进行数据验证后直接丢弃不合法的交易,再将合法的交易汇总成交易候选集(candidate set).交易候选集里还包括之前共识过程无法确认而遗留下来的交易. 步骤2每个验证节点把自己的交易候选集作为提案发送给其他验证节点. 步骤3验证节点在收到其他节点发来的提案后进行判断,如果不是来自UNL 的节点,则忽略该提案;如果是来自UNL 的节点,就会对比提案中的交易和本地的交易候选集.如果有相同的交易,该交易就获得一票.在一定时间内,当交易获得超过50%的票数时,该交易进入下一轮.对于不超过50%的交易,将留待下一次共识过程去确认. 步骤4验证节点把超过50%票数的交易作为提案发给其他节点,同时提高所需票数的阈值至60%,重复步骤3 和4,直至阈值达到80%. 步骤5验证节点把通过80%的UNL 节点确认的交易正式写入本地的账本数据,这个数据称为最后关闭账本,即账本最后的状态. 在瑞波共识机制中,参与投票节点的身份已知,因此算法的效率高于PoW 等匿名共识算法的效率,且交易的确认时间只需数秒.当瑞波共识机制的拜占庭容错(Byzantine fault tolerance, BFT)能力为(n −1)/5 时,就可以容忍整个网络中20%的节点出现拜占庭错误而不影响正确的共识. 图5 节点交互示意图Figure 5 Diagram of node interaction process 本方案采用第3 代B+型树莓派作为载体模拟节点,以Remix-IDE 作为以太坊智能合约的开发工具,采用Solidity 语言编写,在以太坊测试网上运行.在相同的实验条件下,对3 个方案的身份认证算法、共识算法进行测试.实验分为两个:实验1 用来监测3 个方案中主节点CPU 的耗能,以及判断3 个方案的身份认证算法的计算量;实验2 用来测试3 个方案节点连接的耗时,并判断3 个方案共识算法的性能.实验涉及的硬件/软件的详细参数见表1. 图6 节点投票流程图Figure 6 Node voting flow chart 表1 实验硬件/软件参数Table 1 Experimental hardware/software parameters 4.2.1 实验1 CPU 耗能方案对比 CPU 耗能方案对比情况如图7所示: 图7 CPU耗能方案对比Figure 7 Comparison of CPU energy consumption schemes 实验1 将一个树莓派作为主节点,监测主节点连接1 个节点到5 个节点时CPU 的耗能情况.由图7可以看出:文献[8]方案在相同节点接入时耗能最高,本方案的耗能最低,说明本方案使用的零知识证明在连接相同节点时的计算量在3 个方案中最小,计算开销最低. 4.2.2 实验2 节点连接耗时方案对比 节点连接耗时方案对比情况如图8所示: 图8 节点连接耗时方案对比Figure 8 Comparison of node connection time-consuming schemes 实验2 将一个树莓派作为主节点,监测连接一个次节点到5 个次节点所消耗的时间.由图8可以发现:文献[9]方案在相同节点接入时的耗时最长.本方案采用的瑞波共识机制耗时最短,优于文献[8]方案的信誉值投票及文献[9]方案的DH 密钥交换共识算法.由两个实验可以得知:本方案采用的零知识证明算法在身份认证中的计算开销最小,瑞波共识机制的消耗连接时间最短,共识速率最大. 文献[8]基于区块链的智能电表身份认证方案,由第3 方产生密钥对,以公钥加密、私钥解密的方式解决身份认证.该方案需要消耗节点大量的效能用于节点的哈希运算.对于微电网一般节点来讲,计算能力并不强,无法承担过多节点的哈希运算.文献[9]基于区块链的智能物件认证技术方案设计,采用零知识证明来解决智能物件的身份认证问题,结合DH 密钥交换算法解决物件之间的共识问题.对于智能物件少量节点相互认证的情况,采用DH 密钥交换算法是可行的;对于微电网成百上千个节点来讲,DH 算法的计算能力显然不足.本文采用零知识证明和瑞波共识机制,其最大的优点就是零知识证明计算开销小而且瑞波共识机制不需要“挖矿”,可以让系统中所有节点在数秒内自动接收针对总账本交易记录的更新. 定理FFS 零知识证明用于身份认证时具备完备性、正确性和安全性. 证明 1)完备性 如果P和V遵守协议,且P知道私钥则应答y是模n下r2xe的平方根,在协议当中V接受P的证明,所以协议是完备的. 2)正确性 a)P不知道sk,P发送x ≡r2modn给V,V将bk发送给P.当b=0 时,V可通过检验而受骗;当b=1 时,V发现P不知道s,但连续受骗概率为1/2kt. b)V无法知道P的秘密,因为V没有机会产生(0, 1)以外的数字,P送给V的消息中仅为P知道V的平方根这一消息. 3)安全性 a)P选取一个随机数r,r b)V将一个k位的随机二进制发送给P. c)P计算随后将y发送给V. d)V验证 P和V重复这个协议t次直至V确信P知道k与t.P欺骗V的概率为1/2kt,随着k与t的不断变大,P欺骗V的概率为0. 根据区块链的特点将每一笔交易都记录在区块链中,并且将账本分布式存储在各个节点上,这样就可以保证数据不易被篡改,提高了数据的安全性和可靠性. 5.2.1 内部攻击 本文采用云端数据中心对每一个微电网节点都设定了唯一一个ID,区块链技术又采用分布式存储方案,从根本上阻止了系统中不法用户假冒其他用户身份发起内部攻击. 5.2.2 重放攻击 微电网节点系统初始化使用了时间戳T,须在有效时间内通过验证才能进行下一步申请,加上所有的电力交易都有时间戳,这样就可以有效抵抗重放攻击. 5.2.3 rd games, blockchain, HuffMHT, encryption algorith中间人攻击 攻击者通过入侵网络控制当中的一个或者几个节点拦截信息并且修改信息,最终达到控制整个网络的目的.该设计采用了瑞波共识机制以及区块链本身的分布式帐本的特点,因此攻击者即使掌握了几个节点也不能篡改整个区块链上面的账本信息. 5.2.4 窃听攻击 本方案是基于零知识身份认证设计方案,即使攻击者恶意窃听,也只能获得无用的一系列随机二进制串,所以窃听攻击无效. 5.2.5 女巫攻击 首先每一个新的节点在注册阶段需要得到云端服务器以及区域管理器共同的认证才能加入联盟链,其次采用的瑞波共识机制使得验证节点必须得到网络中大多数节点的认可,否则视为恶意节点.所以,两者的结合可以解决女巫攻击. 5.2.6 DDOS 攻击 区块链的所有节点都是分布式部署,即使单个节点出现故障,也不会影响其他节点正常工作.相对于中心化的服务系统架构,它对抵抗拒绝服务攻击更有效.因此,区块链分布式部署、去中心化的结构部署能够有效防止DDOS 攻击. 5.2.7 双向认证 本文将云端作为验证方,而将微电网节点作为被验证方,只有通过了云端数据中心的验证才能通过身份认证. 本方案将区块链技术应用于微电网身份认证,既能结合微电网分布式部署的特点,又能将区块链所具有的数据不易篡改、交易数据可追踪溯源等特点应用于身份认证.另外,将区块链技术运用到能源系统中不仅能够提高交易的可信程度,还能建立一套完整的可追溯交易体系对发生的交易进行监管,避免了传统电力市场中存在的假账和错账问题[2].瑞波共识机制部署在节点众多的环境下,能够快速解决每个节点之间的共识问题.最后,通过方案对比、性能分析、安全性证明及分析阐述了本方案在安全可靠地解决身份认证问题的同时又使微电网节点性能消耗达到最低.本方案所使用的的零知识证明保证了每个新节点加入的可靠性,适用于区块链技术新节点的认证问题,可应用于很多场景,如智能电网、物联网等一些需要解决身份认证的环境.瑞波共识机制能够适用于解决区块链技术节点的共识问题,适用于绝大部分联盟区块链环境.本方案是将区块链技术应用于微电网的身份认证,下一步可以挖掘出区块链在智能电网及类似场景中的更多潜力,如将区块链技术应用于智能电网的隐私保护或者将区块链与IPFS 结合应用于智能电网的数据共享方面.3 共识机制
4 方案对比及分析
4.1 实验方案部署
4.2 实验分析
4.3 性能分析
5 安全性证明及分析
5.1 安全性证明
5.2 安全性分析
6 结 语