APP下载

关于联盟链金融隐私保护与监管功能设计

2022-08-22玄佳兴王合建李国民

计算机仿真 2022年7期
关键词:私钥公钥密文

玄佳兴,石 欣,王合建,李国民

(1. 国网雄安金融科技集团有限公司,北京 100053;2. 国网数字科技控股有限公司,北京 100053;3. 国网区块链科技(北京)有限公司,北京 100053;4. 国家电网公司区块链技术实验室,北京 100053)

1 引言

近年来,区块链[1]技术受到广泛关注、广泛应用,其原因在于其具有透明性、不可篡改性、分布式等特性。区块链透明性受到极大关注,任意用户能够在区块链上进行相对平等的交易,而不会因为买卖双方信息不对称导致巨大的经济损失[2]。当前,以比特币和以太坊[3]为代表的区块链系统在金融领域是最成功的落地应用。在金融交易系统中,交易额隐私保护至关重要。隐藏交易额,对普通用户而言,是基本的交易需求[4]。如果用户的交易额被黑客盗取,则用户的财产安全、甚至生命安全会收到巨大的威胁;对公司而言,如果公司的交易额被对手获取,则不利于公司的发展,对手能够在公司最艰难的时候公布公司的资产,导致公司快速破产;对国家而言,如果国家的经济能力被敌对国获取,则国家可能受到金融危机,甚至直接遭受军事打击。因此,个人,集体,国家等均需要交易额隐私保护[5]。

但是,仅有隐私保护不利于国家的经济发展。较好的隐私保护为非法融资、非法交易等创造了生存空间。因此,需要在保护隐私的前提下,实现严格监管。在区块链交易系统中,如果发生非法交易行为,则交易记录永久记录且不可更改,则国家能够发现非法交易行为并进行对应的惩罚,有效降低非法交易行为。在严格监管下,国家能够快速发现非法金融行为。因此,区块链交易系统严格监管功能至关重要。

在公有链系统中,实现较好的隐私保护是非常合理的,但是在联盟链交易系统中,不能缺乏监管。区块链监管分为宏观层面监管和技术层面监管。在宏观层面,2015年英国提出金融管理局沙盒机制。“监管沙盒”是指在规定的空间内,金融科技企业可以测试其创新的金融产品、服务、商业模式和营销方式等等,在测试的过程中,给予企业一定的空间和自由度,遇到问题时不会立即受到监管规则的约束。2017年7月25日,美国证券交易委员会在其发布的一份调查报告中认为ICO(首次数字货币公开众筹)可能适用于该国证券法律监管范围。宏观层面监管只能在宏观层面对区块链公司的主要行为进行约束,而无法对区块链公司或区块链系统中的用户进行准确约束。需要从技术层面对区块链公司和用户进行监管。

目前,从技术上对区块链进行监管,主要有以下4中方法:区块链交易溯源机制[6]、区块链地址聚类机制[7]、区块链证书管理机制[8]和基于陷门技术进行监管。1)区块链交易溯源机制是在网络层部署探针节点,通过探针节点来搜集区块链网络层中的传输信息,分析判断交易的传播路径,从而推测出交易的始发节点,实现身份监管。该监管技术是从网络层面进行的。2)区块链地址聚类机制是分析区块链交易数据特征,获得不同地址之间的关联关系,通过发现聚类集合中一个地址的身份信息,推测出隶属于同一交易者的不同交易地址。该监管方式是在数据层进行的。3)区块链证书管理机制是在区块链的运行机制中加入可信的证书管理机构,则监管方能够根据证书中的信息对用户进行监管。该监管方式是在算法层实现的。4)基于陷门技术进行监管,如:可追踪的环签名[9]即实现签名方隐藏,又实现监管方可追踪;该监管方式是在密码算法层实现的。对区块链公司和用户,需要实现细粒度监管,从密码算法层面进行是最可靠的。

因此,针对金融系统需要同时实现隐私保护与监管需求,本文创新性地设计出同态加密方案以同时实现这两项关键功能。

2 研究现状

比特币[1]是一种分布式记账电子货币系统,而不需要任意可信第三方。比特币通过共识机制,即工作量证明机制,吸引用户参与维护比特币系统,通过椭圆曲线数字签名算法和哈希函数实现交易功能。由于比特币使用明文进行交易,泄露了用户的交易额隐私信息,使得黑客能够进行统计分析攻击。为解决用户隐私问题,2014年Bonneau 等提出混币机制[10],用于解决用户隐私保护。混币机制需要可信第三方将多个用户的输入与多个用户的输出进行混合,实现用户交易隐私。因此,混币机制的安全性完全取决于第三方的行为是否可信,而不是取决于技术特征。随后,Maxwell提出的 Coinjoin 混币技术[11],以去中心化的方式实现多个用户的输入与输出混合,但是该技术要求各参与方进行交互。这增大了用户信息泄露的概率,且各个用户互不信任,交互难度极大。

门罗币[12]和零币[13]的出现,是目前隐私保护的最高水平。门罗币实现环签名算法保护交易发起方身份隐私,使用同态加密方案保护交易金额,使用一次性地址技术保护接收方的身份。门罗币中交易发起方使用环签名实现隐私保护是自主的,而不依赖于任意管理员,且每笔交易具有不可链接性和不可追踪性。同态加密使得共识节点能够验证交易额的输入输出正确性,却不知道其它任意信息,而一次性地址技术是每个地址首次出现,仅接收方能够计算对应的私钥,实现对一笔费用的花费。零币将交易双方身份和交易金额加密,使用零知识简洁非交互证明zk-SNARKs,证明交易双方身份和交易额是合法的。

因此,现有方案仅通过交易溯源机制、地址聚类机制、证书管理机制和陷门机制实现监管功能;通过混币机制、环签名技术、零知识证明技术实现金融隐私保护功能。但是,缺乏同时实现隐私保护与监管功能的金融系统,而同时实现隐私保护与监管在金融系统中是至关重要的。因此,本文提出联盟链金融隐私保护与监管系统以解决该问题。

3 系统原理

联盟链金融隐私保护与监管系统模型能够实现金融隐私保护与两个监管方独立监管的功能。如图1所示,系统包含5种参与方,分别为交易发起方、接收方、共识节点、两个独立的监管方。该系统包含以下9个步骤:1)初始化,建立联盟链系统所需公共参数;2)交易发起方、接收方和两个监管方根据系统公共参数生成各自的私钥和公钥;3)交易发起方分别对支付金额和找零金额进行同态加密,并采用非交互式零知识证明协议[14]证明密态金额的输入之和等于输出之和、采用Bulletproofs范围证明协议[15]证明支付金额和找零金额均大于零,从而实现交易金额隐私保护。4)交易发起方采用SM2签名算法进行交易签名并提交到联盟链交易系统中;5)共识节点验证用户SM2签名的一致性、验证密态金额的一致性和支付金额与找零金额Bulletproofs范围证明的正确性;如果均正确,则接受并存储到联盟链系统中,否则拒绝;6)接收方从联盟链读取交易单数据并解密收款金额同态密文,获得收款金额明文并实现收款金额统计。7)交易发起方从联盟链读取交易单数据并解密支付金额同态密文,获得支付金额明文并实现支付金额统计。8)和9)两个监管方均能够独立解密联盟链所有密态金额,实现交易金额的独立统计与监管,实现对国家经济活力的准确掌控,且对洗钱等非法行为进行严格打击。

该系统创新点与难点在于第3步需要构造特殊的同态加密方案,实现金融隐私保护的功能,且使得第6/7/8/9步中的接收方、发送方和两个监管方均能够独立解密,实现独立的支付/接收金额统计和金融监管的功能。

图1 联盟链金融隐私保护与监管系统

4 方案构造

本节提出的具体构造方案基于文献[16]提出的双接收方公钥加密方案和SM2椭圆曲线数字签名[17]。基于联盟链的金融隐私保护与监管方案具体构造包括以下9个算法:

初始化Init:椭圆曲线基域为Fq,椭圆曲线方程为y2=x3+ax+b。椭圆曲线上群G的生成元为P,其阶为大素数n,其中n>2191;e为对称双线性映射e:G×G→GT;哈希函数H:{0,1}*→Zn,则系统公共参数为SP

SP=(a,b,e,G,GT,P,n,H)

(1)

密钥生成KeyGen:交易发起方输入系统公共参数SP,选择随机数x1∈Zn,如下计算

X1←x1P∈G

(2)

则交易发起方的私钥和公钥为(x1,X1);类似地,接收方的私钥和公钥为(x2,X2),监管方1的私钥和公钥为(x3,X3),监管方2的私钥和公钥为(x4,X4)。

金额同态加密HEnc:交易发起方选择随机数r1∈Zn,输入交易发起方私钥x1、支付金额v1、交易接收方公钥X2和两个监管方的公钥X3,X4,如下计算支付金额同态密文C1

C1=(U1,U2,U3)

(3)

类似地,交易发起方选择随机数r2∈Zn,输入交易发起方私钥x1、找零金额v2、交易发起方公钥X1和两个监管方的公钥X3,X4,如下计算找零金额同态密文C2

C2=(V1,V2,V3)

(4)

注意:支付金额同态密文C1生成过程中嵌入了接收方公钥X2,但是找零金同态额密文C2生成过程中嵌入的是交易发起方公钥X1(因为找零金额同态密文C2的接收方就是交易发起方本人)。

类似地,交易发起方从联盟链读取需要花费的金额同态密文C0,有以下表达式

C0=(W1,W2,W3)

(5)

其中,x0对应上一交易单的发起方私钥,而X1对应上一交易单的接收方公钥。

交易发起方生成零知识证据π1表明其知道密态金额的输入之和等于输出之和v0=v1+v2。具体而言,交易发起方采用零知识证明协议证明其知道H(r0,x0·X1)-H(r1,x1·X2)-H(r2,x1·X1),即满足以下离散对数关系

W3/(U3·V3)

=e(X3,X4)(H(r0,x0·X1)-H(r1,x1·X2)-H(r2,x1·X1))

(6)

该离散对数等式中,交易发起方无法知道上一交易单中交易发起方的私钥x0,但是,上述等式等价于以下等式

W3/(U3·V3)

=e(X3,X4)(H(r0,x1·X0)-H(r1,x1·X2)-H(r2,x1·X1))

(7)

因此,交易发起方能够输入其私钥x1和公钥X1、上一交易单中交易发起方的公钥X0、接收方的公钥X2、U1,V1,W1,输出零知识证据。具体而言,交易发起方可用非交互式Sigma协议进行证明。

此外,交易发起方还需采用Bulletproofs范围证明协议π2证明密态支付金额v1和密态找零金额v2均大于零v1≥0,v2≥0,即支付金额和找零金额范围均属于[0,264-1]范围。

签名算法Sig:交易发起方选择随机数k←Zn,输入私钥x1、需要花费的金额同态密文C0及其对应公钥PK1、支付金额同态密文C1及其对应公钥PK2、找零金额同态密文C2及其对应公钥PK1,如下计算

(a1,b1)←kP∈G,

σ1←a1+SM3(m)modn,

σ2←(1+x1)-1·(k-σ1x1)modn

(8)

其中,m=(C0,PK1)‖(C1,PK2)‖(C2,PK1)。

如果σ1=0或σ2=0,则重新选择随机数k并重新计算σ1,σ2,否则签名为σ=(σ1,σ2)。交易发起方将消息签名对(m,σ)提交到联盟链系统中。

验证算法Verify:共识节点检查σ1,σ2是否属于[1,n-1];如果否,则拒绝,否则以σ1、σ2和公钥X1为输入,如下计算

(a1,b1)←σ2P+(σ1+σ2)X1

(9)

如果σ1=a1+SM3(m)modn,无双重花费,且密态金额的输入之和等于输出之和的零知识证据π1以及Bulletproofs范围证明证据π2均验证成功,则接受并存储到联盟链,否则拒绝。

接收方收款金额解密Dec1:接收方根据对应公钥PK2,从联盟链系统读取密态交易金额C1,采用解密算法Dec1,输入系统公共参数SP、其私钥x2、交易发起方的公钥X1、两个监管方的公钥X3,X4和支付金额同态密文C1,如下计算

e(P,P)v1←U3/e(X3,X4)H(U1,x2·X1)

(10)

交易发起方和接收方通常会事先或事后协商交易金额v1′,则接收方验证协商金额v1′是否与收款金额v1一致

e(P,P)v1=e(P,P)v1′

(11)

如果一致,则接受,否则拒绝。如果交易发起方和接收方没协商过交易金额v1′,交易金额范围较小,则接收方能够采用查找法快速查找出金额v1′使得等式e(P,P)v1=e(P,P)v1′成立,从而实现收款。

因此,接收方能够解密所有收款金额,实现对收款金额的统计,并用于规划下一阶段的收款。

类似地,对于找零金额v2,交易发起方就是接收方,采用解密算法Dec1,输入系统公共参数SP、其私钥x1、交易发起方公钥X1、两个监管方的公钥X3,X4和找零金额同态密文C2,如下计算

e(P,P)v2←V3/e(X3,X4)H(V1,x1·X1)

(12)

交易发起方知道找零金额v2′,则直接验证找零金额解密等式e(P,P)v2=e(P,P)v2′的正确性。

因此,交易发起方能够解密所有找零金额,实现对找零金额的统计,并用于下一轮的支付。

交易发起方支付金额解密Dec2:交易发起方根据对应公钥X2,从联盟链系统读取交易数据C1,采用解密算法Dec2,输入系统公共参数SP、私钥x1、接收方的公钥X2、两个监管方的公钥X3,X4和支付金额同态密文C1,如下计算明文支付金额v1

(13)

交易发起方知道支付金额v1′,则直接验证支付金额解密等式e(P,P)v1=e(P,P)v1′的正确性。

因此,交易发起方能够解密所有的支付金额,查看所有支付金额记录,实现对支付金额的统计,并用于规划下一阶段的支付。

类似地,交易发起方根据对应公钥X1,从联盟链系统读取交易数据C2,采用解密算法Dec2,输入系统公共参数SP、私钥x1、交易发起方的公钥X1、两个监管方的公钥X3,X4和找零金额同态密文C2,如下计算明文找零金额v2

e(P,P)v2←V3/e(X3,X4)H(V1,x1·X1)

(14)

因此,交易发起方能够解密所有的找零金额,查看所有找零金额,并用于规划下一阶段的支付。

监管方1解密Dec3:采用解密算法Dec3,输入系统公共参数SP、私钥x3、监管方2的公钥X4和支付金额同态密文C1,如下计算明文金额v1

e(P,P)v1←U3/e(U2,X4)x3

(15)

采用查找法快速查找出金额v1′使得等式e(P,P)v1=e(P,P)v1′成立,实现交易金额v1的严格监管。

类似地,采用解密算法Dec3,输入系统公共参数SP、私钥x3、监管方2的公钥X4和支付金额同态密文C2,如下计算明文金额v2

e(P,P)v2←V3/e(V2,X4)x3

(16)

采用查找法快速查找出找零金额v2′使得等式e(P,P)v2=e(P,P)v2′成立,实现找零金额v2的严格监管。因此,监管方1能够实现对所有交易金额的解密,准确掌握国家经济活力并严格打击非法金融行为。

监管方2解密Dec4:采用解密算法Dec4,输入系统公共参数SP、私钥x4、监管方1的公钥X3和支付金额同态密文C1,如下计算明文金额v1

e(P,P)v1←U3/e(U2,X3)x4

(17)

采用查找法快速查找出金额v1′使得等式e(P,P)v1=e(P,P)v1′成立,实现交易金额v1的严格监管。

类似地,采用解密算法Dec4,输入系统公共参数SP、私钥x4、监管方1的公钥X3和支付金额同态密文C2,如下计算明文金额v2

e(P,P)v2←V3/e(V2,X3)x4

(18)

采用查找法快速查找出找零金额v2′使得等式e(P,P)v2=e(P,P)v2′成立,实现找零金额v2的严格监管。因此,监管方2能够实现对所有交易金额的解密,准确掌握国家经济活力并严格打击非法金融行为。

5 应用分析

隐私保护:采用同态加密对交易金额进行加密,并使用零知识证明协议证明密态情况下需要支付的金额等于支付给接收方的金额和找零金额之和,使用Bulletproofs范围证明协议证明涉及的所有金额均大于零。因此,共识节点能够验证支付金额的正确性,但是不知道具体的明文金额,从而实现金融隐私保护。

接收方可解密性:接收方能够解密收款金额,则能够定期统计所有的收款金额,并用于规划金融事务。

发送方可解密性:交易发起方能够解密所有支付金额,则能够定期统计所有的支付金额,并用于规划金融事务。

监管方1和2可解密性:两个监管方能够独立解密用户之间的交易,能够独立准确掌控国家经济活力,并发现非法金融行为。该过程实现了分权监管,能够进一步防止腐败行为。因此,本方案的监管能够具有较大的实用性。

6 方案对比

将本系统中的加密方案与文献[16]中的方案进行对比。文献[16]中的两个接收方对应与本文同态加密方案中的两个监管方;此外,本文同态加密方案中,发送方和接收方均能够独立解密密文。因此,本文方案相比文献[16]中的方案具有更大的应用范围。本文方案与文献[16]加密方案私钥和公钥长度相等。令κ为私钥或随机数的长度,|G|为群G的元素长度,|GT|为双线性群GT的元素长度,e为群G上指数计算复杂度,eT为双线性群GT上的指数计算复杂度,哈希函数H的计算复杂度可忽略,群G和双线性群GT的内部椭圆曲线点计算复杂度可忽略。文献[16]的构造方案中,从密文中删除接收方1的公钥u=yP,则与本文的构造方案具有对应关系。

如表1所示,本系统中的加密方案比文献[16]的加密方案多了一个接收方。此外,发送方可解密是本加密方案的一大亮点:发送方解密密文,则能够用于定期统计所有的支付金额,并用于规划金融活动,具有较好的应用前景。

表1 算法对比

表2 算法测试(单位:毫秒ms)

7 算法测试

对本文方案进行实验测试。实验设备信息:内核x86_64操作系统Linux 4.17.6-1-ARCH,运算芯片Intel i5-8550U 1.60GHz,内存8GB。实验选择SM3作为哈希函数的具体实现,加密算法采用SM9算法推荐的椭圆曲线,椭圆曲线群的阶为191bit。如图表1所示,横向表示运行时间(单位毫秒),纵向表示关键算法。

本方案加密部分比文献[16]加密时间长0.32ms,主要原因是金额在双线性群上进行计算e(P,P)v。该计算完全取决于金额的取值。如果金额较大,则双线性群上的计算较慢。如果金额较小,则计算较快。因为文献[16]的方案没有实现同态加密,所以计算速度较快。同样原因,由于本加密方案实现了同态加密功能,所以监管方1和监管方2的解密时间仅比文献[16]慢0.32ms和0.33ms。

8 结语

本文提出一种联盟链金融隐私保护与监管系统,使用同态加密实现交易额隐私保护与监管。方案中的交易发起方、接收方、监管方1和监管方2均能够解密,从而实现交易发起方支付金额统计、接收方收款金额统计,两个监管方进行独立监管。给出金额隐私保护与监管交易系统的形式化模型,定义了加密方案的安全模型,并在安全模型下证明加密方案是安全的。最后,对本文的加密方案和文献16进行理论对比和实验测试,结果表明本方案效率较高,具有较好的应用前景。

猜你喜欢

私钥公钥密文
比特币的安全性到底有多高
程序员把7500枚比特币扔掉损失巨大
一种新的密文策略的属性基加密方案研究
密码分类和攻击类型
一种抗攻击的网络加密算法研究
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
条件型非对称跨加密系统的代理重加密方案
一种公开密钥RSA算法的实现