第6章:比特幣和匿名

“比特幣是一種安全而匿名的數(shù)字貨幣”

——維基解密捐款頁(yè)面

“比特幣不會(huì)把你從NSA的窺視中隱藏起來”

——連線英國(guó)

比特幣最有爭(zhēng)議的事情之一就是它的匿名性。首先,比特幣是匿名的嗎?從上面相互矛盾的引用可以看出,這有些混亂。其次,我們想要一個(gè)真正匿名的加密貨幣嗎?匿名的利弊,導(dǎo)致了一些基本的問題:匿名的加密機(jī)制有利于利益相關(guān)者嗎?這對(duì)社會(huì)有好處嗎?有沒有辦法隔離匿名的積極方面,同時(shí)消除負(fù)面部分?

這些問題很難,因?yàn)樗鼈儾糠秩Q于人的倫理價(jià)值觀。本章我們不會(huì)回答,雖然我們將會(huì)對(duì)匿名的論據(jù)進(jìn)行研究。大多數(shù)情況下,我們將堅(jiān)持研究各種技術(shù)——一些已經(jīng)存在于比特幣和其他被提出加入的技術(shù)——旨在提高比特幣的匿名性。我們還將看看具有與Bitcoin不同匿名屬性的替代加密貨幣的提案。這些技術(shù)提出了新的問題:他們工作的有多好? 他們被采取有多么困難? 采用它們有什么折衷方案?

6.1匿名性的基礎(chǔ)

定義匿名在我們可以正確地討論(或在什么程度上)比特幣是否匿名之前,我們需要定義匿名。我們必須明白我們口中的匿名是什么意思,以及匿名和類似術(shù)語之間的關(guān)系,如隱私。

顧名思義,匿名的意思是“沒有名字”。當(dāng)我們嘗試將此定義應(yīng)用于比特幣時(shí),有兩種可能的解釋:在不使用真實(shí)姓名的情況下進(jìn)行交互,或者在不使用任何名稱的情況下進(jìn)行交互。這兩個(gè)解釋導(dǎo)致了比特幣是否是匿名的結(jié)論是非常不同的。比特幣地址是公鑰的哈希。你不需要使用你的真實(shí)姓名來與系統(tǒng)進(jìn)行交互,但你將使用你的公共密鑰哈希作為你的身份。因此,針對(duì)第一個(gè)解釋,比特幣是匿名的,因?yàn)槟悴皇褂媚愕恼鎸?shí)姓名。但是,通過第二個(gè)解釋,它不是;你使用的地址是偽身份。在計(jì)算機(jī)科學(xué)的語言中,使用的不是你的真實(shí)姓名的身份的這個(gè)中間地位稱為假名。

回想一下,你可以隨意創(chuàng)建任意數(shù)量的Bitcoin地址。考慮到你可以創(chuàng)建盡可能多的這些假名,你可能會(huì)想知道Bitcoin地址是否真的是偽身份。我們將看到,這仍然不能使Bitcoin匿名。


側(cè)邊欄。你可以從各種其他背景中熟悉匿名和純假名之間的區(qū)別。一個(gè)很好的例子是在線論壇。在像Reddit這樣的論壇上,你可以選擇一個(gè)長(zhǎng)期的假名,并在一段時(shí)間內(nèi)用這個(gè)假名互動(dòng)。你可以創(chuàng)建多個(gè)假名,甚至為每個(gè)評(píng)論創(chuàng)建一個(gè)新的,但這將是乏味和煩人的,大多數(shù)人都不會(huì)這樣做。所以在Reddit上交互通常用的是假名,但不是很匿名。相比之下,4Chan是一個(gè)在線論壇,用戶通常以匿名的方式發(fā)布——完全沒有歸因。


在計(jì)算機(jī)科學(xué)中,匿名性是指假名與無關(guān)聯(lián)性。無關(guān)聯(lián)性是針對(duì)特定對(duì)手性能定義的屬性。直觀上,無關(guān)聯(lián)性意味著如果用戶反復(fù)與系統(tǒng)進(jìn)行交互,這些不同的交互應(yīng)該不能從對(duì)手的角度來看到彼此的聯(lián)系。

比特幣使用的是假名,但如果你的目標(biāo)是實(shí)現(xiàn)隱私,則假名是不夠的。回想一下,區(qū)塊鏈?zhǔn)枪_的,任何人都可以查找涉及給定地址的所有比特幣交易。如果有人能夠?qū)⒛愕谋忍貛诺刂放c你的真實(shí)世界身份相關(guān)聯(lián),那么所有的交易(過去,現(xiàn)在和將來)都將與你的身份相關(guān)聯(lián)。

讓事情更糟的是,將比特幣地址與真實(shí)世界的身份聯(lián)系起來往往很容易。如果你與比特幣業(yè)務(wù)(無論是在線錢包服務(wù),交易還是其他商業(yè))互動(dòng),他們通常都會(huì)想要你現(xiàn)實(shí)生活中的身份,以便你與他們進(jìn)行交易。例如,交易所可能需要你的信用卡詳細(xì)信息,而商家將需要你的送貨地址。

或者你去咖啡店,用比特幣支付。由于你本人在那,咖啡師知道你的身份,即使他們不要求你的真實(shí)姓名。你的物理身份也將因此綁定到你的一個(gè)Bitcoin交易上,使得所有涉及該地址的其他交易都可以鏈接到你。這顯然不是匿名的。

側(cè)面通道。即使沒有直接聯(lián)系,你偽造的個(gè)人資料也可能由于側(cè)面渠道或信息的間接泄露而使匿名性失效。例如,有人可能會(huì)看到一個(gè)匿名的比特幣交易的配置文件,并在該用戶處于活躍狀態(tài)的當(dāng)天注意到他。他們可以將此信息與其他公開信息相關(guān)聯(lián)。也許他們會(huì)注意到一些Twitter用戶在大致相同的時(shí)間間隔內(nèi)是活躍的,從而創(chuàng)建匿名的比特幣簡(jiǎn)檔和真實(shí)世界身份(或至少一個(gè)Twitter身份)之間的鏈接。明確的假名不能保證隱私或匿名。要實(shí)現(xiàn)這些目標(biāo),我們需要更強(qiáng)的不相關(guān)性。

無關(guān)聯(lián)性。為了更好地了解比特幣上下文的不可鏈接性,讓我們列舉Bitcoin活動(dòng)不可鏈接所需的一些關(guān)鍵屬性:

1.很難將同一用戶的不同地址鏈接在一起。

2.很難將同一用戶進(jìn)行的不同交易鏈接在一起。

3.很難將付款發(fā)送方連接到收件人。

前兩個(gè)屬性是直觀的,但第三個(gè)屬性有點(diǎn)棘手。如果你將“付款”解釋為比特幣交易,則第三個(gè)屬性顯然是錯(cuò)誤的。每個(gè)交易都有輸入和輸出,這些投入和產(chǎn)出必然會(huì)在區(qū)塊鏈中并且公開連接在一起。然而,我們所說的付款方式并不是一個(gè)單一的比特幣交易,而是任何具有將比特幣從寄件人轉(zhuǎn)移到接受者的效應(yīng)。它可能涉及一個(gè)迂回的交易系列。我們想確保的是,通過查看區(qū)塊鏈,鏈接發(fā)送方和付款的最終收件人是不可行的。

匿名集。即使在我們廣義的付款定義下,第三財(cái)產(chǎn)似乎也很難實(shí)現(xiàn)。假設(shè)你為一個(gè)產(chǎn)品支付了一定數(shù)量的比特幣,并通過迂回的交易方式發(fā)送了該支付。看著區(qū)塊鏈的人仍然可以推斷出一些事實(shí),即一定數(shù)量的比特幣離開了一個(gè)地址,大致相同數(shù)量的比特幣(可能減去交易費(fèi)用)最終在其他地址出現(xiàn)。此外,盡管存在迂回的路線,初始發(fā)送和最終接收將發(fā)生在大致相同的時(shí)間段,因?yàn)樯碳覍⑾M跊]有太多延遲的情況下接收付款。

由于這個(gè)困難,我們通常不會(huì)試圖在系統(tǒng)中的所有可能的交易或地址之間實(shí)現(xiàn)完全的無關(guān)聯(lián),而是更有限的東西。給定一個(gè)特定的對(duì)手,你的交易的匿名集是一組交易集合,對(duì)手不能從你的交易中區(qū)別開來。即使對(duì)手知道你進(jìn)行了一個(gè)交易,他們也只能告訴你這是集合中的一個(gè)交易,而不是它是哪一個(gè)。我們嘗試最大化匿名集合的大小——可以隱藏其他地址或交易的集合。

計(jì)算匿名集是棘手的。由于匿名集是針對(duì)某個(gè)對(duì)手或一組對(duì)手而定義的,因此你必須首先具體定義你對(duì)手的模式。你不得不認(rèn)真對(duì)待對(duì)手知道什么,他們不知道什么,以及我們正在試圖從對(duì)手中隱藏什么,也就是說,對(duì)手從交易中不知道的東西就被認(rèn)為是匿名的。沒有這樣做的通用公式。它需要在個(gè)案的基礎(chǔ)上仔細(xì)分析每個(gè)協(xié)議和系統(tǒng)。

污點(diǎn)分析。在比特幣社區(qū),人們經(jīng)常對(duì)匿名服務(wù)進(jìn)行直觀的分析,而不是嚴(yán)格的定義。污點(diǎn)分析特別受歡迎:它是一種計(jì)算兩個(gè)地址“相關(guān)”的方式。如果由地址S發(fā)送的比特幣總是在另一個(gè)地址R處,無論是直接地還是經(jīng)過一些中間地址,則S和R將具有較高的污點(diǎn)分?jǐn)?shù)。該公式涉及具有多個(gè)輸入和/或輸出的交易,并指定如何分配污點(diǎn)。

不幸的是,污點(diǎn)分析并不是比特幣匿名的一個(gè)很好的衡量標(biāo)準(zhǔn)。它隱含地假設(shè)對(duì)手正在使用相同的機(jī)械計(jì)算來鏈接地址對(duì)。一個(gè)稍微聰明的對(duì)手可能會(huì)使用其他技術(shù),例如查看交易時(shí)間,甚至利用錢包軟件的特性,我們將在本章后面看到。所以污點(diǎn)分析可能表明你在某種情況下有很高的匿名性,但實(shí)際上你可能不會(huì)。

為什么我們需要匿名。看到匿名意味的意思后,讓我們回答一些關(guān)于匿名的元問題,然后再進(jìn)一步說明:為什么人們需要匿名?匿名貨幣的倫理含義是什么?

在基于塊鏈的貨幣中,所有交易都記錄在分類帳上,這意味著它們被公開和永久地追溯到相關(guān)聯(lián)的地址。所以你的比特幣交易的隱私可能比傳統(tǒng)的銀行業(yè)務(wù)差得多。如果你在真實(shí)世界的身份與Bitcoin地址相關(guān)聯(lián),那么你將完全失去了與該地址相關(guān)聯(lián)的所有交易(過去,現(xiàn)在和將來)的隱私。由于區(qū)塊鏈?zhǔn)枪_的,從字面上任何人都可以執(zhí)行這種類型的脫離語言,甚至無需你意識(shí)到已被識(shí)別。

考慮到這一點(diǎn),我們可以確定使用匿名加密貨幣的兩種不同動(dòng)機(jī)。第一種是簡(jiǎn)單地實(shí)現(xiàn)我們已經(jīng)習(xí)慣從傳統(tǒng)銀行開始的隱私水平,并減輕公有鏈帶來的脫離風(fēng)險(xiǎn)。第二種是超越傳統(tǒng)銀行業(yè)的隱私級(jí)別,開發(fā)貨幣,使其技術(shù)上無法跟蹤參與者。

匿名倫理。我們認(rèn)為傳統(tǒng)貨幣理所當(dāng)然地,有許多重要的(雖然經(jīng)常被忽視)匿名的理由。大多數(shù)人不喜歡與他們的朋友和同事分享薪水。如果個(gè)體的地址在區(qū)塊鏈中很容易被識(shí)別,并且他們通過比特幣獲得工資,那么通過尋找一個(gè)大的、定期每月支付就可以很容易地推斷出他們的工資。組織也有重要的財(cái)務(wù)隱私問題。例如,如果一個(gè)視頻游戲機(jī)制造商通過區(qū)塊鏈支付給制造虛擬現(xiàn)實(shí)眼睛的分包商,則可能提示公眾(及其競(jìng)爭(zhēng)對(duì)手)他們正在準(zhǔn)備推出新的產(chǎn)品。

然而,人們有理由擔(dān)心真正的匿名加密貨幣可以用于洗錢或其他非法活動(dòng)。好消息是,盡管加密貨幣交易本身可能是匿名或匿名的,但是數(shù)字現(xiàn)金和法定貨幣之間的接口不是。事實(shí)上,這些流程受到高度監(jiān)管,正如我們將在下一章中看到的那樣。所以加密貨幣不是洗錢或其他金融犯罪的靈丹妙藥。

然而,人們可能會(huì)問:“難道我們不能以這樣一種方式來設(shè)計(jì)技術(shù),只有匿名的良好使用是允許的,而壞的用法是被禁止嗎?”這實(shí)際上是對(duì)計(jì)算機(jī)安全和隱私研究人員的反復(fù)呼吁。不幸的是,它從來沒有被證明是可能的。原因是我們以道德的角度來歸類好或者壞在技術(shù)上是相同的。在比特幣方面,我們不清楚我們?nèi)绾文軌驅(qū)ΦV工做出關(guān)于哪些交易包含的道德決定。

我們認(rèn)為,通過使用匿名加密貨幣來保證其存在的潛在好處,我們應(yīng)該將系統(tǒng)的技術(shù)匿名屬性與我們?cè)谑褂秘泿艜r(shí)所使用的法律原則進(jìn)行分離。這不是一個(gè)完全令人滿意的解決方案,但它也許是實(shí)現(xiàn)有利權(quán)衡的最佳途徑。




側(cè)邊欄:Tor。如何應(yīng)對(duì)具有良好的和壞的用途的技術(shù)的道德困境并不是Bitcoin獨(dú)有的。匿名的另一個(gè)系統(tǒng)是Tor,一個(gè)匿名的通信網(wǎng)絡(luò)。

一方面,Tor被希望保護(hù)自己免受在線追蹤的普通人使用。它被記者、活動(dòng)家和持不同政見者用來自由的說話,而不用擔(dān)心受到壓迫政權(quán)的影響。執(zhí)法機(jī)構(gòu)也會(huì)使用這些來監(jiān)控嫌疑人,而不會(huì)透露他們的IP地址(畢竟,分配給不同組織,包括執(zhí)法機(jī)構(gòu)的IP地址范圍或區(qū)塊往往是眾所周知的)。顯然,Tor有很多應(yīng)用可以在道德上得到批準(zhǔn)。然而,它也有明顯的壞用途:僵尸網(wǎng)絡(luò)運(yùn)營(yíng)商使用它們來控制受感染機(jī)器,并用于分發(fā)兒童性虐待圖像。

在技術(shù)層面區(qū)分這些用途基本上是不可能的。Tor開發(fā)商和Tor社區(qū)廣泛地解決了這個(gè)難題。真?zhèn)€社會(huì)也在某種程度上進(jìn)行努力。我們似乎得出結(jié)論,總的來說,技術(shù)存在的世界更好。事實(shí)上,Tor項(xiàng)目的主要資金來自美國(guó)國(guó)務(wù)院。他們對(duì)Tor感興趣,因?yàn)樗梢栽趬浩日?quán)中為異議人士在線免費(fèi)發(fā)表言論。與此同時(shí),執(zhí)法機(jī)構(gòu)似乎也勉強(qiáng)地接受了Tor的存在,并且開辟了解決方法。FBI經(jīng)常設(shè)法破壞分發(fā)兒童性虐待圖像的“黑網(wǎng)”網(wǎng)站,盡管這些網(wǎng)站隱藏在Tor之后。通常這是因?yàn)椴僮鲉T跳起來了。我們必須記住,技術(shù)只是一種工具,犯罪者生活在現(xiàn)實(shí)世界中,在于技術(shù)相互作用的情況下,他們可能留下實(shí)際證據(jù)或犯下全部人都會(huì)犯下的人為錯(cuò)誤。


匿名化與權(quán)力下放。我們將在本章中看到一個(gè)反復(fù)出現(xiàn)的主題,即匿名化和權(quán)力下放的設(shè)計(jì)標(biāo)準(zhǔn)通常彼此沖突。如果你從序言中回憶起了Chaum的ecash,它在某種意義上實(shí)現(xiàn)了完美的匿名性,但要通過與中央機(jī)構(gòu)——銀行的交互式盲簽名協(xié)議。你可以想象,這樣的協(xié)議很難分散。其次,如果我們分散化,那么我們必須保持一些機(jī)制來跟蹤交易并防止雙重支付。這種公開的交易可追溯性是對(duì)匿名的威脅。

在本章的后面,我們將看到匿名分散的加密貨幣Zerocoin和Zerocash,與Chaum的ecash有一些相似之處,但是由于這兩個(gè)限制,它們必須解決棘手的加密挑戰(zhàn)。

6.2如何對(duì)比特幣進(jìn)行匿名化

我們已經(jīng)說過多次,比特幣只是匿名的,所以你的所有交易或地址都可能會(huì)被鏈接在一起。我們來仔細(xì)看看實(shí)際可能發(fā)生的情況。

圖6.1顯示了維基解密捐贈(zèng)頁(yè)面的一個(gè)片段(包括本章開頭的引文)。注意捐贈(zèng)地址旁邊的刷新按鈕。如你可能期望的,點(diǎn)擊按鈕將用新生成的地址替換捐贈(zèng)地址。同樣,如果你刷新頁(yè)面或關(guān)閉它,并稍后訪問它,它將有另一個(gè)從來沒有見過的地址。那是因?yàn)榫S基解密希望確保他們收到的每一筆捐款都會(huì)發(fā)給他們創(chuàng)建的新公鑰。維基解密正在利用創(chuàng)建新假名能力的最大優(yōu)勢(shì)。這實(shí)際上是Bitcoin錢包使用匿名的最佳做法。

圖6.1維基解密捐贈(zèng)頁(yè)面的片段。注意Bitcoin地址旁邊的刷新圖標(biāo)。維基解密遵循Bitcoin最佳做法,為每次捐款生成新的接收地址。

起初,你可能會(huì)認(rèn)為這些不同的地址必須是無法鏈接的。維基解密分別收到每筆捐款,想必他們也可以分別支付這些捐款。但事情很快就崩潰了。

鏈接。假設(shè)愛麗絲想買一個(gè)8比特幣的茶壺(按2015年匯率計(jì)算,更可能是8厘比特幣)。另外,假設(shè)她在不同的比特幣地址分別有3、5和6三個(gè)獨(dú)立的未使用的輸出。愛麗絲實(shí)際上沒有一個(gè)地址有8個(gè)比特幣在那,所以她必須將她的兩個(gè)輸出作為輸入組合成一個(gè)單一交易,付給商店。

但這揭示了一些東西。交易永久記錄在區(qū)塊鏈中,任何看到它的人都可以推斷出交易的兩個(gè)輸入最有可能在同一用戶的控制之下。換句話說,共享支出是聯(lián)合控制不同輸入地址的證據(jù)。當(dāng)然也可能有例外。也許愛麗絲和鮑勃是室友,并同意通過提供一個(gè)交易輸入共同購(gòu)買茶壺。但總的來說,聯(lián)合投入意味著共同控制。

圖6.2為了支付茶壺,Alice必須創(chuàng)建一個(gè)具有兩個(gè)不同地址的輸入交易。一旦這樣做,愛麗絲就透露了這兩個(gè)地址是由一個(gè)實(shí)體控制的。

但它不會(huì)就此止步。對(duì)手可以重復(fù)這個(gè)過程,并將整個(gè)交易集群連續(xù)地鏈接成屬于一個(gè)實(shí)體。如果另一個(gè)地址以這種方式鏈接到Alice的任何一個(gè)地址,那么我們知道所有三個(gè)地址都屬于同一個(gè)實(shí)體,我們可以使用這個(gè)觀察集群地址。一般來說,如果新地址的輸出與集群中任何地址的輸出一起使用,則該新地址也可以添加到集群中。

在本章的后面,我們將研究一種名為CoinJoin的匿名技術(shù),它通過違背這一假設(shè)而起作用。但是現(xiàn)在,如果你假設(shè)人們常規(guī)使用的比特幣錢包軟件沒有任何特殊的匿名技術(shù),那么這種集群往往是非常強(qiáng)大的。我們還沒有看到如何將這些集群與現(xiàn)實(shí)世界的身份聯(lián)系起來,但我們很快就會(huì)得到。


側(cè)邊欄:更改隨機(jī)化地址。bitcoin-qt庫(kù)的早期版本有一個(gè)錯(cuò)誤,它始終將更改地址作為具有兩個(gè)輸出交易中的第一個(gè)輸出。這意味著在許多交易中確定變更地址是微不足道的。這個(gè)錯(cuò)誤在2012年修復(fù),但突出了重要的一點(diǎn):錢包軟件在保護(hù)匿名方面發(fā)揮了重要的作用。如果你正在開發(fā)錢包軟件,你應(yīng)該注意到許多陷阱;特別是你應(yīng)該隨時(shí)選擇更改地址的位置,以避免給對(duì)手太多的空間。


回到我們的例子,假設(shè)茶壺的價(jià)格從8比特幣上升到8.5比特幣。愛麗絲不能再找到一套有效的未使用輸出,她可以結(jié)合來產(chǎn)生茶壺所需的零錢。相反,愛麗絲利用了交易可以有多個(gè)輸出的事實(shí),如圖6.3所示。其中一個(gè)輸出是商店的付款地址,另一個(gè)是她自己擁有的“更改”地址。

現(xiàn)在從對(duì)手的角度來考慮這個(gè)交易。他們可以推斷出兩個(gè)輸入地址屬于同一用戶。他們可能會(huì)懷疑其中一個(gè)輸出地址也屬于該用戶,但無法確定哪一個(gè)是。0.5輸出較小的事實(shí)并不意味著這是變更地址。愛麗絲可能會(huì)有在交易中有一萬個(gè)比特幣,她可能在茶壺上花8.5比特幣,并將剩余的9,991.5比特幣送回自己身邊。在這種情況下,更大的輸出實(shí)際上是改變地址。

圖6.3:更改地址。為了支付茶壺,愛麗絲必須創(chuàng)建一個(gè)交易,一個(gè)輸出到商家,另一個(gè)輸出發(fā)回到自己。

一個(gè)更好的猜測(cè)是,如果茶壺的成本只有0.5比特幣,那么愛麗絲就不必用兩個(gè)不同的輸入創(chuàng)建一個(gè)交易,因?yàn)?個(gè)比特幣輸入或6個(gè)比特幣輸入本身已經(jīng)足夠了。但這種啟發(fā)式的有效性完全取決于常用錢包軟件的實(shí)現(xiàn)細(xì)節(jié)。即使沒有嚴(yán)格的必要條件,也不會(huì)阻止錢包(或用戶)組合交易。

慣用語。這種實(shí)現(xiàn)細(xì)節(jié)被稱為“使用習(xí)語”。2013年,一組研究人員發(fā)現(xiàn)大多數(shù)錢包軟件都是一種習(xí)慣用語,并且導(dǎo)致了一種強(qiáng)大的啟發(fā)式來識(shí)別變更地址。具體來說,他們發(fā)現(xiàn),每當(dāng)需要更改地址時(shí),錢包通常會(huì)生成一個(gè)新的地址。由于使用習(xí)慣用語,更改地址通常是從未出現(xiàn)在區(qū)塊鏈中的地址。另一方面,非變化輸出通常不是新的地址,并且可能以前在區(qū)塊鏈中出現(xiàn)過。對(duì)手可以使用這些知識(shí)來區(qū)分更改地址并將其與輸入地址相鏈接。

利用習(xí)語可能會(huì)很容易出錯(cuò)。事實(shí)上,更改地址是新鮮的地址,恰好是錢包軟件的一個(gè)功能。研究人員在2013年測(cè)試時(shí)確實(shí)如此。也許這是真的,但也許不是。用戶可以選擇廢除此默認(rèn)行為。最重要的是,知道這種技術(shù)的對(duì)手很容易規(guī)避它。即使在2013年,研究人員發(fā)現(xiàn)它產(chǎn)生了很多假陽性,他們最終把不屬于同一實(shí)體的地址集中在一起。他們報(bào)告說,他們需要進(jìn)行重大的手工監(jiān)督和干預(yù),以消除假陽性。

圖6.4:地址的聚類。在2013年的一篇“一群比特幣:表征男性無名稱付款”的論文中,研究人員將共享消費(fèi)啟發(fā)式和新鮮變化地址啟發(fā)式組合到集群比特幣地址。這些圓圈的大小代表流入這些集群的貨幣數(shù)量,每個(gè)邊緣代表一筆交易。

將現(xiàn)實(shí)世界的身份附加到集群中。在圖6.4中。我們看到Meiklejohn等人如何使用用作啟發(fā)式的基本習(xí)語的集群比特幣地址。但圖形沒有標(biāo)注——我們還沒有附加身份到集群。

我們可能會(huì)根據(jù)對(duì)比特幣經(jīng)濟(jì)的了解,做出一些有根據(jù)的猜測(cè)。早在2013年,Mt. Gox是最大的比特幣交易所,所以我們可能會(huì)猜到,大的紫色圓圈代表了他們所控制的地址。我們也可能會(huì)注意到,盡管擁有最多的交易數(shù)量,但是Bitcoins中左側(cè)的棕色集群的數(shù)量很小。這適合賭博服務(wù)Satoshi骰子的模式,這是一個(gè)流行的游戲,你發(fā)送少量的比特幣作為下注。總的來說,這不是識(shí)別集群的好方法。它需要知識(shí)和猜測(cè),且只能為最突出的服務(wù)工作。

通過交易標(biāo)記。只訪問每個(gè)交易所或商家的網(wǎng)站,并查找他們?yōu)榻邮毡忍貛抛鰪V告的地址會(huì)怎么樣?然而,這并不奏效,因?yàn)榇蠖鄶?shù)服務(wù)將為每個(gè)交易發(fā)布一個(gè)新的地址,并且向你展示的地址尚未在區(qū)塊鏈中。這沒有任何等待的意義,因?yàn)檫@個(gè)地址永遠(yuǎn)不會(huì)展示給其他人。

推斷地址的唯一可靠的方法是與該服務(wù)提供商實(shí)際交易——存放比特幣,購(gòu)買物品等。當(dāng)你向服務(wù)提供商發(fā)送比特幣或從服務(wù)提供商接收比特幣時(shí),你現(xiàn)在將知道其中的一個(gè)地址,這些地址將很快在區(qū)塊鏈(以及其中一個(gè)群集)中結(jié)束。然后,你可以使用服務(wù)提供商的身份標(biāo)記整個(gè)集群。

這正式“一群比特幣”的研究人員(和其他人)完成的。他們購(gòu)買了各種各樣的東西,加入采礦池,使用比特幣交易所,錢包服務(wù)和賭博網(wǎng)站,并以各種其他方式與服務(wù)提供商進(jìn)行互動(dòng),折中了344筆交易。

在圖6.5中,我們?cè)俅物@示了圖6.4的集群,但是這次與標(biāo)簽相連。雖然我們對(duì)Mt. gox和Satoshi骰子的猜測(cè)是正確的,研究人員能夠識(shí)別許多其他服務(wù)提供商,但不與這些服務(wù)提供商交易將很難識(shí)別他們。

圖6.5。標(biāo)簽集群。通過與各種Bitcoin服務(wù)提供商進(jìn)行交易,Meiklejohn等人 能夠?qū)⒄鎸?shí)世界的身份附加到他們的集群中。

識(shí)別個(gè)人。下一個(gè)問題是:我們可以為個(gè)人做同樣的事情嗎?也就是說,我們可以將對(duì)應(yīng)于個(gè)人的小集群連接到他們的現(xiàn)實(shí)身份嗎?

直接交易。任何與個(gè)人交易的人——在線或離線商家,交換,或使用Bitcoin分享晚餐帳單的朋友——至少知道一個(gè)屬于他們的地址。

通過服務(wù)提供商。在幾個(gè)月或幾年內(nèi)使用比特幣的過程中,大多數(shù)用戶將最終與交易所或另一個(gè)集中式服務(wù)提供商進(jìn)行互動(dòng)。這些服務(wù)通常要求提供者向用戶詢問他們的身份——通常他們?cè)诜缮闲枰覀儗⒃谙乱徽轮锌吹健H绻麍?zhí)法機(jī)構(gòu)想要識(shí)別用戶,他們可以轉(zhuǎn)向這些服務(wù)提供商。

疏忽。人們經(jīng)常在公共論壇上發(fā)布他們的比特幣地址。一個(gè)常見的原因是被要求捐贈(zèng)。當(dāng)有人這樣做時(shí),它會(huì)創(chuàng)建他們的身份和他們的地址之間的鏈接。如果他們不使用我們將在以下部分中看到的匿名服務(wù),那么他們有可能使所有的交易脫離匿名。

事情變得越來越糟。歷史表明,隨著越來越多的研究人員研究問題并發(fā)現(xiàn)新的攻擊技術(shù),數(shù)據(jù)可公開獲得,去匿名算法通常會(huì)隨著時(shí)間的推移而改善。此外,攻擊者可以使用更多的輔助信息來將身份附加到集群。如果你關(guān)心隱私,這是值得擔(dān)心的。

迄今為止,我們所研究的去匿名技術(shù)都是基于分析區(qū)塊鏈中交易的圖形。它們統(tǒng)稱為交易圖分析。

網(wǎng)絡(luò)層去匿名。有一種完全不同的方式,用戶可以不依賴于交易圖去匿名。回想一下,為了將交易發(fā)布到區(qū)塊鏈,一個(gè)通常將其廣播到Bitcoin的對(duì)等網(wǎng)絡(luò),其中發(fā)送的消息不一定永久地記錄在區(qū)塊鏈中。

在網(wǎng)絡(luò)術(shù)語中,區(qū)塊鏈被稱為應(yīng)用層,對(duì)等網(wǎng)絡(luò)是網(wǎng)絡(luò)層。Dan Kaminsky在2011年黑帽會(huì)議上首次指出了網(wǎng)絡(luò)層去匿名。他注意到,當(dāng)節(jié)點(diǎn)創(chuàng)建一個(gè)交易時(shí),它同時(shí)連接到許多節(jié)點(diǎn)并廣播交易。如果網(wǎng)絡(luò)上足夠多的節(jié)點(diǎn)相互勾結(jié)(或由同一對(duì)手運(yùn)行),則他們可以計(jì)算出第一個(gè)節(jié)點(diǎn)來廣播任何交易。想必,這將是創(chuàng)建交易的用戶運(yùn)行的節(jié)點(diǎn)。然后對(duì)手可以將交易鏈接到節(jié)點(diǎn)的IP地址。一個(gè)IP地址接近真實(shí)身份;有很多方法可以嘗試使IP地址后面的人員露出真相。因此,網(wǎng)絡(luò)層去匿名是隱私的嚴(yán)重問題。

圖6.6:網(wǎng)絡(luò)層去匿名。正如丹·卡明斯基在2011年黑帽談話中指出的那樣,“通知你一個(gè)交易的第一個(gè)節(jié)點(diǎn)可能是它的源頭”。當(dāng)多個(gè)節(jié)點(diǎn)合作并識(shí)別相同的源時(shí),該啟發(fā)式被放大。

幸運(yùn)的是,這是通信匿名的一個(gè)問題,這已經(jīng)成為相當(dāng)大的研究課題。正如我們?cè)?.1節(jié)早些時(shí)候看到的,有一個(gè)廣泛部署的名為Tor的系統(tǒng),可用于匿名通信。

使用Tor作為比特幣的網(wǎng)絡(luò)層匿名解決方案有幾個(gè)注意事項(xiàng)。首先,Tor協(xié)議和覆蓋在其上的任何協(xié)議之間存在微妙的交互,導(dǎo)致新的方式來破譯匿名。事實(shí)上,研究人員發(fā)現(xiàn)使用Bitcoin-over-Tor的潛在安全問題,所以這一點(diǎn)必須特別小心。其次,可能還有其他匿名通信技術(shù)更適合在比特幣中使用。Tor的目的是用于“低延遲”活動(dòng),如網(wǎng)絡(luò)瀏覽,您不想坐在等待太久。它做了一些妥協(xié),以達(dá)到低延遲實(shí)現(xiàn)匿名。相比之下,比特幣是一種高延遲系統(tǒng),因?yàn)榻灰仔枰欢螘r(shí)間才能在區(qū)塊鏈中得到確認(rèn)。在理論上,至少,你可能希望使用一種替代的匿名技術(shù),例如混合網(wǎng)絡(luò),但目前,Tor具有大量用戶群,并且其安全性被深入研究的實(shí)際系統(tǒng)的優(yōu)點(diǎn)。

到目前為止,我們已經(jīng)看到,不同的地址可能會(huì)通過交易圖分析聯(lián)系在一起,并且它們也可以鏈接到真實(shí)世界的身份。我們也看到一個(gè)交易或地址可以鏈接到基于對(duì)等網(wǎng)絡(luò)的IP地址。后一個(gè)問題比較容易解決,即使不能完全解決。前一個(gè)問題更棘手,我們將在本章的其余部分討論如何解決這個(gè)問題。

6.3混合

有幾種機(jī)制可以使交易圖的分析效率降低。一種這樣的技術(shù)是混合,其背后的直覺非常簡(jiǎn)單:如果你想匿名,使用中介。這個(gè)原理并不是比特幣特有的,在許多以匿名為目標(biāo)的情況下都是有用的。混合如圖6.7所示。

圖6.7:混合。用戶向中介人發(fā)送硬幣,并拿回其他用戶存放的硬幣。這使得難以在區(qū)塊鏈上追蹤用戶的硬幣。

在線錢包混合。如果你回想起我們?cè)诰€錢包的討論,他們可能似乎適合作為中介。在線錢包是你可以在線存儲(chǔ)你的比特幣的服務(wù),稍后將其退回。通常,你提取的硬幣將不會(huì)與你存入的硬幣相同。在線錢包是否提供有效的混合?

在線錢包確實(shí)提供了一種無關(guān)聯(lián)性的措施,可以掩蓋交易圖分析的嘗試——在一種情況下,杰出的研究人員不得不收回已經(jīng)收到的大量公開的索賠,因?yàn)樗麄冋J(rèn)為他們發(fā)現(xiàn)的鏈接是由一個(gè)在線錢包造成的虛假鏈接。

另一方面,使用在線錢包進(jìn)行混合有幾個(gè)重要的限制。首先,大多數(shù)在線錢包實(shí)際上不承諾混合用戶的資金;相反,他們這樣做是因?yàn)樗?jiǎn)化了工程。你不能保證他們不會(huì)改變他們的行為。第二,即使他們混合資金,他們幾乎肯定會(huì)在內(nèi)部保存記錄,這樣他們就可以將你的存款與你的退款掛鉤。由于安全和合法合規(guī)的原因,這是一個(gè)謹(jǐn)慎的錢包服務(wù)選擇。因此,如果你的威脅模式包括服務(wù)提供商本身跟蹤你或被黑客入侵或被迫交出記錄的可能性,那么你將回到原點(diǎn)。第三,除了在內(nèi)部保存記錄之外,信譽(yù)良好和受監(jiān)管的服務(wù)還將要求記錄你的身份(我們將在下一章中更詳細(xì)地討論監(jiān)管)。你將無法用用戶名和密碼創(chuàng)建帳戶。所以在某種意義上說,它使你比不使用錢包服務(wù)更糟糕。這就是為什么我們?cè)谏弦还?jié)中提到中央集權(quán)和匿名之間的緊張關(guān)系。

在線錢包提供的匿名性與傳統(tǒng)銀行系統(tǒng)所提供的類似。有集中的中間人了解我們的交易,但是從一個(gè)沒有特權(quán)信息的陌生人的角度來看,我們有一個(gè)合理程度的隱私。但是正如我們所討論的那樣,塊鏈的公共性質(zhì)意味著如果出現(xiàn)問題(比如錢包或交換服務(wù)遭到黑客攻擊,記錄被暴露出來),隱私風(fēng)險(xiǎn)就會(huì)比傳統(tǒng)的系統(tǒng)更嚴(yán)重。此外,大多數(shù)以比特幣匿名的人傾向于這樣做,因?yàn)樗麄儾粷M意傳統(tǒng)系統(tǒng)的匿名屬性,并希望有更好的(或不同種類的)匿名保證。這些是專門的混合服務(wù)背后的動(dòng)機(jī)。

專用混合服務(wù)。與在線錢包形成鮮明對(duì)比的是,專門的混合承諾不保留記錄,也不需要你的身份。你甚至不需要使用用戶名或其他化名來與混合進(jìn)行交互。你把你的比特幣發(fā)送到混合提供的一個(gè)地址,你告訴混合目的地地址來發(fā)送比特幣。希望混合將很快發(fā)送你的(其他)比特幣在你指定的地址。它本質(zhì)上是一個(gè)互換。

雖然專門的混合承諾不保留記錄是件好事,但你仍然不得不相信他們履行承諾。你不得不相信他們會(huì)把你的硬幣意義送回來。由于混合不是存儲(chǔ)你比特幣的地方,與錢包不同,你需要相對(duì)快速地恢復(fù)你的硬幣,這意味著你的其他硬幣池與你即將混合的存款將小得多——那些存放在大致相同的時(shí)間。


側(cè)邊欄:術(shù)語。在本書中,我們將使用術(shù)語“混合”來代指專用混合服務(wù)。一些人喜歡的等同詞是混合器。

你也可能會(huì)遇到洗禮一詞。我們不喜歡這個(gè)術(shù)語,因?yàn)椴槐匾獙⒌赖屡袛喔郊釉谝粋€(gè)純技術(shù)概念上。如我們所見,有很好的理由解釋為什么你可能想保護(hù)你在比特幣中的隱私,并在日常隱私中使用混合。當(dāng)然,我們也必須承認(rèn)有不良用途,但是使用洗禮術(shù)語可以促進(jìn)消極的內(nèi)涵,就像它意味著你的硬幣時(shí)臟的,你需要清理它們。

還有一個(gè)翻滾術(shù)語。不清楚這是指滾筒的混合作用還是其清潔效果(在寶石等上)。無論如何,我們將堅(jiān)持“混合”一詞。


一組研究人員,包括本教科書的五位作者中的四位,研究了混合物,并提出了一套改進(jìn)混合方式運(yùn)行的原則,無論是增加匿名性上,還是委托你的硬幣給混合物的安全性上。我們將看看這些準(zhǔn)則。

使用一系列混合物。第一個(gè)原則是一個(gè)接一個(gè)地使用一系列混合,而不是單一的混合。這是一個(gè)眾所周知和公認(rèn)不錯(cuò)的原則——例如,Tor,我們將稍后看到,使用一系列3路由器進(jìn)行匿名通信。這減少了對(duì)任何單一組合可信賴性依賴。只要系列中的任何一個(gè)混合物都保持其承諾并刪除其記錄,你就有理由期望沒有人能夠?qū)⒛愕牡谝粋€(gè)輸入鏈接到你收到的最終輸出。

圖6.8.混合系列。我們從擁有一個(gè)硬幣或輸入地址的用戶開始,我們假定對(duì)手已經(jīng)設(shè)法鏈接到它們。用戶通過各種混合發(fā)送硬幣,每次提供新產(chǎn)生的輸出地址到混合。只要這些混合物中至少有一個(gè)破壞了其輸入到輸出地址映射的記錄,并且沒有信息的側(cè)信道泄漏,則攻擊者將無法將用戶的原始硬幣連接到最終的硬幣。

統(tǒng)一交易。如果不同用戶的混合交易具有不同數(shù)量的比特幣,則混合不會(huì)很有效。由于進(jìn)入混合和混合出來的值不得不被保留,它將使用戶的硬幣在流過混合時(shí)鏈接,或者至少大大減少匿名集的大小。

相反,我們希望混合交易具有統(tǒng)一的價(jià)值,以便最小化可鏈接性。所有混合均應(yīng)符合標(biāo)準(zhǔn)塊大小,即輸入混合交易必須具有固定值。這將增加匿名集,因?yàn)樗型ㄟ^任何混合的交易將看起來相同,并且不會(huì)根據(jù)其價(jià)值區(qū)分。此外,在所有混合上具有統(tǒng)一的尺寸,可以輕松地使用一系列混合而不必拆分或合并交易。

實(shí)際上,很難就單個(gè)塊大小對(duì)所有用戶的工作達(dá)成一致。如果我們選擇它太大,想要混合少量錢的用戶將無法實(shí)現(xiàn)。但是,如果我們選擇它太小,那么想要混合大量資金的用戶將需要將其分成大量的塊,這可能是無效率的和成本高昂的。多個(gè)標(biāo)準(zhǔn)塊大小會(huì)提高性能,但也可以通過塊大小拆分匿名集。也許一系列的兩個(gè)或三個(gè)增加的塊大小,將提供一個(gè)合理的效率和隱私之間的權(quán)衡。

客戶端應(yīng)自動(dòng)化。除了嘗試基于交易價(jià)值鏈接硬幣之外,一個(gè)聰明的對(duì)手可以嘗試各種其他方式進(jìn)行匿名化,例如通過觀察交易的時(shí)間。這些攻擊可以避免,但是對(duì)于用戶而言,必要的預(yù)防措施太復(fù)雜和繁瑣。相反,用于與混合進(jìn)行交互的客戶端功能應(yīng)該是自動(dòng)化的,并且內(nèi)置在隱私友好的錢包軟件中。

費(fèi)用應(yīng)該是全有或全無。混合是企業(yè),并希望得到報(bào)酬。混合收費(fèi)的一種方式是對(duì)用戶發(fā)送的每筆交易進(jìn)行削減。但這對(duì)于匿名是有問題的,因?yàn)榛旌辖灰撞辉偈菢?biāo)準(zhǔn)的塊大小。(如果用戶嘗試將稍微更小的塊拆分并合并回原始?jí)K大小,則會(huì)引入了嚴(yán)重且難以分析的匿名風(fēng)險(xiǎn),因?yàn)橐氲挠矌胖g有新的聯(lián)系。)


不要混淆混合費(fèi)用和礦工收取的交易費(fèi)用。混合費(fèi)用與此類費(fèi)用是分開的。


為了避免這個(gè)問題,混合費(fèi)用應(yīng)該是全有或者全無,并且概率地應(yīng)用。換句話說,混合應(yīng)該以很小的概率吞下整個(gè)塊,或者將其全部返回。例如,如果混合要收取0.1%的混合費(fèi)用,那么每1000次混合中的一次就可以吞下整個(gè)組塊,而1,000個(gè)組合中的999次應(yīng)該返回整個(gè)組塊而不收取混合費(fèi)用。

這是一個(gè)棘手的事情。混合必須做出概率決定,并說服用戶它沒有作弊:它沒有偏倚其隨機(jī)數(shù)發(fā)生器,因此它(例如)以1%的概率保留塊作為費(fèi)用,而不是0.1%。密碼學(xué)提供了一種方法,我們將在進(jìn)一步閱讀部分中介紹Mixcoin論文的詳細(xì)信息。文中還談到混合可以提高其可信度的各種方式。

在實(shí)踐中混合。截至2015年,沒有一個(gè)功能齊全的混合生態(tài)系統(tǒng)。有很多混合服務(wù),但是它們的體積很小,因而具有很小的匿名集。更糟糕的是,據(jù)報(bào)道,許多混合被報(bào)告過偷盜比特幣。也許“引導(dǎo)”這樣一個(gè)生態(tài)系統(tǒng)的困難是它從來沒有進(jìn)展的原因之一。考慮到混合的欺詐性聲譽(yù),沒有多少人想要使用它們,導(dǎo)致交易量低,因此匿名性差。有一個(gè)古老的說法,匿名愛公司。也就是說,使用匿名服務(wù)的人越多,它就可以提供更好的匿名性。此外,由于缺乏提供廣告服務(wù)的資金,混合運(yùn)營(yíng)商可能會(huì)試圖竊取資金,從而延續(xù)不可信度的混合循環(huán)。

今天的混合不符合我們制定的任何原則。每個(gè)混合操作獨(dú)立并且通常提供web界面,用戶通過該界面手動(dòng)地交互以指定接收地址和任何其他必要的參數(shù)。用戶可以選擇他們想要混合的量。 該混合將以每筆交易的方式將其作為混合費(fèi)用,并將其余費(fèi)用發(fā)送到目的地址。

我們認(rèn)為混合(和錢包軟件)有必要移動(dòng)到我們提出的模型,以實(shí)現(xiàn)強(qiáng)大的匿名性,抵御聰明的攻擊,提供可用的界面,并吸引大量聲音。但是,如果一個(gè)強(qiáng)大的混合生態(tài)系統(tǒng)將不斷發(fā)展,還有待觀察。

6.4分散混合

分散混合是擺脫混合服務(wù),并用一組用戶可以混合其硬幣的對(duì)等協(xié)議替換它們的想法。可以想象,這種方法與比特幣相比更符合哲學(xué)原則。

權(quán)力下放也具有更多的實(shí)際優(yōu)勢(shì)。首先,它沒有引導(dǎo)問題:用戶不必等到有信譽(yù)的集中式混合才能存在。第二,在分散混合中盜竊是不可能的;協(xié)議確保當(dāng)你將比特幣混合時(shí),你將得到相同價(jià)值的比特幣。正因?yàn)槿绱耍词挂恍┲醒雲(yún)f(xié)作在分散混合中是有幫助的,所以人們更容易建立這樣的服務(wù),因?yàn)樗麄儾槐卣f服用戶信任他人。最后,在某些方面,分散混合可以提供更好的匿名性。

Coinjoin。分散混合的主要方案稱為Coinjoin。在這個(gè)協(xié)議中,不同的用戶共同創(chuàng)建一個(gè)組合它們所有輸入的比特幣交易。使Coinjoin工作的關(guān)鍵技術(shù)原則是:當(dāng)一個(gè)事務(wù)具有來自不同地址的多個(gè)輸入時(shí),對(duì)應(yīng)于每個(gè)輸入的簽名彼此分離并且彼此獨(dú)立。所以這些不同的地址可以由不同的人控制。你不需要一方收集所有私鑰。

圖6.9.Coinjoin交易

這允許一組用戶將他們的硬幣與單個(gè)交易混合。每個(gè)用戶提供輸入和輸出地址并且一起形成這些地址的交易。輸入和輸出地址的順序是隨機(jī)的,因此局外人將無法確定輸入和輸出之間的映射。參與者檢查他們的輸出地址是否包含在交易中,并且它收到與他們輸入的相同數(shù)量的比特幣(減去任何交易費(fèi)用)。一旦他們確認(rèn)了這一點(diǎn),他們簽署交易。

有人在區(qū)塊鏈上看這個(gè)交易——即使他們知道它是一個(gè)Coinjoin交易——將無法確定輸入和輸出之間的映射。從局外人的角度來說,硬幣是混合的,這是Coinjoin的精髓。

到目前為止,我們所描述的只是一輪混合。但我們之前討論的原則仍然適用。你想和不同的用戶組重復(fù)這個(gè)過程(大概是)。你還需要確保標(biāo)準(zhǔn)化的塊尺寸,以便不要引入任何側(cè)面通道。

我們現(xiàn)在深入了解Coinjoin的細(xì)節(jié),可以分為5個(gè)步驟:

1.尋找想要混合的對(duì)等體。

2.交換輸入/輸出地址。

3.構(gòu)建交易。

4.發(fā)送交易。每個(gè)對(duì)等體在驗(yàn)證其輸出之后進(jìn)行標(biāo)志。

5.廣播交易。

尋找對(duì)等體。首先,一群想要混合的對(duì)等體需要找到對(duì)方。這可以通過作為“澆水孔”的服務(wù)器來促成,從而允許用戶連接和分組在一起。與集中混合不同,這些服務(wù)器無法竊取用戶資金或泄露匿名資料。

交換地址。一旦對(duì)等體組合已經(jīng)形成,對(duì)等體必須彼此交換他們的輸入和輸出地址。參與者以這樣一種方式交換這些地址非常重要,即使對(duì)等組的其他成員也不知道輸入和輸出地址之間的映射。否則,即使你執(zhí)行的是一個(gè)隨機(jī)的對(duì)等體組合的coinjoin交易,一個(gè)對(duì)手也許可以將它們移入組中,并注意輸入到輸出的映射。以不可鏈接的方式交換地址,我們需要一個(gè)匿名通信協(xié)議。我們可以使用我們前面提到的Tor網(wǎng)絡(luò),或者稱為解密混合網(wǎng)絡(luò)的專用匿名路由協(xié)議。

收集簽名和拒絕服務(wù)。一旦輸入和輸出被傳達(dá),其中一個(gè)用戶——不管是誰——將構(gòu)建與這些輸入和輸出相對(duì)應(yīng)的交易。未簽名的交易將被傳遞;每個(gè)對(duì)等體將驗(yàn)證其輸入和輸出地址是否正確且包含簽名。

如果所有的對(duì)等體遵循這個(gè)協(xié)議,這個(gè)系統(tǒng)運(yùn)行良好。任何對(duì)等體可以組合交易,任何對(duì)等體可以將該交易廣播到網(wǎng)絡(luò)。他們中的兩個(gè)人甚至可以獨(dú)立廣播;當(dāng)然,它將只發(fā)布一次到區(qū)塊鏈。但是,如果一個(gè)或多個(gè)對(duì)等體想要破壞性,那么他們很容易發(fā)起拒絕服務(wù)攻擊,從而阻止協(xié)議的完成。

特別的,對(duì)等體可以參與協(xié)議的第一階段,提供其輸入和輸出地址,然后拒絕登錄第二階段。另外,在簽署交易之后,一個(gè)破壞性的對(duì)等體可以嘗試將其提供給它的對(duì)等體的輸入,并將其花費(fèi)在其他交易中。如果備用交易在網(wǎng)絡(luò)上贏得比賽,它將首先被確認(rèn),Coinjoin交易將被作為雙重支付拒絕。

在Coinjoin中,有幾項(xiàng)預(yù)防拒絕服務(wù)的建議。一個(gè)是通過工作證明(類似于采礦)或通過燃燒證明來強(qiáng)加協(xié)議的參與成本,一種用來證明破壞你擁有的少量比特幣的技術(shù),我們?cè)诘?章中研究過。另外,存在用于識(shí)別不合規(guī)參與者并將其從群組中踢出的加密方式。有關(guān)詳細(xì)信息,請(qǐng)參閱進(jìn)一步閱讀部分。

高層次流動(dòng)。我們較早提到了側(cè)通道。現(xiàn)在我們來仔細(xì)看看側(cè)通道有多巧妙(棘手)。讓我們說,愛麗絲收到一個(gè)特定數(shù)量的比特幣,比如說43.12312

BTC,每周一個(gè)特定的地址,也許是她的薪水。假設(shè)她有一個(gè)習(xí)慣,自動(dòng)將5%的金額轉(zhuǎn)入退休賬戶,這是另一個(gè)比特幣地址。我們稱這種傳輸模式為高層次流程。在這個(gè)場(chǎng)景中,沒有混合策略可以有效地隱藏這兩個(gè)地址之間存在關(guān)系的事實(shí)。想一想在這個(gè)區(qū)塊鏈上可以看到的模式:具體的數(shù)量和時(shí)間及不可能地偶然發(fā)生了。

圖6.10:合并回避。愛麗絲希望買一個(gè)價(jià)值8比特幣的茶壺。商店給她兩個(gè)地址,她支付5個(gè)到一個(gè)地址,3個(gè)到另一個(gè)地址,與她可用的輸入資金相匹配。這樣可以防止透露這兩個(gè)地址都屬于愛麗絲。

Bitcoin開發(fā)人員Mike Hearn提出一種技術(shù),可以幫助恢復(fù)在高層次流動(dòng)性存在的情況下重新獲得無關(guān)聯(lián)性,稱為合并回避。一般而言,為了進(jìn)行付款,用戶創(chuàng)建一個(gè)單獨(dú)的交易,它將所需的硬幣組合在一起,以將整個(gè)金額支付給單個(gè)地址。如果他們可以避免合并的需求,從而連接所有的輸入呢?合并回避協(xié)議通過允許接收方付款提供多個(gè)輸出地址(根據(jù)需要)來實(shí)現(xiàn)這一點(diǎn)。發(fā)送者和接受者同意一組面值,來將付款分解,并執(zhí)行多個(gè)交易,如圖6.10所示。

假設(shè)商店最終將這兩筆付款與它收到的其他付款的許多其他輸入相結(jié)合,那么這兩個(gè)地址彼此關(guān)聯(lián)就不那么明顯了。商店應(yīng)避免在收到這兩個(gè)輸入之后重新組合,否則它們由同一實(shí)體制造的將仍然是清楚的。此外,愛麗絲可能希望避免在同一時(shí)間發(fā)送兩筆付款,這可能會(huì)同樣揭示這些信息。

一般來說,合并回避可以幫助緩解高層次流動(dòng)的問題:如果它被分解成許多較小的彼此沒有鏈接的流動(dòng),對(duì)手可能無法辨別流流動(dòng)。它還克服了依賴于單個(gè)交易共同使用硬幣的地址聚類技術(shù)。

6.5 Zerocoin和Zerocash

沒有哪個(gè)加密貨幣的匿名解決方案引起了如Zerocoin一樣的興奮和如Zerocash一樣的成功。這既是因?yàn)樗麄兪褂玫那擅蠲艽a學(xué),也是因?yàn)樗麄兯兄Z的強(qiáng)大匿名性。盡管我們迄今為止所見到的所有匿名增強(qiáng)技術(shù)在核心協(xié)議之上增加了匿名性,但是Zerocoin和Zerocash在協(xié)議級(jí)別都包含匿名性。我們將在這里介紹協(xié)議的高級(jí)視圖,并且簡(jiǎn)化一些細(xì)節(jié),你也可以在“進(jìn)一步閱讀”部分找到對(duì)原始論文的參考。

兼容性。正如我們將看到的,Zerocoin和Zerocash的強(qiáng)大匿名保證是有代價(jià)的:與集中混合和Coinjoin不同,現(xiàn)在這些協(xié)議與Bitcoin不兼容。在技術(shù)上,可以使用軟叉將Zerocoin部署到比特幣,但是實(shí)際的困難足夠嚴(yán)重,使得這不可行。對(duì)于Zerocash,分叉甚至是不可能的,而altcoin是唯一的選擇。

加密保證。Zerocoin和Zerocash包含了協(xié)議級(jí)的混合,它的匿名屬性具有加密保證。這些保證在質(zhì)量上優(yōu)于我們討論的其他混合技術(shù)。你不需要信任任何人——混合體,對(duì)等體或中間人,甚至是礦工和協(xié)商一致的協(xié)議——以確保你的隱私。匿名的承諾只取決于對(duì)手的計(jì)算能力限制,與大多數(shù)加密保證一樣。

Zerocoin。為了解釋Zerocoin,我們將首先介紹Basecoin的概念。Basecoin是比特幣式的altcoin,而Zerocoin是這種altcoin的延伸。提供匿名性的關(guān)鍵功能是,你可以將basecoin轉(zhuǎn)化為Zerocoins并重新回收,當(dāng)您這樣做時(shí),它會(huì)打破原始basecoin和新的basecoin之間的聯(lián)系。在這個(gè)系統(tǒng)中,Basecoin是你所處理的貨幣,Zerocoin只是提供一種機(jī)制來交易你的新basecoin,而與舊的不相關(guān)。

你可以查看你擁有的每個(gè)zerocoin,作為一個(gè)令牌你可以使用它來證明你擁有一個(gè)basecoin,并使其無法使用。證明并不揭示你擁有哪個(gè)basecoin,只是說明你擁有一個(gè)basecoin。你可以稍后通過向礦工提供此證明來兌換新的basecoin。一個(gè)比喻是就像進(jìn)入一個(gè)賭場(chǎng),并將你的現(xiàn)金交換成撲克籌碼。這些服務(wù)作為你存入現(xiàn)金的證明,你可以隨后在退出賭場(chǎng)時(shí)兌換相同價(jià)值的不同現(xiàn)金。當(dāng)然,與撲克籌碼不同的是,除了持有它,你不可能做任何事情,除了保留它,然后就只能將它兌換為一個(gè)basecoin。

為了使這個(gè)工作以加密的方式運(yùn)行,我們用密碼學(xué)的方式實(shí)現(xiàn)這些證明。我們需要確保每次證明只能使用一次來贖回basecoin。否則,你可以通過將basecoin轉(zhuǎn)化為zerocoin,然后多次贖回來免費(fèi)獲得basecoins。

零知識(shí)證明。我們將使用的關(guān)鍵加密工具是一種零知識(shí)證明,這是一種方法,可以讓某人證明(數(shù)學(xué))語句,而不會(huì)透露導(dǎo)致該聲明成立的任何其他信息。例如,假設(shè)你已經(jīng)做了很多工作來解決哈希謎題,并且你想要說服某人也這樣做。換句話說,你想證明這個(gè)說法。

當(dāng)然,你可以通過揭示x來做到這一點(diǎn)。 但是,零知識(shí)證明可以讓您以這樣一種方式來做到這一點(diǎn):另一個(gè)人在看到證明之后,對(duì)于x的價(jià)值并不比以前更清楚。

你也可以證明一個(gè)聲明,如“我知道x,使得H(x)屬于以下集合{...}”。該證明將不會(huì)顯示x,也不會(huì)顯示該集合的哪個(gè)元素等于H(x)。Zerocoin至關(guān)重要地依賴于零知識(shí)證明,事實(shí)上Zerocoin證明的陳述與后一個(gè)例子非常相似。在這本書中,我們將把零知識(shí)證明視為黑盒子。我們將介紹通過零知識(shí)證明實(shí)現(xiàn)的屬性,并會(huì)顯示他們?cè)趨f(xié)議中是如何的必要,但是我們不會(huì)深入研究這些證明實(shí)現(xiàn)的技術(shù)細(xì)節(jié)。零知識(shí)證明是現(xiàn)代密碼學(xué)的基石,也是許多協(xié)議的基礎(chǔ)。再次,如讀者你有興趣可查看進(jìn)一步閱讀部分,以獲得更詳細(xì)的處理。

鑄造Zerocoins。Zerocoins通過鑄造而存在,任何人都可以鑄造Zerocoins。他們有標(biāo)準(zhǔn)的面額。為了簡(jiǎn)單起見,我們假定只有一個(gè)價(jià)值為1.0的zerocoins,而且每個(gè)zerocoin都值一個(gè)basecoin。雖然任何人都可以鑄造zerocoin,只是鑄造不會(huì)自動(dòng)賦予它任何價(jià)值——你不能得到免費(fèi)的錢。只有當(dāng)你把它放在區(qū)塊鏈上才能獲得價(jià)值,這樣做就需要放棄一個(gè)basecoin。

要鑄造zerocoin,你要使用加密承諾。回顧一下第1章,承諾方案是將信封中的價(jià)值密封并將其放在桌子上的加密模擬。

圖6.11:提交序列號(hào)。加密承諾的真實(shí)世界模型是在信封內(nèi)密封一個(gè)值。

鑄造一個(gè)zerocoin分三個(gè)步驟完成:

1.生成序列號(hào)S和隨機(jī)密碼r

2.計(jì)算并提交(S,r),對(duì)序列號(hào)進(jìn)行承諾

3.將承諾發(fā)布到區(qū)塊鏈上,如6.12所示。這會(huì)燒傷一個(gè)basecoin,使其無法使用,并創(chuàng)造出一個(gè)zerocoin。現(xiàn)在對(duì)S和r保密。

圖6.12:把一個(gè)zerocoin放在區(qū)塊鏈上。要將一個(gè)zerocoin放在區(qū)塊鏈上,你需要?jiǎng)?chuàng)建一個(gè)特殊“造幣廠”交易,其輸出“地址”是zerocoin序列號(hào)的加密承諾。造幣廠交易的輸入是一個(gè)basecoin,已經(jīng)在創(chuàng)造zerocoin中花費(fèi)掉。這個(gè)交易不顯示序列號(hào)。

要花費(fèi)一個(gè)zerocoin兵兌換一個(gè)新的basecoin,你需要證明你以前鑄造了一個(gè)zerocoin。你可以通過打開你以前的承諾,即揭示S和r來做到這一點(diǎn)。但是,這使得你的舊basecoin和新的basecoin之間的聯(lián)系顯而易見。 我們?nèi)绾未蚱奇溄樱?/p>

這就是零知識(shí)證明的來源。在任何時(shí)候,塊鏈上都會(huì)有很多的承諾-讓我們稱之為c,c,...,c。

以下是使用帶序列號(hào)S的zerocoin贖回一個(gè)新的basecoin的步驟:

·創(chuàng)建一個(gè)包含S的特殊“支出”交易,以及零知識(shí)證明的聲明:

"I know r such that C ommit (S, r) is in the set {c, c,..., c}".

·礦工將驗(yàn)證你的零知識(shí)證明,確定你是否有能力在區(qū)塊鏈上開啟一個(gè)

zerocoin承諾,而無需實(shí)際打開它。

·礦工還將檢查序列號(hào)S從未在任何以前的支出交易中使用(因?yàn)檫@將是雙

重支出)。

·你的支出交易的輸出現(xiàn)在將作為一個(gè)新的basecoin。對(duì)于輸出地址,你應(yīng)該使用一個(gè)你擁有的地址。

圖6.13:花費(fèi)一個(gè)zerocoin。支出交易顯示了早起造幣廠交易提交的序列號(hào)S,以及S對(duì)應(yīng)的一些較早的造幣廠交易的零知識(shí)證明。與造幣廠交易(或正常的比特幣/basecoin交易)不同,支出交易沒有投入,因此沒有簽名。相反,零知識(shí)證明可以確定其有效性。

一旦你花了一個(gè)zerocoin,序列號(hào)將變成公開的,你將永遠(yuǎn)無法再次兌換這個(gè)序列號(hào)。由于每個(gè)zerocoin只有一個(gè)序列號(hào),這意味著每個(gè)zerocoin只能花費(fèi)一次,正如我們所要求的那樣安全。

匿名。注意到r在整個(gè)過程中保持秘密;造幣廠和消費(fèi)交易都不會(huì)顯露出來。這意味著沒有人知道哪個(gè)序列號(hào)對(duì)應(yīng)于哪個(gè)zerocoin。這是Zerocoin匿名的關(guān)鍵概念。在提交序列號(hào)S的造幣廠交易和后來顯示S兌換basecoin的支出交易之間的區(qū)塊鏈上沒有鏈接。這是一個(gè)可以通過加密技術(shù)實(shí)現(xiàn)的神奇屬性,但是我們不會(huì)進(jìn)入一個(gè)物理的,基于信封的系統(tǒng)。就好像在桌子上有一堆具有不同序列號(hào)的密封信封,你可以證明一個(gè)特定的序列號(hào)是其中之一,而不必揭示哪一個(gè),也不必打開任何信封。

效率。回顧在支出交易中證明的陳述:

"Iknow r such that Commit (S, r) is in the set {c, c, ..., c}".

這聽起來像執(zhí)行效率太低,因?yàn)榱阒R(shí)證明的大小會(huì)隨著n的增加而線性增長(zhǎng),這是曾經(jīng)被鑄造zerocoins的數(shù)量。值得注意的是,Zerocoin設(shè)法使這些證明的大小為n的對(duì)數(shù)。注意,即使要證明的語句有一個(gè)線性長(zhǎng)度,但也不需要連同證明一起包含。聲明是隱含的;這可以由礦工推斷出來,因?yàn)樗麄冎绤^(qū)塊鏈上的所有zerocoins的集合。證明本身可以更短。然而,與比特幣相比,Zerocoin仍然增加了相當(dāng)可觀的開銷,其證明大小有50 kB。

信任的建立。用于構(gòu)建Zerocoin(RSA累加器)的加密工具之一,需要一次性的信任建立。具體來說,可信方需要選擇兩個(gè)大素?cái)?shù)p和q,并發(fā)布N = p·q,這是每個(gè)人將在系統(tǒng)的使用壽命期間使用的參數(shù)。想像N像一個(gè)公鑰,除了所有的Zerocoin,而不是一個(gè)特定的實(shí)體。只要信任方破壞了p和q的任何記錄,系統(tǒng)就被認(rèn)為是安全的。特別地,這取決于廣泛認(rèn)可的假設(shè),即將數(shù)字分解為兩個(gè)大素?cái)?shù)的乘積是不可行的。但是如果有人知道p和q的秘密因素(稱為“陷門”),那么他們可以為自己創(chuàng)建新的zerocoins而不被檢測(cè)到。因此,這些秘密輸入必須在生成公共參數(shù)時(shí)使用一次,然后被安全地銷毀。

這里有一個(gè)有趣的社會(huì)學(xué)問題。不清楚實(shí)體如何選擇N并說服大家他們已經(jīng)安全地銷毀了在設(shè)置過程中使用的因素p和q。已經(jīng)有了各種各樣的建議去探索如何實(shí)現(xiàn)這一點(diǎn),包括允許一組代表聯(lián)合計(jì)算N的這種“閾值加密技術(shù)”,只要它們中的任何一個(gè)刪除其秘密輸入,系統(tǒng)將保持安全。

也可以使用稍微不同的加密結(jié)構(gòu)來避免可信設(shè)置。具體地說,已經(jīng)表明,簡(jiǎn)單地生成非常大的隨機(jī)值N是高可靠性的,因?yàn)檫@個(gè)數(shù)量可能不能被完全考慮。不幸的是,這帶來了巨大的效率打擊,因此不被認(rèn)為是實(shí)際的。

Zerocash。Zerocash是一種基于Zerocoin概念的不同的匿名加密機(jī)制,但將加密技術(shù)提升到了一個(gè)新的水平。它使用稱為零知識(shí)SNARK(zk-SNARKS)的加密技術(shù),這是一種使零知識(shí)證明更加緊湊和高效驗(yàn)證的方式。結(jié)果是,整個(gè)系統(tǒng)的效率達(dá)到了一個(gè)可以在不需要一個(gè)basecoin的情況下運(yùn)行整個(gè)網(wǎng)絡(luò)的程度。所有交易都可以以零知識(shí)的方式完成。正如我們所看到的,Zerocoin支持常規(guī)事務(wù),當(dāng)你不需要非連接性時(shí),增加了僅用于混合的計(jì)算上昂貴的交易。混合交易是固定面額,價(jià)值的分割和合并只能在Basecoin發(fā)生。在Zerocash中,這個(gè)區(qū)別已經(jīng)消失了。交易金額現(xiàn)在在承諾的范圍內(nèi),且在區(qū)塊鏈上不再可見。加密證明確保分裂和合并正確發(fā)生,用戶不能憑空創(chuàng)建zerocash。

分類帳公開記錄的唯一事項(xiàng)是這些交易的存在,以及允許礦工驗(yàn)證系統(tǒng)正確運(yùn)行所需的所有屬性的證據(jù)。在任何一點(diǎn)上,區(qū)塊鏈都不會(huì)顯示地址和值。需要知道交易金額的唯一用戶是該特定交易的發(fā)件人和接收者。礦工不需要知道交易金額。當(dāng)然,如果有交易費(fèi)用,礦工們需要知道這筆費(fèi)用,但這并不真正影響你的匿名性。

在匿名和隱私方面,zerocash作為一個(gè)完全不可追蹤的交易系統(tǒng)的運(yùn)行能力,它獨(dú)自歸類。由于公共分類帳不再包含交易金額,Zerocash不受側(cè)面渠道的混合攻擊。

創(chuàng)建Zerocash。在其技術(shù)性能方面,Zerocash聽起來可能太好了,而顯得不真實(shí)。確實(shí)有一個(gè)陷阱。就像Zerocoin一樣,Zerocash需要“公共參數(shù)”來建立零知識(shí)證明系統(tǒng)。但是,與Zerocoin不同,Zeroco只需要一個(gè)數(shù)字N,只有幾百個(gè)字節(jié),Zerocash需要一大堆公共參數(shù)——超過一千兆字節(jié)。再次,為了產(chǎn)生這些公共參數(shù),Zerocash需要隨機(jī)和秘密的輸入,如果有人知道這些秘密輸入,它會(huì)通過啟用不可檢測(cè)的雙重支付來破壞系統(tǒng)的安全性。

我們不會(huì)在這里深入研究建立zk-SNARK系統(tǒng)的挑戰(zhàn)。 它仍然是一個(gè)積極的研究領(lǐng)域,但截至2015年,我們并不知道如何以充分可靠的方式在實(shí)踐中建立該系統(tǒng)。迄今為止,zk-SNARKs在實(shí)踐中還沒有被使用。

把它們放在一起。現(xiàn)在我們來比較我們已經(jīng)看到的解決方案,無論是在他們提供的匿名性質(zhì)方面,還是在實(shí)踐中如何部署它們。

表6.14:本章中介紹的匿名技術(shù)比較

我們從已經(jīng)部署的Bitcoin本身開始,是“默認(rèn)”系統(tǒng)。但它只是匿名,我們已經(jīng)看到強(qiáng)大的交易圖分析是可能的。我們研究了大量分組地址族群的方法,以及如何有時(shí)將真實(shí)身份標(biāo)識(shí)附加到這些集群。

匿名的下一個(gè)級(jí)別是以手動(dòng)方式使用單個(gè)組合,或者通過手動(dòng)查找對(duì)等體來執(zhí)行Coinjoin。這掩蓋了輸入和輸出之間的鏈接,但在交易圖中留下了太多潛在的線索。此外,組合體和同伴可能會(huì)惡意,被黑客入侵或強(qiáng)制暴露其記錄。雖然在匿名方面還不完美,但混合服務(wù)存在,因此今天可以使用此選項(xiàng)。

我們看到的第三個(gè)層次是一連串混合或Coinjoins。匿名性改進(jìn)來自于對(duì)單個(gè)組合或同一對(duì)等體的較少依賴性的事實(shí)。諸如標(biāo)準(zhǔn)化塊大小和客戶端自動(dòng)化等功能可以最大限度地減少信息泄漏,但是一些側(cè)面的通道仍然存在。還有一個(gè)對(duì)手控制或串通多個(gè)混合或同伴的對(duì)手的危險(xiǎn)。實(shí)現(xiàn)混合鏈的錢包和服務(wù)今天可以部署和采用,但據(jù)我們所知,安全的混合鏈解決方案尚不容易獲得。

接下來,我們看到Zerocoin直接將密碼學(xué)加密到協(xié)議中,并提供匿名性的數(shù)學(xué)保證。我們認(rèn)為一些側(cè)面渠道仍然是可行的,但它肯定優(yōu)于其他混合解決方案。然而,Zerocoin必須作為altcoin推出。

最后,我們看了一下Zerocash。 由于Zerocash效率的提高,Zerocash可以作為一種完全不可追蹤的方式運(yùn)行——而不僅僅是匿名的——加密貨幣。不過像Zerocoin一樣,Zerocash并不與比特幣兼容。 更糟糕的是,它需要一個(gè)復(fù)雜的設(shè)置過程,社區(qū)仍然在弄清楚如何最好地完成它。

本章已經(jīng)介紹了很多技術(shù)。現(xiàn)在讓我們退一步。比特幣的匿名(和匿名的潛力)是強(qiáng)大的,并與其他技術(shù)特別是匿名通信結(jié)合獲得力量。正如我們將在下一章中看到的,該強(qiáng)大組合體現(xiàn)在絲綢之路和其他匿名在線市場(chǎng)上。

盡管它的力量,匿名是脆弱的。一個(gè)錯(cuò)誤可以創(chuàng)建一個(gè)不需要的,不可逆的鏈接。但是匿名是值得保護(hù)的,因?yàn)樗嗣黠@的不良之外還有許多好的用途。雖然這些道德差異很重要,但我們發(fā)現(xiàn)自己無法在技術(shù)層面上表達(dá)他們。匿名技術(shù)似乎在深刻而內(nèi)在的道義上是模棱兩可的,作為一個(gè)社會(huì),我們必須學(xué)會(huì)生活在這個(gè)事實(shí)中。

比特幣匿名是技術(shù)創(chuàng)新和道德辯論的積極領(lǐng)域。我們?nèi)匀徊恢辣忍貛诺哪膫€(gè)匿名系統(tǒng)(如果有的話)會(huì)變得突出或主流。這是一個(gè)偉大的機(jī)會(huì),無論對(duì)于開發(fā)人員,決策者還是用戶——去參與和做貢獻(xiàn)。希望你在本章中學(xué)到的東西給你正確的背景去做這些。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容