DeFi黑客攻擊背后的深入技術研究:隨機數不會說謊

由于以太坊gas費用在2021年牛市期間飆升至歷史新高,導致許多去中心化金融(DeFi)協議無法供臨時用戶使用,一些項目被迫部署在其他鏈上,

這導致了對跨鏈機制(稱為網橋)的需求激增,能夠將用戶資產從一條鏈安全地轉移到另一條鏈。跨鏈橋一般可以分為中心化托管橋(CCB)和去中心化非托管橋(DNCB)。

可以預料,對跨鏈橋的需求激增導致新一波不同聲譽的協議的出現,隨著跨鏈橋服務于越來越有價值的用戶資產池,惡意行為者和黑客注意到這一點只是時間問題。

一般來說,黑客會以DNCB為目標,因為他們可以利用缺乏經驗的開發團隊設計的協議中的缺陷。經驗豐富的黑客可以輕松利用邏輯錯誤或嵌入密碼學和設計不佳協議設計的漏洞。

這將我們帶到了今天:跨鏈橋多次襲擊的后果。又是一個久經沙場的行業的黑洞。回顧一下,僅在2021年7月:

  • ChainSwap于7月2日遭遇黑客攻擊,損失價值約80萬美元的用戶資產。
  • AnySwapV3流動性池在7月10日遭遇黑客攻擊,損失價值近800萬美元的USDC和$MIM。AnySwap是由FusionNetwork提供支持的跨鏈DEX,
  • ChainSwap再次遭受黑客攻擊,距離第一次黑客攻擊僅9天,這一次損失價值400萬美元的用戶資產。ChainSwap是一個由alameda支持的平臺,它將以太坊連接到幣安智能鏈。

這篇文章的主要目的是相對詳細地教育和介紹去中心化跨鏈橋的兩個經常被忽視但至關重要的元素:安全多方計算(SMPC)中涉及的隨機數“k”及其導數“R”,

7月2日被黑客利用的ChainSwap代幣 圖片:CoinGecko

AnySwap黑客:兩個并不總是比一個好

據報道,發生AnySwap黑客攻擊是因為使用相同的“R”值簽署了兩筆單獨的交易,黑客利用這兩個簽名反向設計了控制AnySwap跨鏈MPC賬戶的私鑰,竊取了用戶的資金。

但是,究竟什么是“R”值?

賬戶安全的致命弱點——“R”值

區塊鏈中的每個人都學到的第一課是您錢包中的資金由您的私鑰控制。

你們都聽過這句話:“不是您的密鑰,不是您的代幣。這個習語意味著任何擁有錢包私鑰的人都可以完全控制該錢包中的資產,事實上,將資金從一個賬戶轉移到另一個賬戶所需的唯一事情就是使用該賬戶的私鑰簽署交易。

目前,區塊鏈中使用的標準數字簽名算法是橢圓曲線數字簽名算法(ECDSA)。

ECDSA屬于數字簽名算法的“非確定性”類別。與在給定特定輸入的情況下總是給出相同輸出的“確定性”算法不同,即使給定相同的輸入,“非確定性”算法也可以產生不同的輸出,對于ECDSA,這意味著相同的數據集或交易將具有多個合法簽名。

每次使用ECDSA簽署交易時,都會生成一個加密安全的隨機數“k”。“k”然后用于計算橢圓曲線上的一個點,該點又用于計算“R”值,每次使用ECDSA簽署交易時,都必須生成一個新的隨機數“k”。

如果用同一個“k”來簽署多筆交易,那么兩筆交易的“R”值就會相同,私鑰就會泄露。這被稱為“k”值沖突,是2010年底新力PS3黑客攻擊的原因。這也是AnySwap黑客攻擊的原因,

接下來,我們來看看AnySwap黑客是如何逆向控制AnySwap跨鏈MPC賬戶的私鑰,竊取用戶資金。

兩個絕對不總是比一個好

考慮使用相同的隨機數“k”簽署兩個交易時會發生什么。由于“k”用于派生“R”,因此兩筆交易的“R”值也將相同,讓我們稱這兩個簽名為(s1)和(s2),

根據ECDSA,代表這兩筆交易的方程式是:

其中S1、S2和‘R’代表簽名數據和交易數據。這是區塊鏈上公開可見的所有數據。這留下了兩個剩余的未知參數:隨機數“k”和帳戶的私鑰,

那些記得高中代數的人會立即知道如何使用這兩個方程求解未知參數,因此,私鑰sk可以寫為:

AnySwap黑客注意到兩個交易具有相同的“R”值,這意味著兩者都使用了相同的隨機數“k”。這使得黑客可以使用簡單的代數對控制AnySwap跨鏈MPC賬戶的私鑰進行逆向工程,竊取用戶的資產,

關鍵錯誤是在多個交易中使用了相同的隨機數“k”,顯然,“k”不是隨機生成的!那么如何避免這種情況呢?

需要安全的多方計算

與基本交易簽名相比,安全多方計算(SMPC)確實相當復雜。然而,額外的努力是值得的。如果SMPC(與多重簽名非常不同)被正確地用于生成真正的隨機數,則不存在隨機數“k”被暴露的風險,

在利用SMPC時,簽名代理不再是個人,而是多人協同工作來簽署交易,

有了基本的交易簽名,一個真正的隨機數生成器就足以生成“R”值并保證安全性,但是,由于SMPC涉及多個不相關方,因此始終存在這些方中的一個或多個惡意的威脅。

因此,允許一個人單獨生成“R”值是不合理的,因為他們可能是惡意行為者,如果他們單獨控制隨機數“k”和“R”值,他們將能夠逆向工程帳戶的私鑰并竊取資產。因此,在使用SMPC生成‘R’值時必須遵守三個原則:

  1. “R”值不能由一個人產生;
  2. 沒有一個人可能知道用于推導“R”值的隨機數“k”;
  3. 隨機數“k”必須足夠隨機,才能無偏且不可預測,

用外行的話來說,SMPC需要一群人一起完成一項任務,但不知道他們在做什么,也不知道他們在和誰一起工作。

Wanchain的可公開驗證的秘密共享設計

Wanchain的跨鏈橋依賴于一種獨特的機制,該機制使用SMPC將跨鏈資產鎖定在由25個稱為Storeman節點的匿名方管理的帳戶中。Storeman節點的數量可以根據需要增加,

當從鎖定賬戶簽署交易時,“R”值由這25個Storeman節點通過一個稱為公開驗證秘密共享的過程共同確定。此過程可確保不會有兩筆交易具有相同的“R”值。

這25個Storeman節點所承擔的具體步驟如下:

  1. 每個Storeman節點(Pi)使用真隨機數生成器在本地生成一個隨機數“ki”;
  2. 每個Storeman節點(Pi)通過使用Shamir的秘密共享的安全通道與其他節點共享其隨機數“ki”。Shamir’sSecretSharing是一種秘密共享方案,旨在以分布式方式共享秘密,秘密被分成多個部分,稱為共享。可以使用最少數量的共享來重建秘密。Shamir的秘密共享經常用于密碼學,
  3. 每個Storeman節點收到其他節點的秘密份額后,收集秘密份額,乘以橢圓曲線基點,廣播結果;
  4. 每個Storeman節點使用廣播數據執行拉格朗日插值,以獲得橫坐標為“R”值的橢圓曲線點,

上述過程雖然相當復雜,但核心概念卻相當簡單。“R”值由25個Storeman節點共同確定。每個Storeman節點貢獻部分加密隨機數“k”。然后通過加密操作確定“R”值,

換句話說,這25個Storeman節點一起協同工作,而不知道它們在做什么,也不知道其他的Storeman節點是誰。

可公開驗證的秘密共享

可公開驗證的秘密共享可確保:

1. 任何兩筆交易不可能有相同的R值

這有兩個主要原因,首先,“R”值由25個Storeman節點共同決定,而不是由個人決定。理論上,只要有一個誠實節點,‘R’值就會是隨機的。其次,每個Storeman節點的貢獻是由真隨機數生成器生成的,

結合起來,如果兩個交易中所有25個Storeman節點選擇的隨機數的總和相同,則兩個交易將僅具有相同的“R”值。這種情況發生的概率是2^(-256)。當您閱讀這句話時,這比您現在被隕石擊中的可能性要小。

2. 用于導出“R”值的隨機數“k”保持隱藏

如前所述,一旦知道隨機數“k”,就可以對私鑰進行逆向工程。從鎖定帳戶簽署交易時,每個Storeman節點僅生成隨機數“k”的一部分。由于每個份額都通過安全通道傳輸,因此沒有Storeman節點可以恢復隨機數“k”的全部值,

換句話說,由于Wanchain的SMPC設計,用于導出“R”值的隨機數“k”始終保持隱藏狀態,Wanchain行業領先的跨鏈橋中使用的鎖定帳戶非常安全。私鑰不存在泄露的可能,

判決

Wanchain研發團隊不同意AnySwap黑客對采用SMPC的其他項目構成普遍風險,Wanchain研發團隊與業界其他實施SMPC的開發者保持一致,不認為允許AnySwap黑客攻擊的漏洞或錯誤視為一般風險,

該團隊還想強調隨機數在區塊鏈中的重要作用。隨機數不僅用于簽署交易,它們用于多個技術設計層面,是PoS共識和分片算法的重要組成部分,直接決定了區塊鏈網路的安全性,

有效地生成可靠的隨機數并非易事,它是整個數學和密碼學領域的圣杯。才華橫溢的人們將他們的一生和他們的思想奉獻給了優化隨機數的生成,

世界各地的區塊鏈開發者需要延續這一傳統,開發更好的分布式隨機數生成算法,同時繼續優化鏈上隨機數生成,實際上,DeFi的未來是整個區塊鏈,它將建立在今天所做的工作之上,

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧