APP下载

可监管的区块链交易隐私保护方案

2023-10-09玄佳兴李国民

计算机应用与软件 2023年9期
关键词:私钥公钥合法性

玄佳兴 李国民 李 军

1(国网区块链科技(北京)有限公司 北京 100053)

2(北京信息科技大学 北京 100192)

0 引 言

区块链起源于中本聪(Satoshi Nakamoto)的奠基性论文《比特币:一种点对点电子现金系统》[1],至此以比特为代表的区块链技术进入了新的篇章[2]。比特币(Bitcoin)是区块链1.0的代表,主要解决货币和支付去中心化的问题,以太坊(Ethereum)[3]是区块链2.0的代表,利用智能合约解决金融领域去中心化的信任问题。对于区块链上的一笔交易,主要涉及发送者、接收者和交易金额三部分内容,但比特币和以太坊都无法保证交易的隐私性[4],发送者和接收者的身份通过用户公钥地址实现,具有一定程度的匿名性,但能通过数据分析或机器学习方法挖掘交易主体的一些关联信息[5],再结合一些背景知识获得交易者的身份信息。另外,由于区块链的交易金额完全暴露在链上,任何人都可通过区块链全节点查询访问,攻击者通过分析交易记录可能获取到交易账户的资金余额和资金流向等[6],无法保证交易的隐私性。目前也存在一些匿名数字货币,如门罗币(Monero)、零币(Zcash)、新上线的Beam和Grin等[7],采用环签名、零知识证明、密码承诺等技术保证交易发送者、接收者、交易金额的隐私性[8],但其隐私性保护程度过强,任何人都无法对其进行监管控制,可能被用于一些非法金融交易活动中,对社会造成一定的危害性。

本文融合多种密码学技术,提出一种兼具隐私和监管功能的区块链交易方案。利用概率公钥加密的优势,隐藏用户的真实身份信息,利用密码承诺方案和零知识证明技术实现区块链交易的合法性验证,监管机构则可通过解密获取用户的真实身份信息,实现了交易隐私保护和监管功能的要求。并且监管机构无须存储用户的真实身份和密钥信息,大幅降低存储和运算压力,通过对比分析表明本文提出的区块链交易方案具有简单易用的特点,在数字货币、金融和能源等多种情景中具有实用价值。

1 预备知识

1.1 UTXO模型

UTXO(Unspent Transaction Output),即表示未花费的交易输出[9]。在比特币账本上记录了多笔的交易,每一笔交易都有若干个交易输入(转账者),也就是资金来源,同时也有若干个交易输出(收款者),也就是资金去向,这些产生的输出,就是UTXO。图1为比特币的UXTO模型示例,其中交易1有1个1BTC的输入,有2个分别为0.4BTC和0.5BTC的输出,输入与输出的0.1BTC差值为交易手续费。交易2与交易1类似,并且其输出又作为交易3的输入,由此形成交易的链式结构。

图1 比特币UTXO交易模型示例

1.2 概率公钥密码体制

概率公钥加密是一种非确定性密码,对于相同的明文生成的密文随机变化,在计算安全假设条件下,不可能在多项式时间内通过密文相关攻击获取明文的任何有效信息。Goldwasser等[10]利用二次剩余定理设计了一种概率公钥密码方案(简称GM概率公钥加密算法),但GM概率公钥体制的密文扩展率较大,传输效率较低。Blum等[11]给出了一种效率较高的概率加密方案(简称BG概率公钥加密算法),大幅降低了密文数据膨胀,因此本文主要选用BG方案对用户的身份信息进行加密。BG概率加密主要利用Blum-Blum-Shub(BBS)[12]生成器提升密文随机性,算法详细过程为:

加密算法:对于待加密明文消息x∈(Z2)m,加密过程为:

1) 随机选择种子so,利用BBS生成器产生m个随机比特z1,z2,…,zm作为密钥流。

3) 计算yi=(xi+zi) mod 2,其中1≤i≤m。

4) 密文为c=EK(x,r)=(y1,y2,…,ym,Sm+1)。

解密算法:解密c=(y1,y2,…,ym,sm+1)的过程如下:

5) 利用中国剩余定理计算r,满足以下条件:

r≡b1modp和r≡b2modq。

6) 利用BBS生成器从种子so=r计算得到z1z2…zm。

7) 对于1≤i≤m计算xi=(yi+zi)mod 2。

8) 解密明文即为x=x1x2…xm。

1.3 基于身份的密码体制

基于身份的密码技术(Identity-Based Cryptography,IBC)[13]能够有效地解决PKI数字证书管理的难题。在IBC密码体制中,每一个实体的标识ID即为该用户的公钥,用户的私钥由KGC主公私钥和用户ID计算得出。本文采用国密SM9标准算法作为IBC的一个实例,下面对SM9数字签名算法进行介绍[14]。

设P1为椭圆曲线加法循环群G1的生成元,P2为椭圆曲线加法循环群G2的生成元,H(·)为Hash函数,e(·)为双线性对。假设A为签名者,B为验证者,SM9数字签名过程如下:

签名过程:设待签名的消息为M,A签名过程如下:

1) 计算g=e(P1,Ppub-s)。

2) 选择随机数r∈[1,N-1]。

3) 计算w=gr,h=H2(M‖w,N),l=(r-h)modN。

4) 计算S=[l]dsA,则M的签名为(h,S)。

验证过程:为了验证消息M′的签名(h′,S′),B执行以下过程:

1) 计算g=e(P1,Ppub-s)。

2) 计算t=gh′,h1=H(IDA,N)。

3) 计算P=[h1]P2+Ppub-s,u=e(S′,P),w′=u·t。

4) 计算h2=H2(M′‖w′,N),若h2=h′,则签名验证通过,否则失败。

1.4 密码承诺方案

密码承诺是一个涉及承诺方和接收方的二阶段交互协议,门罗币中的Pedersen承诺是一种常用的满足完美隐藏、计算绑定的同态承诺协议,用来保护交易金额的隐私,数据公式表述为:

P=r·G+v·H

(1)

式中:P为隐藏后的交易金额;G和H为椭圆曲线密码中的基点;r为随机数;v为交易金额,另外还需要利用Bulletproofs零知识证明技术[15],通过更加高效的方式实现交易金额的范围证明。

2 可监管的区块链交易隐私保护方案

本文融合UTXO交易模型、BG概率公钥加密算法、IBC密码体制和Pedersen承诺等技术,提出一种可监管的区块链交易隐私保护方案,下面对设计过程进行具体介绍。

2.1 方案模型

本方案的参与交易主体如图2所示,主要有:(1) 交易的发送者和接收者,希望能通过安全的交易方式保护自己的身份匿名性和交易金额的隐私;(2) 区块链矿工,验证交易的合法性并打包进区块中,并通过共识机制存储在区块链上;(3) 监管机构,在必要时候追踪交易的相关参与者及交易金融,用以打击金融非法犯罪活动;(4) 第三方,通过某些技术手段窃取交易相关信息,以此获取不当利益。

图2 区块链交易主体

方案包括以下7个算法:

BG.KeyGen(p,q):使用大素数p和q生成BG算法的公钥pk和私钥sk。

BG.Enc(pk,m):使用概率公钥密码BG算法的公钥pk,对消息m加密得到密文。

BG.Dec(sk,ct):使用概率公钥密码BG算法的私钥sk,对密文ct解密得到明文。

IBC.KeyGen(sk,id):使用SM9算法的主密钥sk和用户id,生成用户私钥。

IBC.Enc(pk,m):使用SM9算法的公钥pk,对消息m加密得到密文。

IBC.Dec(sk,ct):使用SM9算法的私钥sk,对密文ct解密得到明文。

IBC.Sign(sk,m):使用SM9算法的私钥sk,对消息m签名得到签名值。

2.2 匿名身份实现

在方案初始化阶段,监管机构需要生成三对公私钥对:(1) 利用BG概率公钥加密算法生成相应的私钥SkBG和公钥PkBG;(2) 监管机构作为IBC密码体制中KGC的角色,生成主公钥MPK和主私钥MSK;(3) 定义IBC的身份标识为IDa,将IDa作为公钥,基于IBC算法,利用主私钥MSK生成对应的签名私钥Ska=IBC.KeyGen(MSK,IDa)。然后系统中的用户通过可唯一标识身份的信息IDu向监管机构申请密钥分发,IDu需要具有自证性,可以为用户的邮箱地址、身份证号、手机号码等。

监管机构在认证用户的身份信息后,利用BG概率密码算法公钥PKBG加密用户的身份信息IDu,生成AID1=BG.Enc(PkBG,IDu),为了确保用户的IDu确定经过监管机构认证,需要监管机构对AID1进行签名认证,生成AID2=IBC.Sign(Ska,AID1),定义AIDu=AID1‖AID2,由于AID1是将IDu利用BG概率公钥加密算法得到,具有良好的随机性,AID2为AID1经IBC签名得到,因此AIDu也具有良好的随机性,能够有效隐藏用户的真实身份信息IDu,实现身份的匿名性。

再将AIDu作为公钥身份,基于IBC算法,监管机构利用主私钥MSK生成用户对应的私钥Sku=IBC.KeyGen(MSK,AIDu),用户的可自证的真实身份信息为IDu,计算得到的匿名身份信息为AIDu,相应的私钥为Sku。由于采用BG概率公钥加密算法,同一个IDu可以加密生成不同的AIDu,IDu和AIDu为一对多的关系,理论上同一个IDu可以生成无限多的AIDu,使用户能够持续更新AIDu,从而可以实现用户身份的良好匿名性。

为了方便后续的描述,定义交易发送者和接收的身份标识分别为IDs和IDr,通过上述过程分别计算得到对应的匿名身份为AIDs和AIDr,私钥为Sks和Skr。当发送者向接收者进行交易的时候,只需要利用Sks解锁UTXO输入脚本,将AIDr作为接收者地址,即可实现身份匿名性。

2.3 交易金额隐私保护

当发送者AIDs需要和接收者AIDr进行交易时,不失一般性,假如交易的结构如图3所示。

图3 UTXO交易结构

在该交易中,AIDs有两个输入,金额分别为vin1和vin2;有两个输出,分别为与AIDr进行的交易,金额为vout1,以及返给自己金额为vout2的找零费用,另外的vfee部分则为手续费,作为矿工打包交易的费用。

本文方案主要采用Pedersen承诺实现交易金额(vin1,vin2,vout1,vout2)的隐私保护,手续费vfee则对外公开。对于交易输入,需要引入先前输出,则有:

Pin1=a1G+vin1H

(2)

Pin2=a2G+vin2H

(3)

式中:(a1,vin1)和(a2,vin2)可由AIDs利用私钥Sks解密得到。

对于输出,发送者AIDs选择两个随机数b1和b2,然后计算:

Pout1=b1G+vout1H

(4)

Pout2=b2G+vout2H

(5)

Pfee=vfeeG

(6)

Pout1和Pout2主要便于矿工验证交易的合法性。为了使接收者获取(b1,vout1)和(b2,vout2),需要分别利用接收者和发送者的公钥对其加密,得到:

Cout1=IBC.Enc(AIDr,(b1,vout1))

(7)

Cout2=IBC.Enc(AIDs,(b1,vout2))

(8)

为了保证交易的合法性,需要保证:

vin1+vin2=vout1+vout2+vfee

(9)

则可以计算:

(Pin1+Pin2)-(Pout1+Pout2+Pfee)=

(a1+a2-b1-b2)H

(10)

定义交易的公钥:

PkTx=(a1+a2-b1-b2)H

(11)

交易的私钥为:

SkTx=(a1+a2-b1-b2)

(12)

定义整个交易为

MTx={Pin1,Pin2,(Pout1,Cout1),(Pout2,Cout2),vfee}

(13)

利用SM9签名算法对交易签名得到:

SigTx=IBC.Sign(SKTx,MTx)

(14)

另外,还需要对交易金额的范围进行证明,避免出现负值情况,可以通过Bulletproofs零知识证明实现,由于涉及内容较为复杂,本文不再详述,可参考文献[15]。因此最终的交易可以表示为:

Tx={MTx,SigTx,Prange}

(15)

式中:Prange为交易金额范围证明的相关内容。将Tx通过网络对外广播,矿工对其合法性进行验证后,打包成块并通过共识机制记录在区块链账本上,接收者根据AIDr即可确认收到交易,然后利用私钥Skr解密Cout1,获取交易信息,由此在隐藏交易金额的情况下完成交易的整个过程。

2.4 交易合法性验证

区块链是去中心化的网络,需要通过共识机制将交易打包,记录在区块链上。在共识过程中,矿工需要对交易的合法性进行验证,主要包括参与者身份合法性和交易金额合法性。

(1) 身份合法性。身份合法性验证包括发送者和接收者的身份合法性验证。在UTXO模型中,发送者利用Sks解锁UTXO输入脚本,因此矿工只需要利用发送者匿名身份公钥AIDs验证解锁脚本签名的合法性即可。

为了防止发送者将交易发给某个不存在的非法地址上,造成资产流失,因此需要对接收者地址的合法性进行验证。本文将接收者的匿名身份公钥AIDr作为接收者的地址,且由前面内容可知:

AIDr=AID1‖AID2

(16)

其中:

AID1=BG.Enc(PkBG,IDu)

(17)

AID2=IBC.Sign(Ska,AID1)

(18)

AID2为监管机构利用其私钥Ska对AID1进行的签名,因此矿工需要利用监管机构身份公钥IDa验证AID2签名的合法性即可,从而保证AIDr的身份的合法性。

(2) 交易金额合法性。交易金额合法性同样需要验证两方面:输入与输出金额的相等;输出金额在有效的范围。

对于交易MTx和Tx矿工需要计算交易公钥:

PkTx=(Pin1+Pin2)-(Pout1+Pout2+vfeeG)

(19)

然后利用PkTx验证交易签名SigTx的合法性,即可完成输入与输出金额相等的条件要求。为了保护输出金额在有效的范围内,需要利用现有Bulletproofs零知识证明技术对Prange进行验证,可参考文献[15]。

2.5 监管功能实现

区块链交易隐私保护是相对的,主要防止恶意收集用户信息的第三方,但对于监管机构而言,有时需要追踪一些非法交易,用以打击违法犯罪活动,因此需要保证交易的可监管性,监管内容包括参与交易者的身份和交易的金额。

参与交易者的匿名身份AIDu,但真实身份IDu是被隐藏的。根据:

AIDu=AID1‖AID2

(20)

AID1=BG.Enc(PkBG,IDu)

(21)

监管机构先通过AID2验证身份认证合法性,然后利用其BG概率公钥加密算法的私钥SkBG解密AID1,即:

IDu=BG.Dec(SkBG,AID1)

(22)

即可获取交易参与者的真实身份信息。

为了获取交易金额信息,需要首先利用IBC算法。监管机构作为IBC密码体制中KGC的角色,能够计算接收者AIDr的私钥Skr,即:

Skr=IBC.KeyGen(MSK,AIDr)

(23)

对于交易MTx和Tx,监管机构利用Skr解密Cout1,得到:

(b1,vout1)=IBC.Dec(Skr,Cout1)

(24)

监管机构获取由此对AIDr的转账金额vout1。同理,对Cout2处理类似,从而实现对区块链交易的查询和监管功能。

3 方案分析

3.1 隐私保护能力

对于用户的身份信息,通过AIDu隐私用户的真实信息IDu,但若频繁使用AIDu,比如在一个交易中,同时将AIDu当作交易输入和输出地址,很容易推断出这是交易者给自己的找零信息。为了增强隐私性,本文采用BG概率随机加密,每次加密可以随机选择不同的种子so,相同的IDu可以生成无数多的匿名AIDu地址,并且AIDu之间相互不可区分。因此用户可以在不改变IDu的情况,由监管机构为其批量生成AIDu,在每次交易的时候,都对AIDu进行更换,第三方甚至无法辨别一个交易中的找零输出,更无法追溯交易的整个流程,第三方无法推测任何有效信息,因此本文方案能实现较强的隐私保护能力。

3.2 性能分析

如前文和2.1节所述,本方案融合多种密码学技术,为了评估本方案的开销,我们采用处理时间作为性能度量,tbg_kgen表示BG算法的密钥生成时间,tbg_enc表示BG算法的加密时间,tbg_dec表示BG算法的解密时间,tsm9_kgen表示SM9算法的密钥生成时间,tsm9_enc表示SM9算法的加密时间,tsm9_dec表示SM9算法的解密时间,tsm9_sign表示SM9算法的签名时间。另外,tped表示Pedersen承诺时间。

本文的方案包括匿名身份的实现、交易金额隐私保护、交易合法性验证和监管功能实现,对应的计算开销如表1所示。

表1 本文方案的计算开销

本方案所用到的BG算法和SM9算法比较成熟,已经取得了广泛的应用,其性能都有保障。通过表1可知,交易金额隐私保护和交易合法性验证中用到的Pedersen承诺较多,占用一定的开销,但Pedersen承诺现属于区块链隐私保护的关键技术和常用手段,因此,本方案在性能开销方面属于正常的可接受范围之内。

3.3 比较分析

本节将所提出的可监管的区块链匿名交易方案与现有区块链交易方案进行比较分析,结果如表2所示。

表2 主流区块链隐私保护技术

在现有的密码货币中,比特币和以太坊对身份的匿名性实现较弱,并且交易金额完全对外公开,不具备隐私保护功能。Dash采用混币技术,通过主节点将多个交易的输入输出混合,但存在中心化的风险,若主节点被控制,可能导致用户隐私泄露。Monero采用隐藏地址和环签名技术,不再依赖中心化节点,但需要与其他用户的公钥混合,验证相对复杂。Zcash采用zkSNARKs零知识证明方案,能够达到非常强的匿名隐私保护,但是zkSNARKs方案实现很复杂,需要初始可信参数设置,生成证明非常耗时,影响了实用效率。Beam和Grin都是采用MimbleWimble协议,利用Pedersen承诺和聚合签名技术,实现方式简单,但需要交易双方的交互过程,使用较为不便。

上述区块链交易隐私保护方案都不具备可监管功能。文献[16]提出一种适合于监管的多链模型,但是链节点间的通信较为复杂,并且超级链结构也使其失去了去中心化的特性,无法保护交易的隐私性。文献[17]提出了采用了双链结构的数字货币监管模型,结合联盟链和公链,通过秘密共享保证交易的隐私,同时提供了可监管特性,但双链结构实现较为复杂。

通过和现有的方案比较可知,本文方案不需要依赖中心化的主节点,不需要引入环签名其他的公钥,不需要实现复杂的zkSNARKs证明过程,不需要繁琐的交互过程,也不需要复杂的多链结构,通过借助概率公钥加密、IBC密码体制和Pedersen承诺,使区块链交易兼具隐私保护和监管功能,并且监管机构无须存储用户的真实身份和密钥信息,大幅降低存储和运算压力,具有简单实用的特点。

4 结 语

为了解决区块链交易中实现隐私保护和监管要求的平衡问题,本文融合多种密码学技术,利用概率公钥密码算法、IBC密码体制、Pedersen承诺和Bulletproofs零知识证明技术等,提出一种兼具隐私和监管功能的区块链交易方案。本文方案可作为独立模块应用在现有区块链技术中。安全性能分析表明本文区块链交易方案具有简单和实用的特点,在数字资产、能源交易等领域中具有广泛的应用价值。

猜你喜欢

私钥公钥合法性
组织合法性的个体判断机制
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
Westward Movement
一种基于混沌的公钥加密方案
一种基于虚拟私钥的OpenSSL与CSP交互方案
HES:一种更小公钥的同态加密算法
SM2椭圆曲线公钥密码算法综述
浅谈汽车养护品生产的合法性
建筑工程垫资承包合法性研究