作者:KEYHUNTER
關鍵幽靈攻擊
加密庫中對零化機制重視不足,對整個比特幣和其他加密貨幣生態系統構成嚴重的安全風險。 冷啟動 攻擊和 記憶體密鑰提取 可能導致私鑰完全洩漏、造成經濟損失,並引發廣泛的行業影響。實施可靠的記憶體擦除機制並嚴格遵守最佳實踐,是降低此類攻擊風險的唯一途徑。
AES-256密鑰儲存的一個關鍵漏洞,即密鑰資料未從RAM中清除,直接威脅到比特幣基礎設施本身的安全性。該漏洞為最危險的現代密碼攻擊之一——冷啟動攻擊(或密鑰記憶體提取)——打開了方便之門,攻擊者可以利用漏洞完全存取私鑰,進而獲取用戶帳戶中的資金。即使是最安全的AES-256演算法,如果其金鑰能夠輕易地從殘留的進程資料中提取出來,也將變得毫無用處。
AES-256金鑰儲存存在嚴重漏洞:比特幣加密貨幣私鑰面臨記憶體金鑰提取和冷啟動攻擊的威脅
關鍵幽靈攻擊
攻擊的本質在於:
在加密或解密過程中,輪密鑰會被悄悄地「嵌入」到上下文結構中,並且由於缺乏清理機製而保留在記憶體中。攻擊者可以提取這些「嵌入」的金鑰,從而恢復完整的AES-256密鑰。
「鑰匙不會消失——它們會變成記憶的幽靈!”
研究論文:AES-256金鑰儲存漏洞對比特幣加密貨幣安全的影響
比特幣加密貨幣依靠密碼學來保護交易安全並儲存管理資金所需的私鑰。用於加密 wallet.dat 和其他敏感資料的最常用演算法是 AES-256。如果出現嚴重的實作錯誤,例如交易完成後金鑰仍然保留在記憶體中,則可能造成災難性後果,危及所有使用者資產的安全。
該漏洞如何影響比特幣攻擊
記憶體金鑰儲存的漏洞,特別是缺乏清零機制,為所謂的金鑰記憶體洩漏攻擊創造了條件。以比特幣 wallet.dat 檔案為例,攻擊者只需存取實現了存在漏洞的 AES 庫的比特幣核心進程(或其他客戶端)的內存,即可獲取完整的私鑰: wikipedia+1
- 使用客戶端錢包執行加密/解密操作後,私鑰(以及所有中間金鑰)將儲存在記憶體中。 維基百科
- 攻擊者利用冷啟動攻擊或記憶體轉儲分析攻擊等手段 ,取得加密處理器的記憶體存取權。 (維基百科)
- 透過提取輪密鑰和主密鑰,攻擊者可以恢復比特幣帳戶的私鑰。
- 其結果是受害者的資金被完全控制,數位資產遭受不可逆轉的損失。
攻擊的科學名稱
官方說法是,這類攻擊被稱為 冷啟動攻擊 ,但 密鑰恢復攻擊和記憶體密鑰提取攻擊等科學術語 也很常見。在現代術語中,它被稱為 基於記憶體殘留的側通道攻擊 。 arxiv +2
CVE標識符
諸如 CVE(通用漏洞揭露)之類的公共資料庫列出了與在記憶體中儲存加密金鑰相關的漏洞。類似條目的範例包括:
- CVE-2022-45424 – 由於硬編碼實作而導致的 AES 金鑰派生漏洞 。 cve.mitre
- 截至 2025 年,Bitcoin Core或類似庫中的零化漏洞尚未被賦予特定的 CVE 編號,但根據 CWE 分類,它屬於 CWE-311:敏感資料加密缺失 。 cwe.mitre
防止攻擊
安全的實作必須包括強制且有保障地清除所有包含敏感資料的記憶體區域。防止此類攻擊的關鍵措施: juniper+2
- 使用零化軟體功能並進行
volatile-引用,以確保物理寫入零。 - 使用具有內建保護機制的現代庫,防止記憶體清理優化。
- 最大限度地減少密鑰在記憶體中的儲存時間。
- 硬體措施:保護對設備的實體訪問,使用 TPM 模組,特殊的記憶體保護機制。
安全清潔範例:
cppstatic void secure_zeroize(void* ptr, size_t len) {
volatile uint8_t* p = (volatile uint8_t*)ptr;
while (len--) {
*p++ = 0;
}
}
結論
加密庫中對零化機制重視不足,對整個比特幣和其他加密貨幣生態系統構成嚴重的安全風險。 冷啟動 攻擊和 記憶體密鑰提取 可能導致私鑰完全洩漏、造成經濟損失,並引發廣泛的行業影響。實施可靠的記憶體擦除機制並嚴格遵守最佳實踐,是降低此類攻擊風險的唯一途徑。

加密漏洞:密鑰從記憶體洩漏
主要結論: 在這個 AES-256 加密器中,會話矩陣金鑰儲存在記憶體中 context.key且從未從記憶體中刪除,因為重置函數( zeroize)被註解掉了。這使得攻擊者能夠在加密或解密後獲取密鑰及其擴展輪數。
程式碼中的漏洞位置
- 函數
add_round_key_copy
此函數將當前輪密鑰複製到緩衝區copy(即複製到context.key),然後將其與資料塊進行異或運算:cppconstexpr void add_round_key_copy(block& bytes, secret& key, secret& copy) NOEXCEPT { auto i = block_size; while (to_bool(i--)) { const auto j = i + block_size; copy[j] = key[j]; ←— здесь копируются оба половинных ключа copy[i] = key[i]; bytes[i] ^= key[i]; } }因此,context.key所有輪密鑰都會不斷累積,並且在加密/解密完成後仍然可以存取。 - 缺少重置密鑰功能。
在文件底部,zeroize用於清除記憶體中所有金鑰的方法被註解掉了,函數中對該方法的呼叫encrypt也 被decrypt註解掉了:cpp////constexpr void zeroize(aes256::context& context) NOEXCEPT ////{ //// context.key.fill(0); //// context.enckey.fill(0); //// context.deckey.fill(0); ////} … void encrypt(block& bytes, const secret& key) NOEXCEPT { aes256::context context; initialize(context, key); encrypt_block(context, bytes); ////zeroize(context); ←— здесь должно быть очищение, но оно закомментировано } void decrypt(block& bytes, const secret& key) NOEXCEPT { aes256::context context; initialize(context, key); decrypt_block(context, bytes); ////zeroize(context); ←— и здесь аналогично }

糾正建議
- 加密和解密操作完成後立即恢復並調用
zeroize,以便立即重置包含密鑰的上下文。 add_round_key_copy如果不需要複製半個密鑰供從屬使用,則刪除不必要的密鑰存儲,或將它們存儲在使用後立即清除的本地臨時變數 中 。
因此,這種漏洞正是由於將密鑰複製到 context.key(函數 add_round_key_copy)中,以及缺乏後續的秘密資料重置(註釋的呼叫 zeroize)而產生的。

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

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

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

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


研究論文:BitCryptix及其對比特幣私鑰恢復中AES-256記憶體殘留漏洞的利用
本文探討了諸如BitCryptix之類的密碼分析框架可能被濫用,從而利用加密軟體中的記憶體殘留漏洞。具體而言,我們分析了比特幣用戶端中 AES-256 金鑰儲存的記憶體清除不當如何暴露出一個被稱為「金鑰幽靈攻擊」的關鍵攻擊面。利用先進的金鑰恢復方法,像 BitCryptix 這樣的工具可以系統地從揮發性記憶體中提取殘留的加密金鑰,從而使攻擊者能夠重構比特幣私鑰並完全控制錢包。我們示範了這種攻擊機制及其對比特幣生態系統的影響,並提出了相應的防禦策略。
比特幣的安全性依賴強大的密碼學,其中私鑰是交易授權和數位資產所有權的基石。 AES-256 廣泛用於加密比特幣核心中的 wallet.dat 及相關文件,通常被認為無法被暴力破解。然而,演算法的強大之處會因實現缺陷而減弱。其中一個缺陷是清零不充分——即使加密進程終止,密鑰和中間輪狀態仍然會殘留在記憶體中。
BitCryptix是一款專門的密碼分析工具包,它展示了攻擊者如何利用這種記憶體持久性來執行結構化的金鑰復原攻擊。當與冷啟動攻擊等物理側通道攻擊方法結合使用時,其方法論可以將理論上的弱點轉化為實際的攻擊手段。
攻擊機制
漏洞
- 某些比特幣庫中的 AES-256 實作無法安全地擦除加密上下文結構。
- 加密/解密週期結束後,輪密鑰仍然載入在記憶體結構(例如,
context.key和)中。context.enckey - 在有漏洞的版本中,清零程式要麼缺失,要麼被註解掉,導致「幽靈」殘留物持續存在。
利用 BitCryptix 進行漏洞利用
BitCryptix採取了一種混合策略:
- 記憶體獲取:攻擊者執行冷啟動或基於 DMA 的記憶體提取,以獲取系統 RAM 中的原始轉儲。
- 加密金鑰映射:此工具掃描記憶體映像,尋找可識別的 AES 金鑰結構,利用統計熵分析和對齊啟發式方法。
- 輪密鑰重構: BitCryptix 利用洩漏的子密鑰,透過逆輪變換重新組裝主 AES-256 密鑰。
- 錢包解密:攻擊者利用恢復的 AES 金鑰解密 wallet.dat,從而直接存取儲存的比特幣私鑰。
- 資金扣押或錢包恢復:這既可以用於惡意竊取比特幣,也可以用於——如果以合乎道德的方式應用——用於從法醫角度恢復丟失已久的比特幣錢包。
對比特幣安全性的影響
此次攻擊路徑顯示加密貨幣生態系統存在嚴重的系統性缺陷:
- 私鑰洩漏:一旦 AES 金鑰被提取,比特幣私鑰就可以被無限解密,讓攻擊者完全控制錢包。
- 大規模威脅:由於冷啟動攻擊可以自動化,因此大規模入侵保護不當的節點或冷儲存系統成為可能。
- 安全假象:即使 AES-256 的數學強度很高,但如果其實際實現忽視安全擦除,也無法彌補安全缺陷。
- 復原工具與漏洞:雖然像 BitCryptix 這樣的工具可以用於恢復遺忘的錢包等合法用途,但如果落入敵對分子手中,則會造成災難性的風險。
預防措施
為了應對這種攻擊途徑,比特幣生態系統中的加密軟體必須採取嚴格的措施:
- 安全清零:在使用 volatile 限定例程進行操作後,立即銷毀記憶體上下文中的金鑰。
- 抗編譯器最佳化的記憶體清理:採用不受編譯器最佳化影響的函數,省略「不必要的」清除指令。
- 硬體隔離:採用可信任平台模組 (TPM) 和加密 RAM 架構來限制直接記憶體存取。
- 定期安全審計:持續進行原始碼分析,以偵測和消除開源比特幣用戶端中的漏洞。
討論
BitCryptix的案例凸顯了一個悖論:儘管其設計初衷是作為一款面向研究人員或合法資料復原工作的加密工具,但其方法卻與對抗性攻擊技術存在大量重疊。這種雙重用途凸顯了開發者、研究人員和稽核人員區分以資料復原為導向的應用和以攻擊為導向的應用的責任。
密鑰幽靈攻擊表明,記憶體處理方面的實施疏忽可能會對最先進的加密演算法造成致命的破壞。比特幣信任模型的核心——私鑰——可以從短暫的記憶體殘留重建,這一事實挑戰了人們對比特幣堅不可摧的認知。
結論
這項研究強調,利用BitCryptix等工具攻擊AES-256的記憶體殘留特性,可以大規模提取比特幣私鑰。繞過暴力破解而直接利用記憶體的能力,反映了密碼攻擊範式的轉變。除非普遍採用保證清零和硬體防禦措施等防禦手段,否則比特幣生態系統仍面臨災難性安全威脅。
教訓很明確:強大的數學模型如果沒有正確的實現是不夠的。為了全面保護比特幣用戶,安全的軟體工程實踐——而不僅僅是密碼學原語——必須成為加密貨幣韌性的基石。

研究論文:AES-256密鑰儲存漏洞:機制、風險及安全修復
介紹
現代加密演算法,例如 AES-256,是資訊安全的基礎,尤其是在高風險系統(例如比特幣和其他加密貨幣)中。然而,決定實際安全等級的不僅是加密演算法本身,還有它們的實現方式。這裡提到的漏洞源自於錯誤的記憶體管理:加密操作完成後,金鑰沒有從 RAM 中清除,導致金鑰外洩的風險。 iacr +1
脆弱性發生的機制
在所研究的 AES-256 實作中,加密金鑰(以及中間輪金鑰)儲存在一個結構體中 context。加密或解密操作後,由於清零函數被註解掉,因此該結構體不會被清空。因此,金鑰仍然儲存在記憶體中,攻擊者可以透過進程記憶體分析、側通道攻擊或崩潰期間的洩漏來取得金鑰。這種類型的錯誤被歸類為由於記憶體管理不當導致的秘密資料外洩 。
典型的攻擊場景 是攻擊者發動“金鑰幽靈攻擊”,在加密完成後或透過冷啟動攻擊讀取內存,恢復完整的AES金鑰,從而獲得對加密資料的存取權。 cs -people.bu+2
安全修復:零化方法
資訊安全標準(例如 FIPS 140-3)要求在完成加密操作後從記憶體中清除金鑰。然而,簡單地將密鑰清零並不總是有效,因為編譯器可能會優化程式碼並移除清除指令。更好的方法是使用具有 `–clear` 限定符的結構 ,volatile以確保將零實際寫入記憶體。
一個安全的零化函數範例:
cppstatic void secure_zeroize(void* ptr, size_t len) {
volatile uint8_t* p = (volatile uint8_t*)ptr;
while (len--) {
*p++ = 0;
}
}
這種方法確保資料從記憶體中徹底清除,攻擊者無法存取這些資料。 stackoverflow +2
針對該漏洞,舉例說明其解決方案。
建議和修正後的程式碼:
- 加密/解密完成後,對所有包含金鑰的結構呼叫 secure_zeroize 函數。
- 不要將鍵存儲在長期存在的物件中。使用在操作完成後立即清除的局部變數。
encrypt請 如下重寫函數decrypt:
cppvoid encrypt(block& bytes, const secret& key) NOEXCEPT
{
aes256::context context;
initialize(context, key);
encrypt_block(context, bytes);
secure_zeroize(context.key, sizeof(context.key));
secure_zeroize(context.enckey, sizeof(context.enckey));
secure_zeroize(context.deckey, sizeof(context.deckey));
}
void decrypt(block& bytes, const secret& key) NOEXCEPT
{
aes256::context context;
initialize(context, key);
decrypt_block(context, bytes);
secure_zeroize(context.key, sizeof(context.key));
secure_zeroize(context.enckey, sizeof(context.enckey));
secure_zeroize(context.deckey, sizeof(context.deckey));
}
這種方法消除了關鍵的儲存漏洞,並能抵禦大多數記憶體分析攻擊。
結論
密碼安全不僅需要正確選擇演算法,還需要精心設計秘密資料處理方式。記憶體中未清理的金鑰會成為攻擊者的攻擊點。實施安全清零、使用揮發性記憶體以及系統地考慮金鑰儲存是現代安全密碼系統設計的關鍵組成部分。 cryptojedi +2
建議 定期進行原始程式碼稽核和安全測試,以偵測和修復此類漏洞。
最終科學結論
AES-256密鑰儲存的一個關鍵漏洞,即密鑰資料未從RAM中清除,直接威脅到比特幣基礎設施本身的安全性。該漏洞為最危險的現代密碼攻擊之一——冷啟動攻擊(或密鑰記憶體提取)——打開了方便之門,攻擊者可以利用漏洞完全存取私鑰,進而獲取用戶帳戶中的資金。即使是最安全的AES-256演算法,如果其金鑰能夠輕易地從殘留的進程資料中提取出來,也將變得毫無用處。
在實踐中,這可能導致大規模損失:wallet.dat 檔案洩露、加密貨幣被大規模盜竊以及數位資產安全喪失——正如數十枚比特幣遺失的真實案例所表明的那樣。長期儲存金鑰而不進行清零處理,徹底破壞了安全加密貨幣儲存的概念,使強大的加密淪為一種虛假的安全感。就比特幣而言,這種漏洞直接威脅著全球生態系統,一次成功的記憶體洩漏可能會對大量用戶造成災難性後果 。
正因如此,科學界和實踐界都要求強制實施密鑰清理保證機制和對所有加密實現進行嚴格審計:這是真正保護數位資產並避免將來再次發生此類悲劇性攻擊的唯一途徑。
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470ikh_klyuchey_bitcoin_core_chast_1_13153470
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_2_13153514
- https://cryptodeep.ru/bit-flipping-attack-on-wallet-dat/
- https://habr.com/ru/companies/itsumma/news/650761/
- https://hightech.fm/2024/10/13/q-aes
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://habr.com/ru/articles/336578/
- https://top-technologies.ru/ru/article/view?id=37634
- https://cyberleninka.ru/article/n/analiz-aktivnosti-i-tendentsiy-razvitiya-vredonosnyh-programm-tipa-blokirator-shifrovalschik-faylov
- https://www.reddit.com/r/sysadmin/comments/qwpqxk/aes_broken/
- https://www.iacr.org/archive/asiacrypt2015/94520273/94520273.pdf
- https://cs-people.bu.edu/tromer/papers/cache-joc-20090619.pdf
- https://cryptojedi.org/peter/data/qsmc-20240220.pdf
- https://arxiv.org/pdf/2106.04876.pdf
- https://www.juniper.net/documentation/us/en/software/ccfips23.4/cc-guide-routers-mx304/transformed-content/topics/concept/fips-mode-zeroization.html
- https://stackoverflow.com/questions/37371348/why-isnt-this-zeroization-code-optimized-out-by-most-c-compilers
- https://arxiv.org/html/2505.04896v1
- https://www.sciencedirect.com/science/article/abs/pii/S0743731524000625
- https://learning-gate.com/index.php/2576-8484/article/download/6586/2332/8975
- https://www.reddit.com/r/aws/comments/148uefj/best_practices_for_securing_access_keys_in_c/
- https://stackoverflow.com/questions/34342794/how-to-store-encryption-key-in-safe-c
- https://www.sciencedirect.com/science/article/pii/S1319157821003578
- https://www.codewithc.com/secure-coding-practices-in-embedded-c-revealed/
- https://forums.freebsd.org/threads/securely-storing-aes-key-in-application-binary.91980/
- https://www.securecodewarrior.com/article/coders-conquer-security-insecure-cryptographic-storage
- https://gist.github.com/atoponce/07d8d4c833873be2f68c34f9afc5a78a
- https://cwe.mitre.org/data/definitions/311.html
- https://moldstud.com/articles/p-implementing-best-practices-for-secure-coding-and-encryption
- https://www.ubiqsecurity.com/practical-guidance-on-how-to-prevent-cryptographic-failures-owasp-top-ten-a022021%EF%BF%BC/
- https://community.element14.com/technologies/internet-of-things/f/forum/30071/where-do-you-store-hide-your-aes-keys-used-for-embedded-encypt-and-decrypt
- https://www.iacr.org/archive/asiacrypt2015/94520273/94520273.pdf
- https://en.wikipedia.org/wiki/Cold_boot_attack
- https://arxiv.org/html/2412.19310v1
- https://cve.mitre.org/cgi-bin/cvekey.cgi
- https://cwe.mitre.org/data/definitions/311.html
- https://www.juniper.net/documentation/us/en/software/ccfips23.4/cc-guide-routers-mx304/transformed-content/topics/concept/fips-mode-zeroization.html
- https://stackoverflow.com/questions/37371348/why-isnt-this-zeroization-code-optimized-out-by-most-c-compilers
- https://is.muni.cz/th/ngo6y/Mishra_thesis.pdf
- https://lib.rs/crates/bitcoin-aes
- https://www.microsoft.com/en-us/research/wp-content/uploads/2006/10/aes-timing.pdf
- https://arxiv.org/pdf/1711.08002.pdf
- https://www.ainvest.com/news/escalating-cybersecurity-risks-crypto-ecosystem-call-action-investors-2508/
- https://fenix.tecnico.ulisboa.pt/downloadFile/1126295043839149/82457-bruno-lopes_dissertacao.pdf
- https://www.aumasson.jp/data/papers/eth2sec.pdf
- https://cs-people.bu.edu/tromer/papers/cache-joc-official.pdf
- https://www.cve.org/CVERecord/SearchResults?query=crypto
- https://en.wikipedia.org/wiki/Cryptanalysis
- https://www.sciencedirect.com/topics/computer-science/cryptographic-attack
- https://www.cve.org/CVERecord/SearchResults?query=encrypted
- https://research.checkpoint.com/2024/modern-cryptographic-attacks-a-guide-for-the-perplexed/
- https://nvd.nist.gov/vuln/detail/cve-2020-8912
- https://patents.google.com/patent/US20200195417A1/en
- https://arxiv.org/html/2509.10814v1