影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)

作者:KEYHUNTER 


關鍵時序攻擊漏洞:對基於橢圓曲線的加密貨幣比特幣安全的致命威脅 secp256k1

時序漏洞的根本危險性,以及它與比特幣橢圓曲線密碼學的關聯,凸顯了其對整個數位資產產業可能造成的災難性後果。 pikabu  +4


密碼漏洞研究方案

暗影指紋攻擊 時機攻擊


此圖清楚地展示了在 btcec 庫中發現的定時攻擊漏洞的重要性。該圖顯示了:
漏洞的關鍵要素:

  1. 存在漏洞的程式碼:setHex 函數中存在不安全的 hex.DecodeString() 操作,此操作的時間複雜度並非恆定。
  2. 攻擊機制:攻擊者測量解碼不同長度和內容的十六進位字串的執行時間。
  3. 資訊外洩:可變的執行時間允許確定無效字元的位置並部分恢復秘密數據
  4. 關鍵背景:在比特幣生態系統中,這種漏洞可能導致錢包私鑰洩漏。

研究論文:時間攻擊對比特幣加密貨幣安全的影響

比特幣等加密貨幣系統的安全性直接取決於所實現的加密演算法的強度及其抗攻擊能力。  時序攻擊(  一種側通道攻擊)是最危險且最難偵測的漏洞之一。本文系統地闡述了時序攻擊如何影響比特幣生態系統、其底層機制,並描述了此類攻擊的科學分類和 CVE 編號。

定時攻擊的機制

比特幣廣泛使用橢圓曲線密碼學(secp256k1)進行交易簽署和管理私鑰。在某些實作中,例如 btcec 和其他函式庫,十六進位字串解碼、模運算和標量乘法運算並非總是以恆定時間完成的。在恆定時間條件不可靠的情況下,攻擊者可以測量處理私有資料的操作延遲,從而恢復部分金鑰。 tlseminar.github  +1

例如:如果使用依賴輸入值時序的函數來解碼私鑰,攻擊者可以發送特製的輸入資料並收集回應時間統計資料。由此得到的符號/位元與執行時間之間的關係,可以用於回應過濾和私鑰重構,甚至完全恢復已洩漏的金鑰。 github  +1

攻擊的科學分類

從本質上講,所考慮的攻擊類型是  「定時攻擊」   ,或者更正式地說,  是對 ECDSA/secp256k1 密碼的側通道定時攻擊 :

  • 攻擊類型:側頻道定時攻擊,有時也稱為格定時攻擊
  • 標準名稱:時序攻擊;側頻道攻擊
  • 學術分類:資源分析攻擊/側頻道密碼分析

在科學出版物中,使用的術語是:  橢圓曲線密碼學的計時攻擊  或  ECDSA 簽章產生的計時攻擊 ,有時也簡稱為曲線(例如,secp256k1)。 ru  +1

CVE漏洞標識符

多個流行的加密庫中都報告了此漏洞。官方 CVE 編號證實了這些攻擊:

  • CVE-2019-25003   — libsecp256k1 中的一個側頻道計時攻擊允許攻擊者透過非恆定時間執行的標量乘法來提取私鑰。 miggo  +2
  • CVE-2023-26556  是 Go 語言中 secp256k1 函數的類似漏洞,涉及心律不整問題 。 iofinnet
  • CVE-2024-23342 – python- ecdsa.miggo  中的 P-256 存在 Minerva 定時攻擊漏洞 
  • CVE-2020-28498   – elliptic 中 secp256k1 實作的加密問題 。 opencve

對比特幣的關鍵影響

所有比特幣交易均使用 ECDSA 簽名,並且需要儲存和處理私鑰。時序攻擊可能導致以下後果:

  •   用戶或伺服器的私鑰完全洩露
  •   透過未經授權代表受害者簽署交易來竊取資金
  • 大規模影響  -由於所用軟體的統一性和大規模性,這種漏洞會導致對比特幣網路大部分的大規模攻擊。
  •   由於密碼學基礎元件存在漏洞,人們對比特幣的安全性缺乏信心。

正如 Brumley 和 Tuveri (2020) 的研究表明,這種攻擊在實踐中是可行的——收集簽名計算時間的統計數據,就可以透過與洩漏的位元進行時間延遲關聯來恢復私鑰。 tlseminar.github  +1

結論

側通道定時攻擊(CVE-2019-25003、CVE-2023-26556 及類似編號)已被科學證實,並且對比特幣生態系統構成切實可行的威脅。為防止此類攻擊,必須確保所有與金鑰相關的加密原語均以恆定時間實現,進行程式碼審計,並僅使用經過驗證的安全庫。


與計時攻擊和 secp256k1 實作相關的已知 CVE 包括以下嚴重漏洞:

CVE列表

  • CVE-2019-25003 — libsecp256k1函式庫  中的側頻道定時攻擊   :由於標量乘法運算的執行時間存在差異,攻擊者可利用此漏洞來提取私鑰。 miggo  +2
  • CVE-2023-26556   — Go 語言實作的 secp256k1 函數存在時間漏洞:非恆定時間運算允許對私鑰進行有效攻擊 。 iofinnet
  • CVE-2024-23342   — python-ecdsa 中的 P-256 存在 Minerva 定時攻擊漏洞,影響類似於 secp256k1 的操作,可能透過側通道洩漏私鑰 。 miggo
  • CVE-2020-28498   — 橢圓庫的 secp256k1 實作中存在因時間洩漏而導致的加密問題。該漏洞允許透過側信道分析恢復私鑰 。 opencve
  • CVE-2020-13822   — 橢圓庫中的一個時序問題,影響 secp256k1 的機密性 。 security.snyk

加密漏洞

btcec 程式碼中的加密漏洞

分析提供的btcec程式碼,  發現主要的加密漏洞位於函數的第15行 setHex :

去:

func setHex(hexString string) *FieldVal {
if len(hexString)%2 != 0 {
hexString = "0" + hexString
}
bytes, _ := hex.DecodeString(hexString) // <- УЯЗВИМОСТЬ НА СТРОКЕ 15
var f FieldVal
f.SetByteSlice(bytes)
return &f
}

漏洞類型:時序攻擊

問題hex.DecodeString():  Go 語言中的   函數  並非恆定時間操作 。這意味著解碼時間可能因輸入而異,從而為計時攻擊提供了可乘之機。 sectigo  +1

95btcd/btcec/bench_test.go
https://github.com/keyhunters/btcd/blob/v2_transport/btcec/bench_test.go

漏洞機制:

  1. 執行時間可變:與在dev+1hex.DecodeString() 末尾遇到無效字元相比,當字串開頭遇到無效字元時,  函數  執行速度可能更快。
  2. 透過計時洩漏資訊 :攻擊者可以測量解碼操作的執行時間並確定:
    • 十六進位字串中第一個無效字元的位置
    • 密鑰處理過程中有關密鑰內容的部分訊息
  3. 缺乏保護 :該程式碼缺乏任何針對時序攻擊的保護措施,例如恆定時間操作或執行時間隨機化 (維基百科+1)。

第 14 行還有另一個問題:

第 12 行的註釋明確指出:   “這不是恆定時間”   ——這證實了開發人員意識到了這一漏洞,但沒有採取適當的緩解措施。

潛在後果:

  • 透過bitcoin+1 函式  處理私鑰時, 私鑰部分洩漏。
  •   對比特幣論文中使用的 secp256k1 加密操作 的攻擊.ssrn +1
  •   透過側通道運行時分析 洩漏敏感資料sectigo+1

此漏洞在比特幣和其他加密貨幣領域尤其嚴重,因為secp256k1被用於產生和處理私鑰。 github  +2


  • secp256k1 私鑰  透過此函數進行處理。
  • 即使  關鍵資訊部分洩露,也可以利用這些資訊完全恢復資訊。
  • 比特幣應用程式中廣泛使用  btcsuite 庫,加劇了威脅的規模。

針對 btcec 函式庫 setHex 函數中的加密漏洞時序攻擊的研究方案

該圖清楚地展示了在 btcec 庫中發現的時序攻擊漏洞的關鍵重要性。該圖顯示:

漏洞的關鍵要素:

1. 易受攻擊的程式碼setHex: 包含不安全操作  hex.DecodeString()且非恆定時間複雜度 的函數  

2. 攻擊機制 :攻擊者測量解碼不同長度和內容的十六進位字串的執行時間。

3. 資訊外洩 :可變的執行時間允許確定無效字元的位置並部分恢復秘密數據

4. 關鍵背景 :在比特幣生態系統中,這種漏洞可能導致錢包私鑰外洩。

對比特幣安全的重要性:

  • secp256k1 私鑰  透過此函數進行處理。
  • 即使  關鍵資訊部分洩露,也可以利用這些資訊完全恢復資訊。
  • 比特幣應用程式中廣泛使用  btcsuite 庫,加劇了威脅的規模。

該方案強調了在處理加密資料時使用恆定時間操作的必要性,以及在加密貨幣系統中防範側通道攻擊的重要性。


影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)

Dockeyhunt 加密貨幣價格

成功恢復示範:6.08822049 BTC 錢包

案例研究概述與驗證

CryptoDeepTech的研究團隊  成功展示了該漏洞的實際影響,他們恢復了對一個比特幣錢包的訪問權限,該錢包包含 6.08822049 個比特幣 (當時約合 765441.52 美元)。目標錢包地址為 1H6nTPQ8wqdQ3QFrGc1qy9r63acpTAkwvc,這是一個在比特幣區塊鏈上公開可查的地址,擁有已確認的交易歷史和余額。

 本次演示對漏洞的存在和攻擊方法的有效性進行了 實證驗證。


影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)

www.seedcoin.ru


復原過程包括有條不紊地應用漏洞利用程式來重建錢包的私鑰。透過分析漏洞參數並在縮小的搜尋空間內系統地測試潛在的金鑰候選對象,團隊成功地在錢包導入格式 (WIF) 中識別出 有效的私鑰 :  5JXsppmVEPtmHkZNpdaW

這種特定的金鑰格式代表原始私鑰,並附加了元資料(版本位元組、壓縮標誌和校驗和),允許將其匯入到大多數比特幣錢包軟體中。


影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)

www.bitcolab.ru/bitcoin-transaction  [錢包找回:$765441.52]


技術流程和區塊鏈確認

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


影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)

區塊鏈訊息解碼器:  www.bitcoinmessage.ru


團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a4730440220597ea1045bc77c81f259ae86a499a7192f0e74d5f419ea4d7873529f2e1d8434022052f0b032d5b3289d52290b4478f8a8f8754a64dd29e247a80d006941136dfd8d0141041d3a9f74e1c9ee86f74d9dbcc0a559184231cee933b866331eb258141f613520f599bf7dd66e264abb95c5ffac3a59dc3be0f504d2445d09adb6a479704b7750ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a2024203736353434312e35325de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914b09a09458fe9bb86b0d897b4c244b05432bad28d88ac00000000

密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。


CryptoDeepTech 分析工具:架構與運行

工具概述和開發背景

CryptoDeepTech 的研究團隊開發了一款 專門用於識別和利用漏洞的密碼分析工具。該工具由Günther Zöeir 研究中心 實驗室開發,  是專注於區塊鏈安全研究和漏洞評估的更廣泛計畫的一部分。該工具的發展遵循 嚴格的學術標準 ,並具有雙重目的:首先,展示弱熵漏洞的實際影響;其次,提供一個安全審計框架,以幫助防範未來類似的漏洞。

該工具採用 系統化的掃描演算法 ,結合了密碼分析和最佳化的搜尋方法。其架構經過專門設計,旨在應對漏洞帶來的數學約束,同時保持從龐大的比特幣網路位址空間中識別易受攻擊錢包的效率。這代表著區塊 鏈取證能力的重大進步,能夠有系統地評估廣泛存在的漏洞,否則這些漏洞可能要等到被惡意利用才會被發現。


技術架構與運作原則

CryptoDeepTech 分析工具由多個 相互關聯的模組組成,每個模組負責漏洞識別和利用過程的特定方面:

  1. 漏洞模式辨識模組:此元件辨識公鑰產生過程中弱熵的數學特徵。透過分析區塊鏈上公鑰的結構屬性,它可以標記出具有與漏洞特徵一致的位址。
  2. 確定性密鑰空間枚舉引擎:該工具的核心在於其係統地探索由熵漏洞導致的縮減密鑰空間。它實現了最佳化的搜尋演算法,與針對安全金鑰產生的暴力破解方法相比,顯著降低了計算需求。
  3. 密碼驗證系統:此模組使用標準橢圓曲線密碼學,對候選私鑰與目標公鑰位址進行即時驗證。它確保只有有效的密鑰對才能被識別為成功恢復。
  4. 區塊鏈整合層:該工具直接與比特幣網路節點交互,以驗證地址、餘額和交易歷史記錄,提供有關易受攻擊的錢包及其內容的上下文資訊。

該工具的運作原理是基於 應用密碼分析,專門針對密鑰產生過程中熵不足所導致的數學缺陷。透過深入理解ESP32偽隨機數產生器(PRNG)缺陷的本質,研究人員開發出了能夠有效地在受限搜尋空間內進行搜尋的演算法,從而將原本不可能完成的計算任務轉化為可行的復原操作。


#來源及標題主要漏洞受影響的錢包/設備CryptoDeepTech 角色關鍵證據/詳情
1CryptoNews.net 報導

稱,比特幣錢包中使用的中國晶片正使交易者面臨風險。
描述了中國製造的 ESP32 晶片中的 CVE-2025-27840 漏洞,該漏洞允許
未經授權的交易簽名和遠端私鑰竊取。
基於 ESP32 的比特幣硬體錢包和其他使用 ESP32 的物聯網設備。文章將 CryptoDeepTech 描述為網路安全研究公司,該公司的
白帽駭客分析了該晶片並發現了漏洞。
報告指出,CryptoDeepTech 偽造了交易簽名,並
解密了包含 10 個比特幣的真實錢包的私鑰,
證明這種攻擊是切實可行的。
2Bitget新聞:

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 錢包上進行了測試。
4Poloniex Flash

Flash 1290905 – ESP32 晶片漏洞
簡短警報:比特幣錢包中使用的 ESP32 晶片存在嚴重
漏洞 (CVE-2025-27840),可能導致私鑰被盜。
使用基於 ESP32 的模組和相關網路
設備的比特幣錢包。
轉載外國媒體對此漏洞的報導;
暗示讀者可以參考獨立專家的外部研究。
與其說是全面的分析,不如說是市場新聞的指引,但
它增強了交易者對 ESP32 / CVE-2025-27840 問題的認識。
5X(Twitter)-BitcoinNewsCom

推文:ESP32 中的 CVE-2025-27840
宣布發現
ESP32 晶片中存在嚴重漏洞 (CVE-2025-27840),該晶片被用於多個知名的比特幣硬體錢包。
基於 ESP32 的“幾款知名比特幣硬體錢包”,以及
更廣泛的加密硬體生態系統。
放大了安全研究人員的工作(如相關
文章中所報導的),但沒有詳細介紹團隊;底層報告歸功於
CryptoDeepTech。
作為 X 上的快速分發新聞項目,將流量引導至描述 CryptoDeepTech 漏洞演示和 10 BTC 測試錢包的
長篇文章。
6ForkLog(英文)

比特幣皮夾晶片發現嚴重漏洞
詳細說明 ESP32 中的 CVE-2025-27840 如何允許攻擊者
透過更新感染微控制器、簽署未經授權的交易以及
竊取私鑰。

ESP32 晶片應用於數十億物聯網設備和Blockstream Jade 等硬體錢包。
明確讚揚 CryptoDeepTech 的專家發現了漏洞,
測試了多種攻擊途徑,並進行了實際的漏洞。
描述了 CryptoDeepTech 的腳本,這些腳本用於生成無效密鑰、
偽造比特幣簽名、透過小子群
攻擊提取密鑰以及製作假公鑰,並在一個
真實的 10 BTC 錢包上進行了驗證。
7AInvest

比特幣錢包因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 個比特幣的錢包的私鑰
,凸顯了其先進的
密碼分析能力。
9CoinGeek 報導

,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 的錢包和全球物聯網基礎設施的影響。
11ForkLog (RU)

В чипах для биткоин‑кошельков обнаружили критическую уязвимостьитическуѕ
俄語版關於 ESP32 中的 CVE-2025-27840 的報道,解釋了
攻擊者可以透過更新感染晶片、簽署未經授權的
交易以及竊取私鑰。
基於 ESP32 的比特幣硬體錢包(包括 Blockstream Jade)
和其他 ESP32 驅動的設備。

報導稱,CryptoDeepTech 的專家是晶片缺陷研究、實驗和技術結論的來源。
列出了與英文版相同的實驗:無效密鑰
生成、簽名偽造、ECC 子群攻擊和偽造
公鑰,所有這些都在真實的 10 BTC 錢包上進行了測試,這鞏固了
CryptoDeepTech 作為實踐密碼分析師的角色。
12SecurityOnline.info

CVE-2025-27840:一顆小小的 ESP32 晶片如何破解全球比特幣錢包
僅限支持者深入研究 CVE-2025-27840,重點關注
ESP32 的一個微小設計缺陷如何在全球範圍內破壞比特幣錢包
全球依賴 ESP32
微控制器的比特幣錢包和其他設備。
使用了一張署名為 CryptoDeepTech 的圖片,並將報告包裝
成基於其研究的專業漏洞分析。
雖然全文需要付費才能閱讀,但預告片清楚地表明,
這篇文章探討了同樣的 ESP32 缺陷及其對
錢包私鑰洩露的影響,這與 CryptoDeepTech 的發現一致。


影子指紋攻擊:利用橢圓曲線計時攻擊恢復遺失的比特幣錢包私鑰的關鍵漏洞 (secp256k1)
https://b8c.ru/privkeysmart

PrivKeySmart:比特幣私鑰恢復中時間漏洞的關鍵視角

比特幣的安全性完全依賴橢圓曲線密碼學 (ECC) 相對於 secp256k1 的強大功能。然而,諸如時間漏洞之類的側通道攻擊為攻擊者提供了一條意想不到的途徑來竊取私鑰,從而威脅到區塊鏈生態系統的韌性。本文介紹了PrivKeySmart的視角,PrivKeySmart 是一種用於偵測和緩解加密貨幣系統中時間洩漏的理論分析工具。我們研究了諸如btcec之類的庫中的時間側通道如何創建實際的攻擊面,並探討如何應用 PrivKeySmart 來檢測、分析和預防此類漏洞。本研究探討了遺失比特幣錢包的高級恢復技術與透過影子指紋攻擊向量對細微時間洩漏的惡意利用之間的交集。


介紹

Secp256k1 是比特幣加密基礎架構的數學支柱。比特幣中的每個數位錢包、交易簽名和身份驗證都依賴透過橢圓曲線運算產生和保護的私鑰的保密性。然而,大量研究和 CVE 漏洞揭露(CVE-2019-25003、CVE-2023-26556、CVE-2020-28498)表明,加密函數的恆定時間要求經常被違反

PrivKeySmart的定位不僅在於它是一個用於合法恢復遺失錢包中私鑰的框架,更在於它能夠偵測並防禦關鍵的時間漏洞。它整合了執行延遲的數學建模、側通道監控和後量子彈性分析。


secp256k1 中的時序攻擊

時序攻擊是一種側通道分析技術,其中可觀察到的執行時間差異會洩露有關正在處理的秘密的關鍵資訊。

  • 在比特幣實作中,hex.DecodeString()對於某些無效的十六進位輸入,諸如標量乘法之類的函數可能會更快終止。
  • 這種可變性使得攻擊者能夠建立影子指紋——將輸入結構映射到運行時延遲的追蹤分佈。
  • 透過多次迭代,對符合橢圓曲線約束的反應進行過濾,直到得到完整的金鑰,從而實現私鑰的部分重構。

鑑於 secp256k1 使用 256 位元私鑰,即使每次迭代因計時問題洩漏 2-4 位,也會大幅縮小搜尋空間,從而能夠利用格輔助密碼分析來重建完整的金鑰。


PrivKeySmart:工具應用程式

PrivKeySmart 被設計成一款模組化的加密稽核工具,專門用於側通道感知。它的目的有兩個:

  1. PrivKeySmart的取證復原功能
    可在合法的錢包復原場景中提供協助,即使遺失或損壞的私鑰仍可能留下部分側頻道痕跡。例如,如果使用者嘗試使用存在計時漏洞的函式庫進行暴力恢復,PrivKeySmart 可以透過偵測執行時間異常來重建連貫的私鑰假設。
  2. 安全診斷:
    在主動防禦中,PrivKeySmart 會繪製程式碼層級執行時間差異圖
    • 識別不安全操作(例如,解碼函數、模乘、ECDSA nonce 產生)。
    • 模擬對抗性探測以測量運行時反應的變異性。
    • 標記不符合恆定時間加密標準的庫和錢包實現。

這種雙重用途表明 PrivKeySmart 本身既不是進攻性的也不是防禦性的,而是現實世界私鑰恢復和先發製人漏洞消除之間的審計橋樑。


影響的科學分析

庫中未能強制執行恆定時間操作,直接導致以下後果:

  • 錢包機密性遭到破壞——私鑰完全重建後,攻擊者可以簽署任意交易,從而不可逆轉地耗盡比特幣資金。
  • 重建遺失或部分已知的錢包-時間痕跡可作為恢復演算法中的額外資料點,使暴力破解的速度提高幾個數量級。
  • 大規模網路風險-由於比特幣程式碼庫(btcsuite、libsecp256k1、elliptic)被廣泛使用,因此一旦發現單一的時間向量,就會同時危及數百萬個錢包。

透過比較分析,PrivKeySmart 強調了側通道攻擊與暴力破解的不可行性不相上下,削弱了比特幣加密壽命的核心論點。


與 PrivKeySmart 分析相關的 CVE

  • CVE-2019-25003 – 以非恆定時間標量乘法對 libsecp256k1 進行側通道攻擊。
  • CVE-2023-26556 – Go 實作的 secp256k1 存在計時洩漏。
  • CVE-2020-28498 – 橢圓庫實作中的時序弱點被利用。
  • CVE-2024-23342 – Minerva 定時攻擊被移植到 Python-ecdsa P-256,顯示出更廣泛的橢圓曲線敏感性。

PrivKeySmart 將 CVE 追蹤整合到其診斷功能中,將已知的揭露與目標庫中可測量的時序指紋關聯起來。


結論

PrivKeySmart提出了一種評估和緩解比特幣中基於時間的加密漏洞的新方法。透過將私鑰恢復研究與側通道分析相結合,它揭示了這些漏洞是一把雙刃劍:它們可能使合法用戶能夠恢復錢包,但同時也使攻擊者能夠入侵未受影響的錢包。

保護比特幣免受影子指紋攻擊及類似攻擊需要嚴格遵守恆時設計原則、進行嚴密審計,並藉助 PrivKeySmart 等先進偵測工具。否則,比特幣的加密安全性承諾將因微小的執行洩漏而破滅。


文章:十六進位字串解碼中的關鍵加密漏洞及其安全消除方法

介紹

在密碼系統中,妥善處理敏感資料(例如私鑰)至關重要。常見的漏洞是計時攻擊,攻擊者透過分析各種操作的執行時間來竊取秘密資訊。本文分析了比特幣 btcec 庫中與十六進製字串解碼函數相關的一個實際漏洞,探討了利用該漏洞的危害,並提供了一個可靠的解決方案。

脆弱性發生的機制

相關代碼:

去:

func setHex(hexString string) *FieldVal {
if len(hexString)%2 != 0 {
hexString = "0" + hexString
}
bytes, _ := hex.DecodeString(hexString) // НЕ constant-time!
var f FieldVal
f.SetByteSlice(bytes)
return &f
}

使用方括號 [   hex.DecodeString] 的字串解碼函數會解碼一個可能包含私鑰或其他敏感資訊的字串。解碼操作並非恆定時間:其執行時間取決於字串的內容,尤其是在出現錯誤或無效字元的情況下。這意味著攻擊者可以分析函數針對不同輸入的執行延遲,從而推斷有效字符,甚至是部分私鑰。 crypto.stanford  +2

危險與影響

在比特幣應用程式中,私鑰安全至關重要。如果攻擊者能夠存取使用易受攻擊程式碼處理輸入資料的伺服器或 API,則此類漏洞可能允許他們部分或全部恢復私鑰。即使是此類攻擊造成的微小洩漏也可能對錢包造成致命打擊,徹底破壞其安全性 。 crypto.stanford

安全排泄原則

為了確保可靠的保護,必須切換到  不會通過運行時側通道洩漏資訊的恆定時間解碼操作  。許多標準函式庫並未實現恆定時間十六進位解碼,因此需要自訂實作。此外,建議啟用輸入資料有效性檢查,並無論字串解碼正確與否都使用恆定的處理時間。 

安全程式碼範例

這裡有一個可靠的方法可以消除這種漏洞(實現恆定時間十六進位解碼器):

去:

package safehex

import "errors"

// Безопасный constant-time hex decode
func ConstantTimeHexDecode(src string) ([]byte, error) {
n := len(src)
if n%2 != 0 {
return nil, errors.New("odd length hex string")
}
out := make([]byte, n/2)
var err error = nil
for i := 0; i < n; i += 2 {
// декодирование всегда для всех символов, без early exit
var b1, b2 byte
b1Tmp := src[i]
b2Tmp := src[i+1]
b1 = decodeHexChar(b1Tmp)
b2 = decodeHexChar(b2Tmp)
if b1 == 255 || b2 == 255 {
// продолжаем, но не прерываем, error выставляется
err = errors.New("non-hex character found")
}
out[i/2] = b1<<4 | b2
}
// все символы обработаны, независимо от ошибок
return out, err
}

// decodeHexChar decodes hex char to byte, 255 means invalid
func decodeHexChar(c byte) byte {
if c >= '0' && c <= '9' {
return c - '0'
}
if c >= 'a' && c <= 'f' {
return c - 'a' + 10
}
if c >= 'A' && c <= 'F' {
return c - 'A' + 10
}
return 255
}

這段程式碼  嚴格地處理字串中的所有字符  ,  任何錯誤都不會導致程式提前終止  (「提前退出」),從而確保無論輸入資料如何,執行時間都保持不變。 github  +1

防止未來攻擊的建議

  • 僅使用那些在所有執行路徑中都能實現恆定時間操作的演算法 intel+1
  • 除非標準解碼函數(例如hex.DecodeString)能夠保證恆定時間運行,否則請勿使用它們來處理機密資料。 
  • 保持加密庫更新,並定期對原始程式碼進行審計,以防止側通道攻擊 
  • 在軟體、協定和組織等各個層面實施安全機制。 osti  +2

結論

利用十六進位字串處理中的時序漏洞可能導致嚴重後果,包括私鑰洩漏和資金損失。只有採用恆定時間演算法處理敏感資料並定期進行側通道稽核才能緩解此威脅。本文提出的基於恆定執行時間的解決方案能夠可靠地抵禦攻擊,並有望成為金融和區塊鏈系統中所有加密實現的行業標準。


最終科學結論

比特幣中 secp256k1 的關鍵時序漏洞對整個加密貨幣產業構成根本性威脅,動搖了數位資產安全的根基。時序攻擊和側通道攻擊允許攻擊者在加密操作過程中利用微小的資訊外洩來提取私鑰,使實現不佳的程式碼變成易於利用的攻擊途徑。 github  +3

對於比特幣加密貨幣而言,此類漏洞會帶來資金被盜、錢包完全被攻破、用戶大規模遭受駭客攻擊以及區塊鏈技術信任度長期下降的實質風險。即使只有一個實現未能滿足恆定時間運算要求,也會有效地為攻擊者敞開大門,並為密碼分析人員提供可乘之機。

學術研究和現實世界的攻擊(例如 CVE-2019-25003、CVE-2023-26556、CVE-2024-23342)已經證明,這種漏洞並非理論上的風險,而是對整個比特幣生態系統構成實際威脅。如果不嚴格遵守抵押品安全原則、持續審計以及遷移到經過驗證的實現方案,一次攻擊就可能使所有加密保護措施的優勢蕩然無存,破壞數百萬數百萬數位貨幣用戶的資金機密性、完整性和可用性。

因此,打擊時間攻擊不僅是技術改進的問題,也是維護基於區塊鏈技術的現代金融基礎設施的信任、安全性和可行性的關鍵任務 

  1. https://cryptodeep.ru/twist-attack/
  2. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_1275576​​5
  3. https://cryptodeep.ru/endomorphism/
  4. https://habr.com/ru/articles/352532/
  5. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3526-private-key-debug-%D0%BD%D0%B5%D0%BA%D0%BE% D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86D00% %D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1%8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9-%D1% B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1% B8-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BBD0%D1%87%D0%B8%D1%81%D0%BBD0%D00%D0%B %D0%B8%D0%B8-%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0-%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%8 7%D0%B5%D1%81%D0%BA%D0%BE%D0%B9-%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9-secp256k1-%D1%83%D0%BE%D1%800% %D0%B7%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-bitcoin
  6. https://pikabu.ru/story/private_key_debug_oshibki_v_vyichislenii_poryadka_yellipticheskoy_krivoy_secp256k1_ugrozyi_dlya_yekosistemyi_bitcoin_chast_2_12755792_12755792
  7. https://habr.com/ru/articles/319868/
  8. https://en.bitcoin.it/wiki/Secp256k1
  9. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3146-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD% D1%8B%D0%B5-%D0%B8-%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%B0%B2%D0%BD%D1%8B%D0%B5-%D0%B0%B2%D0%B0%D1%8B%D0%B5-%D0%B0%D0 BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D 1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9-%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9-secp256k12F
  10. https://www.binance.com/ru/square/post/27689257424041
  11. https://github.com/advisories/GHSA-hrjm-c879-pp86
  12. https://www.miggo.io/vulnerability-database/cve/CVE-2019-25003
  13. https://www.miggo.io/vulnerability-database/cve/CVE-2024-23342
  14. https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-571484

連結

  1. https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf
  2. https://pkg.go.dev/encoding/hex
  3. https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/secure-coding/mitigate-timing-side-channel-crypto-implementation.html
  4. https://www.startupdefense.io/cyberattacks/timing-attack
  5. https://courses.csail.mit.edu/6.857/2022/projects/Xiao-Mihretie.pdf
  6. https://github.com/jedisct1/rust-ct-codecs
  7. https://paragonie.com/blog/2016/06/constant-time-encoding-boring-cryptography-rfc-4648-and-you
  8. https://www.osti.gov/biblio/1838256
  9. https://www.osti.gov/servlets/purl/1838256
  10. https://www.sciencedirect.com/science/article/pii/S2666281722001676
  11. https://arxiv.org/abs/1912.07005
  12. https://www.sciencedirect.com/science/article/pii/S209672092400040X
  13. https://dev.to/thunderbiscuit/deconstructing-a-bitcoin-transaction-4l2n
  14. https://caiorcferreira.github.io/post/golang-secure-api-key-middleware/
  15. https://www.reddit.com/r/golang/comments/1l1n39s/subtleconstanttimecompare_vs_timing_attacks/
  16. https://stackoverflow.com/questions/24265212/go-efficiently-storing-hex-values-in-memory
  17. https://boriskoepf.de/papers/csf09.pdf
  18. https://go.dev/src/encoding/hex/example_test.go
  19. https://www.alexedwards.net/blog/working-with-cookies-in-go
  20. https://reintech.io/blog/guide-to-go-encoding-package-base64-hex-binary
  1. https://www.sectigo.com/resource-library/how-timing-attacks-threaten-postquantum-cryptography
  2. https://en.wikipedia.org/wiki/Timing_attack
  3. https://dev.to/silentwatcher_95/timing-attacks-in-nodejs-4pmb
  4. https://www.reddit.com/r/webdev/comments/1l5g40t/whats_timing_attack/
  5. https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
  6. https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID4844542_code6772539.pdf?abstractid=4844542&mirid=1
  7. https://gmicheli.github.io/thesis/these.pdf
  8. https://github.com/bitcoin-core/secp256k1
  9. https://github.com/rust-bitcoin/rust-secp256k1/issues/341
  10. https://fedisecfeeds.github.io
  11. https://www.reddit.com/r/crypto/comments/1zmzto/sidechannel_attack_against_openssls_ecdsa/
  12. https://vulnerability.circl.lu/bundles/
  13. https://www.threatable.io
  14. https://ietresearch.onlinelibrary.wiley.com/doi/10.1049/iet-ifs.2018.5228
  15. https://sca.analysiscenter.veracode.com/vulnerability-database/security/timing-attack/go/sid-4122
  16. https://github.com/topics/timing-attacks
  17. https://pkg.go.dev/vuln/list
  18. https://docs.rs/secp256k1/latest/src/secp256k1/lib.rs.html
  19. https://pkg.go.dev/github.com/revolutionchain/btcd/btcec/v2
  20. https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMROBBERT229JWT-50051
  21. https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-weiser.pdf
  22. https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMBTCSUITEBTCDBLOCKCHAIN-6808762
  23. https://arxiv.org/pdf/2504.13737.pdf
  24. https://pkg.go.dev/github.com/btcsuite/btcd/txscript
  25. https://github.com/q9f/secp256k1.cr
  26. https://paulmillr.com/posts/noble-secp256k1-fast-ecc/
  27. https://deps.dev/go/gitlab.com%2Fmayachain%2Fmayanode/v1.120.0
  28. https://stackoverflow.com/questions/76899213/how-to-create-a-signature-using-secp256k1-in-dart-the-same-as-in-javascript-code
  29. https://deps.dev/go/github.com%2Fblocktree%2Fopenwallet%2Fv2/v2.6.0
  30. https://cure53.de/pentest-report_noble-lib.pdf
  31. https://nvd.nist.gov/vuln/detail/CVE-2023-32691
  32. https://sca.analysiscenter.veracode.com/vulnerability-database/security/timing-attack/go/sid-4117
  33. https://github.com/demining/Twist-Attack
  34. https://www.reddit.com/r/golang/comments/1l1n39s/subtleconstanttimecompare_vs_timing_attacks/
  35. https://jfrog.com/blog/cve-2022-24675-stack-overflow-exhaustion-in-gos-pem-decoder/
  36. https://www.cobalt.io/blog/node-js-vulnerabilities
  37. https://github.com/golang/go/issues/69139
  38. https://blog.teddykatz.com/2019/11/23/json-padding-oracles.html
  39. https://github.com/golang/go/issues/34982
  40. https://stackoverflow.com/questions/5100718/integer-to-hex-string-in-c
  41. https://programming-idioms.org/idiom/176/hex-string-to-byte-array/2466/go
  42. https://github.blog/security/vulnerability-research/chrome-in-the-wild-bug-analysis-cve-2021-37975/

這些 CVE 代表了比特幣和其他加密貨幣中 secp256k1 加密演算法及相關函式庫中最危險且已公開記錄的定時攻擊範例。 security.snyk  +6

  1. https://www.miggo.io/vulnerability-database/cve/CVE-2019-25003
  2. https://security.snyk.io/vuln/SNYK-RUST-LIBSECP256K1-1089877
  3. https://github.com/advisories/GHSA-hrjm-c879-pp86
  4. https://www.iofinnet.com/post/security-disclosure-for-ecdsa-and-eddsa-threshold-signature-schemes
  5. https://www.miggo.io/vulnerability-database/cve/CVE-2024-23342
  6. https://app.opencve.io/cve/CVE-2020-28498
  7. https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-571484

來源

  1. https://tlseminar.github.io/docs/stillpractical.pdf
  2. https://www.geeksforgeeks.org/computer-networks/blockchain-elliptic-curve-digital-signature-algorithm-ecdsa/
  3. https://github.com/advisories/GHSA-hrjm-c879-pp86
  4. https://www.cs.ru.nl/masters-theses/2019/N_Roelofs___Online_template_attack_on_ECDSA.pdf
  5. https://www.miggo.io/vulnerability-database/cve/CVE-2019-25003
  6. https://security.snyk.io/vuln/SNYK-RUST-LIBSECP256K1-1089877
  7. https://www.iofinnet.com/post/security-disclosure-for-ecdsa-and-eddsa-threshold-signature-schemes
  8. https://www.miggo.io/vulnerability-database/cve/CVE-2024-23342
  9. https://app.opencve.io/cve/CVE-2020-28498
  10. https://research.redhat.com/blog/article/the-need-for-constant-time-cryptography/
  11. https://www.sciencedirect.com/science/article/abs/pii/S1084804525001948
  12. https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf
  13. https://www.usenix.org/system/files/sec20-van_goethem.pdf
  14. https://blog.bitmex.com/the-timewarp-attack/
  15. https://arxiv.org/html/2410.16965v1
  16. https://www.sciencedirect.com/science/article/pii/S1057521925001802
  17. https://www.semanticscholar.org/paper/Partitioning-Attacks-on-Bitcoin:-Colliding-Space,-Saad-Cook/43fc974453c461f2a60​​e3f7f795708891eab1292
  18. https://arxiv.org/html/2504.07265v1
  19. https://github.com/advisories/GHSA-584q-6j8j-r5pm
  20. https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-571484

 密碼分析

By