一文读懂区块链上的隐私与监管问题
區(qū)塊鏈——作為公開賬本,解決了各方如何建立信任的問題,卻也同時(shí)帶來了一個(gè)新的問題:隱私如何得到保護(hù)?當(dāng)用戶的所有交易信息都暴露在大眾面前,如果這些交易信息被惡意挖掘及利用,將給用戶隱私帶來嚴(yán)重的威脅。本文將就區(qū)塊鏈技術(shù)中的隱私問題以及最前沿的解決方案給大家做一個(gè)形象的介紹和分析。
?
區(qū)塊鏈的隱私問題
也許大家首先會有一個(gè)疑惑:比特幣等區(qū)塊鏈技術(shù)不是“匿名”的嗎,為什么會有隱私問題?要回答這個(gè)問題,我們首先要區(qū)分“化名”和“匿名”這兩個(gè)概念。化名很好理解,就是我們在網(wǎng)絡(luò)中使用的一個(gè)與真實(shí)身份無關(guān)的身份。例如在比特幣系統(tǒng)的交易中,使用者無需使用真名,而是采用公鑰哈希值作為交易標(biāo)識。在這個(gè)例子中,公鑰哈希值就可以代表使用者的身份,與真名無關(guān),因此比特幣是具備化名性的。
?
但匿名跟化名是不同的。在計(jì)算機(jī)科學(xué)中,匿名指的是具備無關(guān)聯(lián)性(unlinkability)的化名[1]。所謂無關(guān)聯(lián)性,就是指站在攻擊者的角度,無法將用戶與系統(tǒng)之間的任意兩次交互進(jìn)行關(guān)聯(lián)。在比特幣中,由于用戶反復(fù)使用公鑰哈希值作為交易標(biāo)識,交易之間顯然能建立關(guān)聯(lián)。因此比特幣并不具備匿名性。
?
若單個(gè)地址進(jìn)行交易并不能確保匿名性,那么多個(gè)地址又如何?答案依然是否定的:如圖1所示,用戶X利用多個(gè)賬戶在一定時(shí)間內(nèi)向用戶Y進(jìn)行轉(zhuǎn)賬,攻擊者可以很大概率猜測這幾個(gè)地址屬于同一個(gè)用戶,而將這多個(gè)地址都?xì)w為一個(gè)地址簇。
?
??
除了上述情況,零錢地址也會暴露用戶地址的關(guān)聯(lián)性。如圖2所示,用戶X向用戶Y轉(zhuǎn)賬40,總計(jì)付款50,因此零錢返回10。攻擊者會很大概率推測賬戶D是零錢地址,從而將賬戶D和E進(jìn)行關(guān)聯(lián)。早期的比特幣類庫(Bitcoin-Qt
library)就存在過零錢地址總出現(xiàn)在輸出地址第一個(gè)而帶來的隱私問題(已在2012年修復(fù))。
?
??
在將用戶多個(gè)地址歸并為地址簇后,再結(jié)合現(xiàn)實(shí)中直接發(fā)生交易來給地址簇加上標(biāo)簽,就可以畫出如圖3的標(biāo)簽簇圖。圖中的連線表示一次交易,圓的面積大小代表交易量。雖然圖中只列出了服務(wù)提供商、交易所、礦池的標(biāo)簽,需要說明的是,也可以利用類似的手段來獲取個(gè)人用戶現(xiàn)實(shí)生活中的身份信息。因此再結(jié)合服務(wù)提供商的地址信息及公開賬本,個(gè)人用戶的所有消費(fèi)記錄將顯露無遺。這將帶來嚴(yán)重的用戶隱私問題。
?
?
?
如何在保障隱私(隱藏交易內(nèi)容)的情況下實(shí)現(xiàn)區(qū)塊鏈的特性(交易可驗(yàn)證,歷史可查等)呢?下面我們介紹三種最典型的匿名化方案:達(dá)世幣(Dash),門羅幣(Monero),零鈔(Zcash)。
?
達(dá)氏幣(Dash)
達(dá)氏幣使用了一種稱之為合幣(CoinJoin)的關(guān)鍵技術(shù)。簡單地說,所謂合幣技術(shù)就是通過一些主節(jié)點(diǎn)(master
node)來將多個(gè)用戶(至少3個(gè))的多筆交易進(jìn)行混合、形成單一交易的技術(shù)。在合幣中,每個(gè)用戶都會提供一個(gè)輸入輸出地址,然后將其送到主節(jié)點(diǎn)進(jìn)行混合(即任意交換輸入輸出地址)。交易只能以規(guī)定面額(0.1,
1, 10,
100)為單位來進(jìn)行,這樣就增加了攻擊者從數(shù)額的角度來猜測交易關(guān)聯(lián)度的難度。同時(shí),主節(jié)點(diǎn)要保證亂序輸出。如圖4所示,不同的顏色代表此金額來自不同用戶,DASH是達(dá)氏幣的貨幣標(biāo)識。通過混合,黃色用戶完成了對綠色用戶進(jìn)行轉(zhuǎn)賬10
DASH。而外界很難從混淆后的交易中發(fā)現(xiàn)這筆交易。
?
??
合幣中一個(gè)關(guān)鍵的保護(hù)隱私的角色就是主節(jié)點(diǎn),因?yàn)橹鞴?jié)點(diǎn)依然存在被攻擊者控制的可能性。為了解決這個(gè)問題,達(dá)氏幣中引入了鏈?zhǔn)交旌?#xff08;chaining)以及盲化(blinding)技術(shù)。所謂鏈?zhǔn)交旌?#xff0c;就是指用戶的交易會隨機(jī)選擇多個(gè)主節(jié)點(diǎn),并在這些主節(jié)點(diǎn)中依次進(jìn)行混合,最后輸出;所謂盲化技術(shù),就是指用戶不直接將輸入輸出地址發(fā)送到交易池,而是隨機(jī)選擇一個(gè)主節(jié)點(diǎn),讓它將輸入輸出傳遞到一個(gè)指定的主節(jié)點(diǎn),這樣后一個(gè)主節(jié)點(diǎn)就很難獲取用戶的真實(shí)身份。通過這兩個(gè)技術(shù),除非攻擊者控制了很多的主節(jié)點(diǎn),否則幾乎不可能對指定交易進(jìn)行關(guān)聯(lián)。
?
除了防范交易數(shù)額以及輸入輸出地址的關(guān)聯(lián)攻擊,達(dá)氏幣還防范了交易時(shí)間上的關(guān)聯(lián)攻擊。每個(gè)用戶往往都會具備自己的交易習(xí)慣,例如每天的交易時(shí)間段以及短時(shí)間內(nèi)進(jìn)行多筆交易等等。這些時(shí)間信息也會一定程度暴露用戶身份。為了解決這個(gè)問題,達(dá)氏幣提出了被動(passive)匿名化的方案,保證用戶客戶端以固定的時(shí)間間隔發(fā)起交易請求,來參與主節(jié)點(diǎn)的混合。
?
自從2014年市場化以來,達(dá)氏幣就頗受市場追捧,截至2016年12月2日,其市值已超過6000萬美元,在所有加密貨幣中排名第7;貨幣單價(jià)為8.85美元,在所有加密貨幣中排名第4[4]。
?
門羅幣(Monero)
在達(dá)氏幣中,依然存在主節(jié)點(diǎn)被控制以及參與混幣有惡意用戶的風(fēng)險(xiǎn),這在一定程度上會導(dǎo)致用戶隱私的泄露。為了解決這個(gè)問題,門羅幣提出了一種不依賴于中心節(jié)點(diǎn)的加密混合方案。門羅幣的關(guān)鍵技術(shù)有兩個(gè),一個(gè)叫做隱蔽地址(stealth?address),另一個(gè)叫做環(huán)簽名(ring signature)[5]。
?
隱蔽地址是為了解決輸入輸出地址關(guān)聯(lián)性的問題。每當(dāng)發(fā)送者要給接收者發(fā)送一筆金額的時(shí)候,他會首先通過接收者的地址(每次都重新生成),利用橢圓曲線加密算出一個(gè)一次性的公鑰。然后發(fā)送者將這個(gè)公鑰連同一個(gè)附加信息發(fā)送到區(qū)塊鏈上,接收方可以根據(jù)自己的私鑰來檢測每個(gè)交易塊,從而確定發(fā)送方是否已經(jīng)發(fā)送了這筆金額。當(dāng)接收方要使用這筆金額時(shí),可以根據(jù)自己的私鑰以及交易信息計(jì)算出來一個(gè)簽名私鑰,用這個(gè)私鑰對交易進(jìn)行簽名即可。
?
隱蔽地址雖然能保證接收者地址每次都變化,從而讓外部攻擊者看不出地址關(guān)聯(lián)性,但并不能保證發(fā)送者與接收者之間的匿名性。因此門羅幣提出了一個(gè)環(huán)簽名的方案——事實(shí)上,在古代就已經(jīng)有類似的思想了:如圖5所示,聯(lián)名上書的時(shí)候,上書人的名字可以寫成一個(gè)環(huán)形,由于環(huán)中各個(gè)名字的地位看上去彼此相等,因此外界很難猜測發(fā)起人是誰。
?
??
那在門羅幣中環(huán)簽名又是如何實(shí)現(xiàn)的呢?如圖6所示,每當(dāng)發(fā)送者要建立一筆交易的時(shí)候,他會使用自己的私鑰加上從其他用戶的公鑰中隨機(jī)選出的若干公鑰來對交易進(jìn)行簽名。驗(yàn)證簽名的時(shí)候,也需要使用其他人的公鑰
以及簽名中的參數(shù)。同時(shí),發(fā)送者簽名的同時(shí)還要提供鑰匙映像(key?image)來提供身份的證明。私鑰和鑰匙映像都是一次一密的,來保證不可追蹤性(untracability)。
?
??
除了交易地址,交易金額也會暴露部分隱私。門羅幣還提供了一種叫做環(huán)狀保密交易(RingCT)的技術(shù)來同時(shí)隱藏交易地址以及交易金額。這項(xiàng)技術(shù)正在逐步部署來達(dá)到真正的匿名。這項(xiàng)技術(shù)采用了多層連接自發(fā)匿名組簽名(Multi-layered?Linkable Spontaneous Anonymous Group?signature)的協(xié)議。限于篇幅,感興趣的讀者可以參考原論文[7]。
?
門羅幣目前的市值超過一億美元,排名第5;單價(jià)為8.21美元,排名第6。
?
零鈔(Zcash)
門羅幣的方案看似已經(jīng)接近完美,但依然存在一個(gè)可能的問題:環(huán)簽名中依舊需要與其他用戶的公鑰進(jìn)行混合,因此可能會遭遇惡意用戶從而暴露隱私。零鈔利用零知識證明避免了這個(gè)問題,讓用戶只是通過和加密貨幣本身進(jìn)行交互來隱藏交易信息,做到了“所有貨幣生來平等”[8]。
首先給大家簡要介紹一下什么是零知識證明(zero knowledge?proof)。如圖7的左圖所示,北分支和南分支中間有一扇門,老王宣稱自己能打開這扇門,如何在不給大家看開門細(xì)節(jié)的情況下讓大家相信這件事呢?假設(shè)我們采用交互式的零知識證明,那么老王可以自己選擇一個(gè)分支進(jìn)入,如圖中藍(lán)色點(diǎn)(哪個(gè)分支可以不讓驗(yàn)證者知道)。然后驗(yàn)證者(圖中紅色點(diǎn))隨機(jī)指定老王從哪個(gè)分支出來。如果老王打不開門,那么老王只有二分之一的概率達(dá)到要求。N次重復(fù)這個(gè)過程,如果老王不能打開門,那么老王N次都能從指定分支出來的概率為(1/2)^N。因此足夠次數(shù)下,如果老王都能完成任務(wù),可以認(rèn)為老王能打開門。這樣帶來的一個(gè)問題就是交互成本太高。一個(gè)改進(jìn)的方案是圖7的右圖,假設(shè)這兒有100條路,如果驗(yàn)證者隨機(jī)指定100條路中的一條,老王能從該分支出現(xiàn),那么老王不能開門的概率為1/100。這顯著提高了交互的效率。
?
?
在零鈔的設(shè)計(jì)中,就采用了一種叫做zk-SNARK的非交互式的零知識證明。在這里我們并不深入zk-SNARK的細(xì)節(jié),只是大致描述一下零鈔中是如何使用這項(xiàng)技術(shù)的。首先我們看一個(gè)最簡單的情形,假設(shè)零鈔中的幣值都是確定的,例如1BTC。那么鑄幣過程相當(dāng)于是用戶向某個(gè)托管池(escrow?pool)注入1BTC,然后向一個(gè)列表中寫入一個(gè)承諾(commitment)。其中承諾必須由一個(gè)序列號以及用戶私鑰才能計(jì)算得到,并且是單向的。當(dāng)用戶想要花這個(gè)幣的時(shí)候,需要做兩件事:(1)給出序列號,以及(2)利用zk-SNARK證明自己知道生成這個(gè)承諾的用戶私鑰。這樣,用戶就可以在完全不暴露身份的情況下,花出這個(gè)幣。并且序列號的唯一性可以保證沒有雙花的情況。
以上的簡單情形有三個(gè)問題:(1)幣值固定很不方便,(2)發(fā)送方可以通過序列號來判斷接收方正在花錢,(3)接收方必須馬上花掉得到的幣否則可能被發(fā)送方提取。為了解決這三個(gè)問題,零鈔中提出了一種澆鑄(pour)的操作來花銷錢幣。簡單地講,澆鑄操作就是通過一系列零知識證明,將一個(gè)幣鑄造成多個(gè)幣,且輸入輸出的總和相等。每個(gè)新幣都有自己的密鑰、數(shù)額、序列號等等,從而解決了以上三個(gè)問題。與此同時(shí),零鈔還采用了一系列的優(yōu)化措施來提高整個(gè)運(yùn)行系統(tǒng)的性能。
零鈔在現(xiàn)目前所有的密碼學(xué)貨幣中是匿名性最好的,因此受到過市場狂熱的追捧,在2016年10月底發(fā)行前后,單幣價(jià)格估值曾高達(dá)幾千個(gè)比特幣。現(xiàn)目前幣值穩(wěn)定后,零鈔的市值大約為800萬美元。單幣價(jià)格為62美元,僅次于比特幣。
?
小結(jié)
區(qū)塊鏈技術(shù)中的隱私問題一直以來都是飽受詬病的,一方面普通用戶在區(qū)塊鏈上的交易隱私應(yīng)該得到保護(hù),另一方面又應(yīng)該防止惡意用戶將其用作非法交易的平臺。現(xiàn)目前的匿名化技術(shù)也還不能完美地保證匿名,比如像零鈔,也必須依賴于初始化時(shí)的一些秘密參數(shù)(掌握在幾個(gè)人手中)。這也會給用戶帶來交易與隱私上的風(fēng)險(xiǎn)。除了交易隱私,諸如以太坊等區(qū)塊鏈技術(shù)中的智能合約隱私也是一個(gè)很值得關(guān)注的問題,目前也已經(jīng)有一些工作開展起來。希望在不久的將來,區(qū)塊鏈能做到在保證隱私的同時(shí),為數(shù)字世界提供一個(gè)公開可信的技術(shù)支撐。
?
參考文獻(xiàn)
[1] ?Arvind Narayanan, et al. “Bitcoin and Cryptocurrency?Technologies: A Comprehensive Introduction”,2016
[2] ?Meiklejohn, Sarah, et al. "A fistful of bitcoins:?characterizing payments among men with no names." Proceedings of?the 2013 conference on Internet measurement conference. ACM,?2013.
[3] ?https://github.com/dashpay/dash/wiki/Whitepaper
[4] ?https://coinmarketcap.com/
[5] ?https://getmonero.org/home
[6] ?http://www.nihonkoenmura.jp/theme3/takarabito07.htm
[7] ?Noether, Shen. "Ring signature confidential?transactions for monero."
[8] ?https://z.cash/
原文地址:https://www.msra.cn/zh-cn/news/features/blockchain-20161213
總結(jié)
以上是生活随笔為你收集整理的一文读懂区块链上的隐私与监管问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017年10大年度最佳的ICO项目
- 下一篇: 不是程序员也能看懂的ZCash零知识证明