張思亮,凌 捷,陳家輝
廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510000
區(qū)塊鏈技術(shù)從以比特幣[1]為代表的數(shù)字貨幣發(fā)展到應(yīng)用廣泛的分布式賬本技術(shù)[2]。其數(shù)據(jù)不可篡改和去信任化的兩大特性,實(shí)現(xiàn)了資產(chǎn)的可靠支付(如跨國(guó)轉(zhuǎn)賬),在現(xiàn)實(shí)世界中創(chuàng)造了價(jià)值轉(zhuǎn)移的新形式,降低了社會(huì)信任的成本,有效提升了社會(huì)合作的效率。在各界積極探索區(qū)塊鏈應(yīng)用場(chǎng)景的同時(shí)[3],區(qū)塊鏈技術(shù)中公開(kāi)賬本數(shù)據(jù)帶來(lái)的用戶(hù)隱私泄露問(wèn)題也逐漸受到重視。傳統(tǒng)區(qū)塊鏈系統(tǒng)[1,4]中的用戶(hù)往往使用假名(即公鑰地址)參與交易,但仍將所有交易數(shù)據(jù)以明文形式登記在分布式賬本上,由區(qū)塊鏈結(jié)點(diǎn)進(jìn)行驗(yàn)證。但因賬本的公開(kāi)性,傳統(tǒng)區(qū)塊鏈不能抵抗交易分析攻擊[5]。目前已有大量研究通過(guò)使用密碼學(xué)算法對(duì)賬本數(shù)據(jù)進(jìn)行某種程度的隱藏。但是,賬本數(shù)據(jù)完全的隱藏又會(huì)帶來(lái)另一個(gè)問(wèn)題:完善的隱私使得區(qū)塊鏈不受任何中心的監(jiān)管而逃離法律的約束[6],變成非法交易和避稅者的天堂。因此,區(qū)塊鏈中的隱私保護(hù)需要在隱私性和可追蹤性取得某種平衡,這是區(qū)塊鏈隱私保護(hù)研究的難點(diǎn)之一。
本文對(duì)當(dāng)前區(qū)塊鏈的隱私攻擊和隱私保護(hù)方法進(jìn)行研究,提出了一種基于隱身地址、環(huán)簽名、零知識(shí)證明技術(shù)的可追蹤的區(qū)塊鏈隱私保護(hù)方案。理論分析證明該方案相比現(xiàn)存方案具有更強(qiáng)的匿名性,并且提供了面向監(jiān)管人的可追蹤性,解決了各類(lèi)文獻(xiàn)中未能解決的監(jiān)管問(wèn)題。實(shí)驗(yàn)結(jié)果表明該方案相比傳統(tǒng)區(qū)塊鏈不會(huì)有顯著的性能短板,具有現(xiàn)實(shí)意義。
區(qū)塊鏈賬本中公開(kāi)的交易數(shù)據(jù)和輸入輸出的公鑰地址信息以及它們之間的可鏈接性使得攻擊者可以追蹤賬本中的所有歷史交易路徑,降低用戶(hù)匿名性。文獻(xiàn)[7]分析比特幣交易的特征后提出了交易圖、初始用戶(hù)圖、用戶(hù)圖的網(wǎng)絡(luò)結(jié)構(gòu)概念,還將比特幣系統(tǒng)外部信息與流量和時(shí)間分析等技術(shù)結(jié)合起來(lái),以說(shuō)明各種類(lèi)型的信息泄漏如何導(dǎo)致系統(tǒng)用戶(hù)的去匿名。文獻(xiàn)[8]等通過(guò)攻擊實(shí)驗(yàn)AddUnl來(lái)定量分析地址不可鏈接性。實(shí)驗(yàn)數(shù)據(jù)顯示,即使通過(guò)不重復(fù)使用比特幣地址作為隱私保護(hù)手段,依然可以將40%的用戶(hù)真實(shí)身份和比特幣地址聯(lián)系起來(lái)。文獻(xiàn)[9]提出了兩類(lèi)啟發(fā)式聚類(lèi)分析思想:(1)同一個(gè)交易的輸入地址由同一用戶(hù)集群控制,因?yàn)閭鹘y(tǒng)區(qū)塊鏈交易通過(guò)簽名驗(yàn)證交易的合法性,只有私鑰的所有者才擁有合法的公鑰地址簽名;(2)一次性找零地址由輸入地址的同一用戶(hù)集群控制。文獻(xiàn)[5,10]均指出在區(qū)塊鏈賬本層面保護(hù)用戶(hù)的隱私需要對(duì)交易中的三個(gè)內(nèi)容進(jìn)行隱藏:交易發(fā)起者身份、交易接收者身份和交易數(shù)據(jù)。
當(dāng)前已有很多的學(xué)術(shù)成果或開(kāi)源項(xiàng)目針對(duì)區(qū)塊鏈賬本的交易分析提出了解決方案。這些解決方案大致可以分為兩種:后向兼容的隱私保護(hù)方案和非后向兼容的隱私保護(hù)方案[5]。使用了前者的區(qū)塊鏈能夠兼容傳統(tǒng)區(qū)塊鏈,運(yùn)行傳統(tǒng)區(qū)塊鏈的結(jié)點(diǎn)能夠?qū)π路桨傅慕灰缀蛥^(qū)塊進(jìn)行驗(yàn)證。而使用了后者的區(qū)塊鏈系統(tǒng)不兼容傳統(tǒng)區(qū)塊鏈,導(dǎo)致傳統(tǒng)結(jié)點(diǎn)無(wú)法對(duì)新型交易和賬本進(jìn)行驗(yàn)證。從交易協(xié)議來(lái)看,后向兼容的方案不需要修改傳統(tǒng)區(qū)塊鏈的交易協(xié)議,而非后向兼容的方案需要。
后向兼容的隱私保護(hù)方案?;鞄偶夹g(shù)是后向兼容類(lèi)方案的主要手段?;鞄艑⒍喙P交易的輸入混合后定向輸出到特定的混幣地址,再?gòu)脑摰刂分汹H回原交易輸出的虛擬資產(chǎn)。由于將交易重定向到某特定的混幣中心,經(jīng)過(guò)中轉(zhuǎn)的原始交易中輸入輸出地址的鏈接性被破壞,保持了用戶(hù)的匿名性。部分混幣技術(shù)如Mixcoin[11]依靠第三方提供可信的混幣服務(wù),被稱(chēng)為中心化混幣。Mixcoin 破壞了外部鏈接性,但混幣服務(wù)商的腐敗可能導(dǎo)致用戶(hù)資產(chǎn)失竊或失去匿名性。CoinShuffle 協(xié)議[12]是一種去中心的混幣協(xié)議,但匿名性取決于同時(shí)參與混幣的用戶(hù)數(shù)量,匿名程度低且多輪的加解密帶來(lái)較大的開(kāi)銷(xiāo)。BlindCoin[13]同為中心化混幣,其盲簽名防止混幣服務(wù)商獲取交易鏈接關(guān)系,但盲簽名支付協(xié)議帶來(lái)了巨大的開(kāi)銷(xiāo)。另一部分混幣技術(shù)不依賴(lài)第三方服務(wù)提供商,被稱(chēng)作去中心化混幣。CoinParty 協(xié)議[14]受到Coin-Shuffle 的啟發(fā),使用MPC(安全多方計(jì)算)模擬可信混幣服務(wù)商,提高了魯棒性和擴(kuò)展性的同時(shí)容易遭受DDoS攻擊。
非后向兼容的隱私保護(hù)方法。非后向兼容的實(shí)現(xiàn)方案類(lèi)型多樣。Monero實(shí)現(xiàn)了CryptoNote協(xié)議[15],使用環(huán)簽名和隱身地址隱藏交易雙方的身份,但其環(huán)機(jī)密交易(Ring Confidential Transactions)存在交易過(guò)大的缺點(diǎn)。Zerocoin[16]和Zerocash[17]除存在效率問(wèn)題之外,還各自有低匿名度和依賴(lài)可信初始化服務(wù)器的缺點(diǎn)。文獻(xiàn)[18]通過(guò)在以太坊合約中執(zhí)行Paillier 同態(tài)加密和NIZK 零知識(shí)證明隱藏交易數(shù)據(jù),但其交易過(guò)大且未能隱藏用戶(hù)身份。文獻(xiàn)[19]使用聚合簽名和同態(tài)加密構(gòu)造全匿名區(qū)塊鏈賬本,但其交易構(gòu)造仍然直接暴露用戶(hù)公鑰,并且大量點(diǎn)乘操作造成交易生成和驗(yàn)證緩慢。此外,其構(gòu)造中的礦工只擁有同態(tài)加密公鑰意味著需要可信啟動(dòng)階段保證私鑰的銷(xiāo)毀。
綜上所述,現(xiàn)有大部分研究成果在效率和隱私性上不能達(dá)到良好的平衡,并且均未能在可追蹤性上有所考量。
隱身地址最早在2011年由名為ByteCoin的比特幣論壇成員提出,其安全性依賴(lài)于橢圓曲線(xiàn)上的離散對(duì)數(shù)難題。為了解決原始方案中存在的私鑰頻繁使用等安全問(wèn)題,2014年名為rynomster/sdcoin的開(kāi)發(fā)人員提出了雙密鑰隱身地址協(xié)議(Dual-Key Stealth Address Protocol)[20],現(xiàn)對(duì)DKSAP協(xié)議描述如下:
參數(shù)設(shè)置:選擇橢圓曲線(xiàn)群G 的p階生成元g,抗碰撞哈希函數(shù)為H(?)。
隱身地址計(jì)算:發(fā)送方計(jì)算接收方的隱身地址S.A.作為交易的輸出地址:S.A.=gc+s=gc?S,接收方可以計(jì)算c+s來(lái)進(jìn)行簽名。
交易掃描:在DKSAP中,接收方可以共享掃描私鑰x和支付公鑰S給代理服務(wù)器。這些實(shí)體可以通過(guò)計(jì)算S.A.=gc?S得到接收方的隱身地址,從而代表接收方掃描這些區(qū)塊鏈交易。但是,他們無(wú)法計(jì)算隱身地址私鑰c+s并花費(fèi)資產(chǎn)。
環(huán)簽名是群簽名中的一種,能夠?qū)⒑灻叩恼鎸?shí)公鑰隱藏在一個(gè)公鑰集里從而隱藏簽名者的身份。環(huán)簽名被廣泛用于區(qū)塊鏈隱私保護(hù)方案[15,21-24]。本文使用的d-CLASG(緊湊可鏈接自發(fā)性匿名群簽名)方案[24]能夠使用多把私鑰對(duì)多筆交易進(jìn)行簽名,并且其可鏈接性能夠檢測(cè)雙花交易。d-CLSAG 方案發(fā)展自Monero 的環(huán)機(jī)密交易,相比后者簽名更小,并且在匿名公鑰集小于256 時(shí)驗(yàn)證速度更快?,F(xiàn)使用乘法群的表達(dá)方式將d-CLSAG方案簡(jiǎn)略描述如下:
參數(shù)設(shè)置:選擇橢圓曲線(xiàn)群G 的p階生成元g,其中p為質(zhì)數(shù);簽名密鑰組數(shù)d。
密鑰生成:KeyGen→(sk,pk)。KeyGen 函數(shù)選擇d把私鑰構(gòu)成私鑰向量與其對(duì)應(yīng)的d把公鑰構(gòu)成公鑰向量pk。
簽名:Sign(m, 驗(yàn)證:Verify(m, 鏈接:Link((m, Pedersen承諾基于橢圓曲線(xiàn)密碼學(xué),在橢圓曲線(xiàn)離散對(duì)數(shù)不被破解的情況下不會(huì)泄露秘密數(shù)。其承諾形式如:gvhr,其中g(shù)是橢圓曲線(xiàn)群G 上的p階生成元,h是橢圓曲線(xiàn)上的隨機(jī)生成元,r是隨機(jī)盲因子,v是秘密數(shù)且假設(shè)v=v1+v2,r=r1+r2,則有g(shù)vhr=gv1hr1?gv2hr2,即Pedersen承諾符合加法同態(tài)性。因此使用Pedersen承諾隱藏資產(chǎn)數(shù)量時(shí),礦工可以在不知道秘密數(shù)的同時(shí)完成秘密數(shù)的加法。 BGN 同態(tài)方案[25]是基于雙線(xiàn)性對(duì)提出的同態(tài)加密方案,安全性依賴(lài)雙線(xiàn)性對(duì)上的子群決定性難題,密文支持多次的加法同態(tài)操作和一次乘法同態(tài)操作?,F(xiàn)參照文獻(xiàn)對(duì)BGN同態(tài)方案給出如下描述: 參數(shù)生成:q1、q2為兩個(gè)大質(zhì)數(shù),n=q1×q2,橢圓曲線(xiàn)群G1階為n,雙線(xiàn)性對(duì)e:G1×G1→GT。 密鑰生成:KeyGen→PK,SK。KeyGen函數(shù)生成公鑰PK=(n,G1,GT,e,g1,h1),私鑰SK=q1,其中G1,h1=uq2。 加密:Encrypt(PK,m)→C。假設(shè)明文m∈{0,1,…,q2},取,生成密文:C=g1mh1r。 解密:Decrypt(SK,C)→m。使用私鑰SK=q1解密密文:,由于m∈ {0,1,…,q2}可以使用Pollard方法解得離散對(duì)數(shù)m。 BGN同態(tài)方案的密文與Pedersen承諾相似,其形式均為兩個(gè)橢圓曲線(xiàn)群元素之冪的乘積,即兩者均形如:gmhr,也同樣擁有同態(tài)性。不同之處在于Pedersen承諾方案使用的橢圓曲線(xiàn)群的群階為質(zhì)數(shù),群元素h是群上的隨機(jī)元素,而B(niǎo)GN 同態(tài)方案使用的橢圓曲線(xiàn)群的階為合數(shù)n,根據(jù)群理論可知h1是群上的q1階生成元,持有密鑰q2的一方可以擁有密文解密能力。 2013年提出的機(jī)密交易(Confidential Transactions)使用Pedersen 承諾隱藏資產(chǎn)數(shù)量,并利用Pedersen 承諾的加法同態(tài)性驗(yàn)證交易的輸入之和與輸出之和是否相等。Pedersen 承諾的秘密數(shù)在大于橢圓曲線(xiàn)群階時(shí)的承諾等效于模群階后的承諾。利用此性質(zhì),惡意的交易發(fā)起者可以憑空創(chuàng)造資產(chǎn)。為此機(jī)密交易中還需要包括零知識(shí)的范圍證明以保證資產(chǎn)數(shù)量不大于群階。 Bulletproofs[26]是一種新型的零知識(shí)證明方案。該方案包含兩種證明系統(tǒng),一種是證明兩組向量的內(nèi)積大小等于某個(gè)數(shù)的內(nèi)積證明;一種是證明承諾中的被承諾數(shù)的大小落在一定范圍內(nèi)的范圍證明,區(qū)塊鏈技術(shù)中使用的就是這一證明系統(tǒng)。Bulletproofs 的范圍證明較原始機(jī)密交易中的零知識(shí)范圍證明更小更高效,同等證明范圍下證明大小僅為后者的五分之一左右,證明時(shí)間是后者的大約四分之一。Bulletproofs 還支持證明聚合的功能。如果多個(gè)Bulletproofs零知識(shí)范圍證明使用相同的證明范圍,則可以將多個(gè)證明聚合為一個(gè)證明,而其大小僅以對(duì)數(shù)增長(zhǎng)。Bulletproofs 的另一個(gè)特點(diǎn)是不需要可信的參數(shù)設(shè)置階段,這與Zerocash 使用的zk-SNARKs 方案不同,因此較zk-SNARKs 更加適合用于區(qū)塊鏈。由于篇幅限制,這里不再重復(fù)Bulletproofs 范圍證明的具體過(guò)程。 在Bulletproofs中,資產(chǎn)數(shù)量使用Pedersen承諾方案隱藏,資產(chǎn)數(shù)量密文沒(méi)有解密的方法,這意味著除了交易雙方外沒(méi)有其他人能夠獲知交易中的資產(chǎn)數(shù)量,這一事實(shí)與賬本隱私可追蹤的需求相違背。根據(jù)文獻(xiàn)[20],BGN同態(tài)方案中的密文與Pedersen承諾類(lèi)似,可以替換Bulletproofs 中的Pedersen 承諾且能夠通過(guò)解密得到秘密數(shù)。 本章在提出可追蹤的區(qū)塊鏈賬本隱私保護(hù)方案之前,首先提出可追蹤的區(qū)塊鏈賬本隱私保護(hù)方案的實(shí)現(xiàn)目標(biāo)。在可追蹤的隱私區(qū)塊鏈中僅有監(jiān)管人能夠?qū)灰走M(jìn)行追蹤,礦工和用戶(hù)無(wú)法得到交易中的隱私信息,即對(duì)于礦工和用戶(hù),可追蹤的區(qū)塊鏈具有高度的隱私性;而對(duì)于監(jiān)管人,可追蹤的區(qū)塊鏈不具有隱私性。 本章論述可追蹤的區(qū)塊鏈賬本隱私保護(hù)方案中的交易構(gòu)造和區(qū)塊構(gòu)造。為了簡(jiǎn)化描述,本文僅考慮P2PK(Pay to Public Key)的情況,并且忽略區(qū)塊包含的必要信息(如區(qū)塊高度、區(qū)塊哈希、Nonce 等)以及挖礦等內(nèi)容,重點(diǎn)描述與交易、驗(yàn)證和追蹤有關(guān)的內(nèi)容。 可追蹤的隱私區(qū)塊鏈包括三類(lèi)角色:用戶(hù)、礦工和監(jiān)管人。用戶(hù)生成交易然后廣播給礦工,交易中需要包含四類(lèi)信息:輸入資產(chǎn)數(shù)量、資產(chǎn)所有權(quán)證明、輸出資產(chǎn)數(shù)量、輸出資產(chǎn)存放地址;礦工在收到交易后對(duì)交易進(jìn)行驗(yàn)證,驗(yàn)證內(nèi)容包括:(1)資產(chǎn)所有權(quán)證明有效;(2)輸入資產(chǎn)數(shù)量等于上一筆交易中的輸出資產(chǎn)數(shù)量;(3)輸入資產(chǎn)數(shù)量之和等于輸出資產(chǎn)數(shù)量之和。礦工還負(fù)責(zé)將驗(yàn)證通過(guò)的交易打包,放入?yún)^(qū)塊鏈中。監(jiān)管人負(fù)責(zé)在發(fā)生交易糾紛或者懷疑出現(xiàn)不法交易時(shí)追蹤交易中用戶(hù)的身份和資產(chǎn)數(shù)量,為追責(zé)提供證據(jù)。區(qū)塊鏈系統(tǒng)中交易方式和追蹤方式如圖1所示。 圖1 方案中的交易和追蹤方式 由于本文方案不需要BGN同態(tài)方案提供的同態(tài)乘法運(yùn)算,可舍棄與同態(tài)乘法相關(guān)的雙線(xiàn)性對(duì)參數(shù)。因此監(jiān)管人取同態(tài)加密公共參數(shù)(n,g1,h1),其中n=q1×q2,解密私鑰q2,取生成監(jiān)管密鑰對(duì) (t,T),滿(mǎn)足T=gt,用戶(hù)i取生成支付密鑰對(duì) (si,Si),掃描密鑰對(duì)(xi,Xi)和追蹤公鑰Yi滿(mǎn)足Si=gsi,Xi=gxi,Yi=Txi,其資產(chǎn)所有證明為σi,其資產(chǎn)數(shù)量密文的Bulletproofs 零知識(shí)范圍證明為πi。此外Bulletproofs 所使用的橢圓曲線(xiàn)參數(shù)也需要與同態(tài)加密公共參數(shù)保持一致。設(shè)交易中用戶(hù)i持有資產(chǎn)數(shù)量vi,該資產(chǎn)存放的隱私地址為S.A.i,接收該資產(chǎn)使用的共享秘密為ci,以監(jiān)管公鑰T對(duì)ci進(jìn)行非對(duì)稱(chēng)加密的密文為ηi。 以用戶(hù)i向j和k發(fā)起的交易為例,發(fā)送給j和k的資產(chǎn)數(shù)量分別為vj和vk。i擁有資產(chǎn)數(shù)量的密文,其中ri是盲因子,該筆資產(chǎn)存放的隱身地址是S.A.i=gci+si。i廣播給礦工的交易內(nèi)容如下: 礦工按照以下過(guò)程對(duì)交易進(jìn)行驗(yàn)證: (1)檢查S.A.i下的資產(chǎn),如果資產(chǎn)不存在或則丟棄交易,否則進(jìn)行下一步。 (2)對(duì)σi進(jìn)行驗(yàn)證和鏈接,若驗(yàn)證失敗或鏈接成功則丟棄交易,否則進(jìn)行下一步。 (4)驗(yàn)證πj和πk,若任意一個(gè)驗(yàn)證不通過(guò)則丟棄交易,否則接收交易。 礦工在完成交易的驗(yàn)證后需要將交易打包成區(qū)塊加入?yún)^(qū)塊鏈。交易中用于驗(yàn)證的 Δr、l、πj、πk被刪去,只包括下列內(nèi)容: 隱身地址追蹤:監(jiān)管人解密隱私地址S.A.i對(duì)應(yīng)的密文ηi得到ci,再計(jì)算得到用戶(hù)i的支付公鑰。 環(huán)簽名追蹤:監(jiān)管人對(duì)pk中的pki(i={0,1,…,α-1})逐個(gè)計(jì)算(pki)t直到找到pkl滿(mǎn)足(pkl)t=g(ci+si)t,則pkl為屬于用戶(hù)i的隱私地址S.A.i,隨后按照隱身地址追蹤中的方法追蹤用戶(hù)i的支付公鑰。 追蹤資產(chǎn)數(shù)量:監(jiān)管人對(duì)用戶(hù)i的資產(chǎn)數(shù)量密文進(jìn)行解密得到明文vi。 本方案基于隱身地址、d-CLSAG環(huán)簽名、BGN同態(tài)加密和Bulletproofs零知識(shí)證明。隱身地址的安全性基于橢圓曲線(xiàn)上的離散對(duì)數(shù)難題。隱身地址的安全性保證了隱身地址對(duì)應(yīng)的支付密鑰不被破解,即攻擊者無(wú)法從隱身地址中推斷出支付密鑰ci+si。d-CLSAG環(huán)簽名的安全性基于k-OMDL 困難性假設(shè)[24]。該難題可以表述為:給定群參數(shù)(p,G,g)和k+1 個(gè)群元素X={G}k+1,沒(méi)有多項(xiàng)式時(shí)間算法能夠讓攻擊者在訪(fǎng)問(wèn)舞弊預(yù)言機(jī)(Corruption oracle)不超過(guò)k次的情況下確定向量x={?p}k+1,對(duì)所有i滿(mǎn)足。根據(jù)文獻(xiàn)[24],d-CLSAG 環(huán)簽名具有不可偽造性(Unforgeability),即給定一組公鑰向量pk,攻擊者無(wú)法偽造一個(gè)由pkl中任意一把公鑰對(duì)應(yīng)的私鑰簽下的d-CLSAG環(huán)簽名。這一性質(zhì)保證了攻擊者無(wú)法通過(guò)盜用賬本上的環(huán)簽名轉(zhuǎn)移他人的資產(chǎn)。另外,該環(huán)簽名方案具有的可鏈接性也提供了抵抗雙花交易的能力,即攻擊者無(wú)法通過(guò)使用同一把私鑰簽下兩個(gè)簽名的方式惡意創(chuàng)造資產(chǎn)。BGN同態(tài)加密安全性基于雙線(xiàn)性對(duì)上的子群決定難題(The Subgroup Decision Problem)。該難題可以表述為:給定雙線(xiàn)性對(duì)e和橢圓曲線(xiàn)群G、G1,其中G 的群階為合數(shù)n,則沒(méi)有多項(xiàng)式算法能夠在不對(duì)n進(jìn)行因數(shù)分解的情況下確定元素X是否屬于G 的一個(gè)子群。Bulletproofs 零知識(shí)證明的安全性同樣基于橢圓曲線(xiàn)離散對(duì)數(shù)難題,即交易發(fā)起者向接受者發(fā)送的資產(chǎn)數(shù)量只能在?n中,無(wú)法惡意創(chuàng)造或銷(xiāo)毀資產(chǎn)。 本方案使用了隱身地址而不是真實(shí)公鑰作為區(qū)塊鏈中的資產(chǎn)接收地址,賬本中屬于同一個(gè)用戶(hù)的所有接收地址均不相同。隱身地址的使用隱藏了用戶(hù)的真實(shí)公鑰,使得攻擊者無(wú)法將屬于同一用戶(hù)的交易輸出聯(lián)系起來(lái)。使用d-CLSAG環(huán)簽名方案代替?zhèn)鹘y(tǒng)簽名方案作為資產(chǎn)的所有權(quán)證明,將交易發(fā)起者的公鑰隱藏在包含多個(gè)公鑰之中,這使攻擊者無(wú)法將上一筆交易的輸出與下一筆交易的輸入建立聯(lián)系,從而抵抗針對(duì)賬本的分析攻擊。BGN同態(tài)加密方案保證了在群階n足夠大無(wú)法被分解的情況下,攻擊者無(wú)法解密密文,即無(wú)法得知賬本中的交易資產(chǎn)數(shù)量。相比文獻(xiàn)[15-16],本文方案提供了交易資產(chǎn)的隱私保護(hù),回避了由固定交易額帶來(lái)的大量開(kāi)銷(xiāo)。相比文獻(xiàn)[11-12,17],本文方案不需要可信服務(wù)器或可信初始化,杜絕了資產(chǎn)偷竊的可能性。相比文獻(xiàn)[18],本文方案提供了用戶(hù)的身份隱私保護(hù),擁有更強(qiáng)的匿名性。相比文獻(xiàn)[19],本文方案支持賬本上的交易資產(chǎn)驗(yàn)證,更能抵抗礦工泄密下的交易分析攻擊。 相比現(xiàn)存方案[1,4,11-19,21-23],本文方案提供了可追蹤性,僅有監(jiān)管人能夠追蹤用戶(hù)公鑰并且不會(huì)帶來(lái)用戶(hù)資產(chǎn)的安全性問(wèn)題。方案中,資產(chǎn)數(shù)量使用BGN 同態(tài)方案進(jìn)行加密,因此只有持有私鑰的監(jiān)管部門(mén)能夠使用追蹤私鑰解密資產(chǎn)數(shù)量。d-CLSAG環(huán)簽名可追蹤部分原理與橢圓曲線(xiàn)密鑰交換協(xié)議(ECDH)相同,其安全性基于橢圓曲線(xiàn)離散對(duì)數(shù)難題,因此只有監(jiān)管部門(mén)能夠確定簽名者持有的隱身地址。隱身地址的共享秘密使用非對(duì)稱(chēng)加密的方式存放在賬本中,而僅有監(jiān)管部門(mén)才能解密,從而保證只有監(jiān)管部門(mén)能夠使用該共享秘密尋找隱身地址對(duì)應(yīng)的真實(shí)公鑰。監(jiān)管部門(mén)無(wú)法通過(guò)持有的追蹤私鑰推斷用戶(hù)的支付私鑰,即只能追查用戶(hù)身份卻不能偽造合法的交易轉(zhuǎn)移用戶(hù)資產(chǎn),這保證了用戶(hù)資產(chǎn)的安全。 由于d-CLSAG簽名以及包含BGN同態(tài)密文的Bulletproofs 零知識(shí)證明的驗(yàn)證時(shí)間占交易驗(yàn)證時(shí)間的主要部分,本文針對(duì)這兩部分做了驗(yàn)證和測(cè)試。實(shí)驗(yàn)環(huán)境為Ubuntu 19.10,CPU為Intel Core i5-8265U@1.60 GHz。 圖2 給出了d-CLSAG 簽名的驗(yàn)證效率與匿名集之間的關(guān)系??梢钥闯鲭S著匿名集的增大,d-CLSAG 簽名的驗(yàn)證速度逐漸減慢。 圖2 驗(yàn)證時(shí)間與匿名集大小 圖3展示了包含BGN同態(tài)密文的Bulletproofs零知識(shí)證明驗(yàn)證時(shí)間與證明范圍之間的關(guān)系,其中橢圓曲線(xiàn)群階n的大小為1 024 位。在單個(gè)證明的情況下,隨著證明范圍的增大,驗(yàn)證時(shí)間隨之延長(zhǎng)。由于實(shí)際場(chǎng)景中驗(yàn)證范圍往往并不需要達(dá)到64 位,應(yīng)用中可以選擇合適的證明范圍以降低驗(yàn)證時(shí)間。 圖3 驗(yàn)證時(shí)間與證明范圍 圖4展示了包含BGN同態(tài)密文的Bulletproofs零知識(shí)證明驗(yàn)證時(shí)間與橢圓曲線(xiàn)群階n之間的關(guān)系,其中證明的范圍為(0,16]。隨著橢圓曲線(xiàn)群階n的增長(zhǎng),單個(gè)證明驗(yàn)證時(shí)間增加,其原因是橢圓曲線(xiàn)上的運(yùn)算速度隨著群階n的增長(zhǎng)而降低。在批量證明的情況下,每證明平均驗(yàn)證時(shí)間降低至單個(gè)證明的11.53%。 圖4 驗(yàn)證時(shí)間與橢圓曲線(xiàn)群階比特位數(shù) 以一筆交易包含兩筆輸入和兩筆輸出為例,本方案的驗(yàn)證過(guò)程中除了d-CLSAG環(huán)簽名驗(yàn)證和Bulletproofs零知識(shí)證明驗(yàn)證之外,還包括了一次點(diǎn)乘和兩次點(diǎn)加運(yùn)算,經(jīng)測(cè)試1 024 位點(diǎn)加運(yùn)算需要42 μs 可忽略不計(jì),1 024 位的點(diǎn)乘運(yùn)算需要25.60 ms。在1 024 位,環(huán)簽名匿名集大小為8的安全性下,本方案的每交易驗(yàn)證時(shí)間最短為25.60 ms+2.15 ms+226.80 ms=254.55 ms。在批量證明的情況下每交易驗(yàn)證時(shí)間可降低至53.90 ms??紤]到傳統(tǒng)區(qū)塊鏈2~10 min的交易確認(rèn)時(shí)間,本方案開(kāi)銷(xiāo)不會(huì)對(duì)現(xiàn)有區(qū)塊鏈系統(tǒng)的效率產(chǎn)生顯著影響。 近年來(lái)隨著區(qū)塊鏈技術(shù)的持續(xù)發(fā)展,區(qū)塊鏈應(yīng)用的落地也在不斷變成現(xiàn)實(shí),傳統(tǒng)區(qū)塊鏈中一系列的隱私泄露問(wèn)題也亟待解決。以往方法均把重點(diǎn)放在增強(qiáng)區(qū)塊鏈用戶(hù)隱私之上,缺乏對(duì)區(qū)塊鏈監(jiān)管方法的探索。本文基于可追蹤的隱私地址、d-CLSAG 環(huán)簽名和Bulletproofs 零知識(shí)證明提出了可追蹤的區(qū)塊鏈賬本隱私保護(hù)方案。該方案在支持交易公開(kāi)驗(yàn)證的同時(shí)保證了用戶(hù)的隱私,并且允許監(jiān)管人對(duì)用戶(hù)的隱私進(jìn)行追蹤,解決了區(qū)塊鏈隱私保護(hù)方案中的監(jiān)管問(wèn)題。理論分析表明其具有足夠的安全性,相比其他同類(lèi)方案具有更強(qiáng)的匿名性,并且提供了面向監(jiān)管人的可追蹤性。實(shí)驗(yàn)結(jié)果表明相比傳統(tǒng)區(qū)塊鏈系統(tǒng),該方案在驗(yàn)證效率上不會(huì)帶來(lái)顯著影響,這對(duì)區(qū)塊鏈的可追蹤性研究具有重大意義。然而,在可追蹤區(qū)塊鏈的研究中如何降低交易長(zhǎng)度和驗(yàn)證時(shí)間仍然是未來(lái)值得研究的問(wèn)題。3.4 Pedersen同態(tài)承諾
3.5 BGN同態(tài)加密
3.6 Bulletproofs零知識(shí)證明
4 可追蹤的區(qū)塊鏈賬本隱私保護(hù)方案
4.1 初始化
4.2 交易生成
4.3 交易驗(yàn)證
4.4 區(qū)塊打包
4.5 交易追蹤
5 方案分析
5.1 安全性分析
5.2 匿名性分析
5.3 可追蹤性分析
6 實(shí)驗(yàn)驗(yàn)證
7 結(jié)語(yǔ)
計(jì)算機(jī)工程與應(yīng)用2020年23期