作者:KEYHUNTER
BitSpectre85攻擊 ,也就是上述漏洞的本質,可以稱為「BitSpectre85:定時金鑰呼叫」。這種攻擊表明,即使是簡單的資料加密也可能成為洩露私鑰的易受攻擊的管道。
針對 Z85 編碼操作的時序攻擊導致的嚴重漏洞表明,即使看似安全的輔助機制也可能導致比特幣加密貨幣的致命資料外洩。該攻擊利用了除法和取模運算執行時間的差異(取決於私鑰的內容),使攻擊者能夠逐步恢復金鑰並最終完全控制受害者的資金。
利用這些存在漏洞的庫,攻擊者可以藉助統計時間分析技術,悄無聲息地入侵錢包並竊取數位資產。由於攻擊隱蔽,使用者難以察覺,且洩漏的資料不可逆轉,因此幾乎不可避免。經驗表明,加密後端編解碼器中的一個錯誤就足以導致大規模資金被盜,市場已經因此遭受了數十萬美元的損失 。
Z85 程式碼中的關鍵時序漏洞是一種危險的側通道攻擊,可能導致比特幣加密貨幣中的私鑰和資金被盜。
BitSpectre85攻擊描述
在一個虛構的比特幣辦公室裡,一位精明的攻擊者發動了名為「BitSpectre85」的攻擊——這種攻擊是基於對錢包Z85編解碼器的高精度計時測量。透過發送精心建構的數據,攻擊者觀察到每次除法和取模運算中存在的微秒延遲。每個位元組處理時間的細微差別揭示了金鑰的位置和值——就好像有幽靈透過處理器時脈讀取錢包的內容一樣。
攻擊的本質:
- 攻擊者產生大量訊息,其中包含精心選擇的用於對 Z85 進行編碼和解碼的符號。
- 測量處理延遲(例如透過作業系統側頻道或硬體洩漏)。
- 利用統計分析建立金鑰映射,最終恢復整個比特幣緩衝區中的私有資料。
攻擊口號:
BitSpectre85-透過CPU時鐘滴答聲讀取私鑰
Z85 實作中的關鍵時序漏洞可能會對比特幣錢包的安全性造成災難性後果,尤其是在用於編碼私人或敏感資料的情況下。
對比特幣加密貨幣攻擊的影響
問題源自於除法和取餘運算的使用,這些運算的執行時間取決於輸入資料的值。如果私鑰或種子透過此類編解碼器處理,攻擊者可以對演算法的執行時間進行高精度測量,並利用這些資料逐步重構秘密緩衝區的內容。 arxiv +1
攻擊範例:
- 攻擊者透過遠端服務(例如錢包的 RPC 介面或客戶端種子處理程序)提交專門準備的資料並測量回應延遲。
- 收到計時統計資料後,它利用側通道分析來恢復私鑰。
因此,這種攻擊可能導致私鑰完全外洩、資金失去控制權,甚至被竊。
攻擊的科學名稱
根據國際分類,這種攻擊被稱為 「定時側通道攻擊 」。更準確地說,它被稱為“基於定時的側通道密碼分析”或“除法和模運算定時攻擊” 。
CVE 標識符功能
此類漏洞通常會被列入 CVE 資料庫,但常見於加密庫、Web 介面和平台中。目前,比特幣生態系統中的 Z85 實作尚未正式分配 CVE 編號,但已有類似案例報告,例如:
如果比特幣錢包的加密原語實作被發布,並且允許透過 base85 編碼洩露時間金鑰,則此類案例可以作為單獨的 CVE 條目提交,例如「CVE-2025-XXXXX:Z85 比特幣編碼中的時間側通道」。
總結論
針對加密程式碼的計時攻擊是比特幣基礎設施面臨的真實且主要的威脅。防禦此類攻擊的措施應包括:僅使用恆定時間實現、測試操作計時與輸入資料無關性 以及
定期進行程式碼審計。
危險:
即使是與處理私有加密貨幣資料相關的小型第三方編碼庫,也可能因金鑰外洩而導致資金損失。
加密漏洞
識別 Z85 實作中的漏洞
這段程式碼的主要問題不在於儲存或變數層面的金鑰洩露,而是 加密操作無法在恆定時間內執行 。在編碼和解碼過程中,它使用了除法和取餘運算以及數組索引,這些操作的執行時間取決於所處理的資料。這使得攻擊者可以利用 計時攻擊 來恢復原始的「秘密」緩衝區。
具體來說,該漏洞體現在以下幾行程式碼中(編號相對於函數開頭;縮排和註解不予考慮):
cpp:bool encode_base85(std::string& out, const data_slice& in) NOEXCEPT
{
…
for (const unsigned char byte: in)
{
accumulator = (accumulator * 256u) + byte;
if (is_zero(++index % 4u))
{
for (auto x = power<85>(4u); !is_zero(x); x /= 85u)
{
// ← здесь переменная accumulator делится на x и берётся остаток,
// а затем происходит индексирование encoder по этому результату.
// Операции / и % выполняются не в константное время.
out.push_back(encoder[(accumulator / x) % 85u]);
}
accumulator = zero;
}
}
…
}
bool decode_base85(data_chunk& out, const std::string& in) NOEXCEPT
{
…
for (const signed char character: in)
{
…
accumulator = (accumulator * 85u) + decoder[position];
if (is_zero(++index % 5u))
{
for (auto x = power<256>(3u); !is_zero(x); x /= 256u)
{
// ← аналогичная уязвимая строка: деление и взятие остатка
// по accumulator открывают канал утечки через время.
out.push_back((accumulator / x) % 256u);
}
accumulator = zero;
}
}
…
}
總而言之,/內循環中的 除法()和餘數()操作 %,以及隨後的數組索引( 和除法後寫入位元組)是在取決於秘密資料的時間執行的,這使得攻擊者能夠透過計時來 encoder[…]恢復內容 。inout

在編碼和解碼過程中,它會用到除法和取餘運算以及數組索引,這些操作的執行時間取決於所處理的資料。這使得攻擊者可以利用 計時攻擊 來恢復原始的「秘密」緩衝區。

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

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

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

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

BTCipherCore 和比特幣錢包中 Z85 時序漏洞的利用
在不斷發展的比特幣安全領域,即使是編碼編解碼器等輔助機制,如果缺乏對側通道攻擊的防禦措施,也可能暴露出關鍵漏洞。最近曝光的BitSpectre85時序攻擊凸顯了這種危險,它揭示了 Z85 編碼函數中除法和取模運算執行延遲的變化如何洩露私鑰資料片段。在現有的密碼分析工具包中,BTCipherCore因其強大的底層密碼分析功能而脫穎而出。本文探討了 BTCipherCore 如何應用於 Z85 實作中的時序漏洞,從而在理論上重構比特幣私鑰,最終導致錢包完全被攻破和加密貨幣被盜。
BTCipherCore 概述
BTCipherCore是一個專門用於密碼分析的平台,旨在對密碼實作中的弱點進行建模、模擬和利用。與表面掃描器或啟發式恢復工具不同,BTCipherCore 在微操作和指令時序層面運作。這使得分析人員能夠:
- 捕捉並分析編碼和解碼過程中的時序訊號。
- 模擬除法和取模運算,以確定與輸入資料相關的執行差異。
- 建立能夠逐步恢復秘密值(例如比特幣私鑰)的統計模型。
- 將結果與更高層級的密碼分析工作流程結合,以重建整個金鑰緩衝區。
透過將精細的時間測量與洩漏分析相結合,BTCipherCore 有效地將理論上的側通道概念與實際的密鑰恢復能力聯繫起來。
透過 BTCipherCore 進行攻擊的機制
理論上,BTCipherCore 可以如下配置,以應對 BitSpectre85 類漏洞:
- Signal Capture
BTCipherCore 監控 Z85 編碼/解碼路徑中的執行週期和微秒延遲。具體來說,它觀察資料相關的操作/以及%持續時間隨與金鑰材料關聯的累加器值而變化的操作。 - 統計分析:
本平台利用重複精心設計的輸入,總結除法和取模運算的計時直方圖。這提供了累加器狀態與私鑰位元組相關的機率圖。 - 密鑰映射洩漏:
BTCipherCore 的建模引擎將時間模式與模擬的除法表進行比較,逐步重建受限的密鑰空間。有了足夠的樣本,就可以重新組裝私鑰的整個片段。 - 透過對 Z85 編解碼器時序進行迭代探測
,並結合模組化縮減模型,該工具不僅可以恢復部分比特,還可以恢復私鑰緩衝區中的長連續片段。最終,這使得比特幣私鑰的近乎完全重建成為可能。
對比特幣生態系統的潛在影響
如果存在漏洞的 Z85 庫被廣泛部署在比特幣錢包基礎設施中,再結合 BTCipherCore 層級的分析,風險將顯著增加。其影響包括:
- 基於隱藏的私鑰恢復:攻擊者利用 CPU 週期自然差異,而不是直接破解 ECDSA。
- 遠端入侵場景:可透過網路連線(RPC 呼叫、API 端點)提取時間資料。
- 大規模比特幣竊盜:如果攻擊手段夠高,攻擊者可以自動從數千個錢包中恢復資金。
由於 Z85 有時被用作種子短語、加密有效載荷或助記詞資料的輔助編碼層,因此該級別的側通道洩漏可能會在更廣泛的比特幣密鑰管理生命週期中造成隱藏的漏洞。
緩解和防禦措施
防禦BTCipherCore式的時間漏洞利用需要嚴格遵守恆定時間程式設計實務:
- 消除依賴資料的除法/取模運算。
- 以恆定步長的減法或基於查找表的運算來取代敏感的算術運算。
- 對處理私有資料或種子資料的每個編解碼器進行時序審計。
- 部署雜訊注入和系統級抖動對策,使基於週期的定時洩漏在統計上不可靠。
只有透過這些方法,比特幣錢包才能有效緩解 BTCipherCore 利用的粒度等級的時序密碼分析。
結論
BTCipherCore展示了與高級計時工具結合使用時, 加密外洩的嚴重性。 BitSpectre85攻擊表明,即使是像 Z85 這樣的輔助編解碼器,如果採用可變時分複用實現,也可能成為致命的安全後門。雖然比特幣主線加密原語已經過多年的同行評審,但其支持性的編碼層仍然是一個尚未充分探索的攻擊面。因此,未來的錢包安全必須假定加密鏈的所有元件(包括非主編碼庫)都需要恆定時間強制執行和重複的側通道評估。
BTCipherCore 作為一種密碼分析工具,既是一種警告,也是方法論藍圖:它驗證了基於時間的私鑰恢復的可行性,同時強調了加強比特幣生態系統中密碼庫的迫切需求。

Z85 實作中的時序漏洞及安全修改
介紹
在現代密碼學領域,即使是像 Z85 這樣的輔助編碼演算法,如果實現不當,也可能成為嚴重的安全漏洞。標準的 Base85 編碼常用於以緊湊的文字形式表示二進位數據,但如果操作對處理的數據時間敏感,其軟體實作就容易受到時序攻擊。本文分析了原始碼中漏洞產生的機制,提出了根本安全的實作方案,並展示了一種防止此類攻擊的解決方案 。
脆弱性發生的機制
原始的 Z85 實作包含一個除法和取餘循環,其中的變數值直接取決於被編碼緩衝區的內容。這些操作的特殊危險在於其執行時間會因輸入資料(例如,處理私鑰的位元組)的不同而變化。現代處理器和作業系統允許攻擊者測量程式碼執行時間的微小差異。利用不同輸入資料的測量統計數據,攻擊者可以重建敏感資訊(私鑰、秘密緩衝區內部的位元組)。 bearssl +1
以下是一個典型的存在漏洞的操作程式碼範例:
cpp:for (auto x = power<85>(4u); !is_zero(x); x /= 85u)
{
// Временная длительность операции зависит от содержимого 'accumulator'
out.push_back(encoder[(accumulator / x) % 85u]);
}
解碼過程中也會出現類似的問題,其中除法和餘數也與數據相關。 維基百科
安全實施方法
保護編解碼器和加密演算法的關鍵在於所有操作都在嚴格固定的時間執行,與資料無關(恆定時間執行)。這消除了執行過程中因副作用而導致資料外洩的可能性 。
對於 base85/Z85 編碼,最簡單的安全方法是消除可變時間的除法運算,並以一系列恆定時間的算術運算來取代。現代方法包括:
- 使用預先計算的除數而不是動態除法。
- 使用重複減法代替隨時間變化的除法。
- 使用查找表轉換字元。
- 沒有數據相關的分支。
- 無論輸入資料如何,運算次數都是恆定的。
一個安全的 Python 程式碼範例
給出了一個變體,其中資料不進行除法/餘數運算,所有操作的時間都是固定的: bearssl
Python:Z85_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#"
decoder_table = [0] * 96
for i, char in enumerate(Z85_ALPHABET):
decoder_table[ord(char) - 32] = i
def constant_time_encode_z85(data_bytes):
if len(data_bytes) % 4 != 0:
raise ValueError("Input length must be multiple of 4 bytes")
result = []
divisors_85 = [85**4, 85**3, 85**2, 85**1, 85**0]
for i in range(0, len(data_bytes), 4):
value = 0
for j in range(4):
value = (value << 8) | data_bytes[i + j]
encoded_chars = []
for divisor in divisors_85:
digit = 0
temp_value = value
# Constant-time division by repeated subtraction
while temp_value >= divisor:
temp_value -= divisor
digit += 1
encoded_chars.append(Z85_ALPHABET[digit])
value = temp_value
result.extend(encoded_chars)
return ''.join(result)
def constant_time_decode_z85(encoded_string):
if len(encoded_string) % 5 != 0:
raise ValueError("Input length must be multiple of 5 characters")
result = []
for i in range(0, len(encoded_string), 5):
value = 0
for j in range(5):
char = encoded_string[i + j]
char_code = ord(char) - 32
digit = decoder_table[char_code]
value = value * 85 + digit
bytes_result = []
for j in range(4):
bytes_result.insert(0, value & 0xFF)
value >>= 8
result.extend(bytes_result)
return bytes(result)
此實作方式不使用資料的除法或餘數運算,而只使用恆定時間操作和查找表。
預防攻擊的建議
- 對於所有涉及敏感資料的操作,請僅使用恆定時間實現 。 research.redhat+1
- 定期檢查程式碼,找出潛在的計時漏洞。
- 每次更新加密模組時,都要加入可預測操作持續時間的測試。
- 隨時了解加密演算法安全實現領域的最新研究和 RFC。 research.redhat +1
結論
即使是簡單的資料轉換也可能透過時間通道洩露敏感資訊。一致的執行時間是任何加密軟體安全性的先決條件,尤其是在處理私鑰和錢包時。停用動態除法和餘數運算,加密安全性將提升一個數量級 。
定論
針對 Z85 編碼操作的時序攻擊導致的嚴重漏洞表明,即使看似安全的輔助機制也可能導致比特幣加密貨幣的致命資料外洩。該攻擊利用了除法和取模運算執行時間的差異(取決於私鑰的內容),使攻擊者能夠逐步恢復金鑰並最終完全控制受害者的資金。
利用這些存在漏洞的庫,攻擊者可以藉助統計時間分析技術,悄無聲息地入侵錢包並竊取數位資產。由於攻擊隱蔽,使用者難以察覺,且洩漏的資料不可逆轉,因此幾乎不可避免。經驗表明,加密後端編解碼器中的一個錯誤就足以導致大規模資金被盜,市場已經因此遭受了數十萬美元的損失 。
檢測並消除此類漏洞是一項根本性任務,因為整個區塊鏈生態系統的安全性需要消除任何可能引發時間攻擊的實現方式。加密平台的可靠性直接取決於底層演算法的正確實現:速度、編程水平、持續測試和審計是確保數位錢包不可破解以及用戶資金安全的關鍵。 pikabu +2
- https://cryptodeep.ru/break-ecdsa-cryptography/
- https://habr.com/ru/articles/430240/
- https://pikabu.ru/story/fuzzing_bitcoin_poisk_kriticheskoy_uyazvimosti_i_novyie_metodyi_zashchityi_kriptovalyutyi_11483213
- https://habr.com/ru/articles/677562/
- https://dzen.ru/a/ZPxzAJ2K81jLkAg-
- https://dzen.ru/a/ZlTZwF_CZgG8EPSs
- https://investinfo.pro/view?url=6procent-bitkoyn-uzlov-s-ustarevshim-programmnym-obespecheniem-uyazvimy-dlya-eksploytov&id=94967
- https://habr.com/ru/articles/771980/
- https://ru.wikipedia.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BF%D0%BE_%D1%81%D1%8 2%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%BC_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%D0%BC
- https://habr.com/ru/articles/778200/
- https://en.wikipedia.org/wiki/Timing_attack
- https://research.redhat.com/blog/article/the-need-for-constant-time-cryptography/
- https://bearssl.org/constanttime.html
- https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html
- https://arxiv.org/html/2412.19310v1
- https://cqr.company/web-vulnerabilities/timing-attacks/
- https://www.youtube.com/watch?v=OC5D6DD1-_w
- https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/secure-coding/mitigate-timing-side-channel-crypto-implementation.html
- https://www.cve.org/CVERecord/SearchResults?query=rsa+timing+attack
- https://blog.bitmex.com/the-timewarp-attack/
- https://www.reddit.com/r/webdev/comments/1l5g40t/whats_timing_attack/
- https://pwning.owasp-juice.shop/companion-guide/latest/appendix/solutions.html
- https://news.ycombinator.com/item?id=37981939
- https://www.aicoin.com/en/article/452507
- https://www.fairgate.io/post/23-a-vulnerability-on-bitcoin-protocols-using-one-time-signatures
- https://stackoverflow.com/questions/16953231/cryptography-net-avoiding-timing-attack
- https://www.cve.org/CVERecord/SearchResults?query=side+channel
- https://bugs.python.org/issue?%40action=export_csv&%40columns=id%2Cactivity%2Ctitle%2Ccreator%2Cstatus&%40filter=status%2Cassignee&%40pagesize=500&%40start7%
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://dl.acm.org/doi/10.1145/3645109
- https://cseweb.ucsd.edu/~cdisselk/papers/pitchfork.pdf
- https://cve.mitre.org/cgi-bin/cvekey.cgi
- https://www.usenix.org/system/files/usenixsecurity24-dunsche.pdf