作者:Kalle Rosenbaum & Linnéa Rosenbaum

本章討論瞭如何保護你的私密金融信息。本章解釋了 “隱私性” 在比特幣的語境下意味著什麼、為什麼它很重要,以及 “比特幣是準匿名的(pseudonymous)” 是什麼意思。本章也分析了隱私數據洩露的方式,既包括鏈內洩露,也包括鏈外洩露。然後,本章還討論了為什麼比特幣應該是可以互換的(也即任何兩個比特幣都可以相互交換),以及可互換性和隱私性如何緊密相關。最後,本章還介紹了一些你可以採取的提高自己和他人隱私性的措施。
比特幣可以說是一種準匿名的(使用化名)的系統(詳見本章 3.3 節的進一步討論),也就是用戶可以使用多個假名(以公鑰的形式)。乍看起來,這是一種非常好的辦法,可以保護用戶不被識別出來,但在事實上,人們極為容易在無意間洩露自己的隱私金融信息。
3.1 隱私性意味著什麼?
“隱私性” 在不同語境下有多種意思。在比特幣語境下,它一般來說意味著用戶並不非得向他人揭曉自己的金融信息,揭曉僅僅出於自願。
但不管你是否有所察覺,隱私信息的洩露有很多種可能性。數據既可能從公開的區塊鏈洩露,也可能從別的渠道洩露,比如惡意人可以攔截你的互聯網連接。
3.2 為什麼隱私性是重要的?
隱私性對比特幣的重要性,似乎是顯而易見的,但想必有一些方面,是你無法立即想到的。在 Bitcoin Talk 論壇上,Gregory Maxwell 歷數了他認為隱私性重要的理由,包括自由市場、安全性和個人尊嚴:
金融隱私性是自由市場高效運作的一個必要條件:如果你做生意的時候,你的供應商和客戶可以(不顧你的意願)看到你所有的交易,那麼你實質上無法自由設定價格。孤立地說,如果你的賬戶沒有隱私性,那麼你的私人運作就會失去信息槓桿:如果你給房東支付是沒有足夠的隱私性,你的房東就會看到你剛剛漲了工資,然後順勢漲你的房租。
金融隱私性也是個人安全的必要條件:如果竊賊可以看到你所有的指出、收入和儲蓄,他們就能使用這些信息來瞄準和打劫你。沒有隱私性,惡意人就有更多的手段來盜竊你的身份、從你家門口劫走你的值錢物件,或者假裝與你交易的且也 …… 他們甚至可以準確地告訴你要從你身上騙走多少錢。
金融隱私性也是個人尊嚴的必要條件:沒有人喜歡被咖啡店裡的猥瑣員工和吵鬧的鄰居點評收入和消費習慣。沒有人希望被想孩子想瘋了的父母質問為什麼要買安全套(或者性玩具)。你的僱主也沒必要知道你捐錢給哪個教堂。如果我們沒有隱私性,那就只有在一個完全啟蒙、沒有偏見的世界裡,沒有人對其他人有不正當的權力,我們才能保留自己的尊嚴、自由地進行合法的交易。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
Maxwell 也討論了可互換性的問題,我們會在本章的後續章節討論;並且我們還會解釋,隱私性和法律的強制執行是不矛盾的。
3.3 假名
我們前面已經提到,在比特幣中,人們使用假名,而這些假名就是公鑰。在媒體上,你常常會聽到 “比特幣是匿名的(anonymous)”,這是不準確的。匿名性和假名性是有區別的。
Andrew Poelstra 在一個 Bitcoin Stack Exchange 帖子中解釋了匿名性在交易中的形態:
完全的匿名性意味著,在你支出貨幣的時候,關於這筆錢從哪裡來、到哪裡去,完全不會有任何線索。理論上,使用 “零知識證據(zero-knowledge proofs)” 這樣的密碼學技術,這是能夠做到的。
—— Andrew Poelstra 論匿名性,Bitcoin Stack Exchange (2016)
區別在於,在一種以假名使用的貨幣中,你可以追蹤假名之間的支付,而在匿名使用的貨幣中做不到追蹤支付。因為比特幣的支付是可以追蹤的(以假名為身份),所以它不是一個匿名系統。
我們也說過了,在比特幣中使用的加密是公鑰,但實際上,被使用的加密是從公鑰中派生出來的地址。為什麼用使用地址作為假名,而不是使用別的東西(比如 “watchme1984” 這樣的描述性用名)呢?Bitcoin Stack Exchange 網站上的用戶 “Tim S.” 解釋得很好:
為了讓比特幣的理念得以實現,你必須讓錢幣只能被給定的一把私鑰花費。這就意味著,無論你讓什麼來擁有錢幣,它都必須(在一定程度上)與一個公鑰綁定。
使用任意的假名(例如自定義的用戶名)意味著,你必須再將這個假名與一個公鑰關聯起來,才能使用 公鑰/私鑰 密碼學。這將剝奪用戶離網安全創建 地址/假名 的能力(比如說,在別人可以將錢幣發送給 “tdumidu” 這個用戶名之前,你必須先在區塊鏈內宣告 “tdumidu” 這個用戶名是由某個公鑰 “a1c…” 持有的,還得包含一筆手續費,從而其他人有理由接受它),還會降低匿名性(因為這會鼓勵大家複用假名),而且還會毫無必要地讓區塊鏈的體積膨脹。這還會帶來一種虛假的安全感,讓人們以為自己在給自己認識的人支付(如果我在 Linus 之前搶注了 “Linux Torvalds” 這個用戶名,那它就是我的,人們以為自己在給 Linux 操作系統的創始人捐贈,實際上卻把錢給了我)。
—— Tim S. 論假名,Bitcoin Stack Exchange (2014)
通過使用地址(或者說公鑰),我們實現了重要的的目標,比如,消除提前註冊假名的需要、減少重複使用相同假名的激勵、避免區塊鏈膨脹,並且,也讓假冒他人變得更加困難。
3.4 區塊鏈隱私性
“區塊鏈隱私性” 指的是你在區塊鏈上發起交易時會洩露的信息。所有交易都會揭曉一些信息,你發送的交易、你收到的交易,都會。
中本聰(Satoshi Nakamoto)在《比特幣白皮書》的第七章討論了區塊鏈內的隱私性:
作為一道額外的防火牆,用戶應該為每一筆交易使用一對新的密鑰,以防止它們被關聯到同一個主人。多輸入的交易依然會暴露一些聯繫,必然會揭曉這些輸入都屬於同一個主人。風險在於,如果某個公鑰與其主人的關係暴露了,則這些關聯可能會讓屬於同一個主人的其他交易暴露。
—— 中本聰,《比特幣:一種點對點的電子現金系統》(2008)
比特幣白皮書總結了區塊鏈隱私性的主要問題,即 “地址複用” 和 “地址聚類”。第一種問題,顧名思義(重複使用同一個地址);第二種問題,則指的是以一定程度的確定性,猜測一組地址屬於同一個用戶的能力。

- 圖 3. 區塊鏈上的標準隱私洩露情形 -
Chris Belcher 以詳盡的細節解釋了比特幣區塊鏈內可能發生的不同類型的隱私洩露。筆者推薦你至少要閱讀 “對隱私性的區塊鏈攻擊(Blockchain attacks on privacy)” 標題下的前面幾個小節。
總結一下,比特幣區塊鏈內的隱私性並不是完美的。用戶需要付出大量的工作來實現隱私地交易。絕大部分用戶都沒有準備好為隱私性而走這麼遠。隱私性與易用性之間似乎也存在顯然的矛盾。
另一個重要方面在於,你採取的保護你自己的隱私性的措施,也會影響其他用戶。如果你對自己的隱私性粗枝大葉,其他人的隱私性可能也會因此削弱。Gregory Maxwell 在我們前面已經鏈接的同一個 Bitcoin Talk 帖子中解釋得非常清楚,並且附帶了一個例子:
在現實中也是一樣的 …… 一個善良的白帽子黑客在互聯網在線聊天室(IRC)中玩 “腦錢包(brainwallet)” 破解遊戲,並且找出了一個存放了大約 250 個 BTC 的私鑰。我們只憑這個地址就能識別出主人的身份,因為 TA 得到了一個重複使用地址的比特幣服務的支付,而這個白帽子黑客能夠說服這個服務交出用戶的聯繫方式。他真的在手機上找到了這個用戶,這個用戶被嚇到了,也很困惑 —— 但這人也很慶幸沒有弄丟自己的錢。最終是一個皆大歡喜的結局。(這並不是唯一的一個案例 …… 只是目前為相對比較有趣的一個)。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
在這個案例中,當然要感謝這個善意的黑客,但是,不要指望總是能遇到這樣的黑客。
3.5 非區塊鏈的隱私性
雖然區塊鏈已被證明是隱私洩露的一個重要來源,還有許多其它類型的洩露與區塊鏈無關,其中一些非常微妙,從鍵盤記錄器到互聯網流量分析,五花八門。想要了解這些方式,請回頭閱讀 Chris Belcher 的文章,尤其是 “對隱私性的非區塊鏈攻擊(Non-blockchain attacks on privacy)” 標題下的部分。
在眾多的攻擊類型中,Belcher 提到了其他人窺探你的互聯網連接的可能性,比如說,你的互聯網服務商(ISP):
如果這個敵手看到一筆交易或者一個區塊從你的節點傳出,而此前並沒有人給你轉發這筆交易(這個區塊),那麼,TA 可以近乎百分百確定,這筆交易是由你製作的、這個區塊是由你挖出的。因為互聯網連接是無法迴避的,這個敵手能夠將這段被揭曉的信息與你的 IP 地址關聯起來。
—— Chris Belcher,Bitcoin wiki
然而,最顯著的隱私洩露來自密碼貨幣交易所。出於通常被稱為 “KYC(瞭解你的客戶)” 和 “AML(反洗錢)” 的法律的要求,位於帶有這類法律的司法轄區的交易所和相關公司常常不得不收集用戶的個人信息、建立起關於哪個用戶擁有哪些比特幣的巨大數據庫。這些數據庫對於惡意的政府和犯罪團伙來說,是巨大而吸引人的目標。實際上還真的有這類數據的市場,黑客會盜竊這些數據然後賣給出價最高的人。更糟糕的是,管理這些數據庫的公司通常在保護金融數據上經驗不足,實際上他們絕大部分都是年輕的初創公司,我們已知的就有多次洩露發生過。比如說位於印度的 MobiQwik,還有 HubSpot 。
再說一次,保護數據免遭這些五花八們的攻擊是困難的,很可能最終你也無法完全做到。你必須在便利性與最適合自己的隱私性之間作出取捨。
3.6 可互換性
“可互換性(fungibility,同質性)”,在貨幣的語境下,意味著一個錢幣可以跟同種貨幣的另外任何一個錢幣互換。這個有趣的詞,我們在 3.2 節已經簡單提及。而在討論它的文章中,Gregory Maxwell 指出:
金融隱私性也是比特幣同質性的一個必要條件:如果你可以有意義地區分出一個錢幣和另一個錢幣,那它們的同質性就很弱。如果我們的同質性實際上太弱了,那就無法去中心化:如果某個重要人物能夠公佈一份被盜錢幣的名單、並表示自己不會接受來源於這些錢幣的支付,那你就必須對照這份清單仔細檢查給你支付的錢幣,並退還清單中的錢幣(以防自己收到的錢花不出去)。然後,每個人都受困於檢查不同權威發佈的黑名單,就為了避免收到不受歡迎的錢幣。這會增加摩擦和交易費用,並且讓比特幣(作為一種貨幣)不那麼有價值。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
在這裡,他說的是因為缺乏同質性而帶來的危險。假設你擁有一個 UTXO(比特幣錢幣),這個 UTXO 的歷史通常可以往前追溯一些步驟,涉及許多以往的交易的輸出。如果其中任何一個輸出參與了任何非法的、不受歡迎的或者可疑的活動,那麼你的錢幣的潛在支付對象就有可能拒收它。如果你認為自己的支付對象會根據一些中心化的白名單或者黑名單服務來檢查你的錢幣,你可能也會開始檢查自己收到的錢幣,就為了站在安全的位置。結果是,糟糕的同質性進一步惡化。
Adam Back 和 Matt Corallo 在 2016 年米蘭(Milan)的 Scaling Bitcoin 上作了關於同質性的演講。他們的想法是一致的:
比特幣需要同質性,才能正常工作。如果你收到了錢幣卻不能花費它,你就會開始懷疑它到底能不能花出去。如果你對收到的錢幣有疑問,那麼你會自然而然尋找汙點檢查服務,檢查 “這些錢幣是不是有問題”,然後人們就會開始拒絕交易。這個過程的實質是,它將比特幣從一種去中心化的免許可系統轉化為一種中心化的許可系統,你收到的其實是來自黑名單提供者的一個 “IOU(借條)”。
—— Matt Corallo 和 Adam Back,Fungibility Overview (2016)
看起來,隱私性和同質性是緊密相關的。如果隱私性很弱,比如來自不受歡迎的人的錢幣會被放到黑名單,那麼同質性也會弱化。同樣地,如果同質性很弱,隱私性也會弱化:如果已經有一個黑名單了,你就會去詢問黑名單提供者,某一個錢幣能不能收,而這就會暴露你的 IP 地址、郵箱地址和其它敏感信息。這兩項特性相互交叉得極為緊密,所以,我們很難孤立地討論它們中的任何一個。
3.7 隱私保護措施
為幫助人們保護自己的隱私不被洩露,許多技術被開發出來。其中最顯著的一個是,正如中本聰在白皮書中所說的,為每一筆交易使用一個專門的地址;但也還有別的措施。筆者無意在此指導讀者成為隱私性忍者。但是,“Bitcoin Q+A” 有一個隱私強化技術的簡要總結,並且一定程度上是按照實現的難易程度來排序的。閱讀它,你就會注意到,比特幣隱私性常常必須跟比特幣以外的隱私性同時處理。舉個例子,你不應該吹噓自己有多少比特幣,應該使用 Tor 和 VPN 。這篇文章也列舉了一些跟比特幣直接相關的隱私保護措施:
全節點
如果你不使用自己的全節點,你會向互聯網上的服務商洩露關於你的錢包的大量信息。運行一個全節點是很好的第一步。
閃電網絡
比特幣上存在許多協議,比如閃電網絡和 Blockstream 公司開發的 Liquid 側鏈,使用這些協議可以獲得一些隱私性幫助。
CoinJoin
這是一種可以讓許多人將各自的交易合併為一筆交易的辦法,這將讓區塊鏈分析更難分辨出誰在給誰支付。
在 Breaking Bitcoin 會議上的一個訪談中,Chris Belcher 給出了提升隱私性的一個有趣的現實案例:
有一家比特幣賭場。網上博彩在美國是非法的,所以 Coinbase 交易所的任何客戶,如果直接向 Bustabit 存入資金,都會讓自己的賬戶被凍結,因為 Coinbase 交易所在持續監控他們。Bustabit 做了幾件事。首先,是一種叫做 “避免找零” 的技術,走完這個流程,你就可以看出自己是否能構造一筆沒有找零輸出的交易。這樣做可以節約礦工費,同時阻撓區塊鏈分析。此外,他們還將自己重度重複使用的存款地址放到 joinmarket 中。從此,Coinbase 交易所得客戶就不再被凍結了。看起來,在此之後,Coinbase 的監控服務就無法分析出自己的客戶是否參與了 Bustabit 。所以說,這些分析算法,是可以打敗的。
—— Chris Belcher 論 “打破比特幣隱私性”,Breaking Bitcoin conference (2019)
他在 Bitcoin wiki 的隱私性頁面,以及其它地方,都提到了這個案例。
還請注意,更好的隱私性可以通過在比特幣上開發協議來實現,比如閃電網絡:

- 圖 4. 比特幣之上的層級可以添加隱私性 -
我們在第二章(中文譯本)指出,隨著技術層級的堆疊,信任需求只會上升,但隱私性似乎不是如此,它既可能得到提升,也可能惡化。為什麼呢?因為(如本書 8.2.4 節解釋的),在比特幣之上實現的層級,必須偶爾使用區塊鏈內的交易,否則就不是 “基於比特幣的”。而強化隱私性的層級通常會嘗試儘可能少使用基礎層,以減少在基礎層(比特幣區塊鏈)洩露的信息。
上圖介紹了可以在一定程度上提升你的隱私性的技術。但也還有別的方法。如本章開頭說的,比特幣是一個使用假名的系統。這就意味著,比特幣的用戶不會直接揭曉自己的真名和其他個人數據,而只會揭曉自己的公鑰。一個公鑰就是一個假名,一個用戶可以擁有許多假名。在一個理想的世界中,你的個人身份跟你的比特幣假名是分離的。不幸的是,因為本章前面提到的隱私性問題,這種分離常常會隨著時間逐步降級。
要緩解洩露你的個人數據的風險,你在一開始就不應該放棄它,也不該把它交給中心化的服務 —— 他們會構造出巨大的數據庫,這些數據庫本身可能洩露(見 3.5 節)。Bitcoin Q+A 的一篇文章解釋了 KYC 以及由此派生的危險。該文也建議了你可以採取的改善自身處境的少量步驟。
幸運的是,還有一些選項,使你可以從非 KYC 的來源購買比特幣。它們全都是點對點的交易所,意思是你直接跟另一個個人交易,不使用中心化的第三方。不過,有人除了比特幣也賣其它貨幣,我們敦促您小心。
—— Bitcoin Q+A,bitcoiner.guide
這篇文章建議你避免使用要求 KYC/AML 的交易所,轉而嘗試私人交易,或者使用去中心化的交易所(比如 bisq)。
想要關於隱私性對策的更深入材料,請參考前面提到的隱私性 wiki 界面,從 “提升隱私性的方法(非區塊鏈)(Methods for improving privacy (non-blockchain))” 標題開始。
3.8 結論
隱私性是非常重要的,只是難以完全實現。隱私性沒有一勞永逸的辦法。為了讓你的比特幣獲得良好的隱私性,你必須主動採取措施,有些措施較為昂貴,也比較費時。


