譚作文, 唐春明
(1. 江西財經(jīng)大學 信息管理學院, 江西 南昌 330032; 2. 廣州大學 數(shù)學與信息科學學院, 廣東 廣州 510006)
2008年10月31日,Nakamoto[1]的文章《Bitcoin:A peer-to-peer electronic cash system》出現(xiàn)在密碼朋克郵件列表中,這標志著比特幣的誕生。起初,區(qū)塊鏈技術(shù)被看作是支持和實現(xiàn)比特幣的關(guān)鍵基礎(chǔ)技術(shù)。隨后,人們發(fā)現(xiàn)區(qū)塊鏈是一種分布式賬本,加密數(shù)字貨幣是底層區(qū)塊鏈技術(shù)之上的一種激勵手段或金融工具。從中本聰提出比特幣區(qū)塊鏈起,區(qū)塊鏈的發(fā)展可以大致劃分為3個階段:數(shù)字貨幣區(qū)塊鏈1.0,如比特幣;引入智能合約的數(shù)字金融區(qū)塊鏈2.0,如以太坊;數(shù)字社會區(qū)塊鏈3.0。區(qū)塊鏈3.0階段出現(xiàn)了許許多多區(qū)塊鏈智能合約去中心化應(yīng)用DApps (Decentralized Application)。對比中心化系統(tǒng)存在的信任依賴、效率低下及數(shù)據(jù)存儲安全威脅大等弱點,區(qū)塊鏈具有分布式、透明、防篡改、交易可追溯和去信任化等明顯特點和優(yōu)勢。區(qū)塊鏈技術(shù)被認為是繼移動互聯(lián)網(wǎng)后的第五代互聯(lián)網(wǎng)顛覆性技術(shù),將引領(lǐng)信息互聯(lián)網(wǎng)向價值互聯(lián)網(wǎng)轉(zhuǎn)變。節(jié)點之間通過區(qū)塊鏈技術(shù)將不需要借助第三方可信機構(gòu)就能夠建立起可信任的價值傳遞。傳統(tǒng)金融結(jié)算系統(tǒng)存在對賬清算慢、需要很高的中心化數(shù)據(jù)維護成本等缺陷,尤其跨境結(jié)算時間長。區(qū)塊鏈能夠去除這些痛點,可以被廣泛地應(yīng)用到支付清算、保險理賠、供應(yīng)鏈金融和能源互聯(lián)網(wǎng)等領(lǐng)域[2]。據(jù)Gartner[3]預(yù)測,2022年,全球以區(qū)塊鏈交易預(yù)計將有100億美元。2023年,全球近30%的新聞和視頻內(nèi)容將使用區(qū)塊鏈認證。2025年,區(qū)塊鏈交易額預(yù)計會達到1 760億美元。2030年,全球區(qū)塊鏈交易額預(yù)計會達到3.1萬億美元。
隨著區(qū)塊鏈技術(shù)的廣泛應(yīng)用,區(qū)塊鏈面臨的安全威脅和挑戰(zhàn)也越來越多。區(qū)塊鏈不依賴中心節(jié)點,交易記錄,如參與用戶的地址和交易金額等,常常在區(qū)塊鏈上公開,便于節(jié)點驗證、存儲交易內(nèi)容并達成共識。但是,區(qū)塊鏈的這種公開透明性將可能導(dǎo)致用戶隱私泄露。各個區(qū)塊鏈節(jié)點的安全性能和對抗信息泄露的能力不一,這更增加了數(shù)據(jù)隱私泄露風險。區(qū)塊鏈中各種程序的缺陷也將使得區(qū)塊鏈系統(tǒng)面臨巨大的安全風險。2014年3月,日本最大的比特幣交易平臺MTGOX遭受分布式拒絕服務(wù)DDoS攻擊(Distributed Denial of Service),交易所用戶信息被泄露,85萬枚比特幣被盜走,經(jīng)濟損失超過4.8億美元[4]。2016 年6月,當時區(qū)塊鏈業(yè)界最大的眾籌項目The DAO(以太坊智能合約組成分布式自治組織)因軟件中存在的“遞歸調(diào)用漏洞”問題丟失價值超過6 000萬美元的360萬以太幣[5]。2016年,中國香港比特幣交易所 Bitfinex發(fā)生用戶私鑰泄漏事件,黑客總共盜走了高達7 500萬美元的比特幣。
隱私對于個人和企業(yè)都至關(guān)重要,將身份信息、交易金額等交易內(nèi)容公開記錄在區(qū)塊鏈上,將給交易用戶帶來嚴重的隱私泄露問題。例如,通過對金融鏈或供應(yīng)鏈上的金額和合約等交易信息及供應(yīng)服務(wù)信息進行分析,競爭對手可以獲取商業(yè)機密,直接損害交易用戶的利益。有些敏感信息的泄露甚至可能對國家安全造成威脅。在比特幣[1]白皮書中,作者專門用了一章的篇幅分析比特幣存在的安全威脅。例如,比特幣并未采用CA來管理用戶,而對用戶公鑰進行了匿名處理。通過區(qū)塊鏈交易記錄,可以看到交易接受方地址和發(fā)送方地址以及交易金額,但用戶身份仍然保持一定的隱私性,無法將交易參與方地址與現(xiàn)實中用戶的身份關(guān)聯(lián)起來。然而,這種方式僅僅增加了用戶的匿名性。通過對比特幣交易內(nèi)容結(jié)合其他平臺獲得的信息進行綜合分析,常??梢愿櫟浇灰讌⑴c方的多個交易數(shù)據(jù),找到地址間的關(guān)聯(lián)性,發(fā)現(xiàn)用戶的交易規(guī)律,甚至推測出用戶現(xiàn)實世界中的真實身份和其他隱私[6]。
傳統(tǒng)中心化存儲架構(gòu)的主要隱私保護手段有K-匿名[7]、同態(tài)加密[8]和密碼共享以及差分隱私[9]等。區(qū)塊鏈是一種分布式賬本,中心化數(shù)據(jù)隱私保護方案并不適用于它。近年來,人們開展了區(qū)塊鏈安全[10-11]和隱私保護方面的研究[12-16]。Bhushan等[17]概括了區(qū)塊鏈匿名化的必要性,Zaghloul等[18]討論了比特幣的安全性和隱私保護,Andola等[19]分析了基于區(qū)塊鏈的電子現(xiàn)金的匿名性。本文將全面深入分析區(qū)塊鏈隱私保護機制,尤其是對于設(shè)計匿名協(xié)議所需的密碼結(jié)構(gòu)細節(jié)進行了描述,還分析了不同區(qū)塊鏈隱私保護方法的特點和局限性。此外,還提出了區(qū)塊鏈隱私保護技術(shù)研究的未來發(fā)展趨勢。
若干交易記錄組成區(qū)塊鏈的數(shù)據(jù)區(qū)塊,區(qū)塊按照時間順序,借助區(qū)塊哈希值產(chǎn)生一種鏈式數(shù)據(jù)結(jié)構(gòu),形成分布式數(shù)據(jù)庫。按照功能特點,區(qū)塊鏈1.0具有5層技術(shù)架構(gòu):網(wǎng)絡(luò)層、數(shù)據(jù)層、共識層、應(yīng)用層以及激勵層。區(qū)塊鏈2.0與區(qū)塊鏈3.0增加了合約層。
區(qū)塊鏈的數(shù)據(jù)層分布式存放著記錄交易的區(qū)塊。區(qū)塊由區(qū)塊頭和區(qū)塊體組成。其中,區(qū)塊頭存放父區(qū)塊哈希、本區(qū)塊默克爾根及區(qū)塊生成的時間戳等。不同區(qū)塊鏈的區(qū)塊頭也有所差別。例如,比特幣的區(qū)塊頭還記錄了區(qū)塊鏈版本信息、當前區(qū)塊鏈的難度值與隨機數(shù)等。而以太坊的區(qū)塊頭還記錄了布隆過濾器、叔塊哈希以及手續(xù)費限制等。區(qū)塊鏈的區(qū)塊體記錄交易內(nèi)容,不同區(qū)塊鏈的區(qū)塊體的記錄方式也有所差別。例如,比特幣使用交易數(shù)據(jù)的哈希值構(gòu)造默克爾樹,而以太坊采用默克爾樹與MPT(Merkle Patricia Tree)相結(jié)合的方式存儲交易內(nèi)容。
區(qū)塊鏈大體以鏈式結(jié)構(gòu)為主,區(qū)塊通過父塊節(jié)點指針連接起來。近年來,也出現(xiàn)了以有向無環(huán)圖(DAG)作為組織形式的區(qū)塊鏈。
區(qū)塊鏈有2種交易模型:UTXO模型與賬戶模型。比特幣與Corda等區(qū)塊鏈采用UTXO模型,區(qū)塊體記錄交易金額的發(fā)起方與接受方。UTXO模型的特點是支持快速追蹤交易、驗證交易,缺點是擴展性差。以太坊與Hyperledger Fabric等采用賬戶模型,區(qū)塊體記錄賬戶的狀態(tài),也就是交易結(jié)果。賬戶模型的特點是可擴展性強,適用于復(fù)雜業(yè)務(wù)邏輯場景。區(qū)塊鏈數(shù)據(jù)存儲主要有2種方式,一種是如比特幣與Hyperledger Fabric將文本文件直接存儲在區(qū)塊鏈上,另一種是如以太坊將數(shù)據(jù)存儲在數(shù)據(jù)庫中。例如,索引和狀態(tài)信息一般存儲在鍵值型數(shù)據(jù)庫如Level DB中,這樣便于快速完成檢索。
區(qū)塊鏈的網(wǎng)絡(luò)層功能是組網(wǎng)和傳輸有效數(shù)據(jù)。區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)不是C/S或B/S中心化結(jié)構(gòu),而是P2P點對點對等網(wǎng)絡(luò)。區(qū)塊鏈的所有網(wǎng)絡(luò)節(jié)點均對等地執(zhí)行路由、傳播、驗證及引入新節(jié)點等操作,這樣可以避免少部分節(jié)點出故障導(dǎo)致網(wǎng)絡(luò)癱瘓和數(shù)據(jù)丟失。
區(qū)塊鏈共識層主要解決分布式系統(tǒng)中的一致性問題。目前,主要有概率性證明類(如PoW, PoS等)和確定性拜占庭容錯(Byzantine Fault Tolerance,BFT)類等2類區(qū)塊鏈共識協(xié)議。其中,概率性證明類共識協(xié)議指某節(jié)點通過證明以一定概率贏得記賬權(quán)。最經(jīng)典的概率性證明類共識機制有工作量證明(PoW)和權(quán)益證明(PoS)。在PoS機制中,節(jié)點以幣齡來計算其權(quán)益。概率性證明類共識協(xié)議常常應(yīng)用在公鏈中。例如,以太坊采用“PoW+PoS”這種混合概率證明共識機制。
區(qū)塊鏈激勵層緊挨著共識層。引入激勵層是為了實現(xiàn)區(qū)塊鏈利益分配。激勵機制讓共識節(jié)點自覺地按照共識機制完成記賬驗證等任務(wù),區(qū)塊鏈系統(tǒng)才能夠安全和可靠地運行下去。激勵機制由發(fā)行機制和分配機制組成。激勵機制常常依賴于共識機制。不同區(qū)塊鏈的激勵機制會有所差別。
區(qū)塊鏈合約層主要功能是為區(qū)塊鏈提供智能合約編寫與執(zhí)行環(huán)境。正是由于有了分布式賬本之上的合約層,區(qū)塊鏈才有高度可編程性,才有了極其豐富的應(yīng)用場景。智能合約的實現(xiàn)方式主要有容器方式(如Hyperledger Fabric)和虛擬機方式(如以太坊)。
區(qū)塊鏈的應(yīng)用層面向用戶,通過調(diào)用合約層的智能合約實現(xiàn)各種場景下的區(qū)塊鏈應(yīng)用。比較典型的區(qū)塊鏈應(yīng)用方式如數(shù)字貨幣的輕錢包(客戶端)。借助錢包,用戶可以實現(xiàn)轉(zhuǎn)賬等交易,完成與區(qū)塊鏈系統(tǒng)的各自交互。
為了實現(xiàn)達到去信任的分布式共識,常常需要進行公開區(qū)塊鏈的交易數(shù)據(jù),這無疑給交易參與方帶來了嚴重的隱私泄露問題,如可能泄露不愿意被披露的敏感信息(用戶財務(wù)狀況,或者揭示區(qū)塊鏈用戶的真實身份)。在某些區(qū)塊鏈應(yīng)用場景,重要數(shù)據(jù)必須加以保護。例如,供應(yīng)鏈金融的交易訂單信息常常屬于商業(yè)機密,不宜公開。
區(qū)塊鏈交易涉及發(fā)送方地址(賬戶)、交易金額和接受方地址(賬戶)等。若泄露交易接受方和發(fā)送方地址(賬戶)的身份隱私,則違反了區(qū)塊鏈的匿名性。如果泄露了交易金額,則違反了區(qū)塊鏈的機密性。區(qū)塊鏈隱私保護的目的是既要保證區(qū)塊鏈匿名性又要保障區(qū)塊鏈的機密性。在對區(qū)塊鏈進行保護的同時,必須保證區(qū)塊鏈交易的正常驗證與更新:如能夠快速驗證接受幣的數(shù)量與發(fā)送幣的數(shù)量相等;驗證交易的確是從發(fā)起方轉(zhuǎn)賬,而不能從別的用戶轉(zhuǎn)賬。交易過程中,錢不能憑空產(chǎn)生,也不能憑空消失。區(qū)塊鏈數(shù)據(jù)隱私[12,19]包含身份隱私和交易隱私。由于區(qū)塊鏈依賴于P2P網(wǎng)絡(luò),區(qū)塊鏈隱私保護的內(nèi)容還涉及用戶(節(jié)點)IP地址等的隱私性。
2.1.1 身份隱私
區(qū)塊鏈身份隱私指交易參與者的現(xiàn)實身份信息和地址之間的對應(yīng)關(guān)系。比特幣地址由用戶公鑰的哈希值產(chǎn)生,但比特幣系統(tǒng)并沒有CA和PKI管理公鑰,公鑰由用戶自己產(chǎn)生。因此,用戶的地址與現(xiàn)實世界中用戶的具體身份信息并沒有對應(yīng)關(guān)系。然而,比特幣地址只能提供有限程度的匿名性。通過分析區(qū)塊鏈上大量交易記錄,攻擊者可能揭示用戶的身份信息或判斷不同交易是否源于同一個用戶。
2.1.2 交易隱私
區(qū)塊鏈交易隱私是指區(qū)塊鏈上的交易記錄及其由此推斷出來的信息。交易隱私分為交易內(nèi)容隱私與賬戶地址隱私等[13]。其中,區(qū)塊鏈上每筆交易參與方、交易金額等屬于交易內(nèi)容隱私信息,而區(qū)塊鏈賬戶余額、交易數(shù)據(jù)以及不同地址間的交易關(guān)聯(lián)等屬于賬戶地址隱私信息。當交易記錄是敏感信息,或者從交易記錄可以推測出用戶的敏感信息時,用戶并不希望公開這些交易數(shù)據(jù),如消費記錄能夠反映用戶經(jīng)濟生活狀況,金融系統(tǒng)和供應(yīng)鏈系統(tǒng)中的交易數(shù)據(jù)屬于企業(yè)商業(yè)機密。
區(qū)塊鏈去中心化,采用p2p網(wǎng)絡(luò)支持匿名交易,便于保護區(qū)塊鏈數(shù)據(jù)隱私。例如,比特幣系統(tǒng)中,各個參與方并不會使用現(xiàn)實世界中的真實身份,而使用公鑰散列值作為輸入或輸出地址實現(xiàn)轉(zhuǎn)賬交易。用戶的地址沒有實名認證,因此,無法從用戶地址發(fā)現(xiàn)其真實世界中的用戶身份信息。由于交易者能夠生成多個公鑰,每筆交易的不同公私鑰對都可以不相同,從而也無法將不同公鑰對應(yīng)的用戶關(guān)聯(lián)起來揭示用戶的真實身份信息。因為一個用戶的不同賬號不存在直接關(guān)聯(lián)性,所以無法計算該用戶不同賬號的總比特幣余額。用戶擁有多個公鑰地址似乎增加了用戶的身份隱私,但區(qū)塊鏈存在著很多的隱私威脅,借助大數(shù)據(jù)分析手段可以獲取交易隱私信息,泄露交易隱私。例如,比特幣交易記錄中常常存在找零或?qū)⒈忍貛虐l(fā)送到多個自己新生賬戶的情況。找零地址是上一筆交易的輸出地址和下一筆交易的輸入地址。若能發(fā)現(xiàn)找零地址,便能將2筆交易中的輸入地址相關(guān)聯(lián)。Coinbase 地址也會暴露用戶地址間的關(guān)聯(lián)性。例如,Coinbase交易的多個輸出地址屬于同一個用戶群,這是因為多個礦工加入同一礦池,挖礦成功后,各個礦工均會獲得獎勵。因此,比特幣不能保證匿名性。
在比特幣系統(tǒng)中,所有交易都是公開透明的,沒有進行保護,上鏈即可以獲取詳細的交易內(nèi)容。比特幣的UTXO交易模式便于對交易進行追蹤,實現(xiàn)交易的可溯源性,但這也帶來隱私泄露風險。雖然比特幣系統(tǒng)對同一用戶使用多個假名使交易不可鏈接,但這并不意味著比特幣可以提供完美的匿名性。在去匿名化推理攻擊下,用戶的交易仍然可以鏈接起來,甚至揭示出用戶的真實身份信息[20]??梢允褂媒y(tǒng)計方法挖掘交易地址和比特幣交易流,將用戶的當前交易鏈接到其他交易。一旦將用戶的真實身份與比特幣地址聯(lián)系起來,則可能泄露該比特幣地址相關(guān)的所有交易信息。
結(jié)合一些背景知識來分析交易數(shù)據(jù)常??赡塬@得交易者的身份信息或發(fā)現(xiàn)區(qū)塊鏈交易之間的關(guān)聯(lián)性,造成身份隱私、交易隱私泄漏。例如,根據(jù)用戶在論壇、微博、TWITTER和抖音等上發(fā)布的網(wǎng)絡(luò)信息,利用深度學習等方法有可能從區(qū)塊鏈上的交易數(shù)據(jù)找到與一個地址關(guān)聯(lián)的一系列地址,揭示不同區(qū)塊鏈地址之間的對應(yīng)關(guān)系。攻擊者通過追蹤分析地址間的交易記錄,結(jié)合線下用戶信息,甚至可能揭示用戶身份信息,把用戶公鑰與其真實身份關(guān)聯(lián)起來,從而造成用戶隱私泄露。例如,用戶使用比特幣網(wǎng)上購物時,網(wǎng)上商家可以獲得用戶的郵箱、收貨地址,甚至得到用戶的IP 地址等。用戶在比特幣論壇等網(wǎng)站公開公鑰等,也將帶來身份隱私泄露問題。如結(jié)合區(qū)塊鏈交易數(shù)據(jù)分析用戶的收入情況、消費記錄,可能推算用戶的余額信息。Reid 等[21]使用聚類分析方法對2009年1月3日-2011年7月12 日的所有比特幣系統(tǒng)交易數(shù)據(jù)進行分析,構(gòu)造了用戶網(wǎng)絡(luò),發(fā)現(xiàn)了用戶間資產(chǎn)的流動情況。此外,還發(fā)現(xiàn)存在多個輸入最終匯聚到同一個地址的現(xiàn)象,這些交易一般都是同一用戶發(fā)起的。
通過分析比特幣系統(tǒng)中364筆大于50 000比特幣交易,Ron 等[22]發(fā)現(xiàn)大額資金交易的模式主要分為自循環(huán)、儲蓄賬戶長期交易鏈、分叉合并和二叉樹等模式,大額資產(chǎn)常常發(fā)送到同一個交易方的不同賬戶中,很多都是“休眠”賬戶。通過分析215 399個區(qū)塊數(shù)據(jù),Ober等[23]制作了用戶比特幣交易的拓撲結(jié)構(gòu)圖和交易關(guān)系圖,揭示出比特幣交易系統(tǒng)不同時期休眠比特幣變化的數(shù)量關(guān)系,發(fā)現(xiàn)休眠比特幣一般維持在 60% 左右。
M?ser等[24]對基于環(huán)簽名的數(shù)字貨幣門羅幣進行分析,發(fā)現(xiàn)用戶簽名私鑰泄露了交易發(fā)起方的隱私信息。2017年,Ermilov等[25]利用自動聚類算法揭示了用戶信息和比特幣地址間的對應(yīng)規(guī)則。
Meiklejohn等[26]通過對用戶地址使用聚類算法,分析出公鑰與服務(wù)提供商類別的關(guān)聯(lián)性,得到了用戶地址關(guān)系結(jié)果,如圖1所示。

圖1 用戶可視化網(wǎng)絡(luò)Fig.1 A visualization of user network
統(tǒng)計方法常常被用來分析區(qū)塊鏈交易隱私。Fleder等[27]運用信息流分析方法對用戶的公開數(shù)據(jù)、交易特點、消費和查詢特點以及交易記錄等進行分析,揭示出用戶的交易隱私。事實上,用戶的交易特點可能泄露個人身份信息。Androulaki等[28]的大學生比特幣日常交易模擬實驗證實了這一點。在實驗中,每個交易用戶都換用一個不同的公鑰。但是,對交易行為采用聚類分析后,還是能夠大概率地獲得40%比特幣用戶的身份信息。
區(qū)塊鏈網(wǎng)絡(luò)層存在隱私泄漏威脅,如惡意節(jié)點利用探針技術(shù)能夠獲得節(jié)點的IP地址,進而發(fā)現(xiàn)用戶身份信息與節(jié)點之間的拓撲關(guān)系。如果區(qū)塊鏈網(wǎng)絡(luò)未采用加密的通訊協(xié)議,則通過分析區(qū)塊鏈交易的P2P網(wǎng)絡(luò)傳輸信息可以找出IP地址與比特幣地址的對應(yīng)關(guān)系,進而發(fā)現(xiàn)區(qū)塊鏈地址對應(yīng)的用戶現(xiàn)實世界中的身份。Koshy 等[29]通過分析區(qū)塊鏈交易中繼轉(zhuǎn)發(fā)模式,發(fā)現(xiàn)比特幣地址與IP地址的映射關(guān)系。Puzis等[30]的研究表明:通過監(jiān)控通信信道就可能讓用戶失去匿名性。
區(qū)塊鏈分布式賬本結(jié)構(gòu)特性更增加了數(shù)據(jù)隱私保護的難度,區(qū)塊鏈應(yīng)用面臨比中心化系統(tǒng)更加嚴重的隱私問題。區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點更容易遭受女巫攻擊。惡意節(jié)點假冒多個身份攻擊系統(tǒng),破壞區(qū)塊鏈系統(tǒng)的匿名性,甚至泄漏用戶現(xiàn)實世界中的身份[31]。
數(shù)據(jù)存儲在各個區(qū)塊鏈節(jié)點,但是各個節(jié)點的安全性能和隱私保護能力存在很大差異,攻擊者很容易攻陷其中一些薄弱的節(jié)點造成整個區(qū)塊鏈隱私泄露,攻擊者可能偽裝成合法節(jié)點直接獲得區(qū)塊鏈上存儲的數(shù)據(jù)。
此外,區(qū)塊鏈智能合約技術(shù)還屬于剛剛發(fā)展的階段,尚欠完善,遠沒有達到理論完備、高度智能化的程度,不能適應(yīng)于大規(guī)模應(yīng)用場景,智能合約也缺乏足夠的透明性。區(qū)塊鏈智能合約同樣存在匿名、訪問控制和鏈上信息等諸多隱私泄漏威脅。
近年來,人們對區(qū)塊鏈隱私保護技術(shù)開展了深入廣泛的研究。依照區(qū)塊鏈交易模式,區(qū)塊鏈隱私保護技術(shù)可以分為如下幾類:一種是基于UTXO的區(qū)塊鏈隱私保護技術(shù),如Mixcoin、Zcash和Monero等;另一種是基于賬戶的區(qū)塊鏈隱私保護技術(shù),如Zether[32]和AZTEC[33]等。區(qū)塊鏈基礎(chǔ)架構(gòu)的每一層如數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、合約層和應(yīng)用層等都有自身的隱私保護機制,如合約層的隱私保護技術(shù)有Hawk框架技術(shù)[34]等,網(wǎng)絡(luò)層的隱私保護技術(shù)有洋蔥路由技術(shù)(Tor 網(wǎng)絡(luò))、大蒜路由技術(shù)(I2P 網(wǎng)絡(luò))和安全通道技術(shù)等。
本節(jié)將重點介紹區(qū)塊鏈數(shù)據(jù)層、網(wǎng)絡(luò)層與應(yīng)用層相關(guān)的3種隱私保護技術(shù):混幣技術(shù)、基于密碼學的技術(shù)和安全通道技術(shù)。其中,混幣技術(shù)、盲簽名、環(huán)簽名[35]和非交互零知識證明等屬于身份隱私保護方法,零知識簡潔非交互式知識論證(zk-SNARK)[36]和保密交易(Confidential Transaction,CT)[37]等屬于交易隱私保護方法。這些技術(shù)常常結(jié)合在一起使用。因篇幅所限,其它隱私保護方法,如洋蔥路由技術(shù)、限制發(fā)布等都將不作介紹[12-14]。
由于交易記錄存儲在區(qū)塊鏈上,攻擊者直接對公開賬本進行分析,能夠確定交易發(fā)起方地址和接受方地址之間的對應(yīng)關(guān)系,從而揭示用戶的交易隱私,甚至發(fā)現(xiàn)用戶的身份隱私。為了阻止這種攻擊,常常把多個交易發(fā)起方的多筆交易混合成單筆多輸入多輸出的新交易,從而達到隱藏每個用戶交易具體信息的目的。這種方法稱為混幣機制,其思想源自Chaum[38]于1981年發(fā)表的論文?;鞄艡C制隱藏了輸入和輸出賬戶與金額之間的邏輯關(guān)系,實現(xiàn)對交易規(guī)律的隱私保護。
依照混幣執(zhí)行者不同,混幣方法可以分為中心化混幣和去中心化混幣2種。混幣服務(wù)提供商協(xié)助用戶完成混幣操作,這是中心化混幣方法。若混幣操作由所有混幣用戶共同完成,而不是一個混幣服務(wù)提供商單獨完成,則稱為去中心化混幣方法。
3.1.1 中心化混幣方法
在使用中心化混幣方法時,混幣服務(wù)提供商首先充當交易接受方完成與實際交易發(fā)起方的交易,隨后對接收到的多筆資產(chǎn)進行隨機混淆,最后將資產(chǎn)發(fā)送給實際交易接受方。所有參與混幣服務(wù)的地址混在一起,打亂了交易地址關(guān)系,以達到難以分析單個用戶資金真正流向的目的。中心化混幣可以分為協(xié)商、輸入和輸出以及結(jié)束等幾個階段。在第一階段,混幣服務(wù)提供商和實際交易參與方關(guān)于發(fā)起方地址、接受方地址、中介地址、混幣金額大小、操作時間和手續(xù)費等達成一致。在第二個階段,交易實際發(fā)起方完成協(xié)商好的發(fā)起方地址與中介地址之間的交易。在第三個階段,中心化混幣服務(wù)提供商完成中介地址到交易實際接受方地址之間的交易,并扣除必要的手續(xù)費。在最后一個階段,中心化混幣服務(wù)商和交易參與方銷毀所有的協(xié)商內(nèi)容。這個方法借助中介完成,操作簡單,技術(shù)難度不大,可以應(yīng)用于比特幣等。典型的中心化混幣方法有:BitLaundry、Mixcoin、Blindcoin[39]和DASH等。
目前,通過向用戶收取混幣費用提供混幣服務(wù)的網(wǎng)站有:BitLaunder(1)http:∥app.bitlaundry.com、BitcoinFog(2)http:∥bitcoinfog.com和Blockchain.info(3)https:∥blockchain.info/de/wallet/send-shared。其中,BitLaundry是第一個提供此種服務(wù)的平臺。實際交易參與方把交易信息如交易發(fā)起方地址、交易接受方地址和金額以及交易時間提交給BitLaundry平臺,完成與混幣中介的交易。BitLaundry在完成與多個交易發(fā)起方的交易后,匯總金額并完成與實際交易接受方的一對多交易,收取手續(xù)費。但是,BitLaundry仍然存在隱私泄露問題。通過分析平臺地址及其固定的手續(xù)費,攻擊者可以把混幣交易關(guān)聯(lián)起來[40]。BitLaundry方案也增加了用戶費用,存在交易變慢的缺陷。交易費用占總金額的1%~3%,混幣延遲交易常常達到48 h。BitLaundry方案還存在混幣服務(wù)提供商盜竊資金和泄漏混幣過程等風險。
為了克服BitLaundry方案的缺陷,Bonneau等[41]設(shè)計了Mixcoin方法。這種中心化混幣方法具有審計功能。為了提高用戶的匿名性,Mixcoin要求各用戶使用相同的金額進行混幣。與BitLaundry方案不同,Mixcoin中心化混幣的第一階段需要混幣服務(wù)提供者產(chǎn)生關(guān)于協(xié)商內(nèi)容的簽名。交易參與者只有收到中心化混幣服務(wù)提供商的這個承諾后才完成第二階段的操作。若出現(xiàn)混幣服務(wù)提供商違規(guī)操作的情況,交易參與方可以在系統(tǒng)中公開混幣服務(wù)提供商的承諾,區(qū)塊鏈節(jié)點通過驗證簽名來核實混幣服務(wù)提供商的作弊行為,這樣混幣服務(wù)提供商將不能再提供混幣服務(wù)。Mixcoin協(xié)議對于手續(xù)費引入了隨機化全有或全無(all-or-nothing)機制?;鞄欧?wù)提供參與商將一部分交易參與方的全部混幣作為手續(xù)費,而全額返還其他交易參與方的混幣?;鞄欧?wù)器對協(xié)商內(nèi)容進行簽名。對于交易參與方來說,該承諾機制提供了資產(chǎn)保護。然而,Mixcoin還是存在服務(wù)提供商泄露用戶隱私問題,無法提供內(nèi)部隱私性。交易參與者似乎可以參與多個中心化混幣平臺來進行連續(xù)混幣操作避免這一情況發(fā)生。事實上,這除了讓用戶付出更多的手續(xù)費外,也產(chǎn)生了更多的混幣交易記錄,存在更多的隱私泄露可能性。
為了降低上述中心化混幣方法存在的內(nèi)部隱私泄露風險, 2015年,Valenta等[42]對Mixcoin進行了改進,提出了基于盲簽名[43]的Blindcoin 協(xié)議。該協(xié)議仍然采用MiXCoin的審計機制,其主要改進在第一階段。在公開賬本中增加了混幣服務(wù)提供商對于交易參與方地址的盲簽名,形成時間戳認證標識。對盲簽名進行去盲后,交易參與方得到混幣服務(wù)提供商關(guān)于實際交易接受方地址的簽名。這樣服務(wù)商僅僅獲得了用戶的輸入地址,接受方地址隱私獲得了保護。在第三階段,混幣服務(wù)提供商使用實際的交易接受方地址,但是卻不能將它與實際的交易發(fā)送方地址對應(yīng)起來,避免了混幣服務(wù)提供商獲得每筆交易的雙方地址信息。該機制增強了中心化混幣方案的內(nèi)部隱私性。然而,由于混合金額大小是不變的,混幣服務(wù)提供商結(jié)合公共日志中的交易接受方地址信息還是可能分析出交易隱私。
2014年,Duffield等[44]基于中心化混幣方法設(shè)計了一種匿名數(shù)字貨幣——達世幣(DASH)。所有打算參與混幣操作的節(jié)點首先需要交納1 000個達世幣押金,成為具備混幣操作權(quán)利的主節(jié)點。如果主節(jié)點在混幣過程出現(xiàn)違規(guī)行為,則啟動押金機制。在混幣過程中,DASH除了使用盲化技術(shù)外,還采用了鏈式混合方法。所謂鏈式混合方法,是交易發(fā)起方首先選擇一個主節(jié)點環(huán),其發(fā)起的交易將通過該環(huán)上的主節(jié)點逐個依次完成混幣操作。第一個主節(jié)點是隨機選擇的,每步混幣操作都進行盲化處理,減弱了地址間的關(guān)聯(lián)性,降低了主節(jié)點作惡的風險。DASH的一次混淆參與者人數(shù)必須多于2方。當混合鏈加長時,參與混淆的交易方會急劇增加,交易發(fā)起者和交易接受者的地址對應(yīng)關(guān)系也減弱,混淆效果變好。惡意攻擊者若要發(fā)現(xiàn)交易發(fā)起者和交易接受者的對應(yīng)關(guān)系,則需要腐蝕混淆鏈上相當大比例的主節(jié)點。不過,中心化混幣方法DASH仍然存在惡意主節(jié)點泄露用戶隱私的風險。
綜上所述,中心化混幣是一種高效的區(qū)塊鏈安全和用戶隱私保護方法。但是,中心化混幣方法中混幣服務(wù)提供商的存在仍然可能帶來區(qū)塊鏈隱私泄露問題。
3.1.2 去中心化混幣方法
針對中心化混幣的缺陷,研究者提出了一系列去中心化混幣協(xié)議。這種混幣協(xié)議與中心化混幣協(xié)議有所不同,其混幣操作角色不再是單獨的中心化混幣服務(wù)器,而是多個混幣參與方。這從根本上解決了中心化混幣存在的信任問題和混幣費用問題。去中心化混幣可以分為協(xié)商、混淆和確認及結(jié)束4個階段。在第一階段,混幣參與者關(guān)于混幣輸入和輸出地址以及混幣金額等達成一致。在第二階段,混幣參與者混淆輸出地址。在第三階段,混幣參與者根據(jù)指定的輸出地址執(zhí)行混幣交易。依據(jù)混幣參與方人數(shù)不同,去中心化混幣技術(shù)有多方混幣與雙方混幣2種。
(1)多方混幣技術(shù)
為了去除中心化混幣服務(wù)提供商存在的潛在風險,混幣過程由所有交易參與方自己完成。首先,所有交易參與者協(xié)商好等額混幣的金額大小。接著,將多個交易整合為一個多對多的多簽名交易。由于混幣金額大小一樣,其他人不能發(fā)現(xiàn)交易參與方地址之間的實際對應(yīng)關(guān)系。典型的多方混幣方案有:CoinJoin、CoinShuffle和CoinParty等。
2013 年 8 月,Gmaxwall在比特幣論壇上提出CoinJoin協(xié)議[45]。CoinJoin協(xié)議就是一種典型的多方混幣方法,多個交易整合為一個多對多的交易。從交易記錄無法找到原先的交易發(fā)起方地址和交易接受方地址的關(guān)聯(lián)性,有效避免了攻擊者獲得具體的交易信息、追蹤每筆輸出資金的來源。CoinJoin協(xié)議大體上分為協(xié)商、混淆和確認3個階段。在第一階段,混幣參與方關(guān)于混幣的輸入地址、輸出地址和混幣金額大小等達成一致意見。在第二階段,混幣參與方將第一階段協(xié)商好的全部交易發(fā)起者和接受者地址整合到一個交易中,其中混幣大小相同。在第三階段,混幣參與方核實與自己相關(guān)聯(lián)的接受方地址與總金額的正確性,當全體參與者確認后產(chǎn)生一個多重簽名,全網(wǎng)廣播該交易。CoinJoin協(xié)議存在3個缺陷。首先,在協(xié)議的第一階段,混幣參與方知道該混幣交易的所有接受方與發(fā)起方地址,通過合謀攻擊等手段容易獲得原本各自交易的發(fā)起方地址與接受方地址的對應(yīng)關(guān)系。換句話說,CoinJoin方法仍然存在內(nèi)部隱私泄露問題。即使每個參與者保持各自的獨立性,其匿名程度也與參與者人數(shù)有關(guān)。其次,該協(xié)議遭受DoS攻擊和女巫攻擊。例如,在第三階段,若部分混幣參與者不參與多重簽名,則混幣操作會失敗。惡意混幣參與者也可能在第三階段完成前就用掉自己參與混幣的資產(chǎn)。此外,尋找參與混幣參與方可能需要一個中心節(jié)點。這時候,CoinJoin將面臨著中心化混幣類似的隱私泄漏威脅。
在CoinJoin方案的基礎(chǔ)上,Ruffing等[46]提出了一種新的去中心化混幣方法CoinShuffle。CoinShuffle既能夠像 CoinJoin一樣提供交易的外部隱私保護和用戶的資金安全,還能夠提供內(nèi)部隱私保護。CoinShuffle采用了2個關(guān)鍵技術(shù):輸出地址洗牌機制和多層加密方法。交易參與方用其他混幣參與方的公鑰對交易接受方地址加密。當依次對輸出地址洗完牌后,廣播輸出地址表。CoinShuffle使得交易參與方自己不依賴第三方就能夠完成混幣操作。任何一個混幣參與方不能獲得其他混幣參與方相關(guān)的輸入輸出地址對應(yīng)關(guān)系。其次,CoinShuffle利用可審計的匿名群組消息傳遞協(xié)議Dissent,對交易發(fā)起方和接受方地址的對應(yīng)關(guān)系進行多層加密。多層加密方式解決了中心化混幣服務(wù)中的內(nèi)部地址可鏈接問題。但是,CoinShuffle方案存在2個比較明顯的缺陷:①在協(xié)議的第二個混淆階段,所有參與者必須同時在線,而且計算成本較高,所花費的時間也較長。因此,CoinShuffle存在DoS攻擊風險;②在CoinShuffle中,一般都存在交易發(fā)起方地址個數(shù)為交易接受方地址個數(shù)的一半、50%的輸出金額相同的規(guī)律。根據(jù)這個規(guī)律,攻擊者很容易就能夠識別這些交易是否使用了CoinShuffle協(xié)議,并進一步發(fā)現(xiàn)與另一半找零地址對應(yīng)的交易發(fā)起方地址??傊珻oinShuffle 協(xié)議構(gòu)造的交易匿名性較低,具有可否認性。
2015 年,為了解決CoinShuffle協(xié)議混淆階段存在的DoS攻擊問題,Ziegeldorf 等[47]提出一個新的去中心化混幣協(xié)議CoinParty。該協(xié)議采用了基于安全多方計算技術(shù),使用了閾值ECDSA 簽名,是一種基于混合網(wǎng)絡(luò)的分布式混幣技術(shù)。CoinParty協(xié)議能夠同時保證內(nèi)部隱私性和外部隱私性。該協(xié)議包含協(xié)商階段、混淆階段和確認階段3個階段。在第一階段,參與者一起執(zhí)行偽隨機秘密分享協(xié)議,生成臨時托管地址,并將各自混幣金額放入各自的臨時托管地址,最后對這些承諾進行多重簽名,形成一個全體參與者擁有的抵押。任何一個參與者都不能單獨從該抵押中抽取自己的抵押資產(chǎn)。這種模式增加了攻擊者在第二階段發(fā)動DoS攻擊的成本。CoinParty的第二階段與CoinShuffle協(xié)議的第二階段相類似:均使用了多層加密模式。因此,CoinParty也提供了交易的內(nèi)部隱私性。相比CoinShuffle協(xié)議的第二階段,CoinParty協(xié)議的第二階段也有不同:混淆結(jié)果的校驗通過對比秘密分享的校驗和與所有輸出地址哈希值的和來完成。在第三階段,所有參與方將各自存放在臨時托管地址的資產(chǎn)發(fā)送到最終混淆結(jié)果中規(guī)定的各自輸出地址。容易知道,當惡意攻擊者人數(shù)沒有達到總參與人數(shù)的1/3時,CoinParty協(xié)議能夠保證區(qū)塊鏈的安全性。若2/3以上的惡意參與方發(fā)動合謀攻擊,則其他參與者的資產(chǎn)將能夠被盜走。此外,如果沒有對參與方進行身份認證, CoinParty協(xié)議將存在女巫攻擊風險。因此,CoinParty協(xié)議存在一定程度上的資產(chǎn)安全問題。
多方混幣方案要求混幣參與者必須在3個以上。當混幣參與者增加時,交易發(fā)起方和交易接受方的直接對應(yīng)關(guān)系變?nèi)?,外部用戶獲知交易雙方關(guān)系的概率降低,方案能提供更強的外部隱私保護?;鞄艆⑴c方的增加還會減少各參與方交易費。然而,混幣參與者越多,混入惡意參與者的可能性也越大。如果惡意參與者在混幣過程中不遵守協(xié)議如廣播錯誤消息甚至中途退出,則不能成功執(zhí)行混幣構(gòu)造。惡意攻擊者還可能監(jiān)聽分析出其他參與者發(fā)布的交易發(fā)起方地址與交易接受方地址的對應(yīng)關(guān)系,造成內(nèi)部隱私泄漏。
(2)雙方混幣技術(shù)
由上可知,參與者人數(shù)增加,也會帶來一系列隱私泄露問題。如果將混幣參與者限制為2人,則可以大大減少混入惡意參與者的可能性。這種混幣協(xié)議稱為雙方混幣。雙方混幣技術(shù)把多個混幣參與者的一次混幣交易構(gòu)造改造為多輪混幣,每輪混幣由2個參與者執(zhí)行。典型的雙方混幣方案有CoinSwap[48]和Xim[49]等。
2013年,Maxwell[48]在Bitcointalk論壇提出CoinSwap協(xié)議。CoinSwap協(xié)議依賴第三方完成混幣交易,打亂交易發(fā)起方與接受方地址之間的對應(yīng)關(guān)系。假設(shè)用戶A需要向用戶B支付一個比特幣,則由用戶A向用戶C 發(fā)起交易,支付給中間人C一個比特幣,然后由用戶 C 向用戶 B 發(fā)起交易,扣除費用后支付給B。這樣A與B用戶的錢包地址沒有直接關(guān)聯(lián)起來。實質(zhì)上,用戶 A 和用戶 B可由同一用戶扮演。該協(xié)議使用哈希時間鎖定合約(Hashed timelock contract,簡稱 HTLC)防止中間人不把金額支付給B或者自己留下一部分金額。時間鎖用于在發(fā)生異常的情況下,如其他用戶離線,發(fā)起方一定時間后能夠取回自己的資產(chǎn)。在CoinSwap協(xié)議中,參與方采用哈希-時間-簽名鎖定合約技術(shù)可以直接完成混幣操作,不需要可信第三方參與混幣。這減少了惡意參與者存在的可能性,增加了協(xié)議參與者的資產(chǎn)安全,在一定程度上解決了攻擊者監(jiān)聽和DoS攻擊的問題。
在CoinSwap協(xié)議中,多次雙方混幣交易增加了交易手續(xù)費和交易時間,幾次解鎖增加了時間成本。CoinSwap協(xié)議仍然有隱私泄露風險,如中間人知道A和B進行了交易,可以建立它們之間的聯(lián)系。CoinSwap協(xié)議也遭受女巫攻擊,如多個惡意用戶參與混幣過程將破壞用戶的隱私安全。
2014 年,為了降低惡意參與者參與混幣的概率, Bissias等[49]提出一個新的去中心化混幣協(xié)議Xim。在第一階段,用戶付費發(fā)布廣告,愿意參與混幣的用戶付費回應(yīng)廣告。發(fā)布廣告的用戶從中隨機挑選出參與混幣的用戶。正是由于這種廣告匿名尋找混幣同伴的機制,讓Xim協(xié)議降低了女巫攻擊的概率。攻擊者要想成為混幣參與者,必須付費回應(yīng)廣告。當混幣用戶增加時,惡意參與混幣的攻擊者付出的代價也會線性增加。在混淆階段, FairExchange協(xié)議[50]的使用增加了Xim方案抵抗DoS攻擊的能力。若所有參與者都參與混幣,則外部攻擊者獲知混幣交易隱私的概率將大大降低。
雙方混幣方案中,雖然交易的外部隱私性獲得了保護,但內(nèi)部隱私存在很大的泄露風險。這是因為每輪混幣僅有2個混幣參與方。為了去除這個缺陷,用戶將與不同參與方完成多輪的雙方混幣操作,以保證方案獲得隱私保護。雙方混幣技術(shù)可以增強交易的隱私性,并且每輪混幣操作都十分簡單。但是,雙方混幣技術(shù)也存在不足,如多次混幣構(gòu)造意味著多次交易,這將大大增加交易成本。
綜上所述,混幣技術(shù)提供了用戶交易的匿名,增強了用戶資金安全。基于區(qū)塊鏈的“數(shù)字貨幣”廣泛應(yīng)用了該技術(shù)。現(xiàn)有的混幣協(xié)議主要依靠去信任的第三方平臺對多個用戶的交易集進行混合后輸出到相應(yīng)的地址,達到攻擊者無法將交易的真正輸入與輸出地址鏈接起來的目的。然而,隨著大數(shù)據(jù)分析算法的不斷發(fā)展,攻擊者仍然可能將交易地址進行關(guān)聯(lián)?,F(xiàn)有混幣協(xié)議還存在一些其它弱點,如尋找誠實混幣用戶困難、難以阻止攻擊者參與混幣從而監(jiān)聽混幣或發(fā)動DOS攻擊。為了提高尋找混幣同伴的效率,可以依賴第三方。但這種混幣機制可能遭受中心化威脅,不可信第三方平臺使得混幣協(xié)議泄露交易信息或遭受DoS攻擊。
對于比特幣區(qū)塊鏈,交易數(shù)據(jù)以明文存儲在鏈上。鏈上任何節(jié)點都可以下載這個區(qū)塊鏈數(shù)據(jù),參與交易驗證和記賬。這是區(qū)塊鏈帶來信任價值的關(guān)鍵。加密技術(shù)是隱私保護領(lǐng)域常用的解決方案之一。對敏感數(shù)據(jù)進行加密,只有持有相應(yīng)私鑰的用戶才能查看數(shù)據(jù)內(nèi)容,這樣可以保證數(shù)據(jù)機密性。為了保護區(qū)塊鏈隱私,需要加密交易信息,如交易來源、去向和交易內(nèi)容。但是,區(qū)塊鏈采用加密技術(shù)保護數(shù)據(jù)隱私,必須保證節(jié)點可以對加密數(shù)據(jù)進行驗證并達成共識。
區(qū)塊鏈隱私保護中常用的高級密碼技術(shù)有:盲簽名、群簽名和可追蹤的環(huán)簽名等簽名技術(shù)、zk-SNARKs[51]、zk-STARKs[52]和Bulletproofs[53]等非交互式零知識證明技術(shù)、Pedersen承諾[54]等同態(tài)加密技術(shù)。以密碼技術(shù)構(gòu)建的匿名“數(shù)字貨幣”系統(tǒng)非常多,如Cryptonote、Monero、Zcoin和Zcash等。其中,Zcoin和Zcash需要進行可信初始化,而Cryptonote與Monero無需可信初始化。Mimblewimble同時使用了多個密碼技術(shù)和混幣技術(shù)。
下面,對幾種典型的基于加密技術(shù)區(qū)塊鏈案例進行分析。
3.2.1 環(huán)簽名與Pedersen承諾方案
2001年,Rivest 等[35]提出環(huán)簽名的概念。與群簽名不同的是,環(huán)簽名方案不需要管理員。若用戶需要產(chǎn)生一個消息的環(huán)簽名,則用戶首先選擇環(huán)簽名成員。然后,用戶使用私鑰和環(huán)成員公鑰簽名。任何人都能夠從簽名中識別出所有環(huán)成員,并驗證簽名的有效性。雖然驗證者能夠證實該簽名是其中一名參與者產(chǎn)生的,但是無法確定該簽名的完成者。因此,環(huán)簽名能夠保證簽名者的匿名隱私。
2013年,Saberhagen等[55]基于一次性可鏈接環(huán)簽名和匿名地址技術(shù)設(shè)計了CryptoNote協(xié)議。CryptoNote協(xié)議中,交易發(fā)起者選擇若干個輸出金額相等的交易,產(chǎn)生交易發(fā)起方作為環(huán)成員的環(huán)簽名。該整合后的交易合法性可以通過環(huán)簽名得到證實,但實際的交易發(fā)起人無法被識別出來。從零知識證明角度看,環(huán)簽名相當于成員證明(membership proof)。為了能夠防止惡意參與者通過簽名陷害其他環(huán)成員,Rivest 等[35]引入了可鏈接環(huán)簽名概念??涉溄拥沫h(huán)簽名可以保護誠實的簽名方。如果環(huán)簽名被確定是由惡意參與方產(chǎn)生,則可以確定環(huán)簽名的實際產(chǎn)生者,避免了其他無辜環(huán)成員被牽連,對他們提供了保護。區(qū)塊鏈使用一次性可鏈接環(huán)簽名能夠有效抵御雙花攻擊。
為了滿足交易的不可鏈接性,同一個交易發(fā)起方不同資產(chǎn)的不同輸出地址可能對應(yīng)同一個交易接受方。在傳統(tǒng)區(qū)塊鏈系統(tǒng)中,每次生成新地址時,接受方必須將新地址從私密通道傳遞給發(fā)送方。為了避免這個情況發(fā)生,CryptoNote采用了一種稱之為匿名地址的技術(shù)。匿名地址由匿名公鑰加密產(chǎn)生。匿名地址產(chǎn)生后,交易接受者無需與交易發(fā)起方建立鏈下私密通道并把匿名地址發(fā)送給交易發(fā)起方。匿名地址放在分布式賬本上,只有指定的交易發(fā)起方可以從賬本上解密對應(yīng)的密文獲得交易接受方的地址,其他交易方都無法解密發(fā)給未指定自己作為交易發(fā)起方的密文地址,也無法確定該密文的指定交易發(fā)起人是誰。其實現(xiàn)的具體技術(shù)方法如下:交易發(fā)起方通過交易接受方的長期公鑰計算出一個臨時公鑰。只有該臨時公鑰指定的交易接收者能夠由此計算出對應(yīng)的臨時私鑰,任何其他參與者既不能計算出臨時私鑰,也不能找出該臨時公鑰指定的交易接受方是誰。匿名地址技術(shù)保證了交易接受方的匿名性。因此,CryptoNote協(xié)議實現(xiàn)了交易的不可追蹤性和不可鏈接性。但是,如果CryptoNote協(xié)議中其他所有環(huán)用戶公開自己的資產(chǎn)使用情況,則攻擊者能夠分析出用戶地址之間的關(guān)聯(lián)性,導(dǎo)致隱私泄漏。
為了保護密碼貨幣的隱私性,Maxwell[37]提出保密交易(Confidential Transaction,CT)技術(shù)。CT的核心思想是交易輸出以 Pedersen 承諾[54]這種非明文方式表示,然后通過Pedersen 承諾的加法同態(tài)性質(zhì)驗證交易輸入和與輸出和是否一致。具體來說,在Pedersen承諾方案中,要承諾的數(shù)v和一個隨機數(shù)r一起寫成C=rG+vH的形式,其中,G和H分別是橢圓曲線群的2個生成元。容易知道,Pedersen承諾具有加法同態(tài)性。分別把(v1,r1) 和(v2,r2)對應(yīng)的2個承諾值按照橢圓曲線群的加法相加,得到的和是(v1+v2,r1+r2)對應(yīng)的承諾值。在整個過程中,不需要知道v1與v2的值。CT方案使用上述方法將未花費交易輸出UTXO轉(zhuǎn)換為一個Pedersen承諾值。用戶不能對加密承諾的余額值進行修改。在交易過程中,保密交易的接受者需要獲得交易的具體金額值。承諾方案由承諾和顯示2個階段構(gòu)成。在區(qū)塊鏈中,為了避免出現(xiàn)金額為負數(shù)或者溢出的問題,范圍證明(range proof)被引入到保密交易中。范圍證明是一類知識證明密碼技術(shù),證明某個金額屬于某個范圍,但又不透露這個金額具體是什么。區(qū)塊鏈采用保密交易技術(shù)將交易金額隱藏起來,提供了交易金額隱私。但是,運用該方法將耗費大量計算與存儲資源。
2016年,Noether等[56]結(jié)合環(huán)簽名和保密交易技術(shù)提出了環(huán)保密交易(Ring Confidential Transaction,RingCT)。RingCT的關(guān)鍵技術(shù)是多層可鏈接自發(fā)匿名群簽名(Multilayered Linkable Spontaneous Anonymous Group Signature, MLSAGS)。MLSAGS也使用了Pedersen承諾。RingCT方案還利用了范圍證明這種特殊的零知識證明技術(shù)。環(huán)簽名和一次性密鑰技術(shù)保證了RingCT交易發(fā)起方和接收方地址的隱私性。RingCT還解決了CryptoNote協(xié)議存在的交易金額隱私性問題。
2014年,一個匿名的數(shù)字加密貨幣門羅幣(Monero)被推出[57]。Monero[57]使用了CryptoNote和MLSAGS以及加法同態(tài)加密技術(shù)。交易發(fā)送方利用Keccak散列算法計算交易接受方公鑰與隨機數(shù)的哈希值。哈希值作為接受方的一次性公鑰地址。該地址的形成使用了隨機數(shù),除了交易發(fā)起方,其他用戶無法將該地址信息與接受方關(guān)聯(lián)起來。隨機數(shù)的使用也使得該地址不是靜態(tài)地址,而是動態(tài)地址。同一個接受者在不同交易中的地址都會發(fā)生變化,從不同地址無法確定它是否屬于同一個交易接收方,從而保證了交易接受方的匿名性。當發(fā)送方給接受方發(fā)送一筆金額時,發(fā)送方用自己的私鑰對交易信息簽名,交易信息包含隨機選取的若干其他用戶的公鑰。發(fā)送方把一次性公鑰和附加信息廣播到區(qū)塊鏈上。當接受方要花費這筆交易金額時,先要計算出一次性公鑰相對應(yīng)的私鑰,使用該私鑰產(chǎn)生交易的簽名。這種隱蔽地址方式實現(xiàn)了接受方地址的外部不可見性。同時,環(huán)簽名方案保護了發(fā)送方隱私,RingCT隱藏了用戶的交易信息如交易金額等。由于利用環(huán)簽名機制實現(xiàn)混幣過程,發(fā)起方不需要和其他用戶進行交流,門羅幣在一定程度上也解決了去中心化混幣方案面臨的DoS攻擊和內(nèi)部隱私性等問題。Monero保障了交易發(fā)起方與接收方的匿名性,同時也保證了交易金額的隱私性。然而,同CryptoNote 協(xié)議一樣,當Monero中交易發(fā)起方選擇的匿名集存在惡意用戶時,一次性地址與接受方的對應(yīng)關(guān)系可能被揭示出來。Monero的匿名集合不會很大,攻擊者結(jié)合交易信息很容易就能夠?qū)⒔灰仔畔⑴c用戶身份關(guān)聯(lián)起來。此外,Monero方案中的交易簽名都非常大,需要使用一個參數(shù)讓交易接收方完成歸屬驗證,這大大降低了方案的執(zhí)行效率。
2016年8月1日, Jedusor[58]在 #bitcoin-wizards聊天室頻道中提出一個新區(qū)塊鏈系統(tǒng)Mimblewimble。后來,Poelstra[59]證明了Mimblewimble的安全性。Mimblewimble采用了保密交易CT、Coin Join 和Cut-through等關(guān)鍵技術(shù)。其交易輸出跟比特幣交易輸出有所不同。比特幣的輸出UTXO列表的每一項由一個地址和明文形式的金額組成,而Mimblewimble的輸出由輸出金額的Pedersen承諾和輸出金額的范圍證明組成。其中,Pedersen承諾的隨機數(shù)部分即盲化因子是交易簽名的私有信息。最初的范圍證明使用了環(huán)簽名技術(shù),證明所需的存儲空間非常大。如證明范圍是(0,264),則大約要5 kB左右的存儲空間。后來,范圍證明使用了Bulletproof零知識證明技術(shù)[53],則所需存儲空間變得小于1 kB。
在 Mimblewimble中,每筆交易的輸入地址、輸出地址和金額用Pedersen 承諾表示出來,保證了交易金額的隱私性。這時,需要從以下幾個方面來驗證交易的合法性:交易的輸入與輸出金額是相同的,且交易得到了交易雙方的授權(quán)。若輸入是C1=r1G+v1H和C2=r2G+v2H,輸出為C3=r3G+v3H和C4=r4G+v4H,f是交易費,則當(C1+C2)-(C3+C4+fH)=kG,根據(jù)Pedersen承諾的加法同態(tài)性質(zhì)得知驗證通過。當且僅當v1+v2=v3+v4+f成立時,點H的相關(guān)項加減后抵消,只剩下點G的相關(guān)項。右邊項kG視為公鑰,通過這個excess value獲得交易方授權(quán)。交易合法性是通過交易手續(xù)費f、excess value和私鑰k的簽名來驗證的,這3部分稱之為交易的kernel。顯然,k是r1、r2、r3和r4的一個線性組合,需要發(fā)送方和接受方合作產(chǎn)生以k為私鑰的多重簽名。因此,簽名的有效性證實了交易得到雙方的授權(quán)。由于采用Pedersen 承諾作為輸出值,交易合法性還需驗證每個輸出附帶的范圍證明是否保證輸出金額是正值且在規(guī)定的范圍以內(nèi)。
Mimblewimble也運用了類似比特幣的Coin Join混幣技術(shù),將若干交易整合為一個大交易,形成區(qū)塊。利用同態(tài)加密,可以驗證這個構(gòu)造的交易金額是否平衡。由于礦工并不對這筆交易進行簽名,故其包含的全部原交易的kernel應(yīng)該一同記錄下來。
Mimblewimble還把整個區(qū)塊鏈歷史上所有的區(qū)塊放在一起進行一次裁剪操作Cut-through。Cut-through操作如下:從交易歷史中刪掉所有已經(jīng)花掉的輸出連同它們對應(yīng)的范圍證明。但是,需要保留從Coinbase到UTXO的交易,同時還要保留所有歷史交易的kernel,這些kernel可以用來驗證上述保留交易的合法性。Cut-through操作刪除了整個區(qū)塊鏈的歷史數(shù)據(jù),大大縮小了區(qū)塊鏈的存儲空間,系統(tǒng)擴容好。
跟Monero和比特幣相比,Mimblewimble 將一個區(qū)塊內(nèi)的全部交易整合為一個區(qū)塊級的交易,這樣可將區(qū)塊視為一個整體進行驗證。Mimblewimble提供了更高的可替代性和可擴展性。與Zcash相比,Mimblewimble 或 Monero的安全性依賴于離散對數(shù)問題難假設(shè)與哈??古鲎布僭O(shè),這跟比特幣依賴的密碼學原語同樣簡單。因此,Mimblewimble比較適用于簡單支付場景,是一種輕量級區(qū)塊鏈。
Mimblewimble也存在一些缺陷。比如,由于Mimblewimble沒有地址的概念,發(fā)送方和接受者必須在將一筆交易發(fā)送到網(wǎng)絡(luò)之前進行通信,并完成交易的簽名。這與其他基于地址的區(qū)塊鏈系統(tǒng)有很大不同。比如,比特幣區(qū)塊鏈中,每筆交易的接受方不必在線,雙方也不需要隱私信道。其次,僅當交易方能夠找到同時進行的交易,Mimblewimble才能完成保密交易,實現(xiàn)交易金額的模糊化處理。而Monero和 Zcash并不需要存在同時發(fā)生的相關(guān)交易。因此,Mimblewimble的隱私保護性能并不比 Monero和Zcash強。
3.2.2 非交互式零知識證明
在20世紀80年代,Goldwasser等[60]提出零知識證明。借助零知識證明,證明者能夠在不向驗證者泄露任何額外信息的條件下提供論斷的正確性證明,這是一種較強的隱私保護協(xié)議。零知識證明可以分為交互式零知識證明和非交互式零知識證明2類。在非交互式零知識證明協(xié)議中,證明者不需要與驗證者進行交互。典型的基于零知識的區(qū)塊鏈隱私保護方案有:零幣(Zerocoin)、零鈔(Zerocash)與Aurora。
2013年,Miers等[61]基于零知識證明提出了比特幣擴展協(xié)議,即Zerocoin或Zcoin協(xié)議,俗稱“小零幣”。Zerocoin隱藏了交易輸入地址與輸出地址,在某種程度上可以抵抗區(qū)塊鏈數(shù)據(jù)所面臨的賬本分析攻擊。對貨幣的序列號產(chǎn)生Pedersen承諾,而用戶對該資產(chǎn)的所有權(quán)關(guān)聯(lián)到承諾方案中的隨機數(shù),以避免雙花攻擊。Zerocoin的具體鑄幣過程如下:首先生成一個隨機序列號S代表Zerocoin,使用散列算法產(chǎn)生接受方公鑰與隨機數(shù)的承諾C,并將承諾C廣播至區(qū)塊鏈上的鑄幣公告欄,用戶自己操作混幣過程。為了贖回Zerocoin,用戶通過零知識證明向礦工提供一個證明π,證明自己的序列號是真實且沒有Zerocoin被花費的,即表明自己在所有用戶累加器資產(chǎn)集合中有一筆未曾花費的資產(chǎn)。用戶將幣的序列號S發(fā)布到注銷幣公告欄上。礦工驗證π,檢查序列號 S 是否沒有被使用過,完成兌換Zerocoin過程。
在Zerocoin中,聚合器(Accumulator)的使用也增強了貨幣的匿名性。聚合器將對所有貨幣的承諾壓縮為一個群元素。用戶需要證明他知道貨幣對應(yīng)的隨機數(shù)以表明其為該貨幣的所有人,還需要證明該貨幣的承諾是聚合器中的一個元素。聚合器提供“或證明”(Or proof),可視為一種零知識證明。因此,Zerocoin 解決了用戶交易地址泄露問題。在Zerocoin協(xié)議中,除了交易方,任何其他人不能獲得交易信息,不能關(guān)聯(lián)用戶的鑄幣地址和花費地址,但是可以驗證貨幣是否屬于該累加器和是否屬于雙花,即任何人都可以驗證交易的合法性。因此,Zerocoin能夠提供交易的不可鏈接性。但是,Zerocoin 也存在一些缺陷:①Zerocoin采用的零知識證明數(shù)據(jù)相對較大,所需存儲空間及計算成本等都較高。這將使得區(qū)塊鏈系統(tǒng)整體性能下降、賬本容量變小;②Zerocoin需要可信第三方來生成初始全局參數(shù);③Zerocoin金額不可分,鑄造和兌換貨幣時只能使用固定大小的面值,從而無法隱藏交易金額大小,不能滿足實際需求。最后,由于Zerocoin并未有提供交易金額的區(qū)間證明,Zerocoin存在憑空造幣隱患。
2014 年,Sasson 等[36]基于簡潔非交互性零知識證明(zk-SNARK)提出一個比特幣支付方案,簡稱零鈔(Zerocash),俗稱“大零幣”。Zerocash交易發(fā)起者將不同面值的幣鑄造成多個等值幣,每個幣有自己的序列號。鑄幣過程實質(zhì)上是承諾生成過程。該承諾封裝了交易來源、去向和金額。交易發(fā)起者用接受方的公鑰對交易信息(交易金額、接受方地址)加密,將承諾添加到全網(wǎng)承諾列表。接受方用私鑰檢測到交易信息后,生成新幣的序列號。礦工驗證交易發(fā)起者的zk-SNARK證明的正確性,核實承諾是否在列表中、序列號是否在注銷幣序列中。驗證過程不會泄露交易發(fā)送方、收款方與交易金額等信息,礦工也無法獲取哪個承諾被使用過,從而保證了用戶的匿名性。由于每一個幣都有唯一的一次性序列號表示,可以有效避免雙花。同Zerocoin一樣,Zerocash分為鑄幣交易和私密資產(chǎn)花費交易2個部分。從花費交易記錄,外部用戶不能發(fā)現(xiàn)其資產(chǎn)來源。Zerocash協(xié)議與Zerocoin也有3個不同之處:①Zerocoin的花費交易是公開資產(chǎn),而Zerocash的花費交易資產(chǎn)仍然是私密資產(chǎn);②Zerocoin有固定大小的幣值,而Zerocash比值大小不固定;③Zerocoin公開交易金額,而Zerocash隱藏交易金額,提供了更強的用戶隱私保護。Zerocash是目前為止區(qū)塊鏈UTXO模型中隱私性最強的數(shù)字貨幣。
Zerocash保證了交易的匿名性,交易隱私性強。但是,其運算成本非常高,效率不高。如zk-SNARK證明生成過程非常緩慢,通常需要1 min才能完成。又如,初始化公共參數(shù)和私密參數(shù)是由可信第三方完成的,協(xié)議存在運行瓶頸和安全隱患。
2016年1月20日,Zcash項目作為Zerocash的應(yīng)用(4)https:∥z.cash/正式由首席執(zhí)行官Zooko Wilkox宣布。Zcash將Sander等[62]提出的審計匿名電子現(xiàn)金技術(shù)運用到區(qū)塊鏈里,增加了系統(tǒng)的可審核性(auditability)和可追蹤性(traceability),可以看作是Zcoin的改進版。與Zerocash不同,Zcash通過多方計算分布式初始化參數(shù)。Zcash的地址分為透明資金地址taddr和私有資金地址zaddr。透明資金地址與比特幣地址相似。當Zcash交易涉及到私有資金時,采用零知識證明zk-SNARK生成證明,同時將交易發(fā)起方、接受方和交易金額隱藏起來。Zcash交易的可審計性由參與者控制。其中,私有資金的交易是保密不可查的。雖然Zcash可以對交易和地址進行隱私保護,但是,由于Zcash總量被隱藏了,是否有漏洞被利用或者在其信任機制中是否存在問題難檢測。相比于Zerocash,Zcash方案的計算成本更高。例如,Zcash使用零知識證明技術(shù)來驗證哈希計算的正確性,使用Merkle tree的承諾membership proof驗證貨幣合法性。當貨幣發(fā)行加大時,Merkle tree規(guī)模加大,電路變大。
隨著量子計算理論的快速發(fā)展,為了讓區(qū)塊鏈能夠更好地抵御量子計算的破解技術(shù),Ben-Sasson等[52]構(gòu)建了量子安全的高效零知識、可擴展和透明的知識論證(zero-knowledge scalable transparent argument of knowledge,zk-STARK)方案,將計算完整性(computational integrity)歸約為Reed-Solomon編碼問題,計算電路(arithmetic circuit)使用類似快速傅立葉變換方式減少了驗證復(fù)雜度。zk-STARK具有4個優(yōu)勢:①使用零知識證明保護數(shù)據(jù)隱私;非交互方式減少了參與雙方的通信復(fù)雜度;②無第三可信方的存在增強了系統(tǒng)透明性;③交易者的時間復(fù)雜度相對較低,系統(tǒng)可擴展強;④zk-STARK沒有使用公私鑰對映射,僅依賴hash抗碰撞性和隨機諭示模型,能夠抵御量子攻擊。這些特性使得zk-STARK非常適合那些需要互信同時又存在很多欺詐動機的應(yīng)用場景,例如,區(qū)塊鏈出塊驗證、安全信息驗證和投票系統(tǒng)等。
2019年,Ben-Sasson等[63]在此基礎(chǔ)上構(gòu)造了Aurora方案,不需要可信第三方來初始化全局參數(shù)。Aurora方案把對計算結(jié)果的驗證問題轉(zhuǎn)化為多項式相等驗證。zk-STARK采用“快速里德一所羅門碼接近性交互預(yù)言證明”(fast reed—Solomon interactive oracle proof of proximity)實現(xiàn)多項式的簡潔驗證,以抵御高階多項式偽造攻擊。由于Aurora方案的參數(shù)初始化不再需要可信第三方,協(xié)議具有很好的擴展性,驗證效率也提高了。但是,Aurora方案中的證明生成過程仍需要較大的存儲空間。
通道隔離機制從網(wǎng)絡(luò)層完成數(shù)據(jù)隔離。節(jié)點僅能存儲和訪問自己所在通道的數(shù)據(jù),避免了數(shù)據(jù)的非法訪問,對賬本進行隔離,提供了用戶隱私保護。通道隔離機制可以分為鏈下通道隔離和多鏈通道隔離2類。使用鏈下通道隔離機制首先在區(qū)塊鏈上記錄起始狀態(tài),完成通道的創(chuàng)建,在鏈下執(zhí)行交易。中止交易時,僅將最新的結(jié)束狀態(tài)公布到區(qū)塊鏈上而不記錄中間結(jié)果。鏈下通道隔離技術(shù)適用于高頻小額交易,其又可細分為比特幣閃電網(wǎng)絡(luò)與以太坊雷電網(wǎng)絡(luò)等技術(shù)。
比特幣閃電網(wǎng)絡(luò)技術(shù)是Poon等[64]于2016 年提出的。通過閃光網(wǎng)絡(luò)交易合約之RSMC序列到期可撤銷合約(revocable sequence maturity contract)建立雙方安全支付通道,通過哈希時間鎖合約HTLC進一步建立支付網(wǎng)絡(luò),保障雙方可以通過中間人完成交易。HTLC的運用減少了RSMC的數(shù)量,擴展了閃電網(wǎng)絡(luò)的適用性,也提高了用戶的支付效率。因為交易信息并不會直接出現(xiàn)在區(qū)塊鏈賬本上,所以不會發(fā)生賬本分析攻擊,這將較好地保護用戶隱私。但是閃電網(wǎng)絡(luò)也存在一些缺陷,如僅限于比特幣的小額支付等。
以太坊采用雷電網(wǎng)絡(luò)技術(shù)來構(gòu)建鏈下支付通道[65]。因此,雷電網(wǎng)絡(luò)是基于賬戶余額狀態(tài)模型的“狀態(tài)通道技術(shù)”。不同于閃電網(wǎng)絡(luò),雷電網(wǎng)絡(luò)基于以太坊的智能合約機制,對序列到期可撤銷合約RSMC和哈希時間鎖定合約HTLC的執(zhí)行方式進行了簡化。雷電網(wǎng)絡(luò)支持雙方支付通道和多方支付網(wǎng)絡(luò)的構(gòu)建,但是,雷電網(wǎng)絡(luò)存在離線問題和路徑查找問題。
多鏈通道隔離機制在多個節(jié)點之間通過他們自己的一個賬本和一個通道建立一條鏈,從而達到節(jié)點通信隔離、保護隱私信息的目的。一個通道維護一個賬本,同一區(qū)塊鏈系統(tǒng)將存在多個區(qū)塊鏈賬本。一個節(jié)點可以加入多個通道,維護多套賬本。通道內(nèi)的節(jié)點才能訪問屬于自己通道的區(qū)塊鏈,不同通道之間不進行通信,這種訪問控制機制保證了區(qū)塊鏈的數(shù)據(jù)隱私安全。HyperLedger Fabric項目(5)https:∥www.hyperledger.org/就采用了這種多鏈通道技術(shù)。
2016年,Heilman等[66]提出一種依賴可信第三方的鏈下匿名支付方案,后來將該方案改進為匿名支付通道方案TumbleBit[67]。交易參與方在鏈下交易通道利用不受信任的中介實現(xiàn)快速匿名的鏈下支付。Tumbler基于RSA和ECDSA密碼學技術(shù)驗證交易真實性,但是它不能得到用戶的交易信息,用戶交易具有不可鏈接性,從而保障了用戶隱私。
為了增強鏈下安全通道交易的隱私性, Green等[68]提出了新的匿名支付通道技術(shù)Blot。Blot可以構(gòu)建單向支付通道、雙向支付通道和第三方支付通道。用戶使用盲簽名及零知識證明技術(shù)借助不可信第三方完成交易。在整個交易執(zhí)行過程中,第三方不會獲得用戶交易信息,保證了用戶的隱私性。
安全通道技術(shù)也存在一定的缺陷,如創(chuàng)建通道的代價高,節(jié)點創(chuàng)建和進出通道時都要進行網(wǎng)絡(luò)配置,導(dǎo)致系統(tǒng)靈活性不強,還有當出現(xiàn)交易錯誤時,需要公開驗證用戶的交易信息,并不能真正實現(xiàn)不泄露用戶隱私的情況下交易的公平性。
本文從區(qū)塊鏈技術(shù)的發(fā)展現(xiàn)狀和基本技術(shù)架構(gòu)出發(fā),探索了區(qū)塊鏈隱私保護機制。重點闡述了區(qū)塊鏈面臨的數(shù)據(jù)隱私威脅,分析了區(qū)塊鏈數(shù)據(jù)層與應(yīng)用層的身份隱私與交易隱私,對區(qū)塊鏈隱私保護技術(shù)進行了全面的分析與總結(jié)。
目前,人們對區(qū)塊鏈巨大應(yīng)用價值的認識已經(jīng)達成一致。然而,區(qū)塊鏈技術(shù)仍然處于發(fā)展的初期階段,區(qū)塊鏈還存在著數(shù)據(jù)存儲瓶頸、拓展性不強和功能不全等問題。區(qū)塊鏈的公開透明特性嚴重影響用戶的隱私安全。至今為止,雖然已經(jīng)存在很多區(qū)塊鏈隱私保護方案,但是,現(xiàn)有方案都存在一些不足。為此,本文提出幾個未來區(qū)塊鏈隱私保護技術(shù)研究可能的方向。
區(qū)塊鏈隱私保護主要采用了哈希函數(shù)、數(shù)字簽名、同態(tài)加密和零知識證明等密碼技術(shù)。需要進一步研究基于加密技術(shù)的混幣協(xié)議的安全性和匿名性。隨機選擇一定數(shù)量的用戶對交易進行環(huán)簽名,將真實交易隱藏在一個匿名集中。需要進一步研究區(qū)塊鏈匿名技術(shù)存在的隱私保護強度不夠的問題。Zcash方案中,全局初始化參數(shù)沒有依賴可信第三方生成,而是由6個人生成。任何一方都能夠隨意生成貨幣。因此,這種初始化參數(shù)方法存在安全缺陷:初始化參數(shù)集可信度不高。為了克服這個不足,可以利用多方密碼共享等MPC技術(shù)。零知識證明在區(qū)塊鏈隱私保護中起到重要作用,如驗證計算、身份認證和數(shù)據(jù)存儲以及共識機制等確保身份隱私。但是,現(xiàn)有零知識證明方法存在計算資源消耗大、占用內(nèi)存較大、時間長等特點,影響了系統(tǒng)運行效率,導(dǎo)致交易吞吐量變小。SNARK 是一類密碼證明系統(tǒng),它使證明者能夠通過簡短證明和簡潔驗證向驗證者證明數(shù)學陳述,而遞歸 SNARK(Recursive SNARKS)能夠產(chǎn)生關(guān)于先前證明的陳述證明[69-70]。進一步開展遞歸 SNARK等區(qū)塊鏈密碼技術(shù)研究,改善區(qū)塊鏈性能,保持區(qū)塊鏈大小固定,滿足不同隱私保護需求。