玄佳興 李國(guó)民 李 軍
1(國(guó)網(wǎng)區(qū)塊鏈科技(北京)有限公司 北京 100053)
2(北京信息科技大學(xué) 北京 100192)
區(qū)塊鏈起源于中本聰(Satoshi Nakamoto)的奠基性論文《比特幣:一種點(diǎn)對(duì)點(diǎn)電子現(xiàn)金系統(tǒng)》[1],至此以比特為代表的區(qū)塊鏈技術(shù)進(jìn)入了新的篇章[2]。比特幣(Bitcoin)是區(qū)塊鏈1.0的代表,主要解決貨幣和支付去中心化的問(wèn)題,以太坊(Ethereum)[3]是區(qū)塊鏈2.0的代表,利用智能合約解決金融領(lǐng)域去中心化的信任問(wèn)題。對(duì)于區(qū)塊鏈上的一筆交易,主要涉及發(fā)送者、接收者和交易金額三部分內(nèi)容,但比特幣和以太坊都無(wú)法保證交易的隱私性[4],發(fā)送者和接收者的身份通過(guò)用戶(hù)公鑰地址實(shí)現(xiàn),具有一定程度的匿名性,但能通過(guò)數(shù)據(jù)分析或機(jī)器學(xué)習(xí)方法挖掘交易主體的一些關(guān)聯(lián)信息[5],再結(jié)合一些背景知識(shí)獲得交易者的身份信息。另外,由于區(qū)塊鏈的交易金額完全暴露在鏈上,任何人都可通過(guò)區(qū)塊鏈全節(jié)點(diǎn)查詢(xún)?cè)L問(wèn),攻擊者通過(guò)分析交易記錄可能獲取到交易賬戶(hù)的資金余額和資金流向等[6],無(wú)法保證交易的隱私性。目前也存在一些匿名數(shù)字貨幣,如門(mén)羅幣(Monero)、零幣(Zcash)、新上線的Beam和Grin等[7],采用環(huán)簽名、零知識(shí)證明、密碼承諾等技術(shù)保證交易發(fā)送者、接收者、交易金額的隱私性[8],但其隱私性保護(hù)程度過(guò)強(qiáng),任何人都無(wú)法對(duì)其進(jìn)行監(jiān)管控制,可能被用于一些非法金融交易活動(dòng)中,對(duì)社會(huì)造成一定的危害性。
本文融合多種密碼學(xué)技術(shù),提出一種兼具隱私和監(jiān)管功能的區(qū)塊鏈交易方案。利用概率公鑰加密的優(yōu)勢(shì),隱藏用戶(hù)的真實(shí)身份信息,利用密碼承諾方案和零知識(shí)證明技術(shù)實(shí)現(xiàn)區(qū)塊鏈交易的合法性驗(yàn)證,監(jiān)管機(jī)構(gòu)則可通過(guò)解密獲取用戶(hù)的真實(shí)身份信息,實(shí)現(xiàn)了交易隱私保護(hù)和監(jiān)管功能的要求。并且監(jiān)管機(jī)構(gòu)無(wú)須存儲(chǔ)用戶(hù)的真實(shí)身份和密鑰信息,大幅降低存儲(chǔ)和運(yùn)算壓力,通過(guò)對(duì)比分析表明本文提出的區(qū)塊鏈交易方案具有簡(jiǎn)單易用的特點(diǎn),在數(shù)字貨幣、金融和能源等多種情景中具有實(shí)用價(jià)值。
UTXO(Unspent Transaction Output),即表示未花費(fèi)的交易輸出[9]。在比特幣賬本上記錄了多筆的交易,每一筆交易都有若干個(gè)交易輸入(轉(zhuǎn)賬者),也就是資金來(lái)源,同時(shí)也有若干個(gè)交易輸出(收款者),也就是資金去向,這些產(chǎn)生的輸出,就是UTXO。圖1為比特幣的UXTO模型示例,其中交易1有1個(gè)1BTC的輸入,有2個(gè)分別為0.4BTC和0.5BTC的輸出,輸入與輸出的0.1BTC差值為交易手續(xù)費(fèi)。交易2與交易1類(lèi)似,并且其輸出又作為交易3的輸入,由此形成交易的鏈?zhǔn)浇Y(jié)構(gòu)。
圖1 比特幣UTXO交易模型示例
概率公鑰加密是一種非確定性密碼,對(duì)于相同的明文生成的密文隨機(jī)變化,在計(jì)算安全假設(shè)條件下,不可能在多項(xiàng)式時(shí)間內(nèi)通過(guò)密文相關(guān)攻擊獲取明文的任何有效信息。Goldwasser等[10]利用二次剩余定理設(shè)計(jì)了一種概率公鑰密碼方案(簡(jiǎn)稱(chēng)GM概率公鑰加密算法),但GM概率公鑰體制的密文擴(kuò)展率較大,傳輸效率較低。Blum等[11]給出了一種效率較高的概率加密方案(簡(jiǎn)稱(chēng)BG概率公鑰加密算法),大幅降低了密文數(shù)據(jù)膨脹,因此本文主要選用BG方案對(duì)用戶(hù)的身份信息進(jìn)行加密。BG概率加密主要利用Blum-Blum-Shub(BBS)[12]生成器提升密文隨機(jī)性,算法詳細(xì)過(guò)程為:
加密算法:對(duì)于待加密明文消息x∈(Z2)m,加密過(guò)程為:
1) 隨機(jī)選擇種子so,利用BBS生成器產(chǎn)生m個(gè)隨機(jī)比特z1,z2,…,zm作為密鑰流。
3) 計(jì)算yi=(xi+zi) mod 2,其中1≤i≤m。
4) 密文為c=EK(x,r)=(y1,y2,…,ym,Sm+1)。
解密算法:解密c=(y1,y2,…,ym,sm+1)的過(guò)程如下:
5) 利用中國(guó)剩余定理計(jì)算r,滿足以下條件:
r≡b1modp和r≡b2modq。
6) 利用BBS生成器從種子so=r計(jì)算得到z1z2…zm。
7) 對(duì)于1≤i≤m計(jì)算xi=(yi+zi)mod 2。
8) 解密明文即為x=x1x2…xm。
基于身份的密碼技術(shù)(Identity-Based Cryptography,IBC)[13]能夠有效地解決PKI數(shù)字證書(shū)管理的難題。在IBC密碼體制中,每一個(gè)實(shí)體的標(biāo)識(shí)ID即為該用戶(hù)的公鑰,用戶(hù)的私鑰由KGC主公私鑰和用戶(hù)ID計(jì)算得出。本文采用國(guó)密SM9標(biāo)準(zhǔn)算法作為IBC的一個(gè)實(shí)例,下面對(duì)SM9數(shù)字簽名算法進(jìn)行介紹[14]。
設(shè)P1為橢圓曲線加法循環(huán)群G1的生成元,P2為橢圓曲線加法循環(huán)群G2的生成元,H(·)為Hash函數(shù),e(·)為雙線性對(duì)。假設(shè)A為簽名者,B為驗(yàn)證者,SM9數(shù)字簽名過(guò)程如下:
簽名過(guò)程:設(shè)待簽名的消息為M,A簽名過(guò)程如下:
1) 計(jì)算g=e(P1,Ppub-s)。
2) 選擇隨機(jī)數(shù)r∈[1,N-1]。
3) 計(jì)算w=gr,h=H2(M‖w,N),l=(r-h)modN。
4) 計(jì)算S=[l]dsA,則M的簽名為(h,S)。
驗(yàn)證過(guò)程:為了驗(yàn)證消息M′的簽名(h′,S′),B執(zhí)行以下過(guò)程:
1) 計(jì)算g=e(P1,Ppub-s)。
2) 計(jì)算t=gh′,h1=H(IDA,N)。
3) 計(jì)算P=[h1]P2+Ppub-s,u=e(S′,P),w′=u·t。
4) 計(jì)算h2=H2(M′‖w′,N),若h2=h′,則簽名驗(yàn)證通過(guò),否則失敗。
密碼承諾是一個(gè)涉及承諾方和接收方的二階段交互協(xié)議,門(mén)羅幣中的Pedersen承諾是一種常用的滿足完美隱藏、計(jì)算綁定的同態(tài)承諾協(xié)議,用來(lái)保護(hù)交易金額的隱私,數(shù)據(jù)公式表述為:
P=r·G+v·H
(1)
式中:P為隱藏后的交易金額;G和H為橢圓曲線密碼中的基點(diǎn);r為隨機(jī)數(shù);v為交易金額,另外還需要利用Bulletproofs零知識(shí)證明技術(shù)[15],通過(guò)更加高效的方式實(shí)現(xiàn)交易金額的范圍證明。
本文融合UTXO交易模型、BG概率公鑰加密算法、IBC密碼體制和Pedersen承諾等技術(shù),提出一種可監(jiān)管的區(qū)塊鏈交易隱私保護(hù)方案,下面對(duì)設(shè)計(jì)過(guò)程進(jìn)行具體介紹。
本方案的參與交易主體如圖2所示,主要有:(1) 交易的發(fā)送者和接收者,希望能通過(guò)安全的交易方式保護(hù)自己的身份匿名性和交易金額的隱私;(2) 區(qū)塊鏈礦工,驗(yàn)證交易的合法性并打包進(jìn)區(qū)塊中,并通過(guò)共識(shí)機(jī)制存儲(chǔ)在區(qū)塊鏈上;(3) 監(jiān)管機(jī)構(gòu),在必要時(shí)候追蹤交易的相關(guān)參與者及交易金融,用以打擊金融非法犯罪活動(dòng);(4) 第三方,通過(guò)某些技術(shù)手段竊取交易相關(guān)信息,以此獲取不當(dāng)利益。
圖2 區(qū)塊鏈交易主體
方案包括以下7個(gè)算法:
BG.KeyGen(p,q):使用大素?cái)?shù)p和q生成BG算法的公鑰pk和私鑰sk。
BG.Enc(pk,m):使用概率公鑰密碼BG算法的公鑰pk,對(duì)消息m加密得到密文。
BG.Dec(sk,ct):使用概率公鑰密碼BG算法的私鑰sk,對(duì)密文ct解密得到明文。
IBC.KeyGen(sk,id):使用SM9算法的主密鑰sk和用戶(hù)id,生成用戶(hù)私鑰。
IBC.Enc(pk,m):使用SM9算法的公鑰pk,對(duì)消息m加密得到密文。
IBC.Dec(sk,ct):使用SM9算法的私鑰sk,對(duì)密文ct解密得到明文。
IBC.Sign(sk,m):使用SM9算法的私鑰sk,對(duì)消息m簽名得到簽名值。
在方案初始化階段,監(jiān)管機(jī)構(gòu)需要生成三對(duì)公私鑰對(duì):(1) 利用BG概率公鑰加密算法生成相應(yīng)的私鑰SkBG和公鑰PkBG;(2) 監(jiān)管機(jī)構(gòu)作為IBC密碼體制中KGC的角色,生成主公鑰MPK和主私鑰MSK;(3) 定義IBC的身份標(biāo)識(shí)為IDa,將IDa作為公鑰,基于IBC算法,利用主私鑰MSK生成對(duì)應(yīng)的簽名私鑰Ska=IBC.KeyGen(MSK,IDa)。然后系統(tǒng)中的用戶(hù)通過(guò)可唯一標(biāo)識(shí)身份的信息IDu向監(jiān)管機(jī)構(gòu)申請(qǐng)密鑰分發(fā),IDu需要具有自證性,可以為用戶(hù)的郵箱地址、身份證號(hào)、手機(jī)號(hào)碼等。
監(jiān)管機(jī)構(gòu)在認(rèn)證用戶(hù)的身份信息后,利用BG概率密碼算法公鑰PKBG加密用戶(hù)的身份信息IDu,生成AID1=BG.Enc(PkBG,IDu),為了確保用戶(hù)的IDu確定經(jīng)過(guò)監(jiān)管機(jī)構(gòu)認(rèn)證,需要監(jiān)管機(jī)構(gòu)對(duì)AID1進(jìn)行簽名認(rèn)證,生成AID2=IBC.Sign(Ska,AID1),定義AIDu=AID1‖AID2,由于AID1是將IDu利用BG概率公鑰加密算法得到,具有良好的隨機(jī)性,AID2為AID1經(jīng)IBC簽名得到,因此AIDu也具有良好的隨機(jī)性,能夠有效隱藏用戶(hù)的真實(shí)身份信息IDu,實(shí)現(xiàn)身份的匿名性。
再將AIDu作為公鑰身份,基于IBC算法,監(jiān)管機(jī)構(gòu)利用主私鑰MSK生成用戶(hù)對(duì)應(yīng)的私鑰Sku=IBC.KeyGen(MSK,AIDu),用戶(hù)的可自證的真實(shí)身份信息為IDu,計(jì)算得到的匿名身份信息為AIDu,相應(yīng)的私鑰為Sku。由于采用BG概率公鑰加密算法,同一個(gè)IDu可以加密生成不同的AIDu,IDu和AIDu為一對(duì)多的關(guān)系,理論上同一個(gè)IDu可以生成無(wú)限多的AIDu,使用戶(hù)能夠持續(xù)更新AIDu,從而可以實(shí)現(xiàn)用戶(hù)身份的良好匿名性。
為了方便后續(xù)的描述,定義交易發(fā)送者和接收的身份標(biāo)識(shí)分別為IDs和IDr,通過(guò)上述過(guò)程分別計(jì)算得到對(duì)應(yīng)的匿名身份為AIDs和AIDr,私鑰為Sks和Skr。當(dāng)發(fā)送者向接收者進(jìn)行交易的時(shí)候,只需要利用Sks解鎖UTXO輸入腳本,將AIDr作為接收者地址,即可實(shí)現(xiàn)身份匿名性。
當(dāng)發(fā)送者AIDs需要和接收者AIDr進(jìn)行交易時(shí),不失一般性,假如交易的結(jié)構(gòu)如圖3所示。
圖3 UTXO交易結(jié)構(gòu)
在該交易中,AIDs有兩個(gè)輸入,金額分別為vin1和vin2;有兩個(gè)輸出,分別為與AIDr進(jìn)行的交易,金額為vout1,以及返給自己金額為vout2的找零費(fèi)用,另外的vfee部分則為手續(xù)費(fèi),作為礦工打包交易的費(fèi)用。
本文方案主要采用Pedersen承諾實(shí)現(xiàn)交易金額(vin1,vin2,vout1,vout2)的隱私保護(hù),手續(xù)費(fèi)vfee則對(duì)外公開(kāi)。對(duì)于交易輸入,需要引入先前輸出,則有:
Pin1=a1G+vin1H
(2)
Pin2=a2G+vin2H
(3)
式中:(a1,vin1)和(a2,vin2)可由AIDs利用私鑰Sks解密得到。
對(duì)于輸出,發(fā)送者AIDs選擇兩個(gè)隨機(jī)數(shù)b1和b2,然后計(jì)算:
Pout1=b1G+vout1H
(4)
Pout2=b2G+vout2H
(5)
Pfee=vfeeG
(6)
Pout1和Pout2主要便于礦工驗(yàn)證交易的合法性。為了使接收者獲取(b1,vout1)和(b2,vout2),需要分別利用接收者和發(fā)送者的公鑰對(duì)其加密,得到:
Cout1=IBC.Enc(AIDr,(b1,vout1))
(7)
Cout2=IBC.Enc(AIDs,(b1,vout2))
(8)
為了保證交易的合法性,需要保證:
vin1+vin2=vout1+vout2+vfee
(9)
則可以計(jì)算:
(Pin1+Pin2)-(Pout1+Pout2+Pfee)=
(a1+a2-b1-b2)H
(10)
定義交易的公鑰:
PkTx=(a1+a2-b1-b2)H
(11)
交易的私鑰為:
SkTx=(a1+a2-b1-b2)
(12)
定義整個(gè)交易為
MTx={Pin1,Pin2,(Pout1,Cout1),(Pout2,Cout2),vfee}
(13)
利用SM9簽名算法對(duì)交易簽名得到:
SigTx=IBC.Sign(SKTx,MTx)
(14)
另外,還需要對(duì)交易金額的范圍進(jìn)行證明,避免出現(xiàn)負(fù)值情況,可以通過(guò)Bulletproofs零知識(shí)證明實(shí)現(xiàn),由于涉及內(nèi)容較為復(fù)雜,本文不再詳述,可參考文獻(xiàn)[15]。因此最終的交易可以表示為:
Tx={MTx,SigTx,Prange}
(15)
式中:Prange為交易金額范圍證明的相關(guān)內(nèi)容。將Tx通過(guò)網(wǎng)絡(luò)對(duì)外廣播,礦工對(duì)其合法性進(jìn)行驗(yàn)證后,打包成塊并通過(guò)共識(shí)機(jī)制記錄在區(qū)塊鏈賬本上,接收者根據(jù)AIDr即可確認(rèn)收到交易,然后利用私鑰Skr解密Cout1,獲取交易信息,由此在隱藏交易金額的情況下完成交易的整個(gè)過(guò)程。
區(qū)塊鏈?zhǔn)侨ブ行幕木W(wǎng)絡(luò),需要通過(guò)共識(shí)機(jī)制將交易打包,記錄在區(qū)塊鏈上。在共識(shí)過(guò)程中,礦工需要對(duì)交易的合法性進(jìn)行驗(yàn)證,主要包括參與者身份合法性和交易金額合法性。
(1) 身份合法性。身份合法性驗(yàn)證包括發(fā)送者和接收者的身份合法性驗(yàn)證。在UTXO模型中,發(fā)送者利用Sks解鎖UTXO輸入腳本,因此礦工只需要利用發(fā)送者匿名身份公鑰AIDs驗(yàn)證解鎖腳本簽名的合法性即可。
為了防止發(fā)送者將交易發(fā)給某個(gè)不存在的非法地址上,造成資產(chǎn)流失,因此需要對(duì)接收者地址的合法性進(jìn)行驗(yàn)證。本文將接收者的匿名身份公鑰AIDr作為接收者的地址,且由前面內(nèi)容可知:
AIDr=AID1‖AID2
(16)
其中:
AID1=BG.Enc(PkBG,IDu)
(17)
AID2=IBC.Sign(Ska,AID1)
(18)
AID2為監(jiān)管機(jī)構(gòu)利用其私鑰Ska對(duì)AID1進(jìn)行的簽名,因此礦工需要利用監(jiān)管機(jī)構(gòu)身份公鑰IDa驗(yàn)證AID2簽名的合法性即可,從而保證AIDr的身份的合法性。
(2) 交易金額合法性。交易金額合法性同樣需要驗(yàn)證兩方面:輸入與輸出金額的相等;輸出金額在有效的范圍。
對(duì)于交易MTx和Tx礦工需要計(jì)算交易公鑰:
PkTx=(Pin1+Pin2)-(Pout1+Pout2+vfeeG)
(19)
然后利用PkTx驗(yàn)證交易簽名SigTx的合法性,即可完成輸入與輸出金額相等的條件要求。為了保護(hù)輸出金額在有效的范圍內(nèi),需要利用現(xiàn)有Bulletproofs零知識(shí)證明技術(shù)對(duì)Prange進(jìn)行驗(yàn)證,可參考文獻(xiàn)[15]。
區(qū)塊鏈交易隱私保護(hù)是相對(duì)的,主要防止惡意收集用戶(hù)信息的第三方,但對(duì)于監(jiān)管機(jī)構(gòu)而言,有時(shí)需要追蹤一些非法交易,用以打擊違法犯罪活動(dòng),因此需要保證交易的可監(jiān)管性,監(jiān)管內(nèi)容包括參與交易者的身份和交易的金額。
參與交易者的匿名身份AIDu,但真實(shí)身份IDu是被隱藏的。根據(jù):
AIDu=AID1‖AID2
(20)
AID1=BG.Enc(PkBG,IDu)
(21)
監(jiān)管機(jī)構(gòu)先通過(guò)AID2驗(yàn)證身份認(rèn)證合法性,然后利用其BG概率公鑰加密算法的私鑰SkBG解密AID1,即:
IDu=BG.Dec(SkBG,AID1)
(22)
即可獲取交易參與者的真實(shí)身份信息。
為了獲取交易金額信息,需要首先利用IBC算法。監(jiān)管機(jī)構(gòu)作為IBC密碼體制中KGC的角色,能夠計(jì)算接收者AIDr的私鑰Skr,即:
Skr=IBC.KeyGen(MSK,AIDr)
(23)
對(duì)于交易MTx和Tx,監(jiān)管機(jī)構(gòu)利用Skr解密Cout1,得到:
(b1,vout1)=IBC.Dec(Skr,Cout1)
(24)
監(jiān)管機(jī)構(gòu)獲取由此對(duì)AIDr的轉(zhuǎn)賬金額vout1。同理,對(duì)Cout2處理類(lèi)似,從而實(shí)現(xiàn)對(duì)區(qū)塊鏈交易的查詢(xún)和監(jiān)管功能。
對(duì)于用戶(hù)的身份信息,通過(guò)AIDu隱私用戶(hù)的真實(shí)信息IDu,但若頻繁使用AIDu,比如在一個(gè)交易中,同時(shí)將AIDu當(dāng)作交易輸入和輸出地址,很容易推斷出這是交易者給自己的找零信息。為了增強(qiáng)隱私性,本文采用BG概率隨機(jī)加密,每次加密可以隨機(jī)選擇不同的種子so,相同的IDu可以生成無(wú)數(shù)多的匿名AIDu地址,并且AIDu之間相互不可區(qū)分。因此用戶(hù)可以在不改變IDu的情況,由監(jiān)管機(jī)構(gòu)為其批量生成AIDu,在每次交易的時(shí)候,都對(duì)AIDu進(jìn)行更換,第三方甚至無(wú)法辨別一個(gè)交易中的找零輸出,更無(wú)法追溯交易的整個(gè)流程,第三方無(wú)法推測(cè)任何有效信息,因此本文方案能實(shí)現(xiàn)較強(qiáng)的隱私保護(hù)能力。
如前文和2.1節(jié)所述,本方案融合多種密碼學(xué)技術(shù),為了評(píng)估本方案的開(kāi)銷(xiāo),我們采用處理時(shí)間作為性能度量,tbg_kgen表示BG算法的密鑰生成時(shí)間,tbg_enc表示BG算法的加密時(shí)間,tbg_dec表示BG算法的解密時(shí)間,tsm9_kgen表示SM9算法的密鑰生成時(shí)間,tsm9_enc表示SM9算法的加密時(shí)間,tsm9_dec表示SM9算法的解密時(shí)間,tsm9_sign表示SM9算法的簽名時(shí)間。另外,tped表示Pedersen承諾時(shí)間。
本文的方案包括匿名身份的實(shí)現(xiàn)、交易金額隱私保護(hù)、交易合法性驗(yàn)證和監(jiān)管功能實(shí)現(xiàn),對(duì)應(yīng)的計(jì)算開(kāi)銷(xiāo)如表1所示。
表1 本文方案的計(jì)算開(kāi)銷(xiāo)
本方案所用到的BG算法和SM9算法比較成熟,已經(jīng)取得了廣泛的應(yīng)用,其性能都有保障。通過(guò)表1可知,交易金額隱私保護(hù)和交易合法性驗(yàn)證中用到的Pedersen承諾較多,占用一定的開(kāi)銷(xiāo),但Pedersen承諾現(xiàn)屬于區(qū)塊鏈隱私保護(hù)的關(guān)鍵技術(shù)和常用手段,因此,本方案在性能開(kāi)銷(xiāo)方面屬于正常的可接受范圍之內(nèi)。
本節(jié)將所提出的可監(jiān)管的區(qū)塊鏈匿名交易方案與現(xiàn)有區(qū)塊鏈交易方案進(jìn)行比較分析,結(jié)果如表2所示。
表2 主流區(qū)塊鏈隱私保護(hù)技術(shù)
在現(xiàn)有的密碼貨幣中,比特幣和以太坊對(duì)身份的匿名性實(shí)現(xiàn)較弱,并且交易金額完全對(duì)外公開(kāi),不具備隱私保護(hù)功能。Dash采用混幣技術(shù),通過(guò)主節(jié)點(diǎn)將多個(gè)交易的輸入輸出混合,但存在中心化的風(fēng)險(xiǎn),若主節(jié)點(diǎn)被控制,可能導(dǎo)致用戶(hù)隱私泄露。Monero采用隱藏地址和環(huán)簽名技術(shù),不再依賴(lài)中心化節(jié)點(diǎn),但需要與其他用戶(hù)的公鑰混合,驗(yàn)證相對(duì)復(fù)雜。Zcash采用zkSNARKs零知識(shí)證明方案,能夠達(dá)到非常強(qiáng)的匿名隱私保護(hù),但是zkSNARKs方案實(shí)現(xiàn)很復(fù)雜,需要初始可信參數(shù)設(shè)置,生成證明非常耗時(shí),影響了實(shí)用效率。Beam和Grin都是采用MimbleWimble協(xié)議,利用Pedersen承諾和聚合簽名技術(shù),實(shí)現(xiàn)方式簡(jiǎn)單,但需要交易雙方的交互過(guò)程,使用較為不便。
上述區(qū)塊鏈交易隱私保護(hù)方案都不具備可監(jiān)管功能。文獻(xiàn)[16]提出一種適合于監(jiān)管的多鏈模型,但是鏈節(jié)點(diǎn)間的通信較為復(fù)雜,并且超級(jí)鏈結(jié)構(gòu)也使其失去了去中心化的特性,無(wú)法保護(hù)交易的隱私性。文獻(xiàn)[17]提出了采用了雙鏈結(jié)構(gòu)的數(shù)字貨幣監(jiān)管模型,結(jié)合聯(lián)盟鏈和公鏈,通過(guò)秘密共享保證交易的隱私,同時(shí)提供了可監(jiān)管特性,但雙鏈結(jié)構(gòu)實(shí)現(xiàn)較為復(fù)雜。
通過(guò)和現(xiàn)有的方案比較可知,本文方案不需要依賴(lài)中心化的主節(jié)點(diǎn),不需要引入環(huán)簽名其他的公鑰,不需要實(shí)現(xiàn)復(fù)雜的zkSNARKs證明過(guò)程,不需要繁瑣的交互過(guò)程,也不需要復(fù)雜的多鏈結(jié)構(gòu),通過(guò)借助概率公鑰加密、IBC密碼體制和Pedersen承諾,使區(qū)塊鏈交易兼具隱私保護(hù)和監(jiān)管功能,并且監(jiān)管機(jī)構(gòu)無(wú)須存儲(chǔ)用戶(hù)的真實(shí)身份和密鑰信息,大幅降低存儲(chǔ)和運(yùn)算壓力,具有簡(jiǎn)單實(shí)用的特點(diǎn)。
為了解決區(qū)塊鏈交易中實(shí)現(xiàn)隱私保護(hù)和監(jiān)管要求的平衡問(wèn)題,本文融合多種密碼學(xué)技術(shù),利用概率公鑰密碼算法、IBC密碼體制、Pedersen承諾和Bulletproofs零知識(shí)證明技術(shù)等,提出一種兼具隱私和監(jiān)管功能的區(qū)塊鏈交易方案。本文方案可作為獨(dú)立模塊應(yīng)用在現(xiàn)有區(qū)塊鏈技術(shù)中。安全性能分析表明本文區(qū)塊鏈交易方案具有簡(jiǎn)單和實(shí)用的特點(diǎn),在數(shù)字資產(chǎn)、能源交易等領(lǐng)域中具有廣泛的應(yīng)用價(jià)值。