6.3 混幣

有一些機制可以使得交易圖譜分析變得不那麼有效,其中一種就是混幣(Mixing),這種技術背後的邏輯其實很簡單:如果你想要匿名化,那就使用一個中介媒體。這個原則不是特別針對比特幣的,在很多需要實現匿名性的情形下都很有用。圖6.7展示的就是混幣模式。

圖6.7 混幣模式

註:用戶發送比特幣給一個中介媒體,並通過其他的用戶回收比特幣。這就使得在區塊鏈上追蹤一個用戶的比特幣,變得更加困難。

混幣在線錢包

如果你還記得我們有關在線錢包的討論,那麼在線錢包貌似就適合作一個交易中介。在線錢包提供了一種在線存儲和提取比特幣的服務,存儲和提取可以在不同的時間發生。通常,你提取的比特幣有別於你存儲的比特幣,那麼,是否這就意味著,在線錢包提供了一種有效的混幣服務呢?

在線錢包確實提供了一個去關聯性的方法,這可以阻止交易圖譜分析類型的攻擊嘗試,在一個具體的案例中,一些傑出的研究者不得不回撤一個面向公眾的申明,因為他們之前發現的一個關聯,其實只是在線錢包提供的一個偽關聯。

從另外一個角度看,使用在線錢包來做混幣服務,也存在一些嚴重的局限性。首先,大多數在線錢包並不能保證一定能實現混幣功效,它們實現混幣的功能,其實是因為這樣做簡化了開發工程。作為用戶,你得不到它們不會去變更其混幣模式的保證。其次,即使它們實現了混幣,其內部也會保留一份記錄,用來匹配你的存入和提取。這不僅是出於安全性的考慮,也是根據合規要求的審慎做法。所以說,如果你的威脅模型會考慮服務提供商本身會跟蹤你,或者服務提供商被黑客攻擊,又或者服務提供商被迫提供它們的記錄等這些可能性,你就又回到了原點。最後,除了保留內部記錄之外,聲譽好的且受監管的服務提供商,也會要求你提供個人身份以進行記錄(我們將在第7章中具體討論監管問題)。你無法簡單地通過一個用戶名和密碼,就能夠創建一個賬號。所以,在某種意義上,這可能比你不用錢包服務還糟糕。加 入 會 員 微 信

在線錢包服務所提供的匿名性,和傳統銀行所提供的服務類似,都有一個知道所有用戶的交易記錄的中央媒介。對一個沒有特權信息的陌生人來說,我們具備了一定程度的隱私。但是,正如我們討論過的,區塊鏈的公共屬性意味著,如果發生任何問題(比如,錢包或者交易所服務被黑客攻擊而導致內部數據的暴露),隱私風險會比傳統的銀行系統更大。除此之外,越來越多的人就是因為不滿意傳統系統的匿名性,並想要一個更好的(或者不同的)匿名性保障才轉向使用比特幣,這些都是用戶使用專項混幣服務的動力。

專項混幣服務

不同於在線錢包,專門的混幣服務既可以保證不留記錄,又不需要你的身份驗證。你甚至不需要一個用戶名或者其他化名來使用這項服務,只需要發送比特幣到混幣服務提供的地址,並且告訴交易服務提供商你發送的比特幣所需要達到的地址,混幣服務提供商就會幫你轉過去相同數量的比特幣(不是你發送的比特幣)。本質上,這是一種互換。

同時,另一個好處是這種專項混幣服務承諾不會保留記錄,這看上去不錯。但你必須要信任它們會信守承諾,並且你還必須相信它們最終會幫你完成轉賬。不像在線錢包,由於混幣服務並不提供一個存儲比特幣的地方,你需要混合後的比特幣盡快回到自己手中。這也就意味著,混幣池中將要和你剛剛存入的比特幣混在一起的其他比特幣總量會非常少,大概就是在你的比特幣存入的同時其他人存入的數量。

混合(mix)和洗錢(laundry)

在這本書裡,我們使用了一個術語混合,特指一個專項的混幣服務,也有些人比較傾向於用另外一個同樣意思的術語mixer。

你可能也遇到了洗錢這個詞,我們並不喜歡這個詞,因為這個詞不必要地關聯到了一個道德評價的問題,而實際上我們討論的是一個純技術的概念。正如我們所見,為什麼你需要保護你在比特幣運用中的隱私,並且使用混幣服務來保護你的日常隱私,你有很多很好的理由。當然我們也需要瞭解它的負面作用,但是洗錢這樣的描述加重了負面含義,因為這可能帶了一種暗示,暗示你的比特幣是「髒」的,需要洗乾淨。

還有另外一個詞翻洗(tumbler),這次詞的含義不是很清楚,可能會被理解為翻滾式混幣的一種行為,或者是指因此而帶來的清洗效果(在寶石之類的範疇)。不管怎麼說,我們還是堅持使用「mix」這樣一個詞。

混幣準則

有一組研究者,包括本書5個作者中的4個,研究了混幣模式,不僅僅是從增強匿名性的角度,而且還從安全信任等級方面,提出了一系列改進混幣運作的方案,我們將深入探討這些準則。

多重混幣的使用

首要的原則是使用多重混幣服務,一環套一環,而不是僅使用單次混幣(參見圖6.8)。這是一個已經被廣泛接受並且已經比較完善的原則,例如,正如我們簡要探討過的Tor系統,使用了三重路由方式的匿名通信。這可以減少你對單一混幣服務提供者可信賴性的依賴。只要這一系列中的任何一個混幣服務提供者信守承諾並刪除了記錄,你就有理由相信,沒有任何人能夠將你的原始輸入關聯到你最終接收到的輸出。

圖6.8 多重混幣

註:我們從一個持有比特幣或者輸入地址的用戶開始,且假設該用戶已經被其他人關聯到了其具體身份。該用戶通過混幣服務提供商來發送比特幣,每次都需要提供一個全新產生的輸出地址,只要能夠在所提供的至少一個混幣環節銷毀輸入和輸出匹配的記錄,而且沒有其他渠道可以洩露相關信息,其他人就無法把用戶最初發送的比特幣和最終接收的比特幣關聯起來。

一致性交易(uniform transactions)

在混幣交易中,如果不同用戶使用了不同數量的比特幣,這樣的混幣不一定會非常有效。由於初始進入和從混幣過程中出來的比特幣數量必須要一致,就可以通過觀察某用戶的比特幣在混幣過程中的流入流出而建立起一個關聯,或者至少會極大地減少匿名集中的交易數量。

相反,我們需要混幣中的交易價值能夠服從平均分佈,從而最小化被關聯的可能性。所有的混幣服務都應該對使用的塊大小(chunk size)達成一致,也就是說,使用一個固定的混幣輸入值,就可以增強所有通過混幣服務的交易匿名性。因為所有的交易看起來都一樣,而不能通過交易價值的不同,分辨出不一樣的地方。再者,在所有的混幣中使用統一的大小,可以讓使用多重混幣更加容易,而不需要去拆分和合併其中的交易。

在實際運作中,對所有用戶統一交易塊大小可能會比較困難。如果我們選擇的塊太大,對想使用混幣來處理少量比特幣的用戶則不適用;而如果選擇的塊太小,那麼想處理大額交易的用戶可能需要把交易拆成大量的小額交易,這種做法會非常沒有效率而且成本很高。多標準塊大小則可以改善性能,但是不同的塊大小也會相應地分割交易匿名集。或許一系列漸增的兩到三個塊大小,有可能會在效率和隱私程度之間達到一種合理的平衡。

客戶端自動化

除了在基於交易量的關聯嘗試之外,一些聰明的攻擊者會嘗試其他不同的方法,例如觀察交易發生的時間。這些攻擊其實可以防範,但必要的預防措施對於人類來說太過複雜和麻煩。相反,混幣服務的客戶端功能應該是自動化的,並且是隱私保護比較好的錢包內置功能。

手續費應該是要麼全有要麼全無

混幣服務是一種有收益期望的生意。一種計費的方式是從每一筆交易中分成,但是這種方法對匿名性的實施是有問題的,因為混幣不再是統一的大小。(如果用戶嘗試去分拆和合併較小的交易塊使得交易大小回到初始的狀態,那就有可能帶來嚴重的並且難以分析的匿名被暴露的風險,因為有更多的新的有關交易中的比特幣的關聯會產生。)

不要把交易手續費和混幣服務費混為一談,交易手續費是礦工所獲得的,混幣服務費是在此之上的額外的費用。

為了避免這個問題,混幣服務費應該是要麼全有要麼全無,並且依概率規則來應用。換句話說,混幣服務提供商應該要麼在很小的概率情況下獲得所有的交易金額,要麼完全不收費。舉例來說,如果混幣服務商想要按照0.1%收費,那麼應該是每1 000次交易中有一次服務提供商獲得整個交易金額,而其他的999次則不收任何費用。

這個會很難實現,混幣服務商需要做出一個概率決策,並且要讓用戶信服它們沒有作弊,也就是說,在它們的隨機數生成器中沒有做過任何概率偏置設定。比如,獲得整個交易金額的概率是1%而不是0.1%。加密學提供了一個很好的辦法,你可以參考下面將要延伸閱讀章節中提到的有關混幣的論文,以獲取更多的細節,在這篇論文中,也提到了可以讓混幣服務提供商提高公信力的多種其他方式。

混幣實踐

直至2015年,還不存在一個正常運行的混幣生態系統。市場上有很多的混幣服務,但是都只有比較低的交易量,因此它們的匿名組合比較小。更糟糕的是,許多混幣服務提供商被報告有盜幣行為,或許「自舉」這樣一個生態系統太難,正是混幣系統從來沒有良好運行過的一個原因。基於混幣服務提供商狡猾的名聲,並沒有多少人想要使用它們的服務,這也導致了較低的交易量,進而導致了不好的匿名保護。老話說得好,大隱隱於市(anonymity loves company),也就是說,越多人使用一個匿名服務,那麼這個服務能提供的匿名性就越高。進一步來說,由於提供服務並沒有太多利益可圖,服務提供商可能會嘗試去盜取客戶的資金,這會使得混幣服務提供商的公信力出現持續的惡性循環。

當前,混幣服務提供商並沒有遵循我們所探討的任何原則。每一個服務提供商都是獨立運營的,並且通常都會提供給用戶一個網頁接口,讓用戶手工輸入收錢地址和其他一些必要的參數。用戶可以選擇他們需要進行混幣交易的數量,服務提供商針對每一筆交易收取提成來作為服務費,然後發送剩餘的比特幣到用戶指定的目標地址。

我們認為,對混幣服務提供商(和錢包軟件提供商)來說,為了可以獲取更強的匿名性,抵禦智能攻擊,提供一個高可用性的接口,進而吸引更多的交易量,實施我們介紹的模式是很有必要的。然而,迄今為止,我們還是沒有看到過一個比較強健的混幣生態系統。

《區塊鏈:技術驅動金融》