「每週 60 美元的 AWS 便可發現 96% 的 Grin 交易確切地址。很明顯,Mimblewimble 本身還不夠強大,不足以提供健壯的隱私保護。」

撰文:Ivan Bogatyy,區塊鏈投資基金 Dragonfly Capital 研究員,此前在區塊鏈投資基金 MetaStable Capital 擔任普通合夥人
編譯:詹涓

Mimblewimble 的隱私保護功能從根本上是有缺陷的。我只需每週支付 60 美元的 AWS 費用,就能實時發現 96% 的 Grin 交易發起者和收款者的確切地址。

這個問題是 Mimblewimble 所固有的, 我認爲沒有辦法予以修補。這意味着,當涉及到隱私時,Mimblewimble 不該被視爲 Zcash門羅幣 (Monero) 的可行替代品。

在過去的兩年中,作爲一種新興的 輕量級隱私協議 ,Mimblewimble 越來越受歡迎。Mimblewimble 是 2016 年由一個化名爲 Tom Elvis Jedusor 的黑客發明的,他在一次 IRC 聊天中拋出了此協議的文字描述,然後就人間蒸發了。此後,Mimblewimble 最著名的幾個應用包括所謂「公平發佈」的隱私代幣 Grin 、由 VC 支持的 Tari 以及 BEAM 項目,甚至有人考慮將它集成到 萊特幣 中。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

已經有一些研究人員假設過 Mimblewimble 可能存在的隱私弱點。我的貢獻在於:展示執行攻擊的精確方法,證明其在實時網絡上的可行性,並量度其有效性。在對 Grin 的真實測試中,我發現,揭開交易流信息的成功率達到 96%。因此,現在顯然不能指望 Mimblewimble 能提供健壯的隱私保護。

這裏是對 Mimblewimble 實施攻擊的一個技術性深度研究,包括開源代碼、可復現的數據和技術類常見問答。通過下文,我將對 可鏈接性 提供一個高層次的直觀解釋,介紹如何發起攻擊,以及它對隱私技術的意義。

什麼是可鏈接性?

非常重要的一點是,理解此次攻擊意味着什麼、不意味着什麼。

這種攻擊沒有讓我們得出人們收取款項的具體金額。Mimblewimble 使用普通橢圓曲線加密 (佩德森承諾) 成功地混淆了支付金額。但這種攻擊確實能讓我們找出誰給誰付款。換句話說,它讓我們將各筆交易鏈接起來,並確認支付流。

爲什麼這是一個大問題?可能需要展開解釋下。

假設 Coinbase 知道某個地址屬於一個叫 Daniel 的委內瑞拉人,而你作爲一個美國用戶,想在 Coinbase 上兌換現金。但在揭開了被混淆的交易圖之後,Coinbase 知道了,你從 Daniel 那裏收到了錢,儘管他們不知道你收到了多少。基於 OFAC (海外資產管理辦公室) 關於委內瑞拉的政策,Coinbase 將關閉你的賬戶。

交易所當然會對交易圖有很多瞭解,因爲它們擁有那些將加密幣兌換爲法幣的用戶的 KYC 信息。

再舉個例子,假如某個威權政府知道,某個特定的地址屬於一位政治異見人士。你向這位異見者捐了一小筆錢。稍後,當你用 Mimblewimble 協議將錢發送到本地的交易所時,該交易所將與政府共享你的交易數據。因爲政府可以看到交易圖的全貌,他們現在知道,你支持過一個政治異見人士。

這種類型的攻擊在 Zcash 是不可能實現的。因爲 Zcash 是「不可鏈接」的,換句話說,每一筆 Zcash 交易都有一個龐大的匿名集。匿名集本質上是一組交易,你的交易無法從中分辨出來。可以把它想象成混入人羣:匿名集越大,你的交易就會混入到更大的「人羣」中。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

在 Zcash 中,每筆交易的匿名集包括所有獲得了屏障防護的幣。從信息論的角度來看,這是可能做到的最大匿名性。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

在門羅幣中,每筆交易的匿名集是所有 (可信的) 誘餌交易的集合。雖然門羅幣客戶端允許你指定誘餌集的大小,但當前的缺省值爲 11。門羅幣在安全採樣誘餌方面也有自己的問題,但我認爲它基本可行,看怎麼取捨了。

人們本以爲 Mimblewimble 的匿名集看起來是這樣的:

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

但實際上,它是這樣的:

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

這將 Mimblewimble 的匿名集縮小到僅一個地址。

需要說明的是,我並沒有指責 Grin 的意思。我非常尊重 Grin 社區和核心開發人員,在聽取了我的問題後,他們提供了極大的幫助。

和比特幣或其他非隱私幣相比,Grin 仍然提供了更強大的隱私模型,畢竟其交易金額是安全加密的。但與 Zcash 或門羅幣相比,Mimblewimble 提供了一個從嚴格意義上來看較弱的隱私模型,這使得它不足以滿足許多實際的隱私用例。

關於此次攻擊的高階概述

那麼,在 Mimblewimble 中,將交易圖「去匿名化」到底是怎麼做到的呢?

我注意到,儘管對支付金額進行了加密,Mimblewimble 仍然會留下一個可鏈接的交易圖。但是協議設計者意識到了這一點,所以 Mimblewimble 使用兩種主要的技術來對抗可鏈接性:第一種是 全區塊直通聚合 (full-block cut-through aggregation) ,第二種是 蒲公英協議 (Dandelion)

區塊直通背後的思路是,當交易在一個區塊內積累時,這些交易將聚合爲一個「超級交易」。這種「超級交易」基本上就像一個巨大的代幣混合 (CoinJoin) ——本質上,所有的輸入和輸出都被丟進一個巨大的桶裏,沒法輕易確定這個桶裏誰付錢給了誰。只是一堆輸入變成了一堆輸出,金額被模糊了。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

聽起來沒毛病,對嗎?只有一個問題:這個混幣 (CoinJoin) 必須一次構建一個交易。由於交易不斷地被創建並從各個不同的地方廣播,如果你運行一個嗅探器節點來在直通聚合完成之前獲取所有的交易,那麼解開 CoinJoin 就很簡單了。任何嗅探器節點都可以檢測網絡,並在各交易聚合之前記錄原初的交易。將你在 P2P 網絡中檢測的所有消息歸檔,其實是非常容易的一件事情。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

等等,真的嗎?就這些?

Grin 團隊其實提出了另一條防線: 蒲公英協議 。蒲公英是 CMU (卡耐基梅隆大學) 研究人員開發的一種網絡技術,它試圖模糊交易的發起方。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

通常,在像比特幣這樣的加密貨幣中,交易的發起方只是向所有的對等方大聲宣告他們的交易,然後通過 P2P 網絡迅速傳播。但在蒲公英協議中,每一筆交易的廣播都是從一個祕密的電話遊戲開始的。發起方只向一個對等點悄悄發佈交易,而這個對等點又向另一個對等點悄悄發佈,就這樣鏈式傳遞。在隨機跳了幾次之後,最後一個對等點會像在比特幣中一樣宣告交易。但是這個對等點離發起方實在太遠了,任何觀察者都不可能分辨出誰是鏈條的起點。

這對於混淆交易者的 IP 非常有用。但是蒲公英協議在 Grin 中還有第二個功能:它恰好可以擊敗嗅探器存檔節點。因爲每一筆交易都是從一個蒲公英鏈開始的,只要兩筆交易在其蒲公英鏈中交叉,它們就會更早被聚合。如果發生這種情況,那麼在將交易廣播給所有觀察者時,嗅探器節點已經無法拆解它們了。它們已經被混幣了 (CoinJoined)

這是 Grin 針對嗅探器節點以防禦可鏈接性的主要措施。但是有一種簡單的方法可以破解它。

默認情況下,每個 Grin 節點連接 8 個其他對等點。但是通過猛增對等點的數量,我可以將我的嗅探器節點連接到網絡中的所有其他節點。假設我在線時間足夠長,最終幾乎每個節點都會連接到我,使我成爲一個超級節點。

一旦我成爲超級節點,很有可能任何一筆交易的蒲公英路徑都會經過我。我基本可以在交易聚合之前捕捉到它:唯一不可能的情況是,在我看到它們之前,兩個交易已經在蒲公英路徑上相交。如果我在它們聚合之前看到其中的某一筆交易,我就可以使用一些簡單的代數把它們拆解出來。

Dragonfly Capital 研究員說,可攻破 Mimblewimble 隱私模型

在我發起的攻擊中,我能夠連接 96% 的交易,而且在 Grin 網絡中的總共 3,000 個節點中,我只連接了 200 個節點。如果我多花點錢,我可以很容易地連接到 3,000 個節點來分解幾乎所有的交易。做這件事時我也不需要成爲一個單一的超級節點;通過啓動 3,000 個具有獨立 IP 的節點 (每個節點僅連接到一個對等節點) ,可以實現相同的攻擊。我只要嗅探所有交易數據並將其轉儲到一箇中央主數據庫中,攻擊就同樣有效。

那麼 Mimblewimble 還有救嗎?

看情況啦。我相信,正如目前所設想的那樣,Grin 沒有明確的途徑通向不可鏈接性。就像我在這篇技術文章中討論的那樣,僅僅提高蒲公英因子,並不足以應對一個雄心勃勃的攻擊者。

但除了可鏈接性,Mimblewimble 仍然具有獨特的價值!它支持直通聚合,這是一種針對完整節點的有效壓縮技術,並可有效隱藏交易的金額。如果你需要較高的隱私保護,你可以將 Mimblewimble 與其他使交易圖模糊化的協議結合使用,例如在以太坊 9¾ 中,它將 Mimblewimble 與一種 Zerocash 風格的承諾無效器方案結合在一起。

但很明顯,Mimblewimble 本身還不夠強大,不足以提供健壯的隱私保護。

比特幣問世已經有 11 年的歷史了,但加密貨幣仍處於起步階段。就在不久之前,在 Zcash 和門羅幣中都發現了毀滅性的 bug。這是意料之中的事情——大多數有趣的技術仍然處在基礎科學階段。

但這就是科學進步的方式:我們提出新的理論,然後不斷推翻它們,直到剩下的理論經受住時間的考驗。

感謝 Haseeb Qureshi 對本文的巨大幫助,以及他對文中匿名集動畫製作的協助。還要感謝 Oleg Ostroumov、Elena Nadolinksi、Mohamed Fouda、Lucas Ryan 和 Nader Al-Naji 審閱本文初稿。感謝 Jake Stutzman (NEAR Protocol)製作了蒲公英協議和區塊集合的圖表。

來源鏈接:mp.weixin.qq.com