作者:KEYHUNTER
關鍵隨機數重複使用漏洞
黑暗幽靈的攻擊:(Nonce Reuse 攻擊)
這清楚地展現了比特幣加密貨幣基礎設施面臨的根本風險。攻擊者只需一次簽署錯誤,就能利用這項漏洞完全洩漏用戶的私鑰,竊取所有資金。而攻擊者只需觀察到少數幾個具有相同或高度可預測的隨機數(nonce)的簽名即可。這種攻擊在科學上被稱為隨機數重用攻擊、重複隨機數攻擊或透過隨機數重用恢復私鑰,目前已造成數百萬美元的損失,並導致多個區塊鏈癱瘓 。
在 MuSig2 和 Schnorr 等多重簽章方案中,nonce 產生機制的任何缺陷都可能造成災難性後果:金鑰外洩、未經授權的交易、大規模資金被盜、網路信任度喪失,以及比特幣整個安全架構的崩潰。缺少唯一的 nonce 就好比把保險箱敞開,任由攻擊者打開。
關鍵的重隨機漏洞:對比特幣加密貨幣安全的危險攻擊
Nonce 重複使用攻擊:重複使用加密 nonce 如何導致私鑰瞬間洩露,並在比特幣網路上造成大規模資金盜竊
研究論文:關鍵隨機數重複使用漏洞對比特幣加密貨幣安全性的影響
比特幣加密貨幣基於數位簽名的數學強度,通常使用 ECDSA 或 Schnorr 演算法實現。 MuSig2 是一種現代化的多重簽名協議,它採用聚合公鑰,旨在增強隱私性並優化交易規模。系統的可靠性從根本上取決於隨機參數(尤其是 nonce)的正確使用。 nonce 產生或重複使用中的任何錯誤都會對整個比特幣生態系統構成安全威脅,並可能導致巨額資金損失 。
漏洞是如何產生的?
攻擊的數學本質
當使用相同的私鑰為不同的訊息建立簽章時,如果出現 nonce 重複使用或可預測性 ,則會出現此漏洞。如果攻擊者獲得兩個具有相同 nonce 的數位簽章(例如,訊息 $m_1$ 的簽章 $(r, s_1)$ 和訊息 $m_2$ 的簽章 $(r, s_2)$),則可以如下唯一地計算擁有者的私鑰:x = s1 − s2 H(m1) − Hmodm2)

其中 $x$ 是私鑰,$H$ 是雜湊函數,$n$ 是分組順序。這種攻擊被稱為 隨機數重用攻擊 ,或者更準確地說, 是重複隨機數攻擊 。
為什麼這對比特幣來說很危險?
- 密鑰完全洩漏: 洩漏私鑰會使攻擊者完全控制比特幣錢包。
- 巨額資金損失: 攻擊者可以從任何使用重複 nonce 簽署的地址竊取加密貨幣。 keyhunters +2
- 交易竄改: 掌握私鑰後,合法交易可能被偽造,整個網路也可能被攻破。
- 信任危機: 重大妥協可能會破壞人們對比特幣網路的信任,並引發市場崩盤。
攻擊的科學分類
- 嚴格科學名稱: 隨機數重用攻擊 或 重複隨機數攻擊
- 對於 ECDSA,存在一種變體 -ECDSA Nonce 重複使用攻擊 , 即弱隨機性攻擊。
- 在 MuSig2 協定和 Schnorr/比特幣方案中: Nonce 重複使用攻擊 , 透過 Nonce 重複使用進行私鑰提取攻擊 。 notsosecure +2
對比特幣生態系統的影響
- 真實案例 :在實施安全 nonce 生成機制(ECDSA 採用 RFC6979,Schnorr 採用 BIP-340)之前,曾多次發生大規模資金竊盜事件。 keyhunters +1
- 對錢包的影響 :即使是現代錢包和合約,如果 nonce 生成過程未正確實現,也可能存在安全漏洞。 文件+2
- 對協定的影響:在 MuSig2 中 , 不正確、可預測或重複的 nonce 產生會立即洩露所有參與的金鑰,使該方案容易受到取證和聚合錢包攻擊。
CVE狀態和ID
- 截至2025年, MuSig2 nonce 重用漏洞尚未分配具體的 CVE 編號——該問題正在密碼學界 積極討論,並在標準和庫層面進行改進。
- 存在一些利用 ECDSA nonce 重用(以及類似攻擊)的 CVE 範例:例如 CVE-2018-0734、CVE-2020-28498 以及各種庫中出現的新類似漏洞。 nvd.nist +1
- 保護機制依據 BIP-340、BIP-327、RFC6979 和bips+1標準實現。
結論和建議
- Nonce 重複使用 攻擊是比特幣面臨的一項根本性的密碼學威脅。
- 這會導致私鑰完全洩漏和資金被盜。
- 為防止此漏洞,必須嚴格遵守加密強度高的(每個簽名都唯一的)隨機數產生標準,並定期對加密代碼進行審計。 acm +2
- 標準化(BIP-340、BIP-327)、確定性 nonce 和安全隨機數產生器的使用是比特幣交易和錢包長期安全的關鍵要求。
當重複使用隨機數 (nonce) 時,匯出私鑰的數學公式是基於 Schnorr 或 ECDSA 數位簽章的特性。如果使用相同的隨機數 kkk 對兩個不同的訊息進行簽名,則可以使用簡單的線性方程組計算私鑰 xxx:
Schnorr/ECDSA 公式
假設兩個訊息 m1 和 m2 有相同 nonce kkk 的簽章:s1=k+H(m1,R)⋅xmod ns_1 = k + H(m_1, R) \cdot x \mod ns1=k+H(m1,R)⋅xmod ns2=k+H(m2,R) ⋅xmod _x2, xdotd ns2=k+H(m2,R)⋅xmodn

在哪裡:
- s1、s2s_1、s_2s1、s2 — 訊息 m1、m2m_1、m_2m1、m2 的簽章值
- H(m,R)H(m, R)H(m,R)是訊息的雜湊值,也是公鑰隨機數。
- xxx 是私鑰
- kkk — 重複使用的私有隨機數
- nnn — 組序
將兩個方程式相減:s1−s2=[H(m1,R)−H(m2,R)]⋅xmod ns_1 — s_2 = [H(m_1, R) — H(m_2, R)] \cdot x \mod ns1−s2=[H(m1,R)−H(m2,R);
讓我們用以下公式表示私鑰:x=s1−s2H(m1,R)−H(m2,R)mod nx = \frac{s_1 – s_2}{H(m_1, R) – H(m_2, R)} \mod nx=H(m1,R)−H(m2,R)s1−s2,2

因此,只要知道兩個具有相同 nonce 值的簽名,就能完全揭示私鑰。 keyhunters +3
基於對 MuSig2 程式碼的分析以及對相應漏洞的調查,該程式碼本身並不包含任何會導致金鑰或私鑰直接洩漏的明顯密碼學漏洞。然而,可以識別出幾個潛在的問題區域和風險較高的區域。
對 MuSig2 程式碼中潛在漏洞的分析
無直接漏洞的關鍵區域
第 105-115 行 – 功能 sortKeys
去:func sortKeys(keys []*btcec.PublicKey) []*btcec.PublicKey {
keySet := sortableKeys(keys)
if sort.IsSorted(keySet) {
return keys
}
sort.Sort(keySet)
return keySet
}
此功能對安全性至關重要,因為排序不當的鍵會導致不同的雜湊值和聚合因子。然而,此實作中沒有明顯的漏洞。 keyhunters +1

第 130-145 行 – 功能 keyHashFingerprint
去:func keyHashFingerprint(keys []*btcec.PublicKey, sort bool) []byte {
if sort {
keys = sortKeys(keys)
}
keyAggBuf := make([]byte, 33*len(keys))
keyBytes := bytes.NewBuffer(keyAggBuf[0:0])
for _, key := range keys {
keyBytes.Write(key.SerializeCompressed())
}
h := chainhash.TaggedHash(KeyAggTagList, keyBytes.Bytes())
return h[:]
}
此函數產生用於計算聚合係數的金鑰指紋。實現正確,並使用了加密強度高的雜湊演算法。 btctranscripts +1
重點關注領域
第 320-335 行 – 功能 tweakKey
去:func tweakKey(keyJ btcec.JacobianPoint, parityAcc btcec.ModNScalar, tweak [32]byte,
tweakAcc btcec.ModNScalar,
xOnly bool) (btcec.JacobianPoint, btcec.ModNScalar, btcec.ModNScalar, error) {
此函數會修改鍵值,對於確保 Y 座標的正確性至關重要。檢查第 360 行是否存在無窮大點對於防止產生 無效 鍵值非常重要。
第 168-188 行 – 功能 aggregationCoefficient
去:func aggregationCoefficient(keySet []*btcec.PublicKey,
targetKey *btcec.PublicKey, keysHash []byte,
secondKeyIdx int) *btcec.ModNScalar {
var mu btcec.ModNScalar
if secondKeyIdx != -1 && keyBytesEqual(keySet[secondKeyIdx], targetKey) {
return mu.SetInt(1)
}
第二個唯一密鑰(係數等於 1)的最佳化是正確的,符合 MuSig2.blockstream +1 規範。
MuSig2 的主要漏洞不在此程式碼範圍內。
MuSig2 的主要加密漏洞是 nonce 重用 ,但此問題不影響所提供的金鑰聚合程式碼。此漏洞在簽章產生階段顯現,具體表現為: ishaana+1
- 同一個 nonce 值用於對不同的訊息進行簽署。
- 這使得攻擊者可以透過線性方程組計算私鑰 ishaana+1
這段程式碼只處理金鑰聚合,不包含任何用於簽署的隨機數產生。
潛在攻擊途徑(非代碼部分)
- 惡意金鑰攻擊 – 由雜湊 塊流+1 聚合因子保護
- 瓦格納攻擊——被 MuSig2 iacr+1 中的兩個 nonce 阻止
- 並發會話攻擊 -已透過 MuSig2 btctranscripts+1 協定架構解決
結論
所展示的 MuSig2 金鑰聚合程式碼 不包含任何可能導致金鑰外洩的直接加密漏洞。該程式碼根據 BIP-327 規範正確實現了金鑰聚合演算法。 MuSig2 的主要安全威脅與簽章階段和 nonce 管理有關,而這些內容並未在此BIP 程式碼片段 中體現 。
所有關鍵功能(金鑰排序、聚合係數計算、金鑰修改)均已正確實現,並進行了適當的安全檢查。

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

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

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

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

BitcoinQuasar:利用隨機數重複使用漏洞提取私鑰並恢復遺失的比特幣錢包
比特幣生態系統的完整性和安全性高度依賴私鑰的不可侵犯性。 BitcoinQuasar 代表了新一代加密工具包,旨在利用高階攻擊向量,特別是 ECDSA 和基於 Schnorr 的協定中 nonce 重複使用漏洞所導致的攻擊。本文深入探討了 BitcoinQuasar 的技術和科學原理,分析了其有效性背後的加密原理,並評估了簽名實現違反 nonce 唯一性時對比特幣錢包和資金造成的巨大風險——這種漏洞在現實世界中已被利用,並造成了巨大的經濟損失。
安全的數位簽章方案,例如 ECDSA 及其後續方案 Schnorr(包括 MuSig2 等高階多重簽章協議),是比特幣信任模型的基礎。然而,任何一個實現上的缺陷——特別是簽名 nonce 的重用或可預測性——都可能導致私鑰的永久洩露。 BitcoinQuasar 是一個強大的分析和攻擊平台,旨在掃描、偵測和利用公開比特幣交易資料中的此類漏洞,從而在偵測到 nonce 重用時恢復私鑰並找回遺失的錢包資金。
密碼學原理:隨機數唯一性
每筆比特幣交易簽名必須使用一個嚴格且唯一且真正隨機的 nonce (k)。 ECDSA 和 Schnorr 簽署的數學結構意味著,即使部分地重用 nonce(例如,對不同的訊息使用相同的 k,或使用可預測的值),也會導致私鑰 x 可以透過求解簡單的線性方程組來恢復:對於兩個具有相同 r(nonce 值)的簽章:s1=k+H(m1,r)x(modn)2,20005,00005,0005,0005,0005,0005,0005,0005,0005,00055,0值)的簽章:s1 = k + H(m1, r)x \pmod{n}s2 = k + H(m2, r)x \pmod{n}對於兩個具有相同 r(nonce 值)的簽章:s1=k+H(m1,r)x(modn)s2=k+H(m2,r)x(modn)
相減得:s1−s2=[H(m1,r)−H(m2,r)]x(modn)s_1 – s_2 = [H(m_1, r) – H(m_2, r)]x \pmod{n}s1−s2=[H(m1,r)−H(m2,r)H(x(m2,r)]mod{
解:x=s1−s2H(m1,r)−H(m2,r)(modn)x = \frac{s_1 – s_2}{H(m_1, r) – H(m_2, r)} \pmod{n}x=H(m1,r)−H(m2,r)s1−s2(modn)

其中 xxx 是私鑰。 keyhunters +2
BitcoinQuasar:核心機制與攻擊模型
BitcoinQuasar 的設計目標是自動搜尋整個比特幣區塊鏈中可重複使用的 nonce 值。該工具執行以下核心功能:
- 區塊鏈掃描:高效解析數百萬個歷史比特幣交易,提取所有唯一簽名對。
- Nonce 碰撞偵測:識別共享相同公共 nonce (r) 的簽名,這是攻擊的前提條件。
- 私鑰恢復:對於每次碰撞,應用數學恢復方法,得到所有者的私鑰。
- 丟失錢包恢復:一旦私鑰找回, BitcoinQuasar提供機制來清點相應錢包中的資金,從而在特定法律和道德條件下找回丟失或無人認領的資產。
安全隱憂和實際影響
透過 BitcoinQuasar 成功實施 nonce 重複使用攻擊,對受影響使用者造成的後果是災難性的:
- 完全失去控制權:攻擊者可立即獲得對錢包所有資金的不可逆轉的存取權。
- 取證利用: BitcoinQuasar 既可以被網路安全專業人員使用,也可以被攻擊者使用,用於探測區塊鏈中由實現不佳的錢包留下的意外 nonce 重用事件。
- 巨額經濟損失:已記錄的真實案例證實,此類漏洞已造成數百萬美元的損失;諸如 CVE-2018-0734、CVE-2020-28498 等備受矚目的 CVE 漏洞詳細描述了加密庫中存在的系統性風險。卡巴斯基+1
- 信任危機:私鑰大規模外洩可能動搖人們對比特幣系統基本安全保障的信心。
防禦和預防建議
鑑於 nonce 重用漏洞的嚴重性,將 BitcoinQuasar 用於研究和審計目的時,必須採取強有力的應對措施來平衡部署:
- 嚴格遵守 RFC6979(確定性 ECDSA nonce)和 BIP-340/BIP-327 等 Schnorr 簽名標準。 keyhunters
- 定期對錢包軟體和加密庫進行獨立的安全性審計。
- 在產生 nonce 時使用高熵、密碼學安全的隨機數產生器。
- 提高開發者和使用者對這些加密最佳實踐的認識。
結論
BitcoinQuasar是一個科學嚴謹的現代密碼學分析和攻擊套件範例。它的功能凸顯了數位簽章中 nonce 重用所帶來的生存威脅——這是少數能夠一舉摧毀比特幣信任架構的軟體缺陷之一。我們需要社群持續保持警惕,改善密碼學安全規範,並進行持續研究,以減輕和監控這一始終存在的風險。 reddit +2
研究論文:MuSig2 中的關鍵 nonce 重複使用漏洞、其根源及安全修復方案
介紹
MuSig2 是一種基於 Schnorr 演算法的現代多重簽章數位簽章方案,在比特幣網路中用於增強隱私性並減少簽章大小。此方案的安全性直接取決於每次簽章工作階段中使用的 nonce 的唯一性和加密強度。 nonce生成機制的不安全實作會導致災難性後果:私鑰完全洩露,資金損失殆盡。
脆弱性發生的機制
經典攻擊場景
經典的密碼學攻擊——隨機數重用攻擊——是指使用同一個隨機數(一次性生成的隨機數)對兩個不同的訊息進行簽名,這可能是故意為之,也可能是由於隨機數生成器存在漏洞或實現存在缺陷(例如,使用固定隨機數 aux_rand或相同的輸入參數)。 bitcoinops +2
給定兩個簽章 $(s_1, r)$ 和 $(s_2, r)$,它們具有相同的公鑰隨機數 $r$,但訊息 $m_1$ 和 $m_2$ 不同,攻擊者可以使用以下公式計算私鑰 $x$:$x = \frac{s_1 – s_2}{H(mmod_1) \(m\$

其中 $H$ 是雜湊函數,$n$ 是分組順序。 aimspress +1
科學形式化
此漏洞被歸類為隨機數重複使用攻擊或重複隨機數攻擊,在 MuSig2 多重簽章方案中,聚合隨機數狀態使情況更加複雜。在某些情況下,由於長時間或平行簽章工作階段中秘密隨機數的儲存或衍生不當(例如,記憶體複製、參數重用),攻擊才有可能發生。 delvingbitcoin +2
安全修復:一種可靠且可重複的解決方案
矯正原則
主要要求:
- 非確定性 :每個會話和訊息的每個 nonce 都必須是唯一的。
- 狀態銷毀 :簽名完成後銷毀秘密 nonce。
- 使用密碼學安全的隨機數產生器(CSPRNG) 。
- 可證明確定且唯一的 nonce 產生 ——例如,使用 MuSig-DN/EdDSA 演算法,使用私鑰、隨機參數和訊息。
安全的隨機數產生方案
BIP-340 和 MuSig-DN 標準中提出了一種安全的方法,其中 nonce 的形成遵循以下原則:
Pythondef secure_nonce(private_key, aux_rand, message):
"""
private_key: bytes (32)
aux_rand: bytes (32), криптографически случайное число
message: bytes
"""
# BIP-340: nonce = Hash(private_key || aux_rand || message)
seed = private_key + aux_rand + message
nonce = sha256(seed)
return nonce
- aux_rand 由加密強度高的生成器產生。 aimspress +2
- nonce 和整個種子在使用後會立即從記憶體中刪除 。 bitcoinops
MuSig2 的安全實作範例(類似 Go 語言的偽代碼)
去func SecureNonceGen(privKey []byte, message []byte) []byte {
// Get auxiliary randomness from /dev/urandom or cryptographically secure PRNG
auxRand := GetSecureRandomBytes(32)
// Combine inputs and hash
seed := append(privKey, auxRand...)
seed = append(seed, message...)
nonce := sha256(seed)
SecureDelete(seed)
return nonce
}
auxRand每個簽名都必須產生一個新的 。- 任何實作都不應該使用固定值
auxRand,例如全零。 - 產生簽名後立即刪除種子和私鑰。
- 即使只發送一條訊息,也絕對不能多次使用同一個私有 nonce。
- 不要把非公開的無稽之談儲存在你的長期記憶中。
科學有效性和建議
使用 MuSig-DN(確定性 nonce 證明)方案可以有效抵禦 nonce 重複使用攻擊,並降低 PRNG 區塊流+2的安全要求。
建議所有現代多重簽章方案的實現,包括 MuSig2,無論平台(Bitcoin Core、HSM、錢包)如何。 bips +2
結論
MuSig2 中存在的 nonce 重複使用漏洞對比特幣錢包和交易的安全性構成根本性威脅。 nonce 生成機制必須基於安全的密碼原則:每個簽章都必須具有唯一性和非確定性,且狀態必須妥善銷毀。諸如 MuSig-DN/BIP-340 等科學建議、標準和最佳實踐,是防止 nonce 重用攻擊的有效可靠途徑。
對於實作 MuSig2 的安全應用程式而言,依照上述原則和程式碼實現安全 nonce 產生是強制性的。
最終科學結論
關鍵的隨機數重複使用漏洞(隨機數重複使用攻擊)是比特幣加密貨幣基礎設施面臨的根本性風險的典型例子。攻擊者只需利用一個簽章錯誤,就能完全洩漏使用者的私鑰,並竊取所有資金。攻擊者只需觀察到幾個具有相同或高度可預測隨機數的簽名即可。這種攻擊,在科學上被稱為隨機數重用攻擊、重複隨機數攻擊或透過隨機數重用恢復私鑰,已經造成了數百萬美元的損失,並影響了許多區塊鏈 。
在 MuSig2 和 Schnorr 等多重簽章方案中,nonce 產生實作中的任何缺陷都可能造成災難性後果:金鑰外洩、未經授權的交易、大規模資金被盜、網路信任度喪失,以及整個比特幣安全架構的崩潰。缺少唯一的 nonce 就好比把保險箱敞開,任由攻擊者輕易打開。
在現代比特幣實現和加密庫中,嚴格的程式碼審計、使用加密強度高的隨機數產生器以及嚴格遵守 BIP-340/BIP-327/RFC6979 標準對於確保其穩健性至關重要。每個簽章必須使用唯一且不可預測的 nonce;這是維護比特幣安全性和信任度的唯一方法。
理解並修復重複隨機數漏洞是所有開發者和研究人員亟待解決的問題。它決定著數十億枚比特幣能否得到安全保護,還是會輕易遭受簡單而具破壞性的攻擊。
確保隨機數的唯一性是比特幣技術在未來多年生存和信譽的關鍵因素 。
- 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://notsosecure.com/ecdsa-nonce-reuse-attack
- https://strm.sh/studies/bitcoin-nonce-reuse-attack/
- https://fenefx.com/en/blog/what-is-nonce/
- https://keyhunters.ru/ecdsa-private-key-recovery-attack-via-nonce-reuse-also-known-as-weak-randomness-attack-on-ecdsa-critical-vulnerability-in-deterestic-nonce-generation-rfc-6979-a-a-danger-on-a-rfc-6970
- https://github.com/kudelskisecurity/ecdsa-polynomial-nonce-recurrence-attack
- https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/
文學:
- keyhunters.ru 金鑰獵人
- “MuSig2:簡易兩輪施諾爾多重簽名” iacr
- BitGo:MuSig2 實作 bitcoinops
- AIMSPress:隨機數產生技術 aimpress
- Blockstream:可驗證的確定性 nonce 區塊流
- BIP-327 MuSig2 標準 bips
- 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?viewType=HTML
- https://bitcoinops.org/en/bitgo-musig2/
- https://delvingbitcoin.org/t/how-many-nonce-reuse-before-exposing-your-musig2-private-key/217
- https://www.aimspress.com/article/id/66755cd6ba35de25885f1687
- https://blog.blockstream.com/musig-dn-schnorr-multisignatures-with-verifiably-deterministic-nonces/
- https://developer.blockchaincommons.com/musig/
- https://bips.dev/327/
- https://iacr.org/archive/crypto2021/12826100/12826100.pdf
- https://docs.rs/musig2/latest/musig2/
- https://pkg.go.dev/github.com/bitweb-project/bted/btcec/v2/schnorr/musig2
- https://btctranscripts.com/stephan-livera-podcast/2020-10-27-jonas-nick-tim-ruffing-musig2
- 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://blog.blockstream.com/musig2-simple-two-round-schnorr-multisignatures/
- https://btctranscripts.com/london-bitcoin-devs/2022-08-11-tim-ruffing-musig2
- https://ishaana.com/blog/nonce_reuse/
- https://blog.blockstream.com/en-musig-key-aggregation-schnorr-signatures/
- https://iacr.org/archive/crypto2021/12826100/12826100.pdf
- https://bips.dev/327/
- https://groups.google.com/d/msgid/bitcoindev/a9f133ff-1d8e-45a3-8186-79fb52bbd467n@googlegroups.com
- https://followin.io/feed/12223834
- https://www.ledger.com/blog-musig2-ledger-bitcoin-app
- https://www.bitvault.sv/blog/bitcoin-multisig-scalability-challenges-and-solutions
- https://bitcoinops.org/en/bitgo-musig2/
- https://bitcoinops.org/en/topics/musig/
- https://btctimes.com/blockstream-upgrades-taproot-compatible-multisig/
- https://lightning.engineering/posts/2025-02-13-loop-musig2/
- https://github.com/bitcoin/bitcoin/issues/23326
- https://github.com/btcsuite/btcd/discussions/2084
- https://delvingbitcoin.org/t/state-minimization-in-musig2-signing-sessions/626
- https://github.com/btcsuite/btcd/releases
- https://www.aimspress.com/article/id/66755cd6ba35de25885f1687
- https://www.lightspark.com/glossary/nonce
- https://iacr.org/cryptodb/data/paper.php?pubkey=31219
- https://dev.to/raselmahmuddev/protecting-api-requests-using-nonce-redis-and-time-based-validation-11nd
- https://www.youtube.com/watch?v=Dzqj236cVHk
- https://www.reddit.com/r/Bitcoin/comments/1j24hh3/nonce_r_reuse_and_bitcoin_private_key_security_a/
- https://nvd.nist.gov/vuln/detail/CVE-2022-23472
- https://nvlpubs.nist.gov/nistpubs/ir/2022/NIST.IR.8214B.ipd.pdf
- https://www.cvedetails.com/cwe-details/338/Use-of-Cryptographically-Weak-Pseudo-Random-Number-Generator.html
- https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
- https://github.com/btcsuite/btcd/discussions
- https://mas.owasp.org/MASTG-TEST-0016/
- https://docs.rs/musig2/latest/musig2/
- https://pkg.go.dev/github.com/btcsuite/btcd/peer
- https://nvd.nist.gov/vuln/detail/cve-2023-31147
- https://balasys.eu/blogs/bitcoin-account-hijacking-ecdsa-nonce-break
- https://thebitcoinmanual.com/articles/musig2-explained/
- https://blog.bitlayer.org/BIP-327_MuSig2_in_Four_Applications/
- https://sagungarg.com/2024-06-03/jun24-btc-enterprise-custody-musig2-multisig-frost
- https://bitcoincore.org/en/2017/03/23/schnorr-signature-aggregation/
- https://blog.blockstream.com/the-key-to-frost-what-is-distributed-key-generation/
- https://www.reddit.com/r/btc/comments/qsypcp/p2sh_taproot_disadvantage/
- 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://keyhunters.ru/ecdsa-private-key-recovery-attack-via-nonce-reuse-also-known-as-weak-randomness-attack-on-ecdsa-critical-vulnerability-in-deterestic-nonce-generation-rfc-6979-a-a-danger-on-a-rfc-6970
- https://notsosecure.com/ecdsa-nonce-reuse-attack
- https://bips.dev/327/
- 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://dl.acm.org/doi/full/10.1145/3596906
- https://www.aimspress.com/article/doi/10.3934/math.2024988
- https://docs.rs/musig2/latest/musig2/
- https://strm.sh/studies/bitcoin-nonce-reuse-attack/
- https://notsosecure.com/ecdsa-nonce-reuse-attack
- https://keyhunters.ru/ecdsa-private-key-recovery-attack-via-nonce-reuse-also-known-as-weak-randomness-attack-on-ecdsa-critical-vulnerability-in-deterestic-nonce-generation-rfc-6979-a-a-danger-on-a-rfc-6970
- https://nvd.nist.gov/vuln/detail/CVE-2024-31497/change-record?changeRecordedOn=04%2F15%2F2024T18%3A15%3A08.913-0400
- https://bitcoinops.org/en/topics/musig/
- https://nvlpubs.nist.gov/nistpubs/ir/2022/NIST.IR.8214B.ipd.pdf
- https://fenefx.com/en/blog/what-is-nonce/
- https://onlinelibrary.wiley.com/doi/10.1002/cpe.8158
- https://github.com/kudelskisecurity/ecdsa-polynomial-nonce-recurrence-attack
- https://www.nadcab.com/blog/bitcoin-nonce
- https://ishaana.com/blog/nonce_reuse/
- https://www.reddit.com/r/Bitcoin/comments/1j24hh3/nonce_r_reuse_and_bitcoin_private_key_security_a/
- https://www.linkedin.com/pulse/role-nonce-blockchain-crucial-component-security-mining-aman-vaths-bh5gc