第6章:比特幣和匿名

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

——維基解密捐款頁面

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

——連線英國

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

這些問題很難,因為它們部分取決于人的倫理價值觀。本章我們不會回答,雖然我們將會對匿名的論據進行研究。大多數情況下,我們將堅持研究各種技術——一些已經存在于比特幣和其他被提出加入的技術——旨在提高比特幣的匿名性。我們還將看看具有與Bitcoin不同匿名屬性的替代加密貨幣的提案。這些技術提出了新的問題:他們工作的有多好? 他們被采取有多么困難? 采用它們有什么折衷方案?

6.1匿名性的基礎

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

顧名思義,匿名的意思是“沒有名字”。當我們嘗試將此定義應用于比特幣時,有兩種可能的解釋:在不使用真實姓名的情況下進行交互,或者在不使用任何名稱的情況下進行交互。這兩個解釋導致了比特幣是否是匿名的結論是非常不同的。比特幣地址是公鑰的哈希。你不需要使用你的真實姓名來與系統進行交互,但你將使用你的公共密鑰哈希作為你的身份。因此,針對第一個解釋,比特幣是匿名的,因為你不使用你的真實姓名。但是,通過第二個解釋,它不是;你使用的地址是偽身份。在計算機科學的語言中,使用的不是你的真實姓名的身份的這個中間地位稱為假名。

回想一下,你可以隨意創建任意數量的Bitcoin地址??紤]到你可以創建盡可能多的這些假名,你可能會想知道Bitcoin地址是否真的是偽身份。我們將看到,這仍然不能使Bitcoin匿名。


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


在計算機科學中,匿名性是指假名與無關聯性。無關聯性是針對特定對手性能定義的屬性。直觀上,無關聯性意味著如果用戶反復與系統進行交互,這些不同的交互應該不能從對手的角度來看到彼此的聯系。

比特幣使用的是假名,但如果你的目標是實現隱私,則假名是不夠的?;叵胍幌?,區塊鏈是公開的,任何人都可以查找涉及給定地址的所有比特幣交易。如果有人能夠將你的比特幣地址與你的真實世界身份相關聯,那么所有的交易(過去,現在和將來)都將與你的身份相關聯。

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

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

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

無關聯性。為了更好地了解比特幣上下文的不可鏈接性,讓我們列舉Bitcoin活動不可鏈接所需的一些關鍵屬性:

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

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

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

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

匿名集。即使在我們廣義的付款定義下,第三財產似乎也很難實現。假設你為一個產品支付了一定數量的比特幣,并通過迂回的交易方式發送了該支付。看著區塊鏈的人仍然可以推斷出一些事實,即一定數量的比特幣離開了一個地址,大致相同數量的比特幣(可能減去交易費用)最終在其他地址出現。此外,盡管存在迂回的路線,初始發送和最終接收將發生在大致相同的時間段,因為商家將希望在沒有太多延遲的情況下接收付款。

由于這個困難,我們通常不會試圖在系統中的所有可能的交易或地址之間實現完全的無關聯,而是更有限的東西。給定一個特定的對手,你的交易的匿名集是一組交易集合,對手不能從你的交易中區別開來。即使對手知道你進行了一個交易,他們也只能告訴你這是集合中的一個交易,而不是它是哪一個。我們嘗試最大化匿名集合的大小——可以隱藏其他地址或交易的集合。

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

污點分析。在比特幣社區,人們經常對匿名服務進行直觀的分析,而不是嚴格的定義。污點分析特別受歡迎:它是一種計算兩個地址“相關”的方式。如果由地址S發送的比特幣總是在另一個地址R處,無論是直接地還是經過一些中間地址,則S和R將具有較高的污點分數。該公式涉及具有多個輸入和/或輸出的交易,并指定如何分配污點。

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

為什么我們需要匿名??吹侥涿馕兜囊馑己?,讓我們回答一些關于匿名的元問題,然后再進一步說明:為什么人們需要匿名?匿名貨幣的倫理含義是什么?

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

考慮到這一點,我們可以確定使用匿名加密貨幣的兩種不同動機。第一種是簡單地實現我們已經習慣從傳統銀行開始的隱私水平,并減輕公有鏈帶來的脫離風險。第二種是超越傳統銀行業的隱私級別,開發貨幣,使其技術上無法跟蹤參與者。

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

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

然而,人們可能會問:“難道我們不能以這樣一種方式來設計技術,只有匿名的良好使用是允許的,而壞的用法是被禁止嗎?”這實際上是對計算機安全和隱私研究人員的反復呼吁。不幸的是,它從來沒有被證明是可能的。原因是我們以道德的角度來歸類好或者壞在技術上是相同的。在比特幣方面,我們不清楚我們如何能夠對礦工做出關于哪些交易包含的道德決定。

我們認為,通過使用匿名加密貨幣來保證其存在的潛在好處,我們應該將系統的技術匿名屬性與我們在使用貨幣時所使用的法律原則進行分離。這不是一個完全令人滿意的解決方案,但它也許是實現有利權衡的最佳途徑。




側邊欄:Tor。如何應對具有良好的和壞的用途的技術的道德困境并不是Bitcoin獨有的。匿名的另一個系統是Tor,一個匿名的通信網絡。

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

在技術層面區分這些用途基本上是不可能的。Tor開發商和Tor社區廣泛地解決了這個難題。真個社會也在某種程度上進行努力。我們似乎得出結論,總的來說,技術存在的世界更好。事實上,Tor項目的主要資金來自美國國務院。他們對Tor感興趣,因為它可以在壓迫政權中為異議人士在線免費發表言論。與此同時,執法機構似乎也勉強地接受了Tor的存在,并且開辟了解決方法。FBI經常設法破壞分發兒童性虐待圖像的“黑網”網站,盡管這些網站隱藏在Tor之后。通常這是因為操作員跳起來了。我們必須記住,技術只是一種工具,犯罪者生活在現實世界中,在于技術相互作用的情況下,他們可能留下實際證據或犯下全部人都會犯下的人為錯誤。


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

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

6.2如何對比特幣進行匿名化

我們已經說過多次,比特幣只是匿名的,所以你的所有交易或地址都可能會被鏈接在一起。我們來仔細看看實際可能發生的情況。

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

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

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

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

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

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

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

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


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


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

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

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

一個更好的猜測是,如果茶壺的成本只有0.5比特幣,那么愛麗絲就不必用兩個不同的輸入創建一個交易,因為3個比特幣輸入或6個比特幣輸入本身已經足夠了。但這種啟發式的有效性完全取決于常用錢包軟件的實現細節。即使沒有嚴格的必要條件,也不會阻止錢包(或用戶)組合交易。

慣用語。這種實現細節被稱為“使用習語”。2013年,一組研究人員發現大多數錢包軟件都是一種習慣用語,并且導致了一種強大的啟發式來識別變更地址。具體來說,他們發現,每當需要更改地址時,錢包通常會生成一個新的地址。由于使用習慣用語,更改地址通常是從未出現在區塊鏈中的地址。另一方面,非變化輸出通常不是新的地址,并且可能以前在區塊鏈中出現過。對手可以使用這些知識來區分更改地址并將其與輸入地址相鏈接。

利用習語可能會很容易出錯。事實上,更改地址是新鮮的地址,恰好是錢包軟件的一個功能。研究人員在2013年測試時確實如此。也許這是真的,但也許不是。用戶可以選擇廢除此默認行為。最重要的是,知道這種技術的對手很容易規避它。即使在2013年,研究人員發現它產生了很多假陽性,他們最終把不屬于同一實體的地址集中在一起。他們報告說,他們需要進行重大的手工監督和干預,以消除假陽性。

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

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

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

通過交易標記。只訪問每個交易所或商家的網站,并查找他們為接收比特幣做廣告的地址會怎么樣?然而,這并不奏效,因為大多數服務將為每個交易發布一個新的地址,并且向你展示的地址尚未在區塊鏈中。這沒有任何等待的意義,因為這個地址永遠不會展示給其他人。

推斷地址的唯一可靠的方法是與該服務提供商實際交易——存放比特幣,購買物品等。當你向服務提供商發送比特幣或從服務提供商接收比特幣時,你現在將知道其中的一個地址,這些地址將很快在區塊鏈(以及其中一個群集)中結束。然后,你可以使用服務提供商的身份標記整個集群。

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

在圖6.5中,我們再次顯示了圖6.4的集群,但是這次與標簽相連。雖然我們對Mt. gox和Satoshi骰子的猜測是正確的,研究人員能夠識別許多其他服務提供商,但不與這些服務提供商交易將很難識別他們。

圖6.5。標簽集群。通過與各種Bitcoin服務提供商進行交易,Meiklejohn等人 能夠將真實世界的身份附加到他們的集群中。

識別個人。下一個問題是:我們可以為個人做同樣的事情嗎?也就是說,我們可以將對應于個人的小集群連接到他們的現實身份嗎?

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

通過服務提供商。在幾個月或幾年內使用比特幣的過程中,大多數用戶將最終與交易所或另一個集中式服務提供商進行互動。這些服務通常要求提供者向用戶詢問他們的身份——通常他們在法律上需要,我們將在下一章中看到。如果執法機構想要識別用戶,他們可以轉向這些服務提供商。

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

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

迄今為止,我們所研究的去匿名技術都是基于分析區塊鏈中交易的圖形。它們統稱為交易圖分析。

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

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

圖6.6:網絡層去匿名。正如丹·卡明斯基在2011年黑帽談話中指出的那樣,“通知你一個交易的第一個節點可能是它的源頭”。當多個節點合作并識別相同的源時,該啟發式被放大。

幸運的是,這是通信匿名的一個問題,這已經成為相當大的研究課題。正如我們在6.1節早些時候看到的,有一個廣泛部署的名為Tor的系統,可用于匿名通信。

使用Tor作為比特幣的網絡層匿名解決方案有幾個注意事項。首先,Tor協議和覆蓋在其上的任何協議之間存在微妙的交互,導致新的方式來破譯匿名。事實上,研究人員發現使用Bitcoin-over-Tor的潛在安全問題,所以這一點必須特別小心。其次,可能還有其他匿名通信技術更適合在比特幣中使用。Tor的目的是用于“低延遲”活動,如網絡瀏覽,您不想坐在等待太久。它做了一些妥協,以達到低延遲實現匿名。相比之下,比特幣是一種高延遲系統,因為交易需要一段時間才能在區塊鏈中得到確認。在理論上,至少,你可能希望使用一種替代的匿名技術,例如混合網絡,但目前,Tor具有大量用戶群,并且其安全性被深入研究的實際系統的優點。

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

6.3混合

有幾種機制可以使交易圖的分析效率降低。一種這樣的技術是混合,其背后的直覺非常簡單:如果你想匿名,使用中介。這個原理并不是比特幣特有的,在許多以匿名為目標的情況下都是有用的?;旌先鐖D6.7所示。

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

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

在線錢包確實提供了一種無關聯性的措施,可以掩蓋交易圖分析的嘗試——在一種情況下,杰出的研究人員不得不收回已經收到的大量公開的索賠,因為他們認為他們發現的鏈接是由一個在線錢包造成的虛假鏈接。

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

在線錢包提供的匿名性與傳統銀行系統所提供的類似。有集中的中間人了解我們的交易,但是從一個沒有特權信息的陌生人的角度來看,我們有一個合理程度的隱私。但是正如我們所討論的那樣,塊鏈的公共性質意味著如果出現問題(比如錢包或交換服務遭到黑客攻擊,記錄被暴露出來),隱私風險就會比傳統的系統更嚴重。此外,大多數以比特幣匿名的人傾向于這樣做,因為他們不滿意傳統系統的匿名屬性,并希望有更好的(或不同種類的)匿名保證。這些是專門的混合服務背后的動機。

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

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


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

你也可能會遇到洗禮一詞。我們不喜歡這個術語,因為不必要將道德判斷附加在一個純技術概念上。如我們所見,有很好的理由解釋為什么你可能想保護你在比特幣中的隱私,并在日常隱私中使用混合。當然,我們也必須承認有不良用途,但是使用洗禮術語可以促進消極的內涵,就像它意味著你的硬幣時臟的,你需要清理它們。

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


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

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

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

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

相反,我們希望混合交易具有統一的價值,以便最小化可鏈接性。所有混合均應符合標準塊大小,即輸入混合交易必須具有固定值。這將增加匿名集,因為所有通過任何混合的交易將看起來相同,并且不會根據其價值區分。此外,在所有混合上具有統一的尺寸,可以輕松地使用一系列混合而不必拆分或合并交易。

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

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

費用應該是全有或全無?;旌鲜瞧髽I,并希望得到報酬?;旌鲜召M的一種方式是對用戶發送的每筆交易進行削減。但這對于匿名是有問題的,因為混合交易不再是標準的塊大小。(如果用戶嘗試將稍微更小的塊拆分并合并回原始塊大小,則會引入了嚴重且難以分析的匿名風險,因為引入的硬幣之間有新的聯系。)


不要混淆混合費用和礦工收取的交易費用?;旌腺M用與此類費用是分開的。


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

這是一個棘手的事情?;旌媳仨氉龀龈怕蕸Q定,并說服用戶它沒有作弊:它沒有偏倚其隨機數發生器,因此它(例如)以1%的概率保留塊作為費用,而不是0.1%。密碼學提供了一種方法,我們將在進一步閱讀部分中介紹Mixcoin論文的詳細信息。文中還談到混合可以提高其可信度的各種方式。

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

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

我們認為混合(和錢包軟件)有必要移動到我們提出的模型,以實現強大的匿名性,抵御聰明的攻擊,提供可用的界面,并吸引大量聲音。但是,如果一個強大的混合生態系統將不斷發展,還有待觀察。

6.4分散混合

分散混合是擺脫混合服務,并用一組用戶可以混合其硬幣的對等協議替換它們的想法??梢韵胂?,這種方法與比特幣相比更符合哲學原則。

權力下放也具有更多的實際優勢。首先,它沒有引導問題:用戶不必等到有信譽的集中式混合才能存在。第二,在分散混合中盜竊是不可能的;協議確保當你將比特幣混合時,你將得到相同價值的比特幣。正因為如此,即使一些中央協作在分散混合中是有幫助的,所以人們更容易建立這樣的服務,因為他們不必說服用戶信任他人。最后,在某些方面,分散混合可以提供更好的匿名性。

Coinjoin。分散混合的主要方案稱為Coinjoin。在這個協議中,不同的用戶共同創建一個組合它們所有輸入的比特幣交易。使Coinjoin工作的關鍵技術原則是:當一個事務具有來自不同地址的多個輸入時,對應于每個輸入的簽名彼此分離并且彼此獨立。所以這些不同的地址可以由不同的人控制。你不需要一方收集所有私鑰。

圖6.9.Coinjoin交易

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

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

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

我們現在深入了解Coinjoin的細節,可以分為5個步驟:

1.尋找想要混合的對等體。

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

3.構建交易。

4.發送交易。每個對等體在驗證其輸出之后進行標志。

5.廣播交易。

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

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

收集簽名和拒絕服務。一旦輸入和輸出被傳達,其中一個用戶——不管是誰——將構建與這些輸入和輸出相對應的交易。未簽名的交易將被傳遞;每個對等體將驗證其輸入和輸出地址是否正確且包含簽名。

如果所有的對等體遵循這個協議,這個系統運行良好。任何對等體可以組合交易,任何對等體可以將該交易廣播到網絡。他們中的兩個人甚至可以獨立廣播;當然,它將只發布一次到區塊鏈。但是,如果一個或多個對等體想要破壞性,那么他們很容易發起拒絕服務攻擊,從而阻止協議的完成。

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

在Coinjoin中,有幾項預防拒絕服務的建議。一個是通過工作證明(類似于采礦)或通過燃燒證明來強加協議的參與成本,一種用來證明破壞你擁有的少量比特幣的技術,我們在第3章中研究過。另外,存在用于識別不合規參與者并將其從群組中踢出的加密方式。有關詳細信息,請參閱進一步閱讀部分。

高層次流動。我們較早提到了側通道。現在我們來仔細看看側通道有多巧妙(棘手)。讓我們說,愛麗絲收到一個特定數量的比特幣,比如說43.12312

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

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

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

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

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

6.5 Zerocoin和Zerocash

沒有哪個加密貨幣的匿名解決方案引起了如Zerocoin一樣的興奮和如Zerocash一樣的成功。這既是因為他們使用的巧妙密碼學,也是因為他們所承諾的強大匿名性。盡管我們迄今為止所見到的所有匿名增強技術在核心協議之上增加了匿名性,但是Zerocoin和Zerocash在協議級別都包含匿名性。我們將在這里介紹協議的高級視圖,并且簡化一些細節,你也可以在“進一步閱讀”部分找到對原始論文的參考。

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

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

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

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

為了使這個工作以加密的方式運行,我們用密碼學的方式實現這些證明。我們需要確保每次證明只能使用一次來贖回basecoin。否則,你可以通過將basecoin轉化為zerocoin,然后多次贖回來免費獲得basecoins。

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

當然,你可以通過揭示x來做到這一點。 但是,零知識證明可以讓您以這樣一種方式來做到這一點:另一個人在看到證明之后,對于x的價值并不比以前更清楚。

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

鑄造Zerocoins。Zerocoins通過鑄造而存在,任何人都可以鑄造Zerocoins。他們有標準的面額。為了簡單起見,我們假定只有一個價值為1.0的zerocoins,而且每個zerocoin都值一個basecoin。雖然任何人都可以鑄造zerocoin,只是鑄造不會自動賦予它任何價值——你不能得到免費的錢。只有當你把它放在區塊鏈上才能獲得價值,這樣做就需要放棄一個basecoin。

要鑄造zerocoin,你要使用加密承諾?;仡櫼幌碌?章,承諾方案是將信封中的價值密封并將其放在桌子上的加密模擬。

圖6.11:提交序列號。加密承諾的真實世界模型是在信封內密封一個值。

鑄造一個zerocoin分三個步驟完成:

1.生成序列號S和隨機密碼r

2.計算并提交(S,r),對序列號進行承諾

3.將承諾發布到區塊鏈上,如6.12所示。這會燒傷一個basecoin,使其無法使用,并創造出一個zerocoin?,F在對S和r保密。

圖6.12:把一個zerocoin放在區塊鏈上。要將一個zerocoin放在區塊鏈上,你需要創建一個特殊“造幣廠”交易,其輸出“地址”是zerocoin序列號的加密承諾。造幣廠交易的輸入是一個basecoin,已經在創造zerocoin中花費掉。這個交易不顯示序列號。

要花費一個zerocoin兵兌換一個新的basecoin,你需要證明你以前鑄造了一個zerocoin。你可以通過打開你以前的承諾,即揭示S和r來做到這一點。但是,這使得你的舊basecoin和新的basecoin之間的聯系顯而易見。 我們如何打破鏈接?

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

以下是使用帶序列號S的zerocoin贖回一個新的basecoin的步驟:

·創建一個包含S的特殊“支出”交易,以及零知識證明的聲明:

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

·礦工將驗證你的零知識證明,確定你是否有能力在區塊鏈上開啟一個

zerocoin承諾,而無需實際打開它。

·礦工還將檢查序列號S從未在任何以前的支出交易中使用(因為這將是雙

重支出)。

·你的支出交易的輸出現在將作為一個新的basecoin。對于輸出地址,你應該使用一個你擁有的地址。

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

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

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

效率?;仡櫾谥С鼋灰字凶C明的陳述:

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

這聽起來像執行效率太低,因為零知識證明的大小會隨著n的增加而線性增長,這是曾經被鑄造zerocoins的數量。值得注意的是,Zerocoin設法使這些證明的大小為n的對數。注意,即使要證明的語句有一個線性長度,但也不需要連同證明一起包含。聲明是隱含的;這可以由礦工推斷出來,因為他們知道區塊鏈上的所有zerocoins的集合。證明本身可以更短。然而,與比特幣相比,Zerocoin仍然增加了相當可觀的開銷,其證明大小有50 kB。

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

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

也可以使用稍微不同的加密結構來避免可信設置。具體地說,已經表明,簡單地生成非常大的隨機值N是高可靠性的,因為這個數量可能不能被完全考慮。不幸的是,這帶來了巨大的效率打擊,因此不被認為是實際的。

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

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

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

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

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

把它們放在一起?,F在我們來比較我們已經看到的解決方案,無論是在他們提供的匿名性質方面,還是在實踐中如何部署它們。

表6.14:本章中介紹的匿名技術比較

我們從已經部署的Bitcoin本身開始,是“默認”系統。但它只是匿名,我們已經看到強大的交易圖分析是可能的。我們研究了大量分組地址族群的方法,以及如何有時將真實身份標識附加到這些集群。

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

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

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

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

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

盡管它的力量,匿名是脆弱的。一個錯誤可以創建一個不需要的,不可逆的鏈接。但是匿名是值得保護的,因為它除了明顯的不良之外還有許多好的用途。雖然這些道德差異很重要,但我們發現自己無法在技術層面上表達他們。匿名技術似乎在深刻而內在的道義上是模棱兩可的,作為一個社會,我們必須學會生活在這個事實中。

比特幣匿名是技術創新和道德辯論的積極領域。我們仍然不知道比特幣的哪個匿名系統(如果有的話)會變得突出或主流。這是一個偉大的機會,無論對于開發人員,決策者還是用戶——去參與和做貢獻。希望你在本章中學到的東西給你正確的背景去做這些。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容