匿名的定義
在討論比特幣是否具備匿名性之前,我們需要對匿名做一個定義。我們需要準確地理解到底什麼是匿名,以及它與其他一些相似術語的關係,比如隱私。
匿名和化名(pseudonymity)
在其他你可能更熟悉的情形下,說明匿名和單純的化名的區別可能更容易。其中一個很好的例子就是在線論壇,在一個類似於紅迪(Reddit,美社交新聞網站)的論壇中,你會選擇一個自己常用的化名在一段時間內和系統進行交互。你也可以創建多個化名,甚至每一條評論都用一個新的名字,但那樣會很麻煩,絕大多數人都不會這樣做。所以在紅迪這樣的論壇裡,用戶通常都會使用化名,但又不是完全匿名。相反,在4Chan(綜合型討論區)這種在線論壇裡,用戶通常用匿名來發帖,並且不帶有任何標識性屬性。
從字面上理解,匿名的意思是「沒有名字」。當我們嘗試用這個定義來說明比特幣的匿名特徵時,會有兩種不同的詮釋:在交易的時候不使用真實的姓名,或者在交易的時候完全不使用任何名字。比特幣是否具備匿名性,這兩種釋義會帶來兩種完全不同的結論。比特幣的地址是公鑰哈希值(hashes of publickeys),在與比特幣系統交互過程中,使用者不需要使用真實的姓名,但是需要使用公鑰哈希值來作為交易標識。因此,按照第一種對匿名的釋義,比特幣是具有匿名性的,因為使用者不需要使用真實的姓名。然而,如果根據第二種釋義,比特幣並不具備匿名性,因為交易中必須使用的地址是一種虛假標識。在計算機科學語言中,這種不用真實姓名而使用一種特定標識的折中做法被稱為化名。
你可以根據你的需要,隨意創建出任意多個比特幣地址,考慮到這一點,你可能會思考比特幣的地址是否真的是虛假標識,因為你可以創建無窮多的化名,正如我們將會看到的,這並不能讓比特幣具備匿名性。
在計算機科學中,匿名指的是具有無關聯性(unlinkability)的化名,無關聯性是一種針對特定攻擊者的能力而定義的屬性,從直觀的意思看,無關聯性意味著如果一個用戶和系統重複進行交互,從特定攻擊者的角度考慮,不同的交互行為之間應該無法互相關聯。
比特幣是具備化名性的,但如果你的目的是要求絕對隱私,那麼這種匿名性還不夠。區塊鏈技術是一種公開的賬本系統,任何人都可以查詢包含了給定地址的所有比特幣交易。如果有人可以用你的比特幣地址鏈接到你的真實身份,那麼所有你的比特幣交易記錄——不管是過去的、現在的,還是未來的——都能關聯到你的真實身份。
更加糟糕的是,把比特幣地址和真實身份鏈接起來並不困難。如果你跟某一種比特幣業務有關聯 ——不管是一個在線電子錢包服務,還是其他接受比特幣的商家或交易所,通常你都需要提供你的真實身份以完成相關交易。比如,交易中通常都需要你提供信用卡信息,或者商家需要你提供真實地址以便送貨上門。
或者你去咖啡館喝杯咖啡,然後用比特幣來支付。由於你已經出現在店舖裡,咖啡師對你的身份特徵已經有了非常多的瞭解,即使他們沒問你的真實姓名。你的物理標識就這樣和你的某個比特幣交易聯繫到了一起,從而可以由這個地址追蹤到你所有的其他比特幣交易。這顯然不具備匿名性。
旁路攻擊(side channels)
即使沒有發生直接的關聯,因為側面渠道或者一些間接的信息洩露,你的匿名身份也可能會被暴露(deanonymized)。舉個例子,某個人看過一個匿名的比特幣交易記錄,並且注意到了這個比特幣交易的活躍時間,那麼他就可以將這個時間信息與其他公開可獲得的信息關聯到一起。可能他會注意到在同一個時間某一個推特用戶也出於活躍狀態,那麼就可以建立一個匿名的比特幣資料和一個真實世界的用戶(至少是一個推特賬號)之間的關聯。很顯然,這樣的匿名性並不能保障隱私或者絕對匿名。要想做到絕對匿名,我們需要更強的無關聯性屬性。
無關聯性
為了更紮實地理解比特幣範疇中的無關聯性特徵,我們可以列舉一些在比特幣交易中無關聯性所需要的關鍵屬性:
1.同一個用戶的不同地址應該不易關聯。
2.同一個用戶的不同交易應該不易關聯。
3.一個交易的交易雙方應該不易關聯。
上述第一條和第二條很容易理解,但第三條比較微妙。如果你把一筆「支付」詮釋成一個比特幣交易,那麼第三條屬性很明顯就是一個偽命題。每一筆交易都有輸入和輸出,這些輸入和輸出都不可避免地會記錄在區塊鏈網絡中,並且公開地關聯在一起。然而,我們所指的支付並不僅僅是一筆比特幣交易,而是指任何一種從發送者到接收者的傳輸比特幣的行為,這種行為可能會涉及一系列的間接迂迴交易。我們需要確保,通過查詢區塊鏈上的信息將發送者和最終的接收者關聯在一起,是不可行的。
匿名集
即使我們對支付做出更加寬泛的定義,第三條屬性看起來也比較難以實現。比如說,你支付一定數量的比特幣來購買某個商品,並且通過迂迴曲折的形式發送了這些比特幣,其他人通過查看區塊鏈上的信息,還是可以推斷出某個比特幣地址上減少了一定數量的比特幣,而另外一個地址上增加了差不多相同數量的比特幣(可能會扣除相應的交易費用)。此外,儘管傳輸是通過迂迴曲折的路徑,初始發送方發送比特幣和最終接收方接受比特幣基本上發生在同一個時間段,因為商家不太願意接受延遲付款。
基於這樣的困難,我們通常並不試圖在系統中,對所有可能的交易或者地址都實現完全的無關聯性,而是去實現更有限度的無關聯性。想像一個特定的攻擊者的情況,你的交易匿名集(anonymity set)是指該攻擊者無法把你的交易從其中分辨出來的交易集合。即使該攻擊者知道你完成了一個交易,但是他也僅僅知道這個交易是某一個合集中的一個,但並不能確定是哪一個。我們只需要努力去最大化這個匿名合集就可以了——在這個合集中,我們可以隱藏我們的地址或交易。
統計匿名集是很微妙的,由於這樣的匿名集是針對某一個或者一組攻擊者而定義的,所以你首先需要具體定義你的對手模型是怎樣的。你必須要仔細思考對手已知和未知的內容,以及我們需要隱藏的內容——也就是說,如果要達到匿名性目標,交易中的那些信息是不能被對手知道的。沒有成熟的公式告訴你該怎麼做,需要根據每一個具體情況仔細分析相對應的協議和系統。
污點分析(taint analysis)
在比特幣社區中,人們通常根據直覺推斷匿名性,而非嚴格的定義。污點分析就是一種非常流行的方式:這是一種推算兩個地址相關性的方法。如果地址S發送出的比特幣總是地址R接收,那麼不管是直接抵達,還是經過了多少中間地址,S和R則被定義為具有高分污點。污點分析的計算公式,適用於多個輸入和(或)輸出的交易,並且確定如何分配污點的規則。
遺憾的是,污點分析也不是一個衡量比特幣匿名性的好方法。它只是簡單地認定對手在使用相同的計算方式在關聯成對的地址。稍微聰明一點的對手會使用不同的技巧,比如查詢交易時間,或者本章後面我們會講的利用錢包軟件的特性。所以,污點分析可能只會顯示你在某種特定情況下具備的匿名性,而事實上可能並不準確。
為什麼需要匿名性
瞭解了匿名性意味著什麼之後,在我們進入更深入的探討之前,讓我們來回答一下有關匿名性的根本問題:為什麼人們需要匿名性?擁有匿名性的貨幣有哪些倫理道德方面的意義?
在區塊鏈貨幣中,所有交易都被記錄在一個公共賬本上,也就是說,這些記錄都是公開的,並且可根據相關地址進行永久追蹤,因此,你的比特幣交易的隱私保護可能會比傳統的銀行更糟糕。如果你的真實身份被關聯到一個比特幣地址,那麼你就完全失去了所有交易的隱私——不管是過去的、現在的,還是未來的——只要是和這個地址相關聯的交易。由於區塊鏈是公開可用的,確切地說,任何人都有可能在你不知道的情況下識別你的身份。
考慮到這一點,我們可以認定兩種不同的需要匿名加密數字貨幣的動機:第一種是,達到我們習慣的傳統銀行給我們的隱私保護級別,降低公共區塊鏈所帶來的信息暴露風險;第二種是,要超越傳統銀行給我們的隱私保護級別,進一步開發數字貨幣,使其從技術上實現任何人不能輕易追蹤參與者。
匿名性的道德問題
我們有很多非常重要的理由(雖然經常被忽視)需要匿名性,傳統貨幣已經讓我們對這種匿名性習以為常。大多數人都不願意與朋友以及同事分享他們的工資收入狀況,如果你的工資是用區塊鏈比特幣支付的,而且該區塊鏈上的地址很容易被識別,那麼我們只需要關注每個月定期的大額支付記錄,就能很容易地推斷出你的工資情況。企業組織也有非常重要的財務隱私顧慮,例如,一家電玩遊戲生產商被發現在區塊鏈上支付給了一個分包商,而這個分包商是專門生產虛擬現實眼鏡的,那也意味著它們要推出的新遊戲可能會被公眾(也包括其競爭對手)提前知曉。
然而,真正合理的顧慮是,匿名加密數字貨幣可以被用作洗錢或者從事其他非法活動。即使加密數字貨幣的交易本身可能是匿名的,數字貨幣和法定貨幣之間的接口卻無法做到匿名,這可以說是一個好消息。事實上,我們將在下一個章節討論中看到,這些數字貨幣和法定貨幣之間的兌換和流動被嚴格監管著。因此加密數字貨幣也不是洗錢或者其他金融犯罪的靈丹妙藥。
然後有人可能會問:我們是否可以設計出一種技術,這種技術只允許使用好的匿名,而禁止壞的匿名呢?事實上,計算機安全和隱私方面的研究者一直在探索這個問題的答案,遺憾的是,從來就沒有可行的方案,因為我們用道德標準分辨出的好壞,對計算機技術來說,是沒有辦法區分的。在比特幣系統中,如何讓礦工按照道德標準去判定哪些交易應該被發佈到區塊鏈中,目前還是無法實現的。
我們的觀點是,啟用匿名加密數字貨幣是有潛在好處的,這也是其得以存在的原因,同時,對於系統的技術匿名屬性和在使用貨幣時應該遵守的法律規範,我們應該加以區分。匿名加密數字貨幣並不是一個完美的解決方案,但可能是最優的一種折中方案。
匿名化和去中心化
在本章中,我們會看到很多次有關匿名化和去中心化的討論,通常這兩點是相互矛盾甚至衝突的。回憶一下前言部分提到過的喬姆(Chaum)的電子現金系統,它在一定意義上實現了完美的匿名性,不過必須依賴一個中央權威機構——銀行的盲簽名協議。設想一下,這樣的協議的去中心化將會非常困難。如果我們強制進行去中心化,就必須要有一種能夠追蹤交易並且防止雙重支出的機制。交易的這種公開追蹤特性,就是對匿名化的一種威脅。
Tor[1]
如何處理一個有好壞兩面性的技術,比特幣並不是唯一一個面臨這種道德上兩難選擇問題的技術。另外一個匿名性設定有爭議的系統是Tor,一個匿名通信網絡。
一方面,Tor的用戶只是一些普通人,想保護他們在網絡上不被跟蹤。其用戶包括記者、社會活動家和持不同政見者等,他們追求在互聯網上的言論自由而不用擔心政治迫害。同時,執法部門的探員也使用這個系統,監控在線嫌疑犯,而不會洩露他們的IP地址(畢竟,大家都知道IP地址是根據不同的組織機構來分配的,包括執法部門)。很顯然,Tor有很多應用場景是我們從道德上認可的。另一方面,它也還有一些不好的應用場景:有人用其運作殭屍網絡來控制一些被感染的電腦,進而用來傳播淫穢等非法圖片。
要想從技術角度去區分這些使用場景,基本上是不可能的。Tor的開發者以及社區一直在嘗試解決這個難題,全社會也在努力嘗試。我們似乎可以總結一下,整體而言,這樣的技術利大於弊,實際上,Tor主要的投資方之一就是美國政府,其投資興趣在於,Tor可以讓不同政見者在互聯網上發表自由言論,而不用擔心政治迫害。同時,執法部門也勉強接受Tor的存在,甚至還開發了使用這個平台的方法。FBI也經常會查封一些在「黑暗網絡」上非法傳播色情圖片的網站,即使這些網站也使用了Tor的平台,多數情況是,這些網站的運營者被繩之以法。我們必須要記住,技術僅僅是工具,而那些犯罪分子生活在現實世界裡,並可能留下各種犯罪證據,或者在使用這些工具的時候犯一些人為錯誤。
在本章6.5節中,我們會探討零幣(Zerocoin)和零鈔(Zerocash),這是一種匿名化並且去中心化的加密數字貨幣系統,有點類似於喬姆的電子貨幣(ecash),但是因為上述兩個限制,它們需要找到合適的方法,以解決棘手的加密問題。
[1] The Onion Router,洋蔥路由,用戶通過Tor可以在互聯網上進行匿名交流。——譯者注