作者:KEYHUNTER
時間附帶攻擊的關鍵漏洞
時序幻影攻擊(時序側頻道攻擊)
比特幣的加密操作是竊取私鑰最危險且最難偵測的途徑之一。與傳統的攻擊方式不同,這種攻擊不需要係統滲透或惡意程式碼注入——它只需要監控標準加密操作的執行時間,即可逐步恢復敏感數據,包括用戶的私鑰。
摩斯電碼時間技術
《時間陰影》的 運作原理是摩斯電碼密碼學:
- 私鑰的每一位都會產生一個唯一的時間戳記。
- 對數千筆交易的統計分析揭示了模式 報告。 zellic
- 相關性分析可以恢復完整的私鑰
正如 Babylon Labs 的研究人員所展示的那樣,執行時間 ScalarBaseMultNonConst 根據標量長度的不同,範圍在 137 奈秒到 17.344 奈秒之間,從而為每個秘密值創建了一個清晰的「時間簽名」 。
現實世界的威脅與 CVE
現代一些關鍵漏洞的案例證實了時序攻擊的危險性:
- CVE-2024-48930 :secp256k1 中存在嚴重漏洞,允許透過 11 個 ECDH 會話恢復私鑰 security.snyk+1
- CVE-2024-49364 :在簽署單一惡意 GitHub+1 訊息時提取私鑰漏洞
- CVE-2024-49365 :tiny-secp256k1 中的驗證繞過漏洞 cvefeed
米涅瓦攻擊:真實案例演示
研究表明, Minerva攻擊可以利用與nonce位元長度相關的時序訊息,從具有不同nonce的不同訊息的簽名樣本 中恢復簽署金鑰。即使在雜訊最大的情況下,該攻擊也只需要數千個樣本即可成功恢復金鑰。
全球影響
2024年,加密貨幣駭客竊取了超過22億美元,其中私鑰外洩佔所有竊盜案的43.8%。年度最大幾起攻擊事件,包括DMM比特幣被盜3.08億美元,凸顯了防範時序攻擊的重要性 。
比特幣實作中的關鍵漏洞:
從時間攻擊的角度檢視密碼學
隱私外洩:針對比特幣私鑰的時序側破壞攻擊對加密貨幣安全構成全球威脅
這個科學標題突顯了威脅的本質——在執行非恆定執行時間的加密操作時出現的關鍵漏洞,以及時間攻擊對比特幣生態系統造成的後果規模。
研究論文:關鍵時序攻擊漏洞對比特幣生態系統的影響及辨識方法
介紹
比特幣等數位貨幣透過使用橢圓曲線加密演算法 secp256k1 和強電子簽名協議 (ECDSA) 來實現其加密安全性。然而,即使是數學上非常強大的加密演算法,如果實現不當,也可能存在漏洞。其中最危險且研究最少的威脅之一是 時序側頻道攻擊 ,這種攻擊允許攻擊者從合法軟體中提取私鑰 。
漏洞的出現以及攻擊的科學名稱
時序側通道攻擊 是一種針對加密操作實現的攻擊,攻擊者透過分析函數處理秘密資料(隨機數、私鑰)時的執行時間來攻擊加密演算法。例如,在比特幣軟體中,如果將一個點乘以一個標量( ScalarBaseMultNonConst即包含加密金鑰的值)的函數的執行速度取決於該標量的位元長度,則會出現漏洞。 arxiv +1
該攻擊的科學名稱:
- 時序側頻道攻擊 ( usenix+2)
- 有時在文獻中 -ECDSA 側頻道私鑰提取攻擊( mbed-tls.readthedocs+1 )
如果一個函式庫實現了曲線上一點的標量乘法,且執行時間可變,攻擊者可以透過分析計時統計資料高精度地恢復秘密資料。 summerschool -croatia.ru+2
此次攻擊對比特幣生態系統的影響
- 私鑰洩漏 。這種攻擊允許攻擊者透過觀察交易執行時間來恢復相應的私鑰。結果如下:
- 錢包可能被完全破解;
- 用戶資金可能立即被竊;
- 可能會發生未經授權的(「雙重支付」)交易。 fox -it+2
- 針對錢包和節點的大規模攻擊 。如果大量客戶端使用有漏洞的實現,整個比特幣生態系統的可靠性將受到威脅。 summerschool -croatia.ru+1
- 聲譽和信任度受損 。關鍵漏洞會導致網路信任度下降,並引發加密貨幣市場長期調整。
CVE 標識符和範例
此類漏洞已正式記錄在通用漏洞揭露資料庫中:
- CVE-2019-25003 – libsecp256k1 中的一個漏洞允許對私鑰進行計時攻擊 。 advisories.gitlab
- CVE-2024-48930 – Node.js secp256k1 綁定中的一個嚴重漏洞允許透過計算副作用來恢復私密金鑰。 incibe +2
- CVE-2019-18222 、 CVE-2019-14318 – 其他加密函式庫和 ECDSA 實作有類似問題。 cvedetails +1
預防和糾正的科學建議
為了阻止基於時間的攻擊威脅:
- 僅使用能在常數時間內完成對秘密資料操作的演算法 。 cure53 +2
- 對開源加密庫進行獨立的科學審計。
- 立即將軟體更新至已打補丁的版本,或實作您自己的遮罩、乘法加密和記憶體保護演算法。 cure53 +1
安全實作範例(Go):
去:func Generator() *PublicKey {
var (
result JacobianPoint
k secp.ModNScalar
)
k.SetInt(1)
ScalarBaseMult(&k, &result) // Функция гарантирует константное время!
result.ToAffine()
return NewPublicKey(&result.X, &result.Y)
}
重要提示:替換後的功能必須經過獨立驗證,確保不存在臨時通道!
結論
時序側通道攻擊(TSC)仍然是加密貨幣生態系統(尤其是比特幣)安全面臨的重大威脅。一旦成功實施,此類攻擊可能導致大規模私鑰外洩、經濟損失和系統崩潰。只有持續改進密碼庫、進行嚴格的科學審計以及實施恆定時間演算法,才能確保用戶資金安全和網路的未來穩定性 。
對所提出的btcec程式碼中的加密漏洞進行分析
在對所提供的程式碼進行徹底檢查並分析 secp256k1 加密庫中的現代漏洞後, 在實作中發現了 一個嚴重的定時攻擊漏洞Generator()。
已識別的漏洞
漏洞線:
去:ScalarBaseMultNonConst(&k, &result)

漏洞描述
ScalarBaseMultNonConst btcd/dcrd 函式庫中的 一個函式 存在時間攻擊漏洞 。攻擊者可以利用此漏洞透過分析加密操作的執行時間來恢復私鑰。 babylonlabs +1
漏洞機制
- 執行時間可變 :
ScalarBaseMultNonConst執行時間可變,取決於標量 tlseminar.github+1的長度。 - 資訊透過時序通道洩漏 :函數的執行時間與
⌈lg(k)⌉標量 k 的對數近似呈線性關係,這使得計算時間與標量 k 的對數之間存在直接相關性 。 tlseminar.github - 針對基數乘法的攻擊:攻擊者可以利用計時測量來提取有關 nonce 的信息,進而恢復BabylonLabs 的 私鑰。
技術細節
Generator() 函數中存在漏洞:
去:func Generator() *PublicKey {
var (
result JacobianPoint
k secp.ModNScalar // k устанавливается в 1
)
k.SetInt(1)
ScalarBaseMultNonConst(&k, &result) // ← УЯЗВИМОСТЬ ЗДЕСЬ
result.ToAffine()
return NewPublicKey(&result.X, &result.Y)
}
透過時間通道發動攻擊
研究表明, ScalarBaseMultNonConst BTCD實現容易受到時序攻擊,從而危及加密操作: babylonlabs
- 執行時間可變 :此函數執行時間為 t ,其中 t 是處理標量tlseminar.github
t(⌈lg(k)⌉-1)中一位所需的時間。 - 資訊外洩 :攻擊者可以利用執行時間和標量之間的相關性來恢復秘密資訊。
生態系中的相關脆弱性
這個問題並非個案——研究發現,針對 secp256k1 實現的計時攻擊屢見不鮮: wolfssl+1
- CVE-2019-13628 : wolfSSL 中 ECDSA 簽章操作的 nonce 大小洩露
- Babylon Labs審計:在Babylon Labs適配器簽章 中發現嚴重nonce重用漏洞
- OpenSSL 時序攻擊: tlseminar.github 上 記錄了針對 Montgomery Ladder 實現的攻擊。
消除建議
1. 使用恆定時間
替換 ScalarBaseMultNonConst 為恆定時間實現:
去:// Безопасная альтернатива
ScalarBaseMult(&k, &result) // Константное время
2. 防止時間攻擊
實施額外的防護措施:
- 使用密碼學上安全的隨機數產生器
- 時間通道掩蔽的實現
- 驗證所有輸入參數
3. 更新庫
請使用更新版本的 secp256k1 庫,其中包含針對臨時漏洞的修復。 github
對安全的影響
此漏洞可能導致:
- 透過時序分析洩漏私鑰
- 交易簽名系統中的加密秘密洩露
- 比特幣和其他加密貨幣系統中的隱私侵犯問題
雖然在這個特定情況下,該函數 Generator() 使用了固定值 k=1,但使用易受攻擊的函數 ScalarBaseMultNonConst 會產生潛在的攻擊向量,並違反了密碼學應用程式中安全編程的原則。
這篇研究論文清楚地解釋了為什麼在加密操作中使用執行時間不恆定的函數會對 基於比特幣和其他加密貨幣的系統構成嚴重的安全威脅,需要開發人員和安全研究人員立即關注。

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

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

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

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

BTCNinja:利用時序側頻道攻擊恢復比特幣私鑰
比特幣加密基礎設施中的時序側通道漏洞對加密貨幣錢包的安全性和完整性構成嚴重威脅,攻擊者可以透過分析加密操作執行時間的細微變化來提取私鑰。 BTCNinja 是一款先進的取證利用工具包,專門用於利用橢圓曲線密碼學 (secp256k1) 實作中存在的這些弱點,以有針對性地恢復遺失或洩漏的比特幣錢包私鑰。
BTCNinja 的角色與機制
BTCNinja 專為監控和分析比特幣加密例程(例如 ECDSA 運算中的標量乘法)的執行時間差異而設計。該工具利用高解析度時間探針,收集並統計分析來自交易簽名或錢包操作的數千個樣本。透過將這些時間簽章與特定的加密金鑰(私鑰位元或隨機數)關聯起來,BTCNinja 使用先進的相關性和迴歸技術重建底層私鑰。
BTCNinja的攻擊流程包括:
- 對目標錢包操作進行被動計時測量(無需惡意程式碼注入)。
- 大量統計分析,揭示每個密鑰獨有的時間特徵模式。
- 自動關聯和金鑰恢復程序,重建遺失或洩漏的比特幣錢包的完整私鑰。
BTCNinja利用的關鍵時間漏洞
BTCNinja 的目標是非恆定時間實現,特別是像ScalarBaseMultNonConst基於 Go 的比特幣庫(例如 btcec、dcrd)中的函數。這些函數的執行時間與秘密標量的位元長度呈線性關係,從而形成一個獨特的“時間摩爾斯電碼”,用於表徵每個私鑰。這種直接關聯使得在存在漏洞的實作時能夠精確地提取金鑰。
被利用的時序漏洞範例:
- 標量乘法運算運行時間可變,暴露了秘密位元長度。
- ECDSA 簽章中的 nonce 洩露,允許基於簽章的金鑰重建。
- 跨會話時間分佈分析,克服噪音和環境變化的影響。
真實世界的影響與攻擊場景
比特幣加密技術的實作缺陷導致多個針對計時攻擊的CVE漏洞被正式註冊,包括CVE-2024-48930和CVE-2019-25003。 BTCNinja的技術適用於任何受影響的錢包或節點,因此可以:
- 錢包鑰匙被竊或未經授權找回。
- 大量易受攻擊的比特幣客戶端資金遭盜用。
- 透過用戶交易進行取證重建來揭露隱私侵犯。
僅在 2024 年,數十億美元的損失就歸咎於私鑰攻擊,其中時序側頻道攻擊被認為是主要原因之一。
對策和建議
科學文獻和密碼學最佳實踐都強調了使用恆定時間加密例程、強隨機掩碼以及定期對錢包實現進行安全審計的必要性。 BTCNinja 能夠利用哪怕是微小的時間差異,這更加凸顯了這些補救措施的迫切性。
緩解措施包括:
- 將所有標量乘法和密碼簽章函數重構為常數時間實作。
- 將自動計時異常偵測功能整合到錢包軟體中。
- 在敏感操作中採用掩蔽和隨機輸入技術。
結論
BTCNinja代表了比特幣安全領域中側通道攻擊研究與實用攻擊工具的前沿融合。它的方法表明,即使是數學上穩健的加密原語也容易受到實現層面的漏洞影響,這些漏洞足以破壞加密貨幣生態系統的基礎安全。時序攻擊不僅威脅到個人用戶,也威脅到全球數位資產的信任和金融穩定。只有嚴謹的密碼工程和積極主動的安全措施才能抵禦 BTCNinja 等工具強大的取證能力。
Secp256k1實作中存在的漏洞及其有效的消除方法
介紹
近年來,橢圓曲線密碼運算(Secp256k1)已成為比特幣和許多其他區塊鏈應用安全性的基礎。然而,儘管橢圓曲線本身俱有很高的數學安全性,但實際應用中點乘運算(例如, ScalarBaseMultNonConst)已被證明容易受到計時攻擊,這可能導致私鑰洩漏和其他安全漏洞。 github +2
脆弱性發生的機制
時序攻擊 是一種針對加密實現的攻擊,攻擊者透過分析操作的時序來判斷是否滿足秘密資料(標量、私鑰、隨機數)的值。在一些流行的 Go 語言函式庫(例如 btcec、dcrd)中, easychair+1函數就存在這種攻擊機制。
去ScalarBaseMultNonConst(&k, &result)
使用演算法執行乘法運算,該演算法的執行時間直接取決於標量的位元長度 k。如果該值 k 取決於一個秘密參數,攻擊者可以對處理不同輸入時的計時差異進行統計分析,從而逐步獲得有關私鑰或隨機數的資訊。 go101 +2
攻擊機制範例
- 攻擊者使用不同的輸入值發動多個操作,並測量每個操作的執行時間。
- 透過相關性分析,可以根據預先已知的執行模型重建秘密標量的值。
- 重複攻擊 只需幾千次迭代和觀察 即可重構私鑰。 cure53 +1
建構強大的防禦
密碼規則
所有對秘密資料(私鑰、隨機數)的操作都必須 嚴格在恆定時間內完成 ,無論資料值為何。
一個可靠的解決方法
而不是使用存在漏洞的函數:
去ScalarBaseMultNonConst(&k, &result)
必須使用 恆定時間 實現。
安全碼選項
Go 語言實作範例(btcec/dcrd):
去:// Предположим, что библиотека содержит константно-временную реализацию ScalarBaseMult
ScalarBaseMult(&k, &result) // ЭТА ФУНКЦИЯ ГАРАНТИРУЕТ КОНСТАНТНОЕ ВРЕМЯ
result.ToAffine()
return NewPublicKey(&result.X, &result.Y)
如果所使用的函式庫版本缺少此類函數,建議使用修補程式或實作一種演算法,該演算法採用 雙重遮罩 、記憶體加密和其他經典的側頻道攻擊防護方法。 github +1
迷彩圖案範例
去:// Использование дополнительной случайной маски для скаляра
maskedK := k ^ randomMask
ScalarBaseMult(&maskedK, &result) // Выполнение точно в константное время
// После завершения операции маску удаляем
全系統保護措施
結論
對 Secp256k1 的點乘運算進行計時攻擊是竊取私鑰的一種真實且極度危險的途徑。此類運算的安全性只能透過使用 恆定時間演算法 並嚴格遵守加密庫的實作規則和更新來實現。以下是一個完全安全的程式碼模板,可以防止此漏洞: thib+2
去:func Generator() *PublicKey {
var (
result JacobianPoint
k secp.ModNScalar
)
k.SetInt(1)
ScalarBaseMult(&k, &result) // Безопасная операция!
result.ToAffine()
return NewPublicKey(&result.X, &result.Y)
}
ScalarBaseMult 的實作必須是常數時間的! go101+2
科學文章的最終結論
比特幣加密作業中的關鍵時序側頻道攻擊漏洞是竊取私鑰最危險且最難偵測的途徑之一。與傳統攻擊不同,這種攻擊不需要係統滲透或惡意程式碼注入——只需監控標準加密操作的執行時間,即可逐步恢復敏感數據,包括用戶的私鑰。 bitvault +2
這種漏洞的特殊危險在於其隱藏性:使用者和系統都無法察覺任何威脅跡象,直到資金完全失控。這種攻擊破壞了比特幣加密經濟賴以建立的根本完整性和保密性。由於時序攻擊導致私鑰遺失,不僅意味著資金直接被盜,還意味著整個生態系統信任度的下降、大規模駭客攻擊的威脅,以及對全球數百萬用戶的不利影響 。
應對此類攻擊需要深厚的科學和工程方法——關鍵演算法的持續即時運作、持續的程式碼審計、交易延遲的實施,以及對設備和軟體效能中可疑異常的監控。時間副作用攻擊是當今現代密碼學面臨的主要挑戰,只有系統性的因應措施才能保障資金安全、私鑰完整性以及未來數位貨幣的永續發展 。
比特幣不僅在數學上必須安全,而且在工程層面也必須安全——否則,即使是最強大的加密技術也容易受到側通道攻擊的侵害。
- https://en.wikipedia.org/wiki/Side-channel_attack
- https://www.rambus.com/blogs/side-channel-attacks/
- https://www.bitvault.sv/blog/time-delayed-transactions-vs-side-channel-attacks
- https://en.wikipedia.org/wiki/Timing_attack
- https://crypto.stanford.edu/timings/
- https://www.sciencedirect.com/topics/computer-science/side-channel-attack
- https://ro.ecu.edu.au/ism/166/
文獻和資料
- [針對 OpenSSL ECDSA secp256k1 的端對端自動化快取計時攻擊] easychair
- [GitHub:ScalarBaseMult 非恆定時間,修復] GitHub
- [蒂博·科拉斯:時機攻擊無所不在] 蒂博
- [StackOverflow:防止計時攻擊] stackoverflow
- 【Cure53 審核:noble-secp256k1 攻擊時機抗性】 cure53
這些措施能夠有效抵禦臨時攻擊,並保障私鑰交易的安全,進而增強加密貨幣系統和錢包的根本安全性。 cure53 +1
- https://github.com/cosmos/cosmos-sdk/issues/7051
- https://thib.me/timing-attacks-everywhere
- https://stackoverflow.com/questions/8030017/preventing-timing-attacks
- https://easychair.org/publications/paper/jZH5
- https://docs.go101.org/std/src/crypto/elliptic/params.go.html
- https://cure53.de/pentest-report_noble-lib.pdf
- https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID4844542_code6772539.pdf?abstractid=4844542&mirid=1
- https://github.com/bitcoin-dot-org/bitcoin.org/issues/2894
- https://matrix-org.github.io/go-neb/pkg/crypto/elliptic/index.html
- https://github.com/golang/go/issues/34648
- https://pkg.go.dev/github.com/otrv4/ed448
- https://www.reddit.com/r/crypto/comments/bjxz61/secp256k1_listed_as_insecure/
- https://pkg.go.dev/crypto/elliptic
- https://github.com/advisories/GHSA-584q-6j8j-r5pm
- https://tip.golang.org/src/crypto/elliptic/params.go?s=868%3A915
- https://www.ijcns.latticescipub.com/wp-content/uploads/papers/v4i1/A1426054124.pdf
- https://groups.google.com/g/golang-dev/c/jHFmXb0jdyE
- https://nvd.nist.gov/vuln/detail/CVE-2024-48930
- https://golang.bg/src/crypto/elliptic/params.go?s=6127%3A6197
- https://docs.babylonlabs.io/assets/files/zellic_babylon_genesis_chain_audit_2025_03.pdf
- https://gbhackers.com/critical-javascript-library-vulnerability/
- https://tlseminar.github.io/docs/stillpractical.pdf
- https://www.wolfssl.com/docs/security-vulnerabilities/
- https://github.com/bitcoin-core/secp256k1
- https://www.cvedetails.com/cve/CVE-2023-49292/
- https://www.ijcns.latticescipub.com/wp-content/uploads/papers/v4i1/A1426054124.pdf
- https://librehash.xyz/avalanche-protocol-signature-exploit-part-two
- https://news.ycombinator.com/item?id=34250604
- https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4844542
- https://pkg.go.dev/github.com/bynil/btcd/btcec/v2
- https://www.wolfssl.com/using-secp256k1-with-wolfssl-a-step-by-step-guide/
- https://zenodo.org/records/11277691
- https://pkg.go.dev/github.com/btcsuite/btcd/btcec
- https://www.reddit.com/r/crypto/comments/bjxz61/secp256k1_listed_as_insecure/
- https://ramd.reapress.com/journal/article/download/62/63/295
- https://nvd.nist.gov/vuln/detail/CVE-2023-49292
- https://github.com/elikaski/ECC_Attacks
- https://github.com/topics/secp256k1?l=go
- https://dl.acm.org/doi/10.1145/3659677.3659714
- https://security.snyk.io/package/npm/elliptic/6.4.1
- https://www.iaeng.org/IJCS/issues_v50/issue_2/IJCS_50_2_44.pdf
- https://estudiobitcoin.com/elliptic-curve-in-bitcoin/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction
- https://tlseminar.github.io/timing-attacks/
- https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype
- https://dspace.cvut.cz/bitstream/handle/10467/83142/F8-BP-2019-Zahumensky-Adam-thesis.pdf?sequence=-1&isAllowed=y
- https://arxiv.org/pdf/2504.13737.pdf
- https://www.reddit.com/r/learnjavascript/comments/t5tcd3/generator_functions_useful_or_not/
- https://sca.analysiscenter.veracode.com/vulnerability-database/security/timing-attack/go/sid-44984
- https://stackoverflow.com/questions/58578523/why-substituting-the-generator-point-in-elliptic-curve-secp256k1-not-satisfying
- https://stackoverflow.com/questions/78913849/understanding-the-need-for-generator-functions-in-javascript
- https://bitcointalk.org/index.php?topic=271486.100
- https://www.cve.org/CVERecord/SearchResults?query=Random
- https://www.reddit.com/r/cryptography/comments/q55pa6/analyzing_vulnerabilities_in_ecdsa256_on/
- https://nvd.nist.gov/vuln/detail/CVE-2022-39218
- https://www.reddit.com/r/javascript/comments/yojg3z/why_would_anyone_need_javascript_generator/
- https://stackoverflow.com/questions/24463051/php-how-to-cleanup-after-generator-function
- https://pkg.go.dev/vuln/list
- https://www.nervos.org/knowledge-base/secp256k1_a_key%20algorithm_(explainCKBot)
- https://stackoverflow.com/questions/8389324/how-to-calculate-point-addition-using-jacobian-coordinate-system-over-elliptic-c
- https://cryptodeeptech.ru/publication/
- https://www.iacr.org/archive/eurocrypt2004/30270258/projective.pdf
- http://www.stoecklin.net/academics/projects/projectivecoordinatesleak/page_data/stoecklin_marc_WS2006_projective_coordinates_leak_PRESENTATION.pdf
- https://www.reddit.com/r/crypto/comments/g2b5gh/from_a_to_z_projective_coordinates_leakage_in_the/
- https://fedisecfeeds.github.io
- https://dockeyhunt.com/enhancing-cryptographic-security-with-noble-secp256k1-a-comprehensive-analysis/
- https://github.com/developer3000S/PoC-in-GitHub
- http://spoisu.ru/files/ibrr/ibrr2007/ibrr2007_trudi.pdf
- https://www.mepcoeng.ac.in/docs/syllabus/R2019/UG/BT-BBT-R19.pdf
- https://www.scribd.com/document/904383926/Basic-Prep
關鍵術語: 定時攻擊、ECDSA 側通道攻擊、CVE-2019-25003、CVE-2024-48930、secp256k1、私鑰、比特幣安全、ScalarBaseMult 常數時間。
文學:
- https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4844542
- https://attacksafe.ru/noble-secp256k1/
- https://summerschool-croatia.cs.ru.nl/2023/slides/Jan_slides.pdf
- https://arxiv.org/html/2306.07249v2
- https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/garcia
- https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2019-12/
- https://www.fox-it.com/be/technical-advisory-rohnp-key-extraction-side-channel-in-multiple-crypto-libraries/
- https://advisories.gitlab.com/pkg/cargo/libsecp256k1/CVE-2019-25003/
- https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2024-48930
- https://github.com/advisories/GHSA-584q-6j8j-r5pm
- https://nvd.nist.gov/vuln/detail/CVE-2024-48930
- https://www.cvedetails.com/cve/CVE-2019-14318/
- https://cure53.de/pentest-report_noble-lib.pdf
- https://www.sciencedirect.com/science/article/pii/S2090447925002369
- https://arxiv.org/pdf/2006.12143.pdf
- https://github.com/cryptocoinjs/secp256k1-node/security/advisories/GHSA-584q-6j8j-r5pm
- https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2020-04/
- https://nvd.nist.gov/vuln/detail/CVE-2024-23953
- https://www.reddit.com/r/crypto/comments/1zmzto/sidechannel_attack_against_openssls_ecdsa/
- https://feedly.com/cve/CVE-2025-29774