赵丙镇,陈智雨,闫龙川,王 栋,玄佳兴,蒋慧超
(1.武汉大学电气与自动化学院,湖北省武汉市 430072;2.国网电子商务有限公司,北京市 100053;3.国家电网有限公司信息通信分公司,北京市 100761)
随着能源互联网战略的实施,能源流、业务流和数据流的统一使能源网络正向“互联网”模式演进。随着能源需求和生产模式的不断转变,发、输、用、储及金融交易等环节朝着分布式、低碳、数字化和智能化的方向快速发展,监管方和用户对能源供应安全和分布式能源接入的需求日益旺盛。开放共享、平等交互的特性使网络边界更加模糊、终端接入更加复杂、信息安全更加严峻,主体间的信任面临严峻的挑战[1-2]。跨地域、跨行业、跨机构等多维度电力业务交易急剧增多,大量隐私信息在共享时面临泄露风险。同时,传统集中式监管和第三方介入的模式阻碍了用户对高效率和低成本的追求[3]。如何实现企业运营形成的生产控制、能源传输、金融交易等信息的隐私保护成为重要的研究方向之一。
区块链作为一种新型的数据共享技术,其凭借独有的信任建立机制推进了能源互联网的建设,形成了去中心化的能源流、信息流及价值流的交互模式,实现了无须第三方信任机制的点对点价值传递。同时,基于区块链技术的智能合约功能使能源交易、需求响应、电子商务等程序执行变得更加智能化和自动化[4-6]。基于公有链的交易模式在交易身份方面具有一定的匿名性,但交易金额在链上公开,攻击者可通过大数据技术挖掘交易主体的关联信息,并结合先验背景推断交易者的身份[7]。区块链的特性与能源互联网高度契合,可有效保障主体间点对点的交易,但也给信息交互带来了泄露隐患。为此亟须解决传统区块链交易模型存在的隐私泄露风险,确保业务交易隐私信息和敏感数据的安全。
传统电力数据集中存储于数据中心,通过提高数据中心的抗攻击能力实现隐私保护。而基于区块链的交易数据在全节点存储,因此各节点的防护能力直接影响隐私保护性能。第三方可利用节点漏洞窃取数据,同时非法节点可冒充合法身份入链,从而便利地获取交易信息。针对以上问题,许多匿名区块链技术被提出并得到应用。达世币通过隐藏输入/输出的地址映射关系实现匿名,但面临拒绝服务攻击及用户泄露过程等风险[8-9]。门罗币采用环签名机制达到隐私保护,规避了中心化混币面临的问题,但复杂的密码技术影响了其运行效率[10]。零币利用密码承诺方案封装交易信息,并基于零知识证明验证交易,具有很好的隐私保护性能,但证明过程的 缓 慢 限 制 了 其 应 用[11-13]。Beam和Grin基 于MimbelWimble协议和聚合签名的方法实现交易隐私保护,但需要交易双方在线交互,因而限制了其应用场景[14-15]。
由于基于区块链的交易具备一定的隐私保护能力,因此监管部门难以对洗钱、偷税、漏税等非法交易进行有效监管。为满足监管需求,一种适用于可监管数字货币的多链模型被提出,其节点间通信复杂,且超级链的设计失去了去中心化的特性,难以保证交易的隐私性[16]。一种基于双链结构的数字货币监管模型被提出。它将联盟链锚定在一个公链上作为共识参与者,通过秘密共享保证交易的隐私性,可实现去中心化、匿名化和可监管等功能[17]。
伴随电力业务的快速发展,隐私保护和可监管性的平衡问题日益突出。为保证多方交易的安全、可信、可追溯、可监管,提出一种兼具隐私和监管功能的区块链交易模型。
区块链属于分布于不同区域节点、使用区块记录交易信息的去中心化的共享数据库。各区块按照时间顺序链接在一起形成区块链,存储于其中的信息具有不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征。区块链技术解决了信息不对称的问题,为多主体间的协作共享与一致行动奠定了信任基础,并形成了可靠的合作机制[18]。图1展示了区块链的结构,各区块头保存了前一区块的哈希(Hash)值形成链式结构。它基于密码学原理而不是基于信用,任何达成一致的双方均可直接交易,不需第三方机构介入。
图1 区块链结构Fig.1 Structure of blockchain
区块链交易的资金管理主要有账户/余额模型和未花费的交易输出(unspent transaction output,UTXO)模型。
UTXO模型只须依据最后一次交易就能实现资金管理,而账户/余额模型需要对全部历史数据进行增减操作才能获得正确余额,两者效率差异随时间推移会变得越来越大。同时,UTXO模型可以通过裁剪历史数据控制整条链的大小,而账户/余额模型不能丢弃历史数据,因此链条持续膨胀。
考虑到电力业务模式与互联网业务模式的不同,为了使UTXO模型更契合电力业务,本文将UTXO模型中的手续费设置为不收取或置为零。修改后的UTXO(modifiedUTXO,M-UTXO)模型如图2所示,其中交易1有一个1能源代币(dark energy crystals,DEC)的 输 入,有2个 分 别 为0.8 DEC和0.2 DEC的输出,输入与输出的差值为0,即交易手续费为0。M-UTXO模型既保留了UTXO模型拥有的优势,又能更好地贴近实际应用。同时,基于区块链的电力业务交易性能依赖于共识机制的选择,不同的共识机制对于区块链系统承载实际业务的性能也不同。
图2 M-UTXO交易模型Fig.2 M-UTXO transaction model
共识机制解决了去中心化多方互信的问题,在不依靠中心化组织的情况下,依然可以大规模高效协作完成运转。为在效率和安全之间取得平衡,不同应用场景采用不同的共识算法。工作量证明机制需要耗费大量的资源计算哈希值,并由矿工完成区块的生成。其他的共识算法大部分是以选举投票的方式决定谁来生成区块,并由特定节点生成区块后广播给其他人。
实用拜占庭容错(practical Byzantine fault tolerance,PBFT)机制属于较早提出的共识算法之一[19]。PBFT共识算法由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证,共识效率高,能够达到商业实时处理的要求,已被广泛应用于电子商务、金融证券、保险等行业。
概率公钥加密属于不确定性密码加密技术,同一明文多次加密会随机形成不同的密文。基于计算安全的假设,密文攻击不能在多项式时间内获取到明文信息。文章[20]提出了一种基于二次剩余定理设计的概率公钥密码算法。该算法拥有很好的密文扩展性,但传输性能不高。为了解决以上问题,提出了基于BBS(Blum-Blum-Shub)伪随机数生成器的概率公钥加密体制(BG概率公钥加密),在提升密文随机性的同时,极大降低了密文数据膨胀带来的困扰[21-22]。因此,BG概率公钥加密能够对用户身份信息进行有效的保护。算法详细过程见附录A。
公钥基础设施(public key infrastruction,PKI)密码体系在证书使用过程中很复杂,使得不具备相关知识的普通用户难以驾驭。为降低公钥系统密钥管理和使用的复杂性,提出了基于身份标识的密码(identity-basedcryptography,IBC)技术,即将用户标识作为用户的公钥。该技术不需要用户申请和交换证书,极大简化了密码系统管理的复杂性。用户私钥由密钥生成中心(key generation center,KGC)使用标识私钥生成算法计算生成,具有天然的密码委托功能,适合于有监管的应用环境。
IBC技术属于轻量级的公钥密码技术,首先由KGC生成主密钥对,然后结合用户的身份信息(姓名、电子邮箱、身份证号等)为用户生成私钥。用户的身份为公钥,无须数字证书绑定。为提升网络安全防护的自主可控,中国提出了基于IBC架构的国密SM9算法,正在逐步推广其在数字签名领域的应用[23]。其签名过程如附录B所示。
为防止监管过程中隐私信息的泄露,一般会将数据加密后再发送给监管方。考虑到被监管信息的真实性,Pedersen承诺是一个满足完美隐藏、计算绑定的同态承诺协议。其隐藏性不依赖于任何困难性假设,而计算绑定则依赖于离散对数假设,可用于解决隐私保护和监管可控的问题[24]。其具体原理如附录C所示。
较传统承诺方案,Pedersen承诺不仅可以隐藏信息,还可省略揭盲过程,更适用于需要匿名交易的场景。Pedersen承诺既可规避电力敏感信息交互过程中存在的第三方风险,又可实现交易信息的可监管功能。同时,基于文献[25]提出的Bulletproofs零知识证明技术,交易金额的范围能够更高效地被证明。
对各类模型的隐私保护功能和监管功能的分析如附录D所示。
基于对以上技术的分析,本文融合M-UXTO模型、BG概率公钥加密算法、IBC密码体制和Pedersen承诺等技术,提出一种基于区块链的可监管的交易数据隐私保护模型。
如图3所示,参与交易的主体有:①发送者和接收者,通过安全的交易方式实现交易身份及金额的保密性;②共识算法,验证交易的合法性并写入区块存储于链上;③监管者,通过追溯交易参与者及金额打击违法犯罪活动;④第三方,通过非法手段窃取交易信息,获取不合法利益。
图3 区块链交易主体Fig.3 Transaction entities of blockchain
首先,监管者在初始化阶段生成3组公私钥对:①利用BG概率公钥加密算法生成相应的私钥SkBG和公钥PkBG;②监管者充当IBC密码体系中KGC的角色,生成主公钥MPK和主私钥MSK;③假定监管者的身份标识为IDa,并作为公钥。基于MSK通过IBC算法生成相应的签名私钥Ska。
然后,用户利用自身唯一的身份标识信息IDu(邮箱地址、证件号及手机号等)向监管者申请密钥。监管者在认证用户身份信息后,利用BG概率公钥加密算法的公钥PkBG加密用户的身份信息IDu生成AIDt。同时,为了保证AIDt的合法性,监管者对AIDt进行签名认证并生成AIDu。
AIDt是IDu利用BG概率公钥加密算法得到的,具有良好的随机性。AIDu为AIDt经IBC签名得到,也继承了良好的随机性。由于IDu与AIDt为一对多的关系。因此,IDu与AIDu也为一对多的关系,AIDu可以持续更新,进而隐藏用户IDu的真实身份信息,并实现用户身份的良好匿名性。根据BG概率公钥算法特性,IDu加密后生成不同的AIDt,不同的AIDt解密后得到相同的IDu。由于AIDt与AIDu一一对应,因此AIDu继承了AIDt与IDu的映射关系。本文利用BG概率公钥加密算法对真实用户信息进行转换。由于真实信息和转换信息存在映射关系,因此监管者利用MSK可为不同的AIDu生成相应的Sku。
基于本节提出的方案,用户的真实身份、匿名身份和私钥分别为IDu、AIDu、Sku。为了便于后续描述,交易发送者和接收者的身份标识分别定义为IDs和IDr。通过上述方案计算得到的匿名身份分别为AIDs和AIDr,相应的私钥分别为Sks和Skr。当发送者和接收者交易时,只须利用Sks对M-UTXO模型输入的脚本进行签名,并将AIDr作为接收者地址,即可实现身份匿名性。
图4展示了发送者AIDs与接收者AIDr的交易结构。在本交易中,发送者AIDs有2个金额分别为vin1和vin2的输入。交易输出有2个:①与接收者AIDr交易的金额vout1;②返回给发送者AIDs的结余费用vout2。
图4 基于M-UTXO的交易结构Fig.4 Transaction structure based on M-UTXO
本文采用Pedersen承诺实现交易金额(vin1,vin2,vout1,vout2)的隐私保护。对于交易输入,引入先前输出的同时选取随机数a1和a2作为盲因子。其数学表达式为:Pin1=a1G+vin1H,Pin2=a2G+vin2H。其中Pin1和Pin2分别为输入vin1和vin2的承诺值;G和H为椭圆曲线上不同的点。(a1,vin1)和(a2,vin2)可由AIDs利用私钥Sks签名获得。
对于输出,发送者AIDs选择随机数(盲因子)b1和b2进 行 计 算:Pout1=b1G+vout1H,Pout2=b2G+vout2H。其中Pout1和Pout2分别为输出vout1和vout2的承诺值。为了确保(b1,vout1)和(b2,vout2)信息传递的安全,且可被AIDr和AIDs正确接收,分别利用相应的公钥对其进行加密,得到Cout1和Cout2。
交易的合法性需要保证vin1+vin2=vout1+vout2,可以等价为(Pin1+Pin2)-(Pout1+Pout2)=(a1+a2-b1-b2)G。假设交易的公钥为PkTx=(a1+a2-b1-b2)G和交易的私钥为SkTx=a1+a2-b1-b2,则整个交易定义为MTx={Pin1,Pin2,(Pout1,Cout1),(Pout1,Cout1)}。
基于椭圆曲线密码算法,为保证交易金额范围的合理性,本文运用Bulletproofs零知识证明规避负值情况的出现。最终交易表示为Tx={MTx,SigTx,Prange},其中SigTx为交易MTx的签名,Prange为交易金额范围证明的相关内容。Tx通过网络对外广播,共识机制对其进行合法性验证,并记录在区块链账本上。接收者根据AIDr即可确认收到交易,然后利用私钥Skr解密Cout1,获取交易信息。由此在隐藏交易金额的情况下完成了交易的整个过程。
区块链属于去中心化的网络,需要通过共识机制将交易打包记录在区块链上。在共识过程中,交易的合法性需要进行验证,主要包括参与者身份合法性和交易金额合法性。
1)身份合法性
身份合法性验证包括发送者和接收者的身份合法性验证。在M-UTXO模型中,发送者利用Sks签名M-UTXO输入脚本,共识机制只须利用发送者匿名身份公钥AIDs验证签名脚本的合法性即可。
为了防止发送者将交易发给某个不存在的非法地址造成资产流失,需要验证接收者地址的合法性。由3.2节可知,接收者的匿名身份AIDr可以由监管者利用其私钥Ska对AIDtr进行签名得到,共识机制只须使用监管者的身份公钥IDa对AIDr签名进行验证就可确认AIDr的身份合法性。
2)交易金额合法性
交易金额合法性需要验证输入与输出金额的一致性和输出金额范围的有效性。对于交易Tx={MTx,SigTx,Prange}和MTx={Pin1,Pin2,(Pout1,Cout1),(Pout2,Cout2)},共识机制先计算交易公钥PkTx=(Pin1+Pin2)-(Pout1+Pout2),然后利用交易公钥PkTx验证交易签名SigTx的合法性即可完成输入与输出金额的一致性条件要求。为确保输出金额的有效性,Bulletproofs零知识证明技术被用于验证Prange[25]。
区块链交易隐私保护目的是为了防止恶意收集用户信息的第三方行为,但监管者需要追踪非法交易,打击违法犯罪活动。交易隐私保护是防止发送者、接收者和交易金额等信息外泄。交易监管指监管者可通过一些方法具备对交易发送者、接收者和交易金额的信息进行查询的能力。因此,交易的可监管内容包括交易者的身份和交易金额。
参与交易者的真实身份IDu被隐藏,匿名身份为AIDu。根据3.2节描述,监管者先通过AIDu验证身份认证合法性,然后利用其BG概率公钥加密算法的私钥SkBG解密AIDt获取交易参与者的真实身份信息。
为了获取交易金额信息,监管者作为IBC密码体制的KGC,可计算出接收者AIDr的私钥Skr。对于 交 易Tx={MTx,SigTx,Prange}和MTx={Pin1,Pin2,(Pout1,Cout1),(Pout2,Cout2)},监管者利用Sks解密Cout1得到(b1,vout1)。监管者由此获取对AIDr的转账金额vout1。同理,监管者对Cout2采用同样的方式处理,从而实现对区块链交易查询和监管的功能。
为了验证所提出方案的可行性,本文采用MATLAB软件仿真模拟业务交易,并开展功能和性能测试。各节点主机的操作系统为64位CentOS 7,硬件配置为24核2.3 GHz、64 GB内存和1.8 TB硬盘。本次实验设置交易事件为100笔,节点数量从4个逐步增加到12个。
首先测试了在交易量相同的情况下,不同节点数对系统运行时间的影响,如图5所示。由图5可知,模拟系统的处理时间与节点数量密切相关。其中,处理时间为从交易发起到成功上链的时间。在运行过程中,当节点数增加到8个时处理时间上升幅度较大,但不影响正常交易。同时,与未实行数据隐私保护的方案相比,交易成功率均达到100%,且操作系统各项运行指标相差不大,中央处理器(CPU)使用率略有升高,但总体处于使用率较低的水平(CPU使用率<10%)。
图5 不同节点数的处理时间Fig.5 Processing time for various node quantities
图6展示了在8个节点的情况下,交易数量从10笔到100笔的测试结果。从图6可知,系统处理时间随着交易数量的增加而增加。当交易数量达到100笔时,交易处理时间增加幅度较大,平均每笔交易的处理时间为0.01 s。在系统功能方面,交易方可进行正常交易,各节点都可查看到交易信息。同时,监管功能可查阅交易的隐私信息,且追溯功能获得的结果完整。
图6 不同交易数的处理时间Fig.6 Processing time for various transaction quantities
通过对测试结果进行分析可知,所提出方案能够对区块链交易信息的隐私信息进行有效的高级别保护,且能够实现安全高效的数据共享和交易监管。所提出方案具有去中心化、隐私保护、可监管、防篡改、可追溯交易的优点,可为日益开放的能源互联网交易模式提供参考及建议。
区块链技术应用既要保护用户交易的隐私,又要确保用户交易的合法性,还需要实现隐私保护和监管要求的平衡,在为用户提供便利的同时严厉打击某些违规交易行为。为了解决该问题,本文方案融合多种密码学技术,利用BG概率公钥密码算法、IBC密码 体制、Pedersen承诺和Bulletproofs零知识证明等技术,提出一种兼具隐私和监管功能的区块链交易模型。本文提出的区块链交易模型可兼容现有区块链技术,系统性能测试分析结果表明,所提出方案在电子商务、能源交易、产业供应链等领域中具有广泛的应用价值,对于能源价值链和业务生态链的重塑具有重要的促进作用。后续将进一步研究跨网络模式下能源区块链的协同问题,促进能源互联网交易业务的高效运营。同时,随着在区块链技术实用化过程中拍卖、撮合等新交易模式的形成,新业态场景下信息隐私保护将成为一个重要方向。
附录见本刊网络版(http://www.aeps-info.com/aeps/ch/index.aspx),扫英文摘要后二维码可以阅读网络全文。