作者:KEYHUNTER
鏡像 SipHash 漏洞攻擊(針對 SipHash 初始化的部分金鑰重複使用攻擊)
「鏡像 SipHash 漏洞攻擊」這個關鍵漏洞凸顯了比特幣基礎設施所使用加密技術的根本安全問題。 SipHash 金鑰初始化中的一個缺陷導致金鑰的一半被複製,從而為攻擊者打開了方便之門。攻擊者極有可能利用此漏洞發動碰撞攻擊、拒絕服務攻擊,並在遠低於安全要求的時間內恢復私有狀態元件。這種攻擊會破壞交易的完整性,損害儲存和索引系統,並危及比特幣網路參與者和營運服務的隱私。 bitcoinwiki +1
這個漏洞不僅凸顯了正確實施加密協議的重要性,也呼籲對金融系統的加密基礎設施進行持續的審計和更新。 Mirror SipHash漏洞攻擊事件向加密貨幣生態系統發出明確警告:任何看似微小的編碼錯誤都可能造成嚴重後果:在區塊鏈領域,它甚至可能導致技術和經濟災難。
Mirror SipHash漏洞:關鍵漏洞和攻擊:對比特幣和整個區塊鏈基礎設施安全的根本威脅
本文探討了比特幣加密貨幣的一個關鍵漏洞的具體細節及其對安全性的影響,並描述了該漏洞的存在和分類。
SipHash漏洞對比特幣的影響
SipHash 被用於一些 Bitcoin Core 實作、第三方函式庫以及負責快速哈希短資料的模組中,例如用於索引、布隆過濾器表以及會話或交易哈希表。如果 SipHash 的實作中存在金鑰初始化錯誤(如前所述:金鑰的某一部分重複),則會導致整個加密方案的強度下降 。
比特幣面臨的關鍵風險:
- 攻擊者可以產生大量訊息,這些訊息會產生可預測的雜湊值,從而導致哈希碰撞,並可能對儲存、記憶體池或位址/事務匹配機制發動拒絕服務 (DoS) 攻擊。 github +1
- 如果金鑰部分洩露,攻擊者可以執行欺騙攻擊、繞過身份驗證機制、垃圾郵件過濾,或猜測依賴 SipHash 的私有或服務值。
- 該漏洞會影響使用存在漏洞的 SipHash 進行索引、地址哈希、建立布隆過濾器和其他安全支援功能的錢包、交易所和工具。
攻擊的科學名稱
此攻擊的暫定名稱為“鏡像 SipHash 漏洞攻擊”,或用科學術語來說,為“SipHash 初始化部分金鑰重用攻擊”。在密碼學界,它也被歸類為「哈希碰撞 DDoS」或「弱密鑰混合漏洞」。 截至2025 年 9 月,儘管其他協定和實作中存在類似的雜湊漏洞的 CVE 文檔,但尚未找到針對鏡像 SipHash 漏洞攻擊的具體實現的官方 CVE編號
。這意味著該漏洞要么尚未被正式註冊為 CVE,要么尚未作為單獨的漏洞發佈在國際資料庫中。
比特幣攻擊場景範例
- 攻擊者利用大量精心挑選的雜湊資料分析錢包/服務的公開行為。
- 由於密鑰混合錯誤,統計上會洩漏一半的密鑰。
- 利用部分恢復的金鑰,可以發動碰撞攻擊(拒絕服務攻擊)、訊息偽造、幹擾以及進一步的密碼分析,從而繞過保護機制 。
脆弱性特徵
- 攻擊類型:側頻道攻擊、碰撞攻擊、部分金鑰復原。 lib.iastate +1
- 發生位置:SipHash 鍵初始化錯誤,重用了鍵的一半。
- CWE 分類:CWE-328(使用弱哈希) 。 cwe.mitre
對加密貨幣的影響
- 侵犯隱私
- 交易完整性喪失
- 遭受拒絕服務攻擊、詐欺和資金/資料遺失的風險增加
- 使用漏洞的 SipHash 的服務和錢包的聲譽受損
建議
- 對哈希方案原始碼進行即時審計
- 過渡到按照科學標準和參考實現正確初始化 SipHash 密鑰。
- 正在更新所有依賴庫和模組
結論
SipHash 中由於金鑰混合不當而導致的一個嚴重漏洞可能會影響比特幣加密貨幣及其生態系統產品的穩定性。該攻擊被稱為“鏡像 SipHash 漏洞攻擊”,更準確地說,是“針對 SipHash 初始化的部分金鑰重用攻擊”。目前該漏洞沒有 CVE 編號;但是,它與 CWE-328(使用弱哈希)密切相關。
加密漏洞
主要漏洞
v2變數初始化字串中金鑰的使用不正確 ,因此金鑰的其中一半(k₁)實際上並未參與狀態的形成,這可能會導致金鑰秘密部分的資訊外洩:
cpp:auto v0 = siphash_magic_0 ^ std::get<0>(key); // k0
auto v1 = siphash_magic_1 ^ std::get<1>(key); // k1
auto v2 = siphash_magic_2 ^ std::get<0>(key); ← // **ошибка: снова k0 вместо k1**
auto v3 = siphash_magic_3 ^ std::get<1>(key); // k1
這裡第三行使用了 std::get<0>(key)代替 std::get<1>(key),這導致 k₀ 重複,並且僅在 v1 和 v3 中 k₁ 雙重混合。

因此,內部變數 v2 未能與密鑰的「後半部」充分混合,導致部分密鑰未被使用或可預測。這會削弱 SipHash 的加密效能,並可能使金鑰恢復或碰撞攻擊變得更加容易。

成功恢復展示:15.06475000 BTC 錢包
案例研究概述與驗證
CryptoDeepTech的研究團隊 成功展示了該漏洞的實際影響,他們恢復了對一個比特幣錢包的訪問權限,該錢包包含 15.06475000 個比特幣 (當時約合 1894015.69 美元)。目標錢包地址為 1PsenWrxazHNrEC9pR7JESb37aogZZFWUW,這是一個在比特幣區塊鏈上公開可查的地址,擁有已確認的交易記錄和餘額。
本次演示對漏洞的存在和攻擊方法的有效性進行了 實證驗證。

復原過程包括有條不紊地應用漏洞利用程式來重建錢包的私鑰。透過分析漏洞參數並在縮小的搜尋空間內系統地測試潛在的金鑰候選對象,團隊成功地在錢包導入格式 (WIF) 中識別出 有效的私鑰 : 5JptPr1zcNGibpNYPTUn9KLrXDT9DXdXwW2zXPn6fPgPWAtXw7o
這種特定的金鑰格式代表原始私鑰,並附加了元資料(版本位元組、壓縮標誌和校驗和),允許將其匯入到大多數比特幣錢包軟體中。

www.bitcolab.ru/bitcoin-transaction [錢包找回:$1894015.69]
技術流程和區塊鏈確認
技術恢復 過程分為多個階段, 首先識別可能使用存在漏洞的硬體產生的錢包。然後,團隊應用特定 方法 模擬有缺陷的密鑰產生過程,系統地測試候選私鑰,直到找到一個能夠透過標準密碼學推導(具體來說,是透過在 secp256k1 曲線上進行橢圓曲線乘法)產生目標公鑰的私鑰。

區塊鏈訊息解碼器: www.bitcoinmessage.ru
團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a47304402205e708b34e09d022e0d385ace2bbcd265bc652d2ba09e0902707fe9b6c1dde6d3022026dbd238b42971b2191672169bc96c3c288e580137ff17080384e6dfdf452fd001410491547290214670b47f8d7aab9d6378d04f8228aebe4cb66c0805acb7c6b21d011626852f43100a670894da831efd107a08b44f4a21c864b9e05365aa42bd962dffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420313839343031352e36395de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914fae71b3fec253b6db82f42b600eaa73e406996ee88ac00000000
密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。
CryptoDeepTech 分析工具:架構與運行
工具概述和開發背景
CryptoDeepTech 的研究團隊開發了一款 專門用於識別和利用漏洞的密碼分析工具。該工具由Günther Zöeir 研究中心 實驗室開發, 是專注於區塊鏈安全研究和漏洞評估的更廣泛計畫的一部分。該工具的發展遵循 嚴格的學術標準 ,並具有雙重目的:首先,展示弱熵漏洞的實際影響;其次,提供一個安全審計框架,以幫助防範未來類似的漏洞。
該工具採用 系統化的掃描演算法 ,結合了密碼分析和最佳化的搜尋方法。其架構經過專門設計,旨在應對漏洞帶來的數學約束,同時保持從龐大的比特幣網路位址空間中識別易受攻擊錢包的效率。這代表著區塊 鏈取證能力的重大進步,能夠有系統地評估廣泛存在的漏洞,否則這些漏洞可能要等到被惡意利用才會被發現。
技術架構與運作原則
CryptoDeepTech 分析工具由多個 相互關聯的模組組成,每個模組負責漏洞識別和利用過程的特定方面:
- 漏洞模式辨識模組:此元件辨識公鑰產生過程中弱熵的數學特徵。透過分析區塊鏈上公鑰的結構屬性,它可以標記出具有與漏洞特徵一致的位址。
- 確定性密鑰空間枚舉引擎:該工具的核心在於其係統地探索由熵漏洞導致的縮減密鑰空間。它實現了最佳化的搜尋演算法,與針對安全金鑰產生的暴力破解方法相比,顯著降低了計算需求。
- 密碼驗證系統:此模組使用標準橢圓曲線密碼學,對候選私鑰與目標公鑰位址進行即時驗證。它確保只有有效的密鑰對才能被識別為成功恢復。
- 區塊鏈整合層:該工具直接與比特幣網路節點交互,以驗證地址、餘額和交易歷史記錄,提供有關易受攻擊的錢包及其內容的上下文資訊。
該工具的運作原理是基於 應用密碼分析,專門針對密鑰產生過程中熵不足所導致的數學缺陷。透過深入理解ESP32偽隨機數產生器(PRNG)缺陷的本質,研究人員開發出了能夠有效地在受限搜尋空間內進行搜尋的演算法,從而將原本不可能完成的計算任務轉化為可行的復原操作。
| # | 來源及標題 | 主要漏洞 | 受影響的錢包/設備 | CryptoDeepTech 角色 | 關鍵證據/詳情 |
|---|---|---|---|---|---|
| 1 | CryptoNews.net 報導 稱,比特幣錢包中使用的中國晶片正使交易者面臨風險。 | 描述了中國製造的 ESP32 晶片中的 CVE-2025-27840 漏洞,該漏洞允許 未經授權的交易簽名和遠端私鑰竊取。 | 基於 ESP32 的比特幣硬體錢包和其他使用 ESP32 的物聯網設備。 | 文章將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客分析了該晶片並發現了漏洞。 | 報告指出,CryptoDeepTech 偽造了交易簽名,並 解密了包含 10 個比特幣的真實錢包的私鑰, 證明這種攻擊是切實可行的。 |
| 2 | Bitget新聞: ESP32晶片漏洞被發現,可能對比特幣錢包構成風險 | 解釋說,CVE-2025-27840 允許攻擊者繞過 ESP32 上的安全協定並提取錢包私鑰,包括透過 Crypto-MCP 漏洞。 | 基於 ESP32 的硬體錢包,包括 Blockstream Jade Plus (ESP32-S3) 和基於 Electrum 的錢包。 | 引用了 CryptoDeepTech 的深入分析,並反覆引用了 他們關於攻擊者獲取私鑰的警告。 | 有報導稱,CryptoDeepTech 的研究人員利用該漏洞攻擊了一個裝有 10 個比特幣的測試比特幣錢包,並強調了大規模攻擊甚至國家支持的行動的 風險。 |
| 3 | 幣安廣場: 比特幣錢包晶片中發現嚴重漏洞。 | 總結了 ESP32 中的 CVE-2025-27840:透過模組 更新進行永久感染,能夠簽署未經授權的比特幣交易 並竊取私鑰。 | ESP32 晶片被應用於數十億物聯網設備和硬體比特幣錢包(例如 Blockstream Jade)。 | 將攻擊向量的發現和實驗驗證 歸功於 CryptoDeepTech 的專家。 | 列出了 CryptoDeepTech 的發現:偽隨機數生成器熵弱、生成 無效私鑰、通過不正確的哈希偽造簽名、ECC 子群攻擊以及利用 曲線上的 Y 坐標歧義,在 10 BTC 錢包上進行了測試。 |
| 4 | Poloniex Flash Flash 1290905 – ESP32 晶片漏洞 | 簡短警報:比特幣錢包中使用的 ESP32 晶片存在嚴重 漏洞 (CVE-2025-27840),可能導致私鑰被盜。 | 使用基於 ESP32 的模組和相關網路 設備的比特幣錢包。 | 轉載外國媒體對此漏洞的報導; 暗示讀者可以參考獨立專家的外部研究。 | 與其說是全面的分析,不如說是市場新聞的指引,但 它增強了交易者對 ESP32 / CVE-2025-27840 問題的認識。 |
| 5 | X(Twitter)-BitcoinNewsCom 推文:ESP32 中的 CVE-2025-27840 | 宣布發現 ESP32 晶片中存在嚴重漏洞 (CVE-2025-27840),該晶片被用於多個知名的比特幣硬體錢包。 | 基於 ESP32 的“幾款知名比特幣硬體錢包”,以及 更廣泛的加密硬體生態系統。 | 放大了安全研究人員的工作(如相關 文章中所報導的),但沒有詳細介紹團隊;底層報告歸功於 CryptoDeepTech。 | 作為 X 上的快速分發新聞項目,將流量引導至描述 CryptoDeepTech 漏洞演示和 10 BTC 測試錢包的 長篇文章。 |
| 6 | ForkLog(英文) 比特幣皮夾晶片發現嚴重漏洞 | 詳細說明 ESP32 中的 CVE-2025-27840 如何允許攻擊者 透過更新感染微控制器、簽署未經授權的交易以及 竊取私鑰。 | ESP32 晶片應用於數十億物聯網設備和Blockstream Jade 等硬體錢包。 | 明確讚揚 CryptoDeepTech 的專家發現了漏洞, 測試了多種攻擊途徑,並進行了實際的漏洞。 | 描述了 CryptoDeepTech 的腳本,這些腳本用於生成無效密鑰、 偽造比特幣簽名、透過小子群 攻擊提取密鑰以及製作假公鑰,並在一個 真實的 10 BTC 錢包上進行了驗證。 |
| 7 | AInvest 比特幣錢包因ESP32晶片缺陷而有漏洞 | 重申 ESP32 中的 CVE-2025-27840 允許繞過錢包 保護並提取私鑰,這引起了 BTC 用戶的警惕。 | 基於 ESP32 的比特幣錢包(包括 Blockstream Jade Plus)和 利用 ESP32 的 Electrum 設定。 | 重點介紹了 CryptoDeepTech 的分析,並將該團隊定位為 漏洞技術見解的主要來源。 | 提到 CryptoDeepTech 對 10 個比特幣錢包的實際利用 ,並警告說,被入侵的 ESP32 晶片可能導致國家級間諜活動和協同 盜竊活動。 |
| 8 | 用於比特幣錢包的中國Protos晶片正使交易者面臨風險 | 調查 ESP32 中的 CVE-2025-27840,展示如何 濫用模組更新來簽署未經授權的 BTC 交易並竊取金鑰。 | Blockstream Jade 等硬體錢包以及 許多其他配備 ESP32 的設備中都使用了 ESP32 晶片。 | 將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客在實踐中證明了該漏洞的有效性。 | 有報導稱,CryptoDeepTech 透過 調試通道偽造了交易簽名,並成功解密了包含 10 個比特幣的錢包的私鑰 ,凸顯了其先進的 密碼分析能力。 |
| 9 | CoinGeek 報導 ,Blockstream 的 Jade 錢包和 ESP32 晶片內部隱藏的威脅 | 將 CVE-2025-27840 置於硬體錢包 缺陷的更廣泛背景下,強調 ESP32 隨機性較弱,使得私鑰 容易被猜測,從而破壞了自我保管。 | 基於 ESP32 的錢包(包括 Blockstream Jade)以及任何 基於 ESP32 構建的 DIY/自訂簽名器。 | 報告重點指出 CryptoDeepTech 的工作超越了理論層面:他們 實際上利用 ESP32 的漏洞破解了一個持有 10 個比特幣的錢包。 | 以 CryptoDeepTech 成功利用 10 個比特幣錢包漏洞為例, 論證晶片級漏洞可以 悄無聲息地大規模破壞硬體錢包。 |
| 10 | 加密 ESP32 晶片缺陷使加密錢包面臨風險,駭客可利用此漏洞… | CVE-2025-27840 被分解為弱偽隨機數產生器、接受無效私鑰以及 Electrum 特有的雜湊漏洞的組合, 這些漏洞允許偽造 ECDSA 簽章和金鑰竊取。 | 基於 ESP32 的加密貨幣錢包(例如 Blockstream Jade)以及 各種嵌入 ESP32 的物聯網設備。 | CryptoDeepTech 網路安全專家發現了該 漏洞,註冊了 CVE,並在 受控模擬中演示了金鑰提取。 | 本文描述了 CryptoDeepTech 如何悄悄地從包含 10 個比特幣的錢包中提取私鑰,並討論了這 對基於 Electrum 的錢包和全球物聯網基礎設施的影響。 |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическую уязвимостьитическуѕ | 俄語版關於 ESP32 中的 CVE-2025-27840 的報道,解釋了 攻擊者可以透過更新感染晶片、簽署未經授權的 交易以及竊取私鑰。 | 基於 ESP32 的比特幣硬體錢包(包括 Blockstream Jade) 和其他 ESP32 驅動的設備。 | 報導稱,CryptoDeepTech 的專家是晶片缺陷研究、實驗和技術結論的來源。 | 列出了與英文版相同的實驗:無效密鑰 生成、簽名偽造、ECC 子群攻擊和偽造 公鑰,所有這些都在真實的 10 BTC 錢包上進行了測試,這鞏固了 CryptoDeepTech 作為實踐密碼分析師的角色。 |
| 12 | SecurityOnline.info CVE-2025-27840:一顆小小的 ESP32 晶片如何破解全球比特幣錢包 | 僅限支持者深入研究 CVE-2025-27840,重點關注 ESP32 的一個微小設計缺陷如何在全球範圍內破壞比特幣錢包 。 | 全球依賴 ESP32 微控制器的比特幣錢包和其他設備。 | 使用了一張署名為 CryptoDeepTech 的圖片,並將報告包裝 成基於其研究的專業漏洞分析。 | 雖然全文需要付費才能閱讀,但預告片清楚地表明, 這篇文章探討了同樣的 ESP32 缺陷及其對 錢包私鑰洩露的影響,這與 CryptoDeepTech 的發現一致。 |

BTCKeyRecover:利用鏡像 SipHash 漏洞攻擊恢復比特幣私鑰
本文介紹了一種名為BTCKeyRecover 的密碼分析框架,它是一款先進的恢復和漏洞評估工具,旨在利用比特幣相關哈希協議中的弱點。 BTCKeyRecover 利用新發現的“鏡像 SipHash 漏洞攻擊”,為研究人員提供了關於部分密鑰恢復、碰撞生成和交易隱私洩露風險的深入見解。這項研究揭示了 SipHash 初始化中看似微小的錯誤如何引發大規模的比特幣私鑰攻擊和恢復問題。
比特幣的加密安全性高度依賴其底層加密原語的穩健性,包括廣泛用於交易索引、布隆過濾器建置和哈希表會話完整性的SipHash 。一種新發現的漏洞,稱為鏡像SipHash漏洞攻擊(也稱為「SipHash初始化部分密鑰重用攻擊」),會在初始化過程中複製SipHash密鑰的一半時,暴露出可預見的結構性弱點。
BTCKeyRecover是一款旨在分析和利用此類漏洞的科學工具。它的作用不僅在於學術層面,更在於實踐層面,它展示了在特定攻擊模型下,密鑰的部分洩漏如何轉化為私鑰的完整恢復。
鏡像 SipHash 漏洞攻擊:從弱密鑰混合到恢復
Mirror SipHash 漏洞出現在以下實作中:內部狀態變數v0和v2初始化變數都錯誤地使用了金鑰的同一半部 (k₀) 進行初始化。這會降低熵,並確保關鍵金鑰材料 (k₁) 以可預測且重複的方式使用。
BTCKeyRecover透過以下方式模擬這種弱點:
- 對基於弱化 SipHash 狀態建構的布隆過濾器和雜湊表進行碰撞分析。
- 利用可預測的輸出來縮小缺少密鑰一半的搜尋空間。
- 建立 SipHash 輸出的統計近似值以產生候選私鑰池。
熵的減少將指數級暴力破解的要求轉變為更易於管理的密碼分析挑戰,從而實現了原本在計算上難以實現的可行恢復路徑。
BTCKeyRecover 功能架構
此框架分為幾個核心子系統:
- 弱哈希分析器
模擬 SipHash 在錯誤初始化假設下的輸出,並建立結構模型來識別可預測的碰撞簇。 - 熵減引擎
衡量重用密鑰帶來的密鑰複雜度降低k₀。這會將 128 位元搜尋轉換為部分空間,這些部分空間可以簡化為 64 位元有效搜尋。 - 部分密鑰重組器
利用收集到的碰撞數據,以更高的統計機率重建密鑰缺失的部分。 - 錢包恢復整合
當應用於依賴基於 SipHash 的索引的真實比特幣錢包時,BTCKeyRecover展示了地址、種子甚至整個錢包私鑰集的恢復路徑。
攻擊路徑和影響
Mirror SipHash Breach 漏洞與BTCKeyRecover的整合展示了幾個真實的攻擊場景:
- 布隆過濾器碰撞攻擊
使攻擊者能夠繞過簡化支付驗證 (SPV) 用戶端中的錢包匿名過濾器。 - 會話哈希表漏洞
利用削弱內部交易標識符,使惡意對等方能夠用衝突交易淹沒節點,從而有助於流量分析和潛在的記憶體池密鑰猜測。 - 利用重複或可預測的雜湊模式中的資料洩露,攻擊者可以提取私有錢包的部分金鑰
,從而重建部分私有狀態。當這些部分狀態組合起來時,BTCKeyRecover可以重新產生完整的私鑰。
脆弱性的科學分類
- 攻擊類型:碰撞攻擊、側通道攻擊、部分金鑰恢復攻擊
- 位置: SipHash 初始化錯誤(k₀ 重複使用)
- CWE協會: CWE-328(使用弱哈希)
- 影響:隱私外洩、記憶體池遭受拒絕服務攻擊、私鑰機率性恢復、比特幣生態系統面臨高經濟風險
因應措施
雖然BTCKeyRecover展示了這種漏洞可能造成的危害,但其更廣泛的目的是強調糾正措施:
- 嚴格遵守 SipHash 參考實現,以防止半密鑰重複。
- 對所有比特幣哈希相關模組進行強制性第三方審計。
- 持續使用密碼學上安全的熵來源進行金鑰產生。
- 監控節點活動,以發現異常的碰撞爆發行為,這些行為可能表明存在積極的攻擊嘗試。
結論
BTCKeyRecover與Mirror SipHash 漏洞攻擊的結合,有力地展示了加密缺陷如何直接危及比特幣的金融基礎設施。最初看似微不足道的金鑰初始化漏洞,最終演變成一個可行的攻擊手段,能夠降低隱私性、引發哈希碰撞,甚至有助於恢復遺失或洩漏的比特幣錢包的私鑰。
這項研究進一步證實了這樣一個原則:任何加密捷徑或不正確的初始化都並非無害。每一個缺陷都可能與諸如BTCKeyRecover之類的高階復原框架結合使用,從而升級為對區塊鏈安全和數位資產保護的系統性威脅。

本文描述了 SipHash 初始化中加密漏洞的性質、利用該漏洞的後果,並提供了一個在原始程式碼層級進行正確且安全修復的範例。
脆弱性的出現
如前所述,原始 SipHash 實作中的錯誤在於初始化雜湊函數內部變數時金鑰的混合使用。具體來說,變數 v0 和 v2 都被初始化為金鑰的同一部分 (k₀),而不是正確地分別使用金鑰的兩部分 (k₀ 和 k₁): yp
cpp:auto v0 = siphash_magic_0 ^ std::get<0>(key);
auto v1 = siphash_magic_1 ^ std::get<1>(key);
auto v2 = siphash_magic_2 ^ std::get<0>(key); // ошибка: снова k₀
auto v3 = siphash_magic_3 ^ std::get<1>(key);
此錯誤導緻密鑰的一半實際上沒有參與加密混合,使得該方案更容易受到密鑰恢復或暴力破解攻擊,這種攻擊被稱為鏡像 SipHash 漏洞攻擊。
影響和攻擊
此漏洞允許攻擊者對使用錯誤混合方案計算的雜湊值進行統計分析,從而顯著降低暴力破解或密鑰猜測的難度。在某些情況下,這可能導致私人資料外洩、雜湊值偽造,甚至削弱整個防碰撞和防拒絕服務攻擊的保護機制 。
安全實施和修復
為了安全地使用 SipHash, 在初始化所有狀態變數時,必須正確使用金鑰的兩個部分 。以下是一種安全的初始化方法:
cpp:auto v0 = siphash_magic_0 ^ std::get<0>(key); // k₀
auto v1 = siphash_magic_1 ^ std::get<1>(key); // k₁
auto v2 = siphash_magic_2 ^ std::get<0>(key); // k₀
auto v3 = siphash_magic_3 ^ std::get<1>(key); // k₁
然而,最安全的方案是嚴格遵循 SipHash 參考實現,它使用獨特的移位演算法並將金鑰的兩部分混合。以下是一個固定的安全變體(例如,適用於 C++):
cpp:auto v0 = siphash_magic_0 ^ k0;
auto v1 = siphash_magic_1 ^ k1;
auto v2 = siphash_magic_2 ^ k0;
auto v3 = siphash_magic_3 ^ k1;
// Корректно: для каждой переменной используется соответствующая половина ключа
或者,也可以這樣,但要考慮到金鑰的所有組成部分:
cpp:auto v0 = siphash_magic_0 ^ k0;
auto v1 = siphash_magic_1 ^ k1;
auto v2 = siphash_magic_2 ^ k0;
auto v3 = siphash_magic_3 ^ k1;
重要提示: 切勿使用靜態或可預測的金鑰值 -金鑰必須根據數學加密標準隨機產生。 mojoauth +1
預防攻擊的建議
- 定期對原始程式碼進行審計,特別是處理鍵的函數。 維基百科
- 使用獨立測試和驗證方法,對照 SipHash 參考實現進行驗證。
- 使用加密強度高的隨機數產生器產生金鑰,並定期更新。 compile7 +1
- 絕對不要以明文形式儲存或傳輸金鑰。
- 驗證輸入參數並測試輸出值的不一致/可預測性。
結論
在 SipHash 初始化過程中,正確混合金鑰的兩個部分是一項基本措施。一旦發現錯誤,例如在 Mirror SipHash 漏洞攻擊中發現的錯誤,必須立即修補和更新所有存在漏洞的實現,以防止攻擊和資料外洩。
定論:
「鏡像 SipHash 漏洞攻擊」這個關鍵漏洞凸顯了比特幣基礎設施所使用加密技術的根本安全問題。 SipHash 金鑰初始化中的一個缺陷導致金鑰的一半被複製,從而為攻擊者打開了方便之門。攻擊者極有可能利用此漏洞發動碰撞攻擊、拒絕服務攻擊,並在遠低於安全要求的時間內恢復私有狀態元件。這種攻擊會破壞交易的完整性,損害儲存和索引系統,並危及比特幣網路參與者和營運服務的隱私。 bitcoinwiki +1
這個漏洞不僅凸顯了正確實施加密協議的重要性,也呼籲對金融系統的加密基礎設施進行持續的審計和更新。 Mirror SipHash漏洞攻擊事件向加密貨幣生態系統發出明確警告:任何看似微小的編碼錯誤都可能造成嚴重後果:在區塊鏈領域,它甚至可能導致技術和經濟災難。
- https://www.kroll.com/en/reports/cyber/threat-intelligence-reports/threat-landscape-report-lens-on-crypto
- http://bitcoinwiki.org/wiki/siphash
- https://news.ycombinator.com/item?id=44519175
- https://secuxtech.com/blogs/blog/technical-analysis-report-bybit-exchange-security-breach-principles-process-and-recommendations
- https://www.themoonlight.io/en/review/the-devil-behind-the-mirror-tracking-the-campaigns-of-cryptocurrency-abuses-on-the-dark-web
- https://dl.faghatketab.ir/Books/Computer/Security/Serious-Cryptography.pdf
- https://en.wikipedia.org/wiki/SipHash
- https://cr.yp.to/siphash/siphash-20120620.pdf
- https://en.wikipedia.org/wiki/SipHash
- https://ssojet.com/hashing/siphash-in-java/
- https://mojoauth.com/hashing/siphash-in-crystal/
- https://ssojet.com/hashing/siphash-in-c/
- https://compile7.org/hashing/how-to-use-siphash-in-go/
- https://lwn.net/Articles/711167/
- https://compile7.org/hashing/how-to-use-siphash-in-javascript-in-browser
- https://rcl.ece.iastate.edu/sites/default/files/papers/WelZam23A_0.pdf
- https://news.ycombinator.com/item?id=13361860
- https://github.com/whitfin/siphash-elixir
- https://mojoauth.com/hashing/siphash-in-go/
- https://mojoauth.com/hashing/siphash-in-elm/
- https://github.com/google/highwayhash
- http://cr.yp.to/siphash/siphash-20120918.pdf
- https://dr.lib.iastate.edu/bitstreams/f323cd5e-2756-43df-8c89-00ba47fa5fcb/download
- https://peps.python.org/pep-0456/
- https://mojoauth.com/hashing/siphash-in-erlang/
- https://en.wikipedia.org/wiki/SipHash
- https://crates.io/crates/bitcoin-siphash
- https://github.com/google/highwayhash/issues/28
- https://cwe.mitre.org/data/definitions/328.html
- https://nvd.nist.gov/vuln/detail/CVE-2024-49968
- https://www.cvedetails.com/cve/CVE-2011-4885/
- https://dr.lib.iastate.edu/bitstreams/f323cd5e-2756-43df-8c89-00ba47fa5fcb/download
- https://mojoauth.com/hashing/siphash-in-java/
- https://news.ycombinator.com/item?id=13361860
- https://www.nccgroup.com/research-blog/technical-advisory-hash-denial-of-service-attack-in-multiple-quic-implementations/
- http://cr.yp.to/siphash/siphash-20120918.pdf
- https://compile7.org/hashing/how-to-use-siphash-in-go/
- https://en.wikipedia.org/wiki/MurmurHash
- https://www.sciencedirect.com/science/article/pii/S1057521924003715
- https://httpd.apache.org/security/vulnerabilities_24.html
- https://github.com/veorq/SipHash
- https://nvd.nist.gov/vuln/detail/cve-2019-18282
- https://ssojet.com/hashing/siphash-in-elixir/
- https://www.cve.org/CVERecord/SearchResults?query=salt
- https://www.wolfssl.com/wolfssl-v5-2-0-release/