Dragonfly Capital 研究員說,可攻破Mimblewimble 隱私模型
編者按:本文來自鏈聞(ID:chainnewscom)編者按:本文來自
鏈聞(ID:chainnewscom)
鏈聞(ID:chainnewscom)
編譯:詹涓
鏈聞(ID:chainnewscom)
鏈聞(ID:chainnewscom)
編譯:詹涓

,作者:Ivan Bogatyy,Odaily經授權轉載。
「每週60 美元的AWS 便可發現96% 的Grin 交易確切地址。很明顯,Mimblewimble 本身還不夠強大,不足以提供健壯的隱私保護。」
撰文:Ivan Bogatyy,區塊鏈投資基金Dragonfly Capital 研究員,此前在區塊鏈投資基金MetaStable Capital 擔任普通合夥人
Mimblewimble 的隱私保護功能從根本上是有缺陷的。我只需每週支付60 美元的AWS 費用,就能實時發現96% 的Grin 交易發起者和收款者的確切地址。
二級標題
在過去的兩年中,作為一種新興的輕量級隱私協議,Mimblewimble 越來越受歡迎。 Mimblewimble 是2016 年由一個化名為Tom Elvis Jedusor 的黑客發明的,他在一次IRC 聊天中拋出了此協議的文字描述,然後就人間蒸發了。此後,Mimblewimble 最著名的幾個應用包括所謂「公平發布」的隱私代幣Grin、由VC 支持的Tari 以及BEAM 項目,甚至有人考慮將它集成到萊特幣中。
二級標題
已經有一些研究人員假設過Mimblewimble 可能存在的隱私弱點。我的貢獻在於:展示執行攻擊的精確方法,證明其在實時網絡上的可行性,並量度其有效性。在對Grin 的真實測試中,我發現,揭開交易流信息的成功率達到96%。因此,現在顯然不能指望Mimblewimble 能提供健壯的隱私保護。
這裡是對Mimblewimble 實施攻擊的一個技術性深度研究,包括開源代碼、可複現的數據和技術類常見問答。通過下文,我將對可鏈接性提供一個高層次的直觀解釋,介紹如何發起攻擊,以及它對隱私技術的意義。
二級標題
什麼是可鏈接性?
非常重要的一點是,理解此次攻擊意味著什麼、不意味著什麼。
這種攻擊沒有讓我們得出人們收取款項的具體金額。 Mimblewimble 使用普通橢圓曲線加密(佩德森承諾)成功地混淆了支付金額。但這種攻擊確實能讓我們找出誰給誰付款。換句話說,它讓我們將各筆交易鏈接起來,並確認支付流。

為什麼這是一個大問題?可能需要展開解釋下。
假設Coinbase 知道某個地址屬於一個叫Daniel 的委內瑞拉人,而你作為一個美國用戶,想在Coinbase 上兌換現金。但在揭開了被混淆的交易圖之後,Coinbase 知道了,你從Daniel 那裡收到了錢,儘管他們不知道你收到了多少。基於OFAC (海外資產管理辦公室)關於委內瑞拉的政策,Coinbase 將關閉你的賬戶。
在Zcash 中,每筆交易的匿名集包括所有獲得了屏障防護的幣。從信息論的角度來看,這是可能做到的最大匿名性。

二級標題

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

二級標題
關於此次攻擊的高階概述
那麼,在Mimblewimble 中,將交易圖「去匿名化」到底是怎麼做到的呢?
我注意到,儘管對支付金額進行了加密,Mimblewimble 仍然會留下一個可鏈接的交易圖。但是協議設計者意識到了這一點,所以Mimblewimble 使用兩種主要的技術來對抗可鏈接性:第一種是全區塊直通聚合(full-block cut-through aggregation),第二種是蒲公英協議(Dandelion )。
區塊直通背後的思路是,當交易在一個區塊內積累時,這些交易將聚合為一個「超級交易」。這種「超級交易」基本上就像一個巨大的代幣混合(CoinJoin)——本質上,所有的輸入和輸出都被丟進一個巨大的桶裡,沒法輕易確定這個桶裡誰付錢給了誰。只是一堆輸入變成了一堆輸出,金額被模糊了。
等等,真的嗎?就這些?
Grin 團隊其實提出了另一條防線:蒲公英協議。蒲公英是CMU (卡耐基梅隆大學)研究人員開發的一種網絡技術,它試圖模糊交易的發起方。
這對於混淆交易者的IP 非常有用。但是蒲公英協議在Grin 中還有第二個功能:它恰好可以擊敗嗅探器存檔節點。因為每一筆交易都是從一個蒲公英鏈開始的,只要兩筆交易在其蒲公英鏈中交叉,它們就會更早被聚合。如果發生這種情況,那麼在將交易廣播給所有觀察者時,嗅探器節點已經無法拆解它們了。它們已經被混幣了(CoinJoined)。
二級標題
默認情況下,每個Grin 節點連接8 個其他對等點。但是通過猛增對等點的數量,我可以將我的嗅探器節點連接到網絡中的所有其他節點。假設我在線時間足夠長,最終幾乎每個節點都會連接到我,使我成為一個超級節點。
二級標題
一旦我成為超級節點,很有可能任何一筆交易的蒲公英路徑都會經過我。我基本可以在交易聚合之前捕捉到它:唯一不可能的情況是,在我看到它們之前,兩個交易已經在蒲公英路徑上相交。如果我在它們聚合之前看到其中的某一筆交易,我就可以使用一些簡單的代數把它們拆解出來。
在我發起的攻擊中,我能夠連接96% 的交易,而且在Grin 網絡中的總共3,000 個節點中,我只連接了200 個節點。如果我多花點錢,我可以很容易地連接到3,000 個節點來分解幾乎所有的交易。做這件事時我也不需要成為一個單一的超級節點;通過啟動3,000 個具有獨立IP 的節點(每個節點僅連接到一個對等節點),可以實現相同的攻擊。我只要嗅探所有交易數據並將其轉儲到一個中央主數據庫中,攻擊就同樣有效。


