加密貨幣≠匿名,一文詳解加密貨幣隱私保護基礎知識

在媒體的描述中,加密貨幣經常自帶「匿名」屬性,但另外一些文章指出,加密貨幣交易活動能夠被輕易追蹤到,甚至比法幣交易更容易被追蹤。這兩種說法要達成一致,重要的是要了解到:加密貨幣的隱私保護具體是指什麼?

這個問題要回答起來可沒有看上去那麼容易,因為「隱私保護」在區塊鏈世界中也有很多層面的意思。

要成為一名深諳區塊鏈技術的開發者、一名投資人或者加密貨幣的參與者,理解加密體系中「隱私保護」真正意味著什麼,至關重要。我們撰寫此文,分享自己在這方面的一些心得與技巧。

想象一下,Alice 開通一個 Venmo 賬號 美國一款小額支付手機應用,目前已被 Paypal 收購,她需要提供並驗證其真實姓名。因為 Venmo 公司知道了她的真實姓名,且有可能會與其他人分享這一信息, Alice 損失了其身份的部分隱私。如果 Bob 通過 Venmo 給 Alice 轉賬 20 美元,並在她的信息流裡分享了這一交易,那麼 Alice 的交易信息已是公開化,但她個人賬上迄今為止有多少錢,只有 Venmo 知道,別人並不知道。如果假設 Alice 創建一個比特幣地址,要求 Bob 給她轉賬價值 20 美元的比特幣。相比 Venmo 交易,Alice 在個人真實身份方面獲得了一定的隱私保護,因為她的比特幣地址並不與她的真實姓名相關聯。不過,事實上比特幣從 Bob 的地址轉到 Alice 的地址,以及 Alice 收到比特幣轉賬後的比特幣總數額,對於比特幣區塊鏈中的所有人都是透明信息。

所以,我們可以瞭解到,使用了比特幣,Alice 在某些方面取得了隱私保護,但在另外一些方面又失去了隱私。

當使,用不同的加密貨幣進行交易時,這種情況司空見慣。

在加密貨幣世界中,我們認為隱私保護主要包含三個層面的內容:

利用加密貨幣進行某種操作的用戶的身份信息

用戶相應操作中的具體交易數據

集合所有交易信息的區塊鏈整體狀態

區塊鏈協議可以採用密碼學方式,使得局外人不可能 或者極為困難 知曉或者計算推演出上述每個環節中的不同部分。與此同時,想要挖掘區塊鏈特性的攻擊者能綜合不同信息碎片,來猜測出甚至直接總結出他們想要的信息。隱私保護的手段就變成通過協議設計、在具體屬性領域給潛在攻擊者暴露儘可能少的信息。

重要的是,關於某個具體屬性是否屬於隱私保護範疇,不是那麼黑白分明的。譬如,它對某些外部觀察者已是透明信息,但其他外部人不清楚,或者外部觀察者也許機緣巧合能猜到,但不是一定能猜到。這種不明確之處意味著譬如「XX 幣能確保隱私」、或者「A 幣比 B 幣的隱私保護做得更好」之類的簡單陳述常常無法成立。且有時措辭不謹慎,這類說法會造成混淆和誤解,因此有人精心編排這樣的說法用來誤導他人。

我們推薦更仔細的表述,譬如「門羅幣的交易額是被作為隱私受保護的」、甚至「由於 ZCash 幣的某種匿名性設定,發送方的地址是作為隱私被保護的」。

在這篇文章的後面,我們還會討論到:某些情況下,例如零知識證明這樣的密碼學工具能幫助我們對此類說法進行量化分析,甚至提供嚴格證據。

首先,讓我們先從與加密貨幣相關的隱私保護開始談起。

身份信息隱私,即匿名性

人們聽到隱私一詞時,最先出現在腦海中的往往是匿名性,這意味著用戶的行為與他們在真實世界的身份信息不扯上任何關聯。

一種實現這種隱私保護的途徑是很容易實現的「假名」方式;實際上我們在接受各種網絡服務時已經習慣於使用假名,譬如註冊郵箱名 [email protected],而不是使用真實姓名。在這種情況下,在這種網絡協議中的大多數互動中,[email protected] 主人的真實/合法姓名 假設叫 Alice Jones 不會暴露出來。

在多數加密貨幣體系中,譬如比特幣,用戶得到一對公鑰/私鑰簽名,公鑰類似於用戶名,私鑰類似於密碼。關鍵是,只有在某個人知道你準確的私鑰 不管是合法取得還是非法竊取,才能製造出由你「簽字」的信息,在這個意義上,任何人可以 用你的公鑰 查看擁有私鑰的人發送的信息。這一特質可以讓用戶用其掌握的幾個公鑰 或地址 中的一個接收比特幣這樣的加密貨幣,用自己的私鑰來發送加密貨幣,這一切都沒有中心化權威的干預。這些理念組成了現代數學密碼學的基石。不過,擁有一對私鑰/公鑰只是一種在去中心化環境中「使用假名」掩飾真實身份的一種辦法。

「使用假名」通常是加密貨幣背後協議中天然的屬性,讓媒體和大眾誤認為所有的加密貨幣都是「匿名的」,或者至少比僅僅使用假名有更強的匿名性。一點都不奇怪,這種誤解推動用戶利用加密貨幣進行一些不法行為,譬如線上賭博、或者暗網交易。然而,真實的隱私保護水平可能讓這些用戶大失所望。他們確實可以利用公開地址發送或接收比特幣,在交易中不涉及其真實姓名,但用戶的某些行為可以將公開地址與他們在現實世界的真實身份扯上關係。

首先,多數用戶在交易所中先是用法幣買進比特幣。法幣交易通常需要與現行的銀行系統發生關聯,後者是需要驗證現實世界的真實身份的。因為比特幣中的所有交易數據是完全公開的 上一節中講過,這意味著所有人都可以看到交易所數據庫,將具體地址與現實世界的真實身份聯繫起來。舉個例子來說明:如果 Alice 從 Coinbase 提取了 0.1 個比特幣到她控制的一個地址,譬如 36n452uGq1x4mK7bfyZR8wgE47AnBb2pzi,然後 Coinbase 就會把她的真實姓名與這個地址掛鉤 。如果她從一個線上非法體育博彩網站提取 0.2 個比特幣,外部觀察者就可能推斷出,並可以提供不可篡改的公開證據證明, Alice 參與非法線上賭博活動。

Chainalysis 等公司已經採用了此類被稱為區塊鏈分析的技術,將公開地址與背後擁有者的身份掛起鉤來,並分析交易走向。

加密貨幣≠匿名,一文詳解加密貨幣隱私保護基礎知識

圖為 2009 -2012 年區塊鏈分析的一個早期案例;數據來源:https://doi.org/1

其次,進行加密貨幣交易需要通過互聯網發送一些信息。在某些情況下,互動的元數據能被用來追蹤用戶發起這些交易時使用的 IP 地址,即使用戶使用了類似「洋蔥 Tor」這類所謂安全瀏覽器,也有可能被追蹤 IP 地址。

上述這兩個原因綜合在一起,意味著單憑加密貨幣「使用假名」的特質而利用元數據進行匿名交易近似是「不可能完成的任務」。

交易數據的隱私保護

當人們談論所謂「隱私幣」時,通常指的是這些幣種的交易在某些方面具有隱私保護。

寬泛而言,交易是一名用戶採取的修改這條區塊鏈狀態的行動。譬如,Alice 從她控制的一個地址向 Bob 控制的一個地址發送了 X 個代幣。從上帝視角來觀察,這個極為簡單的例子也包含了多重數據:

Alice 的一個地址,譬如 36n452uGq1x4mK7bfyZR8wgE47AnBb2pzi

Alice 與 Bob 地址的鏈接

Bob 的一個地址

代幣發送的數目

更為複雜的交易會包含其它類型信息,譬如以太坊中的智能合約代碼。 不同的區塊鏈以不同的方式展示交易數據,其中一些允許某些環節是第三方無法看到的,第三方只能看到區塊鏈原始數據。所以我們本節命名為「交易數據的隱私保護」,而不是「交易的隱私保護」,因為不同類型的交易數據能在不同的程度上得到相應的隱私保護。

能得到隱私保護的數據中,最重要的是 Alice 和 Bob 的地址。如果它們得到隱私保護,就無從識別交易的發送者和接受者的真實身份,就會阻撓前文提到的那種區塊鏈分析技術。

譬如,如果 Alice 從交易所幣安購買了具有這種技術特性的門羅幣,並提取了該幣,幣安就無法將這一提取動作與 Alice 之後如何處置這些門羅幣關聯起來。同樣的,如果 Bob 從 Alice 那裡收到門羅幣,他也無法知道 Alice 是從幣安購買的這些門羅幣。

加密貨幣≠匿名,一文詳解加密貨幣隱私保護基礎知識

但讓問題更為複雜的是,交易數據是否有隱秘性不是非黑即白的問題。 譬如以 Alice 的地址為例,這可以由匿名集 anonymity set大小來衡量,匿名集是指根據區塊鏈數據可以辨識出的交易發送方地址的最小集合。匿名集越大,區塊鏈交易數據中關於發送者的信息就越少。譬如比特幣的匿名集大小為 1,而門羅幣的匿名集就要大得多。

狀態隱秘性

在比特幣區塊鏈中,所有交易數據都是公開的,意味著一位看到區塊鏈中所有的區塊外部觀察者可以復原賬本、查明這些地址的賬戶金額 儘管這些金額可能被分配進不同的「未使用交易輸出 UTXO」,即我們所說的區塊鏈整體狀態。不過,如果交易的某些部分是隱秘的,即便掌握了整個區塊鏈的信息,也不會讓用戶知道整體狀態。這些信息是在不同的用戶間分享的,區塊鏈保障用戶信息間的一致性。

儘管用戶知曉區塊鏈狀態中的某一特別屬性只取決於協議,取決於其瞭解的觸發這種狀態形成的交易信息,但是兩者之間的聯繫會觸發複雜的互動。因此,狀態的不同特質可以在某種程度受到隱私保護。

以下是幾個例子:

所有地址列表

某一具體地址的賬戶餘額,譬如 0x2569C92345013F55CFb47C633c57F2f5756B9acA 有 1 個 ETH

某個特定地址上的智能合約代碼,譬如 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d 地址上的加密貓合約

合約的具體狀態,譬如加密貓合約存儲的數據

舉個簡單的推演例子:ZCoin 每筆交易的數量是公開的,但發送者和接受者的地址是隱秘的,意味著用戶賬戶餘額依然是隱秘信息。另一方面,在隱私保護區塊鏈格式 Mimblewimble 中,每個交易的具體數額是隱秘的,但發送者和接受者是公開的,這提供了保護用戶賬戶餘額隱私的另一種途徑。Mimblewimble 中的用戶必須保存好自己賬戶餘額的信息,因為該區塊鏈只存儲用以保障用戶不會超支的有限信息。

在多數情況下,交易中加入更多的隱私保護措施,對用戶個體而言是有益的,但對區塊鏈整體狀態未必是好事。譬如,如果某種加密貨幣的總髮行數量是隱私的,用戶無法判斷該區塊鏈協議中的總供應時間表等具體屬性;此外,很難發現攻擊者利用算法漏洞或者協議後門進行非授權鑄幣。

部分現有區塊鏈協議中的隱私保護特質

加密貨幣≠匿名,一文詳解加密貨幣隱私保護基礎知識

移除

點擊此處添加圖片說明文字

不同的隱私保護方式

我們到目前為止主要關注特定信息是否是公開的或者是隱秘的。此外,梳理一下不同區塊鏈所採用技術的隱私保護方式也是有所裨益的。我們粗粗梳理了這些不同的隱私保護方式。

「第二層」協議

建立在區塊鏈底層技術之上的「第二層」協議,譬如閃電網絡、狀態通道技術或者 Plasma 讓小部分用戶彼此間進行「鏈下」交易。這意味著所有中途狀態存儲在這些用戶間,主區塊鏈上只會定期寫入狀態變化。因此中途狀態對外部觀察者而言是隱形的,因為它們從未寫入主區塊鏈。當然第二層協議本身也能有 也可以選擇沒有 面向所有用戶而對鏈下狀態進行不同層級的隱私保護,所以這更多是由設計理念而不是隱私保護技術決定的事情。因此我們不會進一步重點關注第二層協議,雖然在感興趣的讀者眼中,裡面可以挖掘的內容浩如煙海。

零知識證明

當協議用戶提供零知識證明,就有了零知識證明基礎上的隱私保護,譬如,在不顯示某消息本身的基礎上展示知曉該消息。當應用正確時,這種加密技術可以同時保障交易/狀態的隱私,以及區塊鏈功能完備。

用戶的最佳實踐

即便是使用那些不附加任何隱私保護功能的加密貨幣,用戶也有辦法在一定程度上抵禦網絡安全威脅和區塊鏈分析技術。為了抵禦惡意者利用網絡元數據對用戶進行匿名攻擊,用戶可以使用 Tor 或者 I2P 來掩蓋其交易的原始 IP。為了抵禦區塊鏈分析,一般建議用戶為收到的每筆款項更換一個新地址。門羅和 Verge 等加密貨幣提供了這種功能,作為一個原生選項,當然,在部分加密貨幣中,這些地址依然能與用戶之後的操作關聯起來。

可信執行環境 TEE

可信執行環境是一個處理器,譬如英特爾 SGX,其宣稱能用密碼技術保護上面運行數據和代碼的健全性和機密性。包括 Ekiden 由宋曉冬教授領軍的 Oasis Labs 將其商業化運作 在內的幾個協議宣稱將採用可信執行環境。譬如,用戶賬戶餘額可以被私鑰加密,存儲在可信執行環境中,它們只能在「可信執行環境」中解密和修改。這其實是把確保隱私保護的責任交給了可信執行環境,而可信執行環境本身可能也有其弱點。譬如側鏈攻擊或許能破解出私鑰,英特爾 SGX 稍早爆出了此類漏洞,另外,現有的可信執行環境可能需要製造商的許可,或者允許製造商破解數據機密性,當然,Keystone 和 Gradient 等替代方案試圖解決這一問題。

總之,當考慮加密貨幣的隱私保護時,不要使用「我們的幣比他們的幣更具隱秘性」等含混不清的表述。我們建議儘量去搞清楚以下問題:有關世界的 哪些 狀態信息 何時 受到 何種程度的 隱私保護?對 哪些人保密?這可以讓我們更具針對性分析隱私保護技術以及它們進行的交易。

(該文獲得作者授權發表;由 Perry Wang 編譯)


分享到:


相關文章: