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’值時必須遵守三個原則:
“R”值不能由一個人產生;
沒有一個人可能知道用於推導“R”值的隨機數“k”;
隨機數“k”必須足夠隨機,才能無偏且不可預測。
用外行的話來說,SMPC需要一群人一起完成一項任務,但不知道他們在做什么,也不知道他們在和誰一起工作。
Wanchain的可公开驗證的祕密共享設計
Wanchain的跨鏈橋依賴於一種獨特的機制,該機制使用SMPC將跨鏈資產鎖定在由25個稱為Storeman節點的匿名方管理的帳戶中。Storeman節點的數量可以根據需要增加。
當從鎖定账戶籤署交易時,“R”值由這25個Storeman節點通過一個稱為公开驗證祕密共享的過程共同確定。此過程可確保不會有兩筆交易具有相同的“R”值。
這25個Storeman節點所承擔的具體步驟如下:
每個Storeman節點(Pi)使用真隨機數生成器在本地生成一個隨機數“ki”;
每個Storeman節點(Pi)通過使用Shamir的祕密共享的安全通道與其他節點共享其隨機數“ki”。Shamir’sSecretSharing是一種祕密共享方案,旨在以分布式方式共享祕密。祕密被分成多個部分,稱為共享。可以使用最少數量的共享來重建祕密。Shamir的祕密共享經常用於密碼學。
每個Storeman節點收到其他節點的祕密份額後,收集祕密份額,乘以橢圓曲线基點,廣播結果;
每個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的未來是整個區塊鏈,它將建立在今天所做的工作之上。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
GLIF代幣空投:Filecoin最大DeFi協議开啓一億枚代幣的分發!
Glif是Filecoin上最大的DeFi協議,正在推出其原生代幣。總計將向用戶空投1億枚GLIF...
World Liberty Financial能否改變穩定幣遊戲規則?
特朗普加密項目“World Liberty”計劃發行穩定幣,消息人士稱據悉,特朗普加密項目計劃推出...
鏈向財經
文章數量
4粉絲數
0