基于联盟区块链的V2G网络跨域认证技术研究
2019-05-08于灏张昊
,于灏,张昊
(1.国网山东省电力公司 电力科学研究院,济南 250003; 2.国网山东省电力公司,济南 250001)
0 引言
随着全球电动汽车的迅猛发展,车辆到电网(Vehicle-to-Grid,V2G)已被视为智能电网的重要组成,受到产业界和学术界越来越多的关注[1-2]。V2G技术可以根据电力系统的供应和需求灵活地充电或放电,既能缓解电动汽车规模发展面临的充电压力,又可将其作为移动的、分布式储能单元,旋转备用,削峰填谷,使可再生能源更好地整合,增强电网稳定性。但V2G同时具有电流和信息流的实时双向性,在交互过程中也不可避免地面临着各种安全威胁[3-4]。考虑电动汽车具有快速移动特性,因此,研究安全高效的跨域认证协议对V2G具有重要的意义。
学术界目前对V2G网络认证主要关注于用户身份的隐私保护。2011年,Yang等人首次提出使用假名技术实现V2G匿名认证[5]。随后一些学者提出了基于假名的V2G匿名认证方案[6-7],但这些方案需要对假名进行定期更换,维持假名数据库,系统开销比较大。基于群签名、盲签名和签密的V2G网络匿名认证方案也先后被提出[8-10]。这些方案都需要大量的通信和计算开销,要么需要高额的管理费用,要么在操作上有所限制,很难用于实际,尤其是大群组应用场景。考虑V2G中车辆可移动的特点,Vaidya等人最早提出V2G网络的多域网络架构[11],该方案构建了一个基于混合公钥基础设施的模型,通过域内和域间数字身份建立节点间信任关系,支持点对点的跨域认证。此后陆续有一些具有隐私保护特性的V2G跨域认证方案被提出[12-13]。
以上V2G跨域认证方案均采用中心化模式,随着设备数量的增加,海量设备接入时汇聚效应将造成认证服务器拥塞,形成信令数据风暴,导致认证时延急剧增加。区块链技术具有去中心化、可追溯性、公开透明、不可篡改、交易匿名、共识机制等特点[14],与V2G的移动、分布式特点相吻合。区块链技术的引入可以在去中心化、可信任方向上发挥重要作用[15-16],其在认证上的应用开始受到学者关注[17-19]。本文将基于联盟区块链和SM9数字签名算法[20]提出一种V2G网络跨管理域认证方案,进一步改善V2G认证的效率和可扩展性。
1 联盟区块链及V2G 网络架构
1.1 联盟区块链的概念及应用
区块链是一个去中心化的分布式数据库,依据访问以及管理的权限,区块链可以分为公有链、私有链、联盟链。联盟区块链又称共同体区块链,简称“联盟链”。联盟链指的是在共识的过程当中受制于预选节点的区块链,简单来说就是有若干个机构共同参与管理的区块链,每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。
目前,世界上各行各业开始密切关注区块链技术,并且不少金融企业基于区块链可以减少成本、提升效率的优点,把其运用到各企业的发展当中,但是在金融企业的某些场景中由于区块链数据的完全公开透明,不能直接应用全网记账的公有链技术,因此,以联盟链为目标的区块链项目不断涌现。一些专家学者表示,整个社会中,联盟区块链其实更有前景,因为它更好的发挥互联网的互联互通,共享信息的作用,它的意义在于让大家达成了共识,同时促成更快的建立生态联盟,更好的利用区块链技术去改变工作模式和生活模式。并且,联盟链可以使交易数据及隐私得到保护。
联盟区块链技术作为新兴的分布式数据库技术,在未来的能源互联网中应用潜力很大[21-24]。在能源互联网行业,联盟区块链主要应用于智能电网数据安全存储与共享、分布式能源交易认证、大用户直购电等方面,通过联盟区块链技术实现了安全、有效的数据存储与共享,提高了分布式能源交易数据安全性、信息透明度和自动化认证水平。
1.2 V2G网络架构
V2G技术通过专门设计的双向充电站工作,这些充电站允许电动车辆所有者为他们的汽车充电,同时还便于车辆电池的放电。我们将充电站按地理区域进行划分,每个区域有一个密钥生成中心(Key Generation Center,KGC),用于建立管理域内或域间的信任关系,并使用KGC来传递消息。为解决多个管理域内或域间的跨域身份认证问题,本文提出一种跨域环境下的V2G网络信任模型。假定这样的应用场景:归属地是陕西省的电动汽车UA对应的管理域为A,到达山东省接入电网时,需要在山东省的管理域B内进行身份认证。陕西省电网和山东省电网分属于两个域(A和B),本文关注于跨域认证的系统模型,该信任模型如图1所示。
图1 V2G网络跨域信任模型
图1中不同域的KGC由矩形框表示,而域内用户则由EV(电动汽车,Electric Vehicle)表示。为实现跨域身份认证,本地域和外地域间不同域的KGC经过许可后便加入联盟链,构成联盟链的验证节点VP(Vaildating Peer, VP)。
在本文中,利用联盟区块链不易篡改的特性和哈希算法高效的签名验证方法,基于联盟区块链提出一种V2G网络跨管理域认证方案。本方案中,加入联盟链的密钥生成中心KGC是可信的,为验证节点VP生成区块链数字身份,并将数字身份进行哈希计算后存储到不易被篡改的区块链内,并将哈希值作为各管理域的信任身份凭证。如果一个管理域不可信或者不需要跨域需求,则撤销加入该联盟链的许可,实现盟员的退出。在图1中,联盟链上有2个不同区域的KGC,分别记为本地域KGCA、外地域KGCB,它们作为联盟链的验证节点。
2 基于联盟链的认证协议设计
本节给出一种基于联盟区块链的智能电网中V2G跨域认证协议,该协议假定这种情况:由于联盟链的身份准入机制,加入联盟链的域是可信的,以A、B两域为例作跨域认证。
本协议设计中用到的数字签名方案为国密标准SM9,相关参数设置标准详见文献[20]。SM9是我国国家密码管理局于2016年3月发布的一种基于身份的密码标准,对应的标准为“GM/T 0044-2016 SM9标识密码算法”。SM9包括数字签名算法、密钥协商协议以及密钥封装机制和公钥加密算法。下文中出现的主要符号含义如表1所示。
表1 符号含义
电动汽车UA在接入电网前,先在归属地A的认证服务器注册个人信息并获得相应的公私钥对PKA和SKA。UA将身份信息IDA、公钥PKA、时戳tA和有效期T(设为比特串mA=IDA||PKA||tA||T),以及对mA的签名发送给区域管理中心RA,RA包含该区域的密钥生成中心KGCA。RA验证UA身份的合法性,并为UA计算用户的签名主公钥Ppub-sA和签名私钥dsA,计算过程如算法1所示。
算法1:用户签名公私钥的计算算法
输入:(N,P2,IDA,H1), 输出:(Ppub-sA,dsA,hid)
1:随机产生随机数ks∈[1,N-1];
2:计算群GT中的元素Ppub-sA=[ks]P2;
3:选择函数识别符hid,计算有限域FN中的元素t1=H1(IDA||hid,N)+ks;
4:若t1=0返回至步骤1,否则进入步骤5;
5:计算t2=ks·t1-1modN;
6:计算dsA=[t2]P1;
7:结束。
区域管理中心RA将UA的区块链数字身份BIDUA-CAA以及UA的签名主公钥Ppub-sA和签名私钥dsA发给UA,并将相应的身份信息和BIDUA-CAA存于区块链和数据库中。用户UA在A域接入电网时,区域管理中心RA在区块链上查询Hash(BIDUA-CAA)的值,当查询结果为issue时,允许UA接入电网。UA在接入B域电网前需先向B域认证服务器SB发出访问SB的请求,SB收到用户UA的请求后,向A域用户UA发送随机数M和时戳tB,用户UA对随机数M、数字身份BIDUA-CAA和时戳tB进行签名得到签名值(h,S),计算过程如算法2所示。
算法2:用户签名算法
输入:(M,tB,Ppub-sA,BIDUA-CAA,dsA), 输出:(h,S)
1:计算群GT中的元素g=e(P1,Ppub-sA);
2:产生随机数r∈[1,N-1];
3:计算w=gr∈GT,转换w比特串;
5:计算l=(r-h) modN,若l=0跳回步骤2,否则转入步骤6;
6:计算S=[l]dsA∈G1;
7:结束。
A域用户UA响应B域认证服务器SB的请求,把签名主公钥Ppub-sA、随机数M、数字身份BIDUA-CAA、时戳tB和签名(h,S)作为消息发送给B域认证服务器SB。SB接收到消息后根据算法3验证签名(h,S),以确定随机数M是否有效。
算法3:签名验证算法
输入:(M,tB,IDA,Ppub-sA,BIDUA-CAA,hid, (h,S)),
输出: (○, ⊥)
1:检查h∈[1,N-1]是否成立,若失败输出⊥,跳转至步骤11;否则转入步骤2;
2:对S进行数据类型转换,映射为椭圆曲线上的点,判断是否有S∈G1。若为否则输出⊥,跳转至步骤11;否则转入步骤3;
3:计算群GT中的元素g=e(P1,Ppub-sA);
4:计算群GT中的元素t=gh;
5:计算h1=H1(IDA||hid,N);
6:计算群G2中的元素P=[h1]P2+Ppub-sA;
7:计算群GT中的元素u=e(S,P);
8: 计算群GT中的元素w′=u·t,将w′的数据类型转换为比特串;
9: 计算整数h2=H2(M||tB||w’,N);
10: 检验h2=h是否成立,若成立输出○;否则输出⊥;
11:结束。
B域认证服务器SB在签名验证算法输出为○时向A域认证服务器SA发送请求和随机数n,申请得到A域信任锚KGCA的区块链数字身份BIDKGCA。SA收到请求及随机数n,将A域信任锚KGCA的区块链数字身份BIDKGCA和随机数n作为消息发送给SB。SB随后根据算法4(表5)生成跨域区块链数字身份,并发送给用户UA。A域对B域的认证同样可以利用算法4完成,达到双向认证。
算法4:跨域数字身份生成算法
输入:(n,BIDKGCA,BIDUA-CAA), 输出: (○, ⊥)
1:检查随机数n是否依然有效,若无效输出⊥,跳转至步骤7,否则转入步骤2;
2:在区块链上查询Hash(BIDKGCA)的值;
3:(1)若在区块链上查询哈希值的结果为空,即Hash(BIDKGCA)=null,则由于本地域A域认证服务器提供的信任锚KGCA区块链数字身份不正确,认证失败,输出⊥,进入步骤7;
(2)若在区块链上查询哈希值的结果为revoke和issue,即Hash(BIDKGCA)=revoke and issue,则由于A域信任锚KGCA的区块链数字身份已经变成撤销状态,认证失败,输出⊥,进入步骤7;
(3)若在区块链上查询哈希值的结果只有且仅有issue,即Hash(BIDKGCA)=issue,则A域信任锚KGCA的区块链数字身份为已发布状态,认证成功,输出○,进入步骤4;
4: 向B域信任锚KGCB发送用户UA的数字身份BIDCAA;
5:KGCB解析BIDCAA,生成UA的跨域区块链数字身份BIDUA-CAA·CAB,发送给SB,并记入区块链;
6: 发送域区块链数字身份BIDUA-CAA·CAB给用户UA;
7:结束。
需要指出的是,为确保安全当UA再次进入B域时需要重新认证。如果此时的区块链数字身份BIDUA-CAA·CAB在有效期内,用户UA将跨域区块链数字身份BIDUA-CAA·CAB直接发给B域认证服务器SB,由SB作哈希运算,并查询区块链数字身份值,进而对数字身份有效性进行验证。
3 安全性与效率分析
3.1 安全性分析
在本文中,用户在归属的管理域内可通过域内认证的方式完成用户和归属认证服务器之间的双向身份认证。在多个管理域间联盟区块链的架构下,认证服务器通过发起请求来获得待认证域的根KGC区块链数字身份,通过计算Hash值,并对区块链内已保存的信任凭证进行查询,对比Hash值是否相同来确定信任关系,进而可实现本地用户与外地域的服务器的双向身份认证。因此,本文的方案支持的认证类型包括本地域用户与外地域服务器间的认证、外地域服务器与其域内用户间的认证,从而达到两个管理域间用户的跨域双向身份认证。
本文方案将对各个管理域内用户的数字身份进行哈希运算,再将数字身份的哈希值存入联盟区块链中,同时提交哈希值存储至区块链的对应时间信息与有效期,为数字身份文件的存在性与所有权提供证明。哈希函数具有单向性和抗碰撞性,能够使任何区块链节点匿名和安全地存储信任凭证。方案中的签名和认证中采用了SM9国密密码算法,可提供身份认证、抗否认性、完整性和保密性,在基于身份的适应性选择消息攻击下满足存在性不可伪造[20]。依照SM9算法标准中推荐的参考曲线,其安全强度等效于RSA-3072bit。根据评估,理论上破解系统的复杂度相当于2500亿台电脑10亿年的计算量[25]。
联盟区块链使用时间戳和数字密码技术,把传递的消息记载在按时间序列组成的数据区块中,并使用共识机制把数据存储到分布式数据库中,从而生成了永久保存、不可逆向篡改的唯一数据记录,达到不依靠任何中心机构而实现可信交易的目的。本文方案在传递消息时附加了一个随机数,保存在询问服务器内,各个管理域内的电动汽车用户在验证对方的反馈信息之前,通过验证本地域用户接收到的随机数与原服务器保存的随机数的一致性达到抗重放攻击的目的。在验收消息时,由于时戳在传递的消息中无法被篡改,如果网络攻击者利用截获的消息去验证电动汽车用户的身份时,由于时戳失效导致消息验证失败,所以本文方案能够很好地抵抗重放攻击。通过在认证协议中设置有效期,在认证之前首先核对信息是否在有效期内,起到防止拒绝服务攻击的效果。本地域用户和外地域用户在交互时,由于双方用户都是使用自己的私钥进行签名验证消息,若攻击者对传递的消息进行篡改,则发送方的签名信息不能通过接收方用户的验证,这样就能够起到抵抗中间人攻击的效果。
由于单一签名算法或加密算法不能保证安全通信,本文采用联盟区块链的V2G网络跨域认证方法,通过采用签名和加密技术相结合的方式,在传递消息过程中通信认证结合签名和加密算法,能够更好地满足通信时的安全性需求。单一的签名算法、加密算法,以及本文使用的签名加密结合算法在应用过程中的安全性对比分析如表2所示。从表6中可以看出,本文方案的签名加密结合算法,具有很好的保密性、认证性以及安全性。
表2 签名加密算法的安全性对比分析
3.2 效率分析
本文提出的基于联盟区块链的V2G网络跨域认证方法,通过采用分布计算方式,盟员的增加将不会导致两方跨管理域认证时使用公钥算法次数的增加。使用哈希算法将数字身份的Hash值存放在联盟区块链中进行查找,由于哈希Hash算法的计算速度比公钥算法速度快很多倍,所以即使在多域联盟的环境下,本方案实现跨域认证的效率比普通公钥密码算法高很多。目前,本文方案中采用的SM9算法是公开密钥算法,该算法具有较好的安全性,在大数据环境中非常适合海量用户的安全交互通信[25]。通过对陕西省电网A域和山东省电网B域之间电动汽车跨管理域认证进行初步分析发现,随着域内用户设备数量的增加,本方案的安全性和实用性也相对比较高。
4 结语
区块链可以促进电网和新能源的发展,最终创造一个更加去中心化的电网。本文针对V2G网络中电动汽车跨管理域接入电网的问题,基于联盟区块链和SM9算法提出了一种V2G中电动汽车跨域认证方案。该方案在不改变基于身份的密码认证模型的前提下,将经过许可的域加入联盟区块链之中,实现用户在多域之间的跨域认证。该方案在适应性选择消息攻击下满足存在性不可伪造,可抵抗重放攻击、拒绝服务攻击和中间人攻击。通过采用签名加密技术结合的算法,能够更好地满足电动汽车跨管理域接入电网过程中的通信安全需求,实现跨域认证的效率较高,可扩展性较强。
联盟区块链技术在能源领域的应用还处于起步阶段,未来的电网将由亿万交互的终端组成,包括微电网、光伏、智能设备、分布式计算系统与能源管理软件等。联盟区块链在构建下一代分布式微电网体系中的潜力巨大,会产生数千万甚至上亿个去中心化节点,这些节点能够交换信息并完成交易,能够极大地推动分布式能源方面的投资活动,还会对电力市场收入进行再分配。结合区块链技术与物联网技术,将使分布式能源交易的协商机制成为可能。在能源运输行业里,联盟区块链可以为电动车辆(EV)充电提供协调服务,如果在两个管理域间建立联盟区块链微电网,每个电站的电价可以由电网和住宅电力供应商共同建立,可以有效促进更大、更高效的充电网络,能够大力推动电动汽车的普及。