?

可追蹤的區塊鏈賬本隱私保護方案

2020-12-07 08:20張思亮陳家輝
計算機工程與應用 2020年23期
關鍵詞:同態公鑰賬本

張思亮,凌 捷,陳家輝

廣東工業大學 計算機學院,廣州 510000

1 引言

區塊鏈技術從以比特幣[1]為代表的數字貨幣發展到應用廣泛的分布式賬本技術[2]。其數據不可篡改和去信任化的兩大特性,實現了資產的可靠支付(如跨國轉賬),在現實世界中創造了價值轉移的新形式,降低了社會信任的成本,有效提升了社會合作的效率。在各界積極探索區塊鏈應用場景的同時[3],區塊鏈技術中公開賬本數據帶來的用戶隱私泄露問題也逐漸受到重視。傳統區塊鏈系統[1,4]中的用戶往往使用假名(即公鑰地址)參與交易,但仍將所有交易數據以明文形式登記在分布式賬本上,由區塊鏈結點進行驗證。但因賬本的公開性,傳統區塊鏈不能抵抗交易分析攻擊[5]。目前已有大量研究通過使用密碼學算法對賬本數據進行某種程度的隱藏。但是,賬本數據完全的隱藏又會帶來另一個問題:完善的隱私使得區塊鏈不受任何中心的監管而逃離法律的約束[6],變成非法交易和避稅者的天堂。因此,區塊鏈中的隱私保護需要在隱私性和可追蹤性取得某種平衡,這是區塊鏈隱私保護研究的難點之一。

本文對當前區塊鏈的隱私攻擊和隱私保護方法進行研究,提出了一種基于隱身地址、環簽名、零知識證明技術的可追蹤的區塊鏈隱私保護方案。理論分析證明該方案相比現存方案具有更強的匿名性,并且提供了面向監管人的可追蹤性,解決了各類文獻中未能解決的監管問題。實驗結果表明該方案相比傳統區塊鏈不會有顯著的性能短板,具有現實意義。

2 相關工作

區塊鏈賬本中公開的交易數據和輸入輸出的公鑰地址信息以及它們之間的可鏈接性使得攻擊者可以追蹤賬本中的所有歷史交易路徑,降低用戶匿名性。文獻[7]分析比特幣交易的特征后提出了交易圖、初始用戶圖、用戶圖的網絡結構概念,還將比特幣系統外部信息與流量和時間分析等技術結合起來,以說明各種類型的信息泄漏如何導致系統用戶的去匿名。文獻[8]等通過攻擊實驗AddUnl來定量分析地址不可鏈接性。實驗數據顯示,即使通過不重復使用比特幣地址作為隱私保護手段,依然可以將40%的用戶真實身份和比特幣地址聯系起來。文獻[9]提出了兩類啟發式聚類分析思想:(1)同一個交易的輸入地址由同一用戶集群控制,因為傳統區塊鏈交易通過簽名驗證交易的合法性,只有私鑰的所有者才擁有合法的公鑰地址簽名;(2)一次性找零地址由輸入地址的同一用戶集群控制。文獻[5,10]均指出在區塊鏈賬本層面保護用戶的隱私需要對交易中的三個內容進行隱藏:交易發起者身份、交易接收者身份和交易數據。

當前已有很多的學術成果或開源項目針對區塊鏈賬本的交易分析提出了解決方案。這些解決方案大致可以分為兩種:后向兼容的隱私保護方案和非后向兼容的隱私保護方案[5]。使用了前者的區塊鏈能夠兼容傳統區塊鏈,運行傳統區塊鏈的結點能夠對新方案的交易和區塊進行驗證。而使用了后者的區塊鏈系統不兼容傳統區塊鏈,導致傳統結點無法對新型交易和賬本進行驗證。從交易協議來看,后向兼容的方案不需要修改傳統區塊鏈的交易協議,而非后向兼容的方案需要。

后向兼容的隱私保護方案?;鞄偶夹g是后向兼容類方案的主要手段?;鞄艑⒍喙P交易的輸入混合后定向輸出到特定的混幣地址,再從該地址中贖回原交易輸出的虛擬資產。由于將交易重定向到某特定的混幣中心,經過中轉的原始交易中輸入輸出地址的鏈接性被破壞,保持了用戶的匿名性。部分混幣技術如Mixcoin[11]依靠第三方提供可信的混幣服務,被稱為中心化混幣。Mixcoin 破壞了外部鏈接性,但混幣服務商的腐敗可能導致用戶資產失竊或失去匿名性。CoinShuffle 協議[12]是一種去中心的混幣協議,但匿名性取決于同時參與混幣的用戶數量,匿名程度低且多輪的加解密帶來較大的開銷。BlindCoin[13]同為中心化混幣,其盲簽名防止混幣服務商獲取交易鏈接關系,但盲簽名支付協議帶來了巨大的開銷。另一部分混幣技術不依賴第三方服務提供商,被稱作去中心化混幣。CoinParty 協議[14]受到Coin-Shuffle 的啟發,使用MPC(安全多方計算)模擬可信混幣服務商,提高了魯棒性和擴展性的同時容易遭受DDoS攻擊。

非后向兼容的隱私保護方法。非后向兼容的實現方案類型多樣。Monero實現了CryptoNote協議[15],使用環簽名和隱身地址隱藏交易雙方的身份,但其環機密交易(Ring Confidential Transactions)存在交易過大的缺點。Zerocoin[16]和Zerocash[17]除存在效率問題之外,還各自有低匿名度和依賴可信初始化服務器的缺點。文獻[18]通過在以太坊合約中執行Paillier 同態加密和NIZK 零知識證明隱藏交易數據,但其交易過大且未能隱藏用戶身份。文獻[19]使用聚合簽名和同態加密構造全匿名區塊鏈賬本,但其交易構造仍然直接暴露用戶公鑰,并且大量點乘操作造成交易生成和驗證緩慢。此外,其構造中的礦工只擁有同態加密公鑰意味著需要可信啟動階段保證私鑰的銷毀。

綜上所述,現有大部分研究成果在效率和隱私性上不能達到良好的平衡,并且均未能在可追蹤性上有所考量。

3 預備知識

3.1 符號定義

3.2 隱身地址

隱身地址最早在2011年由名為ByteCoin的比特幣論壇成員提出,其安全性依賴于橢圓曲線上的離散對數難題。為了解決原始方案中存在的私鑰頻繁使用等安全問題,2014年名為rynomster/sdcoin的開發人員提出了雙密鑰隱身地址協議(Dual-Key Stealth Address Protocol)[20],現對DKSAP協議描述如下:

參數設置:選擇橢圓曲線群G 的p階生成元g,抗碰撞哈希函數為H(?)。

隱身地址計算:發送方計算接收方的隱身地址S.A.作為交易的輸出地址:S.A.=gc+s=gc?S,接收方可以計算c+s來進行簽名。

交易掃描:在DKSAP中,接收方可以共享掃描私鑰x和支付公鑰S給代理服務器。這些實體可以通過計算S.A.=gc?S得到接收方的隱身地址,從而代表接收方掃描這些區塊鏈交易。但是,他們無法計算隱身地址私鑰c+s并花費資產。

3.3 d-CLASG環簽名

環簽名是群簽名中的一種,能夠將簽名者的真實公鑰隱藏在一個公鑰集里從而隱藏簽名者的身份。環簽名被廣泛用于區塊鏈隱私保護方案[15,21-24]。本文使用的d-CLASG(緊湊可鏈接自發性匿名群簽名)方案[24]能夠使用多把私鑰對多筆交易進行簽名,并且其可鏈接性能夠檢測雙花交易。d-CLSAG 方案發展自Monero 的環機密交易,相比后者簽名更小,并且在匿名公鑰集小于256 時驗證速度更快?,F使用乘法群的表達方式將d-CLSAG方案簡略描述如下:

參數設置:選擇橢圓曲線群G 的p階生成元g,其中p為質數;簽名密鑰組數d。

密鑰生成:KeyGen→(sk,pk)。KeyGen 函數選擇d把私鑰構成私鑰向量與其對應的d把公鑰構成公鑰向量pk。

簽名:Sign(m,

驗證:Verify(m,

鏈接:Link((m,

3.4 Pedersen同態承諾

Pedersen承諾基于橢圓曲線密碼學,在橢圓曲線離散對數不被破解的情況下不會泄露秘密數。其承諾形式如:gvhr,其中g是橢圓曲線群G 上的p階生成元,h是橢圓曲線上的隨機生成元,r是隨機盲因子,v是秘密數且假設v=v1+v2,r=r1+r2,則有gvhr=gv1hr1?gv2hr2,即Pedersen承諾符合加法同態性。因此使用Pedersen承諾隱藏資產數量時,礦工可以在不知道秘密數的同時完成秘密數的加法。

3.5 BGN同態加密

BGN 同態方案[25]是基于雙線性對提出的同態加密方案,安全性依賴雙線性對上的子群決定性難題,密文支持多次的加法同態操作和一次乘法同態操作?,F參照文獻對BGN同態方案給出如下描述:

參數生成:q1、q2為兩個大質數,n=q1×q2,橢圓曲線群G1階為n,雙線性對e:G1×G1→GT。

密鑰生成:KeyGen→PK,SK。KeyGen函數生成公鑰PK=(n,G1,GT,e,g1,h1),私鑰SK=q1,其中G1,h1=uq2。

加密:Encrypt(PK,m)→C。假設明文m∈{0,1,…,q2},取,生成密文:C=g1mh1r。

解密:Decrypt(SK,C)→m。使用私鑰SK=q1解密密文:,由于m∈ {0,1,…,q2}可以使用Pollard方法解得離散對數m。

BGN同態方案的密文與Pedersen承諾相似,其形式均為兩個橢圓曲線群元素之冪的乘積,即兩者均形如:gmhr,也同樣擁有同態性。不同之處在于Pedersen承諾方案使用的橢圓曲線群的群階為質數,群元素h是群上的隨機元素,而BGN 同態方案使用的橢圓曲線群的階為合數n,根據群理論可知h1是群上的q1階生成元,持有密鑰q2的一方可以擁有密文解密能力。

3.6 Bulletproofs零知識證明

2013年提出的機密交易(Confidential Transactions)使用Pedersen 承諾隱藏資產數量,并利用Pedersen 承諾的加法同態性驗證交易的輸入之和與輸出之和是否相等。Pedersen 承諾的秘密數在大于橢圓曲線群階時的承諾等效于模群階后的承諾。利用此性質,惡意的交易發起者可以憑空創造資產。為此機密交易中還需要包括零知識的范圍證明以保證資產數量不大于群階。

Bulletproofs[26]是一種新型的零知識證明方案。該方案包含兩種證明系統,一種是證明兩組向量的內積大小等于某個數的內積證明;一種是證明承諾中的被承諾數的大小落在一定范圍內的范圍證明,區塊鏈技術中使用的就是這一證明系統。Bulletproofs 的范圍證明較原始機密交易中的零知識范圍證明更小更高效,同等證明范圍下證明大小僅為后者的五分之一左右,證明時間是后者的大約四分之一。Bulletproofs 還支持證明聚合的功能。如果多個Bulletproofs零知識范圍證明使用相同的證明范圍,則可以將多個證明聚合為一個證明,而其大小僅以對數增長。Bulletproofs 的另一個特點是不需要可信的參數設置階段,這與Zerocash 使用的zk-SNARKs 方案不同,因此較zk-SNARKs 更加適合用于區塊鏈。由于篇幅限制,這里不再重復Bulletproofs 范圍證明的具體過程。

在Bulletproofs中,資產數量使用Pedersen承諾方案隱藏,資產數量密文沒有解密的方法,這意味著除了交易雙方外沒有其他人能夠獲知交易中的資產數量,這一事實與賬本隱私可追蹤的需求相違背。根據文獻[20],BGN同態方案中的密文與Pedersen承諾類似,可以替換Bulletproofs 中的Pedersen 承諾且能夠通過解密得到秘密數。

4 可追蹤的區塊鏈賬本隱私保護方案

本章在提出可追蹤的區塊鏈賬本隱私保護方案之前,首先提出可追蹤的區塊鏈賬本隱私保護方案的實現目標。在可追蹤的隱私區塊鏈中僅有監管人能夠對交易進行追蹤,礦工和用戶無法得到交易中的隱私信息,即對于礦工和用戶,可追蹤的區塊鏈具有高度的隱私性;而對于監管人,可追蹤的區塊鏈不具有隱私性。

本章論述可追蹤的區塊鏈賬本隱私保護方案中的交易構造和區塊構造。為了簡化描述,本文僅考慮P2PK(Pay to Public Key)的情況,并且忽略區塊包含的必要信息(如區塊高度、區塊哈希、Nonce 等)以及挖礦等內容,重點描述與交易、驗證和追蹤有關的內容。

可追蹤的隱私區塊鏈包括三類角色:用戶、礦工和監管人。用戶生成交易然后廣播給礦工,交易中需要包含四類信息:輸入資產數量、資產所有權證明、輸出資產數量、輸出資產存放地址;礦工在收到交易后對交易進行驗證,驗證內容包括:(1)資產所有權證明有效;(2)輸入資產數量等于上一筆交易中的輸出資產數量;(3)輸入資產數量之和等于輸出資產數量之和。礦工還負責將驗證通過的交易打包,放入區塊鏈中。監管人負責在發生交易糾紛或者懷疑出現不法交易時追蹤交易中用戶的身份和資產數量,為追責提供證據。區塊鏈系統中交易方式和追蹤方式如圖1所示。

圖1 方案中的交易和追蹤方式

4.1 初始化

由于本文方案不需要BGN同態方案提供的同態乘法運算,可舍棄與同態乘法相關的雙線性對參數。因此監管人取同態加密公共參數(n,g1,h1),其中n=q1×q2,解密私鑰q2,取生成監管密鑰對 (t,T),滿足T=gt,用戶i取生成支付密鑰對 (si,Si),掃描密鑰對(xi,Xi)和追蹤公鑰Yi滿足Si=gsi,Xi=gxi,Yi=Txi,其資產所有證明為σi,其資產數量密文的Bulletproofs 零知識范圍證明為πi。此外Bulletproofs 所使用的橢圓曲線參數也需要與同態加密公共參數保持一致。設交易中用戶i持有資產數量vi,該資產存放的隱私地址為S.A.i,接收該資產使用的共享秘密為ci,以監管公鑰T對ci進行非對稱加密的密文為ηi。

4.2 交易生成

以用戶i向j和k發起的交易為例,發送給j和k的資產數量分別為vj和vk。i擁有資產數量的密文,其中ri是盲因子,該筆資產存放的隱身地址是S.A.i=gci+si。i廣播給礦工的交易內容如下:

4.3 交易驗證

礦工按照以下過程對交易進行驗證:

(1)檢查S.A.i下的資產,如果資產不存在或則丟棄交易,否則進行下一步。

(2)對σi進行驗證和鏈接,若驗證失敗或鏈接成功則丟棄交易,否則進行下一步。

(4)驗證πj和πk,若任意一個驗證不通過則丟棄交易,否則接收交易。

4.4 區塊打包

礦工在完成交易的驗證后需要將交易打包成區塊加入區塊鏈。交易中用于驗證的 Δr、l、πj、πk被刪去,只包括下列內容:

4.5 交易追蹤

隱身地址追蹤:監管人解密隱私地址S.A.i對應的密文ηi得到ci,再計算得到用戶i的支付公鑰。

環簽名追蹤:監管人對pk中的pki(i={0,1,…,α-1})逐個計算(pki)t直到找到pkl滿足(pkl)t=g(ci+si)t,則pkl為屬于用戶i的隱私地址S.A.i,隨后按照隱身地址追蹤中的方法追蹤用戶i的支付公鑰。

追蹤資產數量:監管人對用戶i的資產數量密文進行解密得到明文vi。

5 方案分析

5.1 安全性分析

本方案基于隱身地址、d-CLSAG環簽名、BGN同態加密和Bulletproofs零知識證明。隱身地址的安全性基于橢圓曲線上的離散對數難題。隱身地址的安全性保證了隱身地址對應的支付密鑰不被破解,即攻擊者無法從隱身地址中推斷出支付密鑰ci+si。d-CLSAG環簽名的安全性基于k-OMDL 困難性假設[24]。該難題可以表述為:給定群參數(p,G,g)和k+1 個群元素X={G}k+1,沒有多項式時間算法能夠讓攻擊者在訪問舞弊預言機(Corruption oracle)不超過k次的情況下確定向量x={?p}k+1,對所有i滿足。根據文獻[24],d-CLSAG 環簽名具有不可偽造性(Unforgeability),即給定一組公鑰向量pk,攻擊者無法偽造一個由pkl中任意一把公鑰對應的私鑰簽下的d-CLSAG環簽名。這一性質保證了攻擊者無法通過盜用賬本上的環簽名轉移他人的資產。另外,該環簽名方案具有的可鏈接性也提供了抵抗雙花交易的能力,即攻擊者無法通過使用同一把私鑰簽下兩個簽名的方式惡意創造資產。BGN同態加密安全性基于雙線性對上的子群決定難題(The Subgroup Decision Problem)。該難題可以表述為:給定雙線性對e和橢圓曲線群G、G1,其中G 的群階為合數n,則沒有多項式算法能夠在不對n進行因數分解的情況下確定元素X是否屬于G 的一個子群。Bulletproofs 零知識證明的安全性同樣基于橢圓曲線離散對數難題,即交易發起者向接受者發送的資產數量只能在?n中,無法惡意創造或銷毀資產。

5.2 匿名性分析

本方案使用了隱身地址而不是真實公鑰作為區塊鏈中的資產接收地址,賬本中屬于同一個用戶的所有接收地址均不相同。隱身地址的使用隱藏了用戶的真實公鑰,使得攻擊者無法將屬于同一用戶的交易輸出聯系起來。使用d-CLSAG環簽名方案代替傳統簽名方案作為資產的所有權證明,將交易發起者的公鑰隱藏在包含多個公鑰之中,這使攻擊者無法將上一筆交易的輸出與下一筆交易的輸入建立聯系,從而抵抗針對賬本的分析攻擊。BGN同態加密方案保證了在群階n足夠大無法被分解的情況下,攻擊者無法解密密文,即無法得知賬本中的交易資產數量。相比文獻[15-16],本文方案提供了交易資產的隱私保護,回避了由固定交易額帶來的大量開銷。相比文獻[11-12,17],本文方案不需要可信服務器或可信初始化,杜絕了資產偷竊的可能性。相比文獻[18],本文方案提供了用戶的身份隱私保護,擁有更強的匿名性。相比文獻[19],本文方案支持賬本上的交易資產驗證,更能抵抗礦工泄密下的交易分析攻擊。

5.3 可追蹤性分析

相比現存方案[1,4,11-19,21-23],本文方案提供了可追蹤性,僅有監管人能夠追蹤用戶公鑰并且不會帶來用戶資產的安全性問題。方案中,資產數量使用BGN 同態方案進行加密,因此只有持有私鑰的監管部門能夠使用追蹤私鑰解密資產數量。d-CLSAG環簽名可追蹤部分原理與橢圓曲線密鑰交換協議(ECDH)相同,其安全性基于橢圓曲線離散對數難題,因此只有監管部門能夠確定簽名者持有的隱身地址。隱身地址的共享秘密使用非對稱加密的方式存放在賬本中,而僅有監管部門才能解密,從而保證只有監管部門能夠使用該共享秘密尋找隱身地址對應的真實公鑰。監管部門無法通過持有的追蹤私鑰推斷用戶的支付私鑰,即只能追查用戶身份卻不能偽造合法的交易轉移用戶資產,這保證了用戶資產的安全。

6 實驗驗證

由于d-CLSAG簽名以及包含BGN同態密文的Bulletproofs 零知識證明的驗證時間占交易驗證時間的主要部分,本文針對這兩部分做了驗證和測試。實驗環境為Ubuntu 19.10,CPU為Intel Core i5-8265U@1.60 GHz。

圖2 給出了d-CLSAG 簽名的驗證效率與匿名集之間的關系??梢钥闯鲭S著匿名集的增大,d-CLSAG 簽名的驗證速度逐漸減慢。

圖2 驗證時間與匿名集大小

圖3展示了包含BGN同態密文的Bulletproofs零知識證明驗證時間與證明范圍之間的關系,其中橢圓曲線群階n的大小為1 024 位。在單個證明的情況下,隨著證明范圍的增大,驗證時間隨之延長。由于實際場景中驗證范圍往往并不需要達到64 位,應用中可以選擇合適的證明范圍以降低驗證時間。

圖3 驗證時間與證明范圍

圖4展示了包含BGN同態密文的Bulletproofs零知識證明驗證時間與橢圓曲線群階n之間的關系,其中證明的范圍為(0,16]。隨著橢圓曲線群階n的增長,單個證明驗證時間增加,其原因是橢圓曲線上的運算速度隨著群階n的增長而降低。在批量證明的情況下,每證明平均驗證時間降低至單個證明的11.53%。

圖4 驗證時間與橢圓曲線群階比特位數

以一筆交易包含兩筆輸入和兩筆輸出為例,本方案的驗證過程中除了d-CLSAG環簽名驗證和Bulletproofs零知識證明驗證之外,還包括了一次點乘和兩次點加運算,經測試1 024 位點加運算需要42 μs 可忽略不計,1 024 位的點乘運算需要25.60 ms。在1 024 位,環簽名匿名集大小為8的安全性下,本方案的每交易驗證時間最短為25.60 ms+2.15 ms+226.80 ms=254.55 ms。在批量證明的情況下每交易驗證時間可降低至53.90 ms??紤]到傳統區塊鏈2~10 min的交易確認時間,本方案開銷不會對現有區塊鏈系統的效率產生顯著影響。

7 結語

近年來隨著區塊鏈技術的持續發展,區塊鏈應用的落地也在不斷變成現實,傳統區塊鏈中一系列的隱私泄露問題也亟待解決。以往方法均把重點放在增強區塊鏈用戶隱私之上,缺乏對區塊鏈監管方法的探索。本文基于可追蹤的隱私地址、d-CLSAG 環簽名和Bulletproofs 零知識證明提出了可追蹤的區塊鏈賬本隱私保護方案。該方案在支持交易公開驗證的同時保證了用戶的隱私,并且允許監管人對用戶的隱私進行追蹤,解決了區塊鏈隱私保護方案中的監管問題。理論分析表明其具有足夠的安全性,相比其他同類方案具有更強的匿名性,并且提供了面向監管人的可追蹤性。實驗結果表明相比傳統區塊鏈系統,該方案在驗證效率上不會帶來顯著影響,這對區塊鏈的可追蹤性研究具有重大意義。然而,在可追蹤區塊鏈的研究中如何降低交易長度和驗證時間仍然是未來值得研究的問題。

猜你喜歡
同態公鑰賬本
關于半模同態的分解*
拉回和推出的若干注記
τ-內射模的若干性質①
數說:重慶70年“賬本”展示
一種基于混沌的公鑰加密方案
丟失的紅色賬本
大樹爺爺的賬本
神奇的公鑰密碼
丟失的紅色賬本
P2X7 receptor antagonism in amyotrophic lateral sclerosis
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合