作者:KEYHUNTER
比特幣數位簽章中與隨機數(nonce)重用相關的嚴重加密漏洞是一個根本性問題,威脅著整個區塊鏈系統的安全。這種攻擊,在科學上被稱為 隨機數重用攻擊(Nonce Reuse Attack ),會為攻擊者打開後門:攻擊者只需使用同一個私鑰獲取兩個具有相同隨機數的簽名,就能輕易恢復所有者的私鑰並竊取其資金。這種威脅並非紙上談兵——在比特幣的真實歷史中,類似的漏洞曾導致駭客竊取數百枚比特幣。
“關鍵隨機數重用漏洞:對比特幣加密貨幣安全的致命攻擊”
《被盜迴聲攻擊:隨機數的致命共鳴》一文 揭示了漏洞的本質,強調了其嚴重性,並展示了對整個比特幣加密貨幣生態系統的真正威脅。 notsosecure +2
研究論文:隨機數重複使用此關鍵加密漏洞對比特幣加密貨幣安全性的影響
介紹
比特幣使用數位簽名來確認交易並保護用戶資金。包括 Schnorr 方案和 MuSig2 協定在內的現代實作方案都要求 nonce(為每個簽章產生的隨機數)是唯一且不可預測的。違反此特性會導致最危險的密碼學威脅之一:nonce 重複使用攻擊,這將對整個比特幣生態系統的安全造成嚴重後果 。
漏洞描述
發生機制
當同一個 nonce (kkk) 用於多個使用相同私鑰的不同訊息的簽章時,就會出現嚴重漏洞。這可能是由於實現錯誤、隨機數產生器強度不足或輔助隨機數 (aux_rand) 管理不當造成的。學術研究表明,nonce 的重複使用或可預測性使得攻擊者能夠利用以下變換從兩個簽名中提取私鑰: ishaana+4 x=s1−s2H(m1)−H(m2)mod nx = \frac{s_1 — s_2}{H(m_1) — H(m_2)} \m−x_2)} \m−x(m_2)} \m−x

其中 s1、s2 是簽章值,H(m1)、H(m2)、H(m1)、H(m2) 是不同訊息的雜湊值,xxx 是私鑰。
攻擊的科學名稱
在科學文獻和工業界,這種攻擊稱為 隨機數重用攻擊(Nonce Reuse Attack ),有時也稱為 重複隨機數攻擊(Repeated Nonce Attack) 、 虛擬回溯攻擊(Virtual Rewinding Attack )或 針對數位簽章中隨機數重用的側頻道攻擊(Side-channel attack on nonce reuse in digitalsign signalsigns signalsigns signalsigns signalsigns signalsigns in talsign 。 arxiv +4
對比特幣安全的影響
- 私鑰遺失: 攻擊成功後,攻擊者可以恢復私鑰並獲得用戶資金的存取權限。 christian -rossow+2
- 交易篡改: 攻擊者可以代表用戶簽署任何交易,導致比特幣被盜。
- 多重簽章妥協: 對於 MuSig2,一個參與者的錯誤可能導致所有簽署者的資金損失。
- 破壞網路信任: 如果此類攻擊蔓延開來,將威脅到整個比特幣加密貨幣的穩定性和聲譽。 acm +2
- 真實案例: 科學的區塊鏈監測顯示,此類攻擊已造成數百萬美元的損失。 christian -rossow+1
CVE編號和識別狀態
截至本文發佈時(2025 年 9 月),比特幣 Schnorr/MuSig2 實作中的 nonce 重用漏洞 尚未正式獲得單獨的 CVE 編號 ,但存在一些相關案例: access.redhat+2
- CVE-2025-9288(RedHat,2025,「描述了間接的加密漏洞,例如隨機數重複使用導致私鑰提取」) 。 access.redhat
- CVE-2015-6924(「隨機數重複使用攻擊,即重複或可預測地使用隨機數」) 。 feedly
- 在科學論文和工業文件中,該漏洞和攻擊被明確歸類為隨機數重用攻擊,並對其後果進行了詳細分析。 aimspress +2
建議和安全措施
- 根據 RFC6979/BIP340 標準實現確定性 nonce 產生;
- 使用密碼學上安全的隨機數源;
- 在錢包軟體層面追蹤和防止 nonce 重複使用;
- 透過定期安全審計並更新存在漏洞的庫;
- 對所有多重簽章實作進行測試。 keyhunters +2
結論
nonce重用攻擊(有時在 CVE 中列為 CVE-2025-9288)是一種根本性的密碼學威脅,可能導致比特幣用戶的私鑰和資金完全洩露。只有嚴格遵守 nonce 生成標準和行業最佳實踐才能防止此類攻擊 。隨著多重簽章技術和新型加密解決方案的不斷發展,這些問題應成為研究人員和開發人員關注的重點,以確保全球最大加密貨幣的安全性和韌性。
btcsuite/musig2 程式碼中的加密漏洞:私鑰洩漏威脅分析
在對提供的 btcsuite musig2 程式碼進行詳細分析並查閱有關 MuSig2 加密攻擊的文件後,我發現了幾行關鍵程式碼,其中包含潛在的金鑰外洩漏洞。
主要漏洞:缺乏針對 隨機數重用攻擊的保護
程式碼的主要加密漏洞在於 缺乏可靠的防止隨機數重複 使用攻擊(Nonce Reuse Attack)的保護措施,這對基於Schnorr簽署的加密方案中的私鑰安全性構成嚴重威脅。 keyhunters +3
有問題的程式碼 行
第 45-46 行:全域變數 zeroSecNonce
去:var zeroSecNonce [SecNonceSize]byte
問題 :此全域變數用於檢查 nonce 是否為空,但程式碼缺少主動檢查以防止不同簽章工作階段之間重複使用 nonce。 delvingbitcoin +1


第 290-291 行:隨機性生成,未進行品質驗證
去:if _, err := opts.randReader.Read(randBytes[:]); err != nil {
return nil, err
}
問題 :程式碼沒有檢查產生的隨機數的熵品質。熵值過低會導致隨機數(nonce)可預測,進而導致私鑰外洩。 bitcoinops +1
第 297-299 行:使用金鑰進行異或運算
去:if len(opts.secretKey) == 32 {
taggedHash := chainhash.TaggedHash(NonceAuxTag, randBytes[:])
for i := 0; i < chainhash.HashSize; i++ {
randBytes[i] = opts.secretKey[i] ^ taggedHash[i]
}
}
問題 :將密鑰與隨機資料的雜湊值進行異或運算會在記憶體中建立包含密鑰的臨時變數。如果未正確清除,則可能導致資訊外洩。 blockstream +1
第 315-316 行:使用 PutBytesUnchecked 時未進行驗證
去:k1Mod.PutBytesUnchecked(nonces.SecNonce[:])
k2Mod.PutBytesUnchecked(nonces.SecNonce[btcec.PrivKeyBytesLen:])
問題 :如果不先檢查 nonce 的唯一性,使用此方法 可能會導致在不同的bitcoinops+1 會話PutBytesUnchecked 中寫入相同的值 。
隨機數重複使用攻擊機制
當同一個 nonce 被重複用於使用相同金鑰的兩個不同簽章時,攻擊者可以利用以下數學關係來恢復私鑰: wikipedia+2
對於兩個具有相同 nonce 值的簽章:
- s₁ = k⁻¹(H(m₁) + r·x)
- s₂ = k⁻¹(H(m₂) + r·x)
攻擊者可以計算: x = (s₁ - s₂)⁻¹ · (H(m₁) - H(m₂)) mod n
消除漏洞的建議
- 根據 RFC6979 實現確定性 nonce 生成,以防止 aimspress+1 重複使用
- 在簽章過程中使用 nonce 之前,新增 nonce 唯一性檢查。
- 改進產生隨機數的熵的驗證
- 處理敏感資料後安全地清除內存
- 在簽名輪次之間實施BIP-327 delvingbitcoin+1 中所述 的狀態保護
這些漏洞對使用 MuSig2 的比特幣交易安全性構成嚴重威脅,因為私鑰洩漏會導致對相關資金的完全控制權喪失 。

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

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

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

區塊鏈訊息解碼器:www.bitcoinmessage.ru
團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a473044022030d55f78207ce856fadcc7fd58aa108b8948c36140907e61a0b8f90b78c33d67022002db76ccd0680a5b6e58df46603bd8d0248dd61a7454b7c6428e2fc7fec9dd3701410484cff5749d4cee3f730cf5203b08f0e5cd044f17b3408ed4dcb0a3964d1bc603c5a71a17ee5eabf3d29659803cb4aa02b7d370d3ab98a3d06b5bda7b3645e65affffffff030000000000000000406a3e7777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a20242036313032355de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914e5725de0a27617bdcf553e262e2c6640184c864188ac00000000
密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。
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 的發現一致。 |

KeyTrueCrack 和比特幣簽名中隨機數重複使用漏洞的利用
本文探討了密碼分析框架 KeyTrueCrack 與比特幣最具破壞性的漏洞之一——基於 Schnorr 和 MuSig2 的簽章方案中的 nonce 重用——之間的相互作用。透過理論分析和實務考量,本研究展示了 KeyTrueCrack 如何利用關鍵的實現缺陷(特別是 nonce 產生和熵隨機性檢查中的缺陷)來恢復私鑰。透過重建遺失的比特幣錢包,這種攻擊方式揭示了區塊鏈生態系統中金融安全面臨的災難性風險。
在比特幣及相關加密貨幣中,數位簽章既能確保數位資金的真實性,又能保障其所有權。 Schnorr簽章及其多重簽章變體MuSig2已被整合到比特幣中,作為傳統ECDSA的可擴展且保護隱私的替代方案。然而,安全性從根本上依賴於為每筆交易產生一個唯一且不可預測的隨機數(nonce)。
KeyTrueCrack 是一款專門用於偵測和利用重複 nonce 值的加密漏洞分析工具。與通用破解工具不同,KeyTrueCrack 專注於 nonce 重複使用時簽章方案的確定性代數弱點。透過分析區塊鏈資料中的交易簽名,它能夠在實際場景中實現密鑰的數學恢復。
脆弱性機制
當簽章過程中多次使用相同的隨機數 kkk 時,就會出現 nonce 重複使用漏洞。對於兩個 nonce 相同但訊息不同的簽名,適用以下數學原理:s1=k−1(H(m1)+r⋅x)s2=k−1(H(m2)+r⋅x)s_1 = k^{-1}(H(m_1) + r \cdot x) \quad\quad s_2 = k^-12); x)s1=k−1(H(m1)+r⋅x)s2=k−1(H(m2)+r⋅x)
在哪裡
- s1、s2s_1、s_2s1、s2 是簽章值,
- H(m1),H(m2)H(m_1),H(m_2)H(m1),H(m2)是不同訊息的加密雜湊值,
- xxx是私鑰,
- rrr 是由 nonce 導出的橢圓曲線點,
- kkk 是 nonce。
透過消除 kkk,攻擊者可以直接計算受害者的私鑰:x=s1−s2H(m1)−H(m2)(modn)x = \frac{s_1 – s_2}{H(m_1) – H(m_2)} \pmod{n}x=H(m1)−H(m2)s1−s2(m2)s1−s2(m2)s)

因此,比特幣錢包的整個完整性會因一次編碼疏忽或熵失效而崩潰。
KeyTrueCrack:功能角色
KeyTrueCrack 是一款取證密碼分析框架,具有以下核心功能:
- 自動隨機數重複使用偵測:KeyTrueCrack 透過掃描區塊鏈簽名,辨識公共資料集中的重複或可預測的隨機數值。
- 私鑰提取:利用代數推導,一旦偵測到兩個易受攻擊的簽名,即可重建私鑰。
- 錢包恢復操作:一旦金鑰被提取出來,該工具就可以重建遺失或無法存取的比特幣錢包,從而有效地恢復資金。
- 面向開發者的漏洞利用模擬:它提供了一個測試工具包,用於模擬針對錢包或節點實現的真實攻擊,使開發者能夠評估其復原能力。
對比特幣安全的影響
nonce 重複使用和透過 KeyTrueCrack 等工具進行的自動化攻擊相結合,會引入多種系統性風險:
- 私鑰洩漏:即使只重複使用一次 nonce,也會洩露該地址的整個私鑰,使攻擊者能夠不受限制地存取資金。
- 多重簽章失敗:在 MuSig2 中,如果一個參與者管理隨機性不當,則該妥協可能會波及交易的所有共同簽署者。
- 大規模資金竊盜:區塊鏈資料中 nonce 重複使用的自動偵測使得大規模系統性攻擊成為可能。
- 基礎設施信任度下降:比特幣的基礎依賴於密碼學的可靠性;已證實的 nonce 失敗會削弱市場信心。
值得注意的是,區塊鏈分析已經證明,與 nonce 相關的漏洞利用歷來會導致數百萬美元的損失。
緩解措施建議
為了消除 KeyTrueCrack 所利用的攻擊面,必須嚴格執行以下安全措施:
- 確定性隨機數產生:強制執行RFC6979和BIP340等標準進行簽章隨機數產生。
- 高品質熵:整合作業系統層級的加密安全隨機性,避免低熵或零種子輸入。
- Nonce 唯一性驗證:如果在活動簽章工作階段中偵測到重複的 nonce,則實作拒絕協定。
- 持續安全審計:審計庫和比特幣客戶端,特別關注 MuSig2 和 Schnorr 實作。
- 安全記憶體清除:避免因不安全的記憶體操作而導致 nonce 和金鑰材料洩漏。
案例研究:MuSig2 和 KeyTrueCrack
在多重簽名場景中,KeyTrueCrack 的危害尤其嚴重。即使只有一個共同簽署者產生了一個弱 nonce 並重複使用,整個聚合的私鑰也將被推導出來。這種漏洞會同時危及所有參與錢包的安全,使攻擊者能夠盜取多方資金。
結論
KeyTrueCrack凸顯了密碼學漏洞並非僅僅是理論上的奇談怪論——它們會對金融和區塊鏈系統造成直接且毀滅性的後果。透過系統性地利用 Schnorr 和 MuSig2 數位簽章協定中 nonce 重複使用漏洞,私鑰可以精確地重建。
這種漏洞之所以特別危險,在於它的隱藏性:一旦隨機數被重複使用,私鑰保密的崩潰在數學上就不可避免。對於全球比特幣生態系統而言,防止隨機數重複使用並非可有可無,而是至關重要。嚴格遵守確定性隨機數產生、安全熵實踐以及持續審計,是目前唯一經科學驗證的抵禦密鑰災難性洩漏的有效防禦措施。
未來的調查應繼續分析真實的區塊鏈數據,以發現隨機數異常,並開發預防性驗證系統。如果沒有這些措施,像 KeyTrueCrack 這樣的工具將對全球最大的加密貨幣構成持續的生存威脅。
研究論文:MuSig2/BIP340 中的加密 nonce 重複使用漏洞及安全保護措施
介紹
包括比特幣在內的現代加密貨幣系統使用基於Schnorr協議(BIP340、MuSig2)的多重簽章協議來增強隱私性和可擴展性,並降低多重簽章攻擊的風險。數位簽章安全的關鍵要素是nonce(每次簽章操作產生的隨機數)的唯一性和不可預測性。違反此屬性會導致嚴重的密碼漏洞,稱為nonce重複使用攻擊 。
脆弱性成因
隨機數生成機制
在標準的 Schnorr/MuSig2 實作中,nonce 是基於私鑰和附加隨機資料 (aux_rand) 計算的:k = Hash(d, aux_rand, message) k = \mathrm{Hash}(d, \text{aux\_rand}, \text{message}) k = Hash(daux)
其中 ddd 是私鑰,aux_rand 是一個隨機位元組區塊(或會話參數),message 是要簽署的訊息。 aimspress +1
實現缺陷-可預測性和隨機數重複使用
- 在許多實作中,aux_rand 缺失或被固定為零,或使用了舊的種子。 keyhunters +1
- 如果同一個 nonce 被用於使用同一個私鑰的不同訊息,那麼攻擊者只需擁有兩個簽名,就可以使用以下公式輕鬆計算出私鑰:
x=s1−s2H(m1)−H(m2)mod nx = \frac{s_1 – s_2}{H(m_1) – H(m_2)} \mod nx=H(m1)−H(m2)s1−s2modn
其中 s1、s2 為簽章值,H(m1)、H(m2)、H(m1)、H(m2) 為訊息雜湊值,nnn 為分組順序。 delvingbitcoin +2
- 在多重簽名(MuSig2)中,這種漏洞更具破壞性:任何一個參與者的資金被攻破,都可能導致所有簽署者的資金失去控制。 iacr +2
攻擊場景
- 攻擊者收到兩條不同訊息的簽名,但隨機數相同,因此計算出私鑰。
- 這會導致多重簽名地址完全被攻破,資金可能被盜,交易也可能被偽造。 blockstream +2
安全修復方案:確定性隨機數生成
建議
- 對於每條訊息,隨機數字必須是唯一的且不可預測的。
- 在使用 nonce 之前,必須逐元素進行比較,確保它與先前會話中的 nonce 不符。 bitcoinops +2
- 根據 BIP340 或 RFC6979,使用私鑰、訊息和隨機種子產生 nonce 是確定性的。 aimspress +1
Go語言安全實作範例
去:import (
"crypto/sha256"
"crypto/rand"
)
func GenerateDeterministicNonce(privKey, message []byte) ([]byte, error) {
auxRand := make([]byte, 32)
if _, err := rand.Read(auxRand); err != nil {
return nil, err
}
// Формируем tagged hash в стиле BIP340
h := sha256.New()
h.Write([]byte("BIP340/nonce"))
h.Write(privKey)
h.Write(auxRand)
h.Write(message)
nonce := h.Sum(nil)
return nonce, nil
}
要點:
- 每次都會使用加密安全的生成器產生一個新的 auxRand。
- 每個簽名都有一個唯一的隨機數。
- 不可重複使用;私鑰、唯一的輔助隨機數和訊息的組合保證了不會出現重複的 nonce。 blockstream +2
檢查 nonce 是否重複使用
新增儲存空間以存放已使用的 nonce 值,避免重複:
去var usedNonces = make(map[string]bool)
func IsNonceUsed(nonce []byte) bool {
nonceStr := string(nonce)
if usedNonces[nonceStr] {
return true
}
usedNonces[nonceStr] = true
return false
}
將呼叫整合 IsNonceUsed(nonce) 到產生和簽章過程中-如果 nonce 已存在,則阻止簽章操作。 docs +1
實用建議
- aux_rand 僅使用加密安全的熵來源。
- 永遠不要將 aux_rand 初始化為固定值(例如全零)。
- 在多重簽章方案中,簽章會話開始前,與其他參與者交換 nonce 承諾並驗證其唯一性 。
- 對私鑰、訊息和 aux_rand 的組合進行哈希運算,得到一個強 nonce。
結論
MuSig2 及類似協議中存在一個嚴重的 nonce 重用漏洞,除非實施確定性且唯一的 nonce 產生協議,否則會導致私鑰完全洩漏和資金損失。使用符合 BIP340/RFC6979 標準的確定性產生程式碼、持續的唯一性驗證以及安全的記憶體擦除是防止現代多重簽章系統(例如比特幣及類似加密技術)中 nonce 重用攻擊的唯一有效方法。 delvingbitcoin +4
最終科學結論
比特幣數位簽章中與隨機數(nonce)重用相關的嚴重加密漏洞是一個根本性問題,威脅著整個區塊鏈系統的安全。這種攻擊,在科學上被稱為 隨機數重用攻擊(Nonce Reuse Attack ),會為攻擊者打開後門:攻擊者只需使用同一個私鑰獲取兩個具有相同隨機數的簽名,就能在數學上輕鬆恢復所有者的私鑰並竊取其資金。這種威脅並非紙上談兵——在比特幣的真實歷史中,類似的漏洞曾導致駭客竊取了數百枚比特幣 。
尤其危險的是,這種漏洞並非源自於演算法本身的缺陷,而是源自於開發人員的錯誤或疏忽,以及熵源穩定性不足。即使交易中隨機數出現短暫的重複或可預測性,也會導致加密保護的徹底失效,用戶私鑰和公鑰之間的屏障被移除,並造成巨大的經濟損失。
在開發和協議層面阻止這種攻擊不僅僅是一項建議,更是保障資金安全、用戶信任和網路穩定性的關鍵。歷史和現代研究都清楚地表明,確保所有隨機數的唯一性和保密性,並實施現代隨機性標準,是比特幣長期加密安全的唯一科學保障 。
結論是:
如果沒有對 nonce 的嚴格控制,比特幣就無法平衡可擴展性、隱私性和安全性——任何偏離該參數唯一性和保密性的行為都會立即使任何交易成為致命攻擊的潛在受害者,從而威脅整個加密貨幣生態系統。
- https://strm.sh/studies/bitcoin-nonce-reuse-attack/
- https://habr.com/ru/articles/939560/
- https://notsosecure.com/ecdsa-nonce-reuse-attack
- https://arxiv.org/pdf/2504.07265.pdf
- https://christian-rossow.de/publications/btcsteal-raid2018.pdf
- https://publications.cispa.de/articles/conference_contribution/Identifying_Key_Leakage_of_Bitcoin_Users/24612726
- https://www.reddit.com/r/Bitcoin/comments/1j24hh3/nonce_r_reuse_and_bitcoin_private_key_security_a/
- https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/
- https://arxiv.org/html/2504.13737v1
資料來源:
- keyhunters.ru — 比特幣 金鑰獵人隨機數重用攻擊分析
- aimspress.com — 關於確定性 nonce 產生的研究論文 。
- blog.blockstream.com — MuSig blockstream中的可驗證確定性 nonce
- bitcoinops.org — RFC6979比特幣安全規範的實用實現
- docs.rs/musig2/latest/musig2 — Musig2 文檔 Rust 文檔
- iacr.org — 官方 MuSig2:兩輪 Schnorr 多重簽名 iacr 論文
- delvingbitcoin.org — 論壇:重複使用delvingbitcoin nonce時,密鑰多久才能揭曉 ?
- bitcoindevs.xyz — bitcoindevs nonce 產生的實用細節
- btctranscripts.com — MuSig2 安全協定 btctranscripts
- halborn.com — Schnorr SDK 稽核:重複使用 nonce 的風險 halborn
- https://keyhunters.ru/nonce-reuse-attack-critical-vulnerability-in-schnorr-signatures-implementation-threat-of-private-key-disclosure-and-nonce-reuse-attack-in-bitcoin-network/
- https://www.aimspress.com/article/doi/10.3934/math.2024988
- https://www.halborn.com/audits/influx-technologies/account-abstraction-schnorr-signatures-sdk
- https://delvingbitcoin.org/t/how-many-nonce-reuse-before-exposing-your-musig2-private-key/217
- https://docs.rs/musig2/latest/musig2/
- https://bitcoindevs.xyz/decoding/schnorr-signature
- https://iacr.org/archive/crypto2021/12826100/12826100.pdf
- https://blog.blockstream.com/musig-dn-schnorr-multisignatures-with-verifiably-deterministic-nonces/
- https://btctranscripts.com/london-bitcoin-devs/2022-08-11-tim-ruffing-musig2
- https://bitcoinops.org/en/bitgo-musig2/
- https://www.scitepress.org/PublishedPapers/2022/111456/111456.pdf
- https://www.semanticscholar.org/paper/MuSig-DN:-Schnorr-Multi-Signatures-with-Verifiably-Nick-Ruffing/2d51e9a63bd2973d1569c9c0d0ccadcb54b1b51e
- https://github.com/btcsuite/btcd/discussions/2084
- https://learnmeabitcoin.com/technical/cryptography/elliptic-curve/schnorr/
- https://github.com/lightningnetwork/lnd/issues/6974
- https://github.com/dusk-network/schnorr
- https://tlu.tarilabs.com/cryptography/introduction-schnorr-signatures.html
- https://btctranscripts.com/stephan-livera-podcast/2020-10-27-jonas-nick-tim-ruffing-musig2
- https://www.reddit.com/r/btc/comments/bqgva7/schnorr_multisignatures_and_nonce_reuse/
- https://keyhunters.ru/nonce-reuse-attack-critical-vulnerability-in-schnorr-signatures-implementation-threat-of-private-key-disclosure-and-nonce-reuse-attack-in-bitcoin-network/
- https://www.lightspark.com/glossary/schnorr-signatures
- https://www.aimspress.com/aimspress-data/math/2024/8/PDF/math-09-08-988.pdf
- https://en.wikipedia.org/wiki/Schnorr_signature
- https://delvingbitcoin.org/t/how-many-nonce-reuse-before-exposing-your-musig2-private-key/217
- https://bips.dev/373/
- https://bitcoinops.org/en/bitgo-musig2/
- https://notsosecure.com/ecdsa-nonce-reuse-attack
- https://blog.blockstream.com/musig-dn-schnorr-multisignatures-with-verifiably-deterministic-nonces/
- https://b10c.me/blog/009-schnorr-nonce-reuse-challenge/
- https://www.aimspress.com/article/doi/10.3934/math.2024988?viewType=HTML
- https://delvingbitcoin.org/t/state-minimization-in-musig2-signing-sessions/626
- https://www.aimspress.com/article/doi/10.3934/math.2024988
- https://www.ledger.com/blog-musig2-ledger-bitcoin-app
- https://docs.decred.org/research/schnorr-signatures/
- https://github.com/topics/musig2
- https://nvd.nist.gov/vuln/detail/cve-2024-38365
- https://bitcoinops.org/en/topics/schnorr-signatures/
- https://bitcoinops.org/en/topics/musig/
- https://learnmeabitcoin.com/technical/cryptography/elliptic-curve/schnorr/
- https://x.com/real_or_random
- https://iacr.org/archive/crypto2021/12826100/12826100.pdf
- https://btctranscripts.com/mit-bitcoin-expo/mit-bitcoin-expo-2019/signature-scheme-security-properties
- https://www.youtube.com/watch?v=Dzqj236cVHk
- https://bips.dev/327/
- https://en.bitcoin.it/wiki/BIP_0327
- https://www.reddit.com/r/Bitcoin/comments/1j24hh3/nonce_r_reuse_and_bitcoin_private_key_security_a/
- https://docs.rs/musig2/latest/musig2/
- https://github.com/pcaversaccio/ecdsa-nonce-reuse-attack
- https://github.com/bitcoin/bitcoin/issues/23326
- https://arxiv.org/html/2504.07265v1
- https://nvlpubs.nist.gov/nistpubs/ir/2022/NIST.IR.8214B.ipd.pdf
- https://lightning.engineering/posts/2025-02-13-loop-musig2/
- https://github.com/btcsuite/btcd/discussions/2084
- https://www.usenix.org/system/files/sec20-weiser.pdf
- https://github.com/BlockstreamResearch/secp256k1-zkp
- https://bitcointalk.org/index.php?topic=5537667.0
- https://github.com/paulmillr/scure-btc-signer
- https://bitcoinops.org/en/topic-dates/
- https://crates.io/crates/musig2
- https://blog.bitlayer.org/BIP-327_MuSig2_in_Four_Applications/
- https://jsr.io/@scure/btc-signer/doc/musig2.js/
- https://github.com/btcsuite/btcd/releases
- https://www.reddit.com/r/Bitcoin/comments/1ibhfp2/bip327_musig2_taproot_key_aggregation_environment/
- https://developer.blockchaincommons.com/musig/
資料來源:
- keyhunters.ru — 對比特幣金鑰獵人中 Nonce 重用攻擊的科學研究
- aimspress.com — 數位簽章中隨機數產生研究 aimspress+1
- access.redhat.com – CVE-2025-9288 access.redhat
- feedly.com/cve/CVE-2015-6924 feedly
- christian-rossow.de — 比特幣金鑰洩漏與攻擊分析 christian-rossow
- arxiv.org — 利用隨機數重複使用來打破 ECDSA/Schnorr 規則
- dl.acm.org – 加密貨幣錢包的安全面 acm
- ishaana.com/blog – 深入探討比特幣交易中的隨機數重用 ishaana
- fenefx.com/blog – 什麼是 Nonce? fenefx
- nvlpubs.nist.gov — 關於閾值 EdDSA/Schnorr 簽章的說明 nvlpubs.nist
- https://keyhunters.ru/nonce-reuse-attack-critical-vulnerability-in-schnorr-signatures-implementation-threat-of-private-key-disclosure-and-nonce-reuse-attack-in-bitcoin-network/
- https://ishaana.com/blog/nonce_reuse/
- https://www.aimspress.com/article/doi/10.3934/math.2024988?viewType=HTML
- https://christian-rossow.de/publications/btcsteal-raid2018.pdf
- https://arxiv.org/html/2504.13737v1
- https://fenefx.com/en/blog/what-is-nonce/
- https://dl.acm.org/doi/full/10.1145/3596906
- https://nvlpubs.nist.gov/nistpubs/ir/2022/NIST.IR.8214B.ipd.pdf
- https://access.redhat.com/security/cve/cve-2025-9288
- https://feedly.com/cve/CVE-2015-6924
- https://www.aimspress.com/article/doi/10.3934/math.2024988
- https://strm.sh/studies/bitcoin-nonce-reuse-attack/
- https://notsosecure.com/ecdsa-nonce-reuse-attack
- https://www.reddit.com/r/Bitcoin/comments/1j24hh3/nonce_r_reuse_and_bitcoin_private_key_security_a/
- https://datatracker.ietf.org/doc/html/rfc9591
- https://github.com/pcaversaccio/ecdsa-nonce-reuse-attack
- https://www.okta.com/en-sg/identity-101/nonce/
- https://xrpl.org/blog/2019/statement-on-the-biased-nonce-sense-paper
- https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/11/
- https://pages.mtu.edu/~xinyulei/Papers/Codaspy2021-2.pdf