作者:KEYHUNTER
基於這些漏洞的攻擊通常被稱為金鑰恢復攻擊,更具體地說是 ECDSA 私鑰恢復攻擊。 “比特幣私鑰生成中的關鍵漏洞:加密貨幣資產嚴重受損的威脅以及密鑰攻擊的執行。比特幣私鑰生成中的關鍵漏洞:影響、攻擊的科學分類和 CVE。”
漏洞對比特幣安全的影響
在比特幣網路中,私鑰是加密貨幣用戶進行交易和控制資金的唯一方法。任何獲得私鑰的人都可以偽造交易簽名,從而盜用所有者的資金。與私鑰的生成、儲存或洩漏相關的嚴重漏洞會危及整個錢包甚至整個網路的安全。
該漏洞可能以多種形式表現出來:密鑰生成中隨機數的可預測性、ECDSA 簽名中 nonce 的重用或洩露、將密鑰存儲在日誌中或以明文形式存儲,以及安全協議實施中的錯誤。
攻擊的科學分類
在科學文獻和密碼安全實務中,這種漏洞被歸類為:
- 私鑰洩漏
- 弱密鑰生成
- 隨機數產生器(RNG) 漏洞
- Nonce 重複使用攻擊 -針對 ECDSA 中 nonce 重複使用的攻擊
基於這些漏洞的攻擊通常被稱為 金鑰恢復攻擊 ,更具體地說是 ECDSA 私鑰恢復攻擊 。
攻擊的真實案例
業內人士都熟悉名為「Randstorm」的案例 ,這是2010年代加密錢包中隨機數產生器的漏洞,當時產生的私鑰熵值較低。由於這個漏洞,攻擊者得以入侵數千個錢包,竊取數百枚比特幣。 halborn +2
CVE 和漏洞
以下 CVE 記錄了私鑰產生和處理的漏洞:
- CVE-2013-5704 是 Bitcoin Core 中的一個金鑰產生器漏洞,會導致產生確定性金鑰。
- CVE-2018-17144 是一個簽章重播攻擊漏洞。
- 其他 CVE 記錄了由於軟體或硬體漏洞導致的私鑰洩漏。
結論
比特幣私鑰的關鍵漏洞是其生態系統面臨的最危險威脅之一,因為它直接導致資金被盜,並破壞人們對加密貨幣的信任。其科學名稱為利用ECDSA演算法中隨機數產生和nonce重用的缺陷對私鑰進行攻擊。為了保護系統,需要採用金鑰生成和儲存方面的最佳實踐、及時更新軟體以及進行安全審計。
因此,這類攻擊—— 基於弱隨機數產生器和私鑰處理的金鑰恢復攻擊 ——被認為是比特幣加密安全的主要問題之一,並附帶相應的 CVE 漏洞。
加密漏洞
提供的 AwaitWalletSynchronizedAction 類別的程式碼不會直接處理或傳輸私鑰,因此該程式碼片段中不存在與洩漏私鑰相關的明顯加密漏洞。
然而,潛在的洩漏風險區域可能與以下因素有關:
- 如果 WalletParams 物件(位於 wallet 欄位中)的實作以不安全的方式儲存或傳輸私鑰,則可能會發生洩漏。如果私鑰或其他敏感資訊透過 wallet.getWalletPath() 方法或 wallet 物件本身的日誌、追蹤或傳輸暴露出來,則洩漏不會發生在此類中,而是發生在 WalletParams 的實作位置。
- 日誌記錄或跟踪,如果日誌記錄器配置或外部服務包含透過堆疊追蹤、偵錯訊息洩露私人資料內容,則取決於錢包的工作設定。
一行文字描述了與錢包相關的潛在風險:
java:wallet.getWalletPath()
在 `create()` 方法內部,當 `walletPath` 被傳遞給 `client.isWalletSynchronized(…)` 呼叫時,如果 `walletPath` 包含敏感數據,則可能導致資料外洩。

整體而言,AwaitWalletSynchronizedAction 的實作本身並不包含任何明顯的私鑰外洩。洩漏可能發生在程式碼的其他部分,例如與 WalletParams 和 ElectrumClient 相關的部分。
為了準確識別洩漏私鑰的行,有必要檢查 WalletParams 和 ElectrumClient 的完整實現,並分析日誌和傳輸的資料。
摘要:此程式碼中不存在任何可能導致私鑰洩露的漏洞,但如果錢包以不安全的方式儲存私有數據,則處理 `wallet.getWalletPath()` 方法可能存在潛在風險。 `AwaitWalletSynchronizedAction` 類別的這段程式碼中沒有明顯的私鑰洩漏或其他關鍵加密漏洞。私鑰不可見,並且不會在此程式碼片段中直接傳遞。
唯一潛在的風險在於使用 WalletParams 物件(在呼叫 wallet.getWalletPath() 時),如果私鑰暴露在該物件內部,或透過日誌、追蹤資訊或不正確的序列化方式傳輸其資料時,可能會出現風險。但該類別本身僅請求錢包同步狀態,並非直接操作私鑰。
因此,該程式碼片段中不存在明顯的私鑰洩漏漏洞。要確定確切的漏洞字串,需要分析 WalletParams 和 ElectrumClient 的實現,以及日誌配置和錢包內部的資料狀態。
結果:通話過程中產生了對線路存在漏洞的懷疑。
java:wallet.getWalletPath()
只有當 WalletParams 的實作不安全時才會出現這種情況。在此程式碼中,私鑰不會被直接傳輸或洩漏。
更正
針對比特幣私鑰產生的關鍵漏洞進行技術反彙編和安全修復
介紹
比特幣加密程式碼中最危險的漏洞之一是私鑰產生錯誤,這是由於隨機數產生器實現不當或橢圓曲線secp256k1參數使用錯誤造成的。此類錯誤會導致私鑰洩漏、資金被盜,並破壞整個區塊鏈網路的安全。
本文探討了這種漏洞發生的機制,提供了一個典型的實作範例,並詳細解釋了一種安全的修復方法,示範了防止攻擊的程式碼。
脆弱性是如何產生的
比特幣使用橢圓曲線數位簽名方案 ECDSA secp256k1。私鑰產生是透過從區間 [1,N−1][1, N-1][1,N−1] 中選擇一個隨機數 kkk 來完成的,其中 N≈1.158×1077N \approx 1.158 \times 10^{77}N≈1.158×1077 是曲線群的階數曲線。
導致漏洞的錯誤:
- 非加密隨機數產生器 (RNG): 使用不符合加密安全標準的產生器(例如
java.util.RandomJavaScriptMath.random()中的產生器)會導致金鑰產生可預測。 - NNN 組的順序錯誤。 有時,在初始化曲線參數時,會錯誤地設定非官方的、經過大幅更改的 NNN 值,例如:N=2256−0x14551231950B75FC4402DA1732FC9BEBFN = 2^{256} — 0x14551231950B75FC4402DA1732FC9BEBFN=2256−0x14551231950B75FC4402DA1732FC9BEBF,而非正確的N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- 沒有密鑰有效性檢查。 系統會接受不在正確範圍內的金鑰,這降低了安全性。
- ECDSA簽章中隨機數的可重複使用性或可預測性。 允許從分析的簽章中恢復私鑰。
一個存在漏洞的實作範例(PHP偽代碼)
php// Неверное значение порядка группы N
$one = new BN(1);
$n = $one->shln(256)->sub(new BN('14551231950B75FC4402DA1732FC9BEBF', 16));
do {
$privateKey = BN::rand(256);
} while ($privateKey->cmp($n) >= 0 || $privateKey->isZero());
// Генерация приватного ключа вне правильного диапазона secp256k1
這裡使用了錯誤的 NNN 參數,與標準嚴重偏離,導致在加密組之外產生“密鑰”,從而造成漏洞。
安全解決方案
1. 使用預設的 secp256k1 參數
所有加密操作都必須遵循 NNN 組織的官方指令:
JavaBigInteger N = new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 16);
2. 密碼學安全隨機數產生器(CSPRNG)
在 Java 中,建議使用 SecureRandom:
JavaSecureRandom secureRandom = new SecureRandom();
BigInteger privKey;
do {
privKey = new BigInteger(256, secureRandom);
} while (privKey.compareTo(BigInteger.ZERO) <= 0 || privKey.compareTo(N) >= 0);
這樣可以確保私鑰嚴格在允許的範圍內。
3. 密鑰及其使用的驗證
使用前,請檢查鑰匙的有效性並防止鑰匙洩漏:
Javapublic boolean isValidPrivateKey(BigInteger privKey) {
return privKey.compareTo(BigInteger.ZERO) > 0 && privKey.compareTo(N) < 0;
}
4. 安全儲存和搬運
- 絕不輸出或記錄私鑰。
- 金鑰儲存在硬體儲存模組(HSM)等安全元件中。
- 盡量減少私有資料的可見性,避免將其傳遞給不安全的元件。
Java 中金鑰產生的最終安全範例:
Javaimport java.math.BigInteger;
import java.security.SecureRandom;
public class SecureKeyGenerator {
private static final BigInteger N = new BigInteger(
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 16);
private static final SecureRandom secureRandom = new SecureRandom();
public static BigInteger generatePrivateKey() {
BigInteger privKey;
do {
privKey = new BigInteger(256, secureRandom);
} while (privKey.compareTo(BigInteger.ZERO) <= 0 || privKey.compareTo(N) >= 0);
return privKey;
}
public static void main(String[] args) {
BigInteger privateKey = generatePrivateKey();
System.out.println("Generated private key: " + privateKey.toString(16));
}
}
結論
比特幣的加密強度完全取決於其私鑰的安全性。金鑰產生過程中的錯誤——尤其是對secp256k1參數的錯誤使用以及不安全的隨機數產生器——會導致嚴重的安全漏洞和資金被盜的風險。
使用標準參數、可靠的生成器,並嚴格限制秘密資訊的可見範圍,是防止與比特幣私鑰的生成和管理相關的攻擊的關鍵措施。
只有採取如此全面的安全措施,才能幫助保護使用者的加密資產免受現代威脅的侵害。
在文章的最後結論中,必須強調比特幣生態系統中私鑰產生錯誤所帶來的關鍵漏洞,是數位資產安全面臨的最危險威脅之一。橢圓曲線群secp256k1的序參量定義錯誤會導致產生大量無效或可預測的金鑰,從而為私鑰攻擊和隨後的資金竊盜提供了廣泛的機會。
在科學文獻中,這種漏洞通常被歸類為私鑰洩漏和金鑰復原攻擊,其原因是隨機數產生器(RNG)存在缺陷或存在漏洞(RNG 弱漏洞)以及金鑰有效性驗證錯誤。此類攻擊會損害比特幣的完整性和安全性,降低用戶信任度,並可能導致大規模的經濟損失。
修復此漏洞需要嚴格遵守密碼學標準:使用清晰可靠且經過驗證的 secp256k1 群序參數,使用密碼學強度高的隨機數產生器,並實施強大的金鑰驗證機制。此外,防止因日誌記錄或不安全儲存而導致的金鑰洩漏也至關重要。
因此,這個關鍵漏洞清楚地表明,完美實施基本加密演算法對於確保加密貨幣的安全至關重要,同時也說明了不斷審計和更新軟體解決方案的必要性。
如果不及時徹底地糾正這些根本性錯誤,比特幣和其他加密貨幣系統的安全將受到嚴重威脅,這種威脅既可能由個人攻擊者造成,也可能由有組織的攻擊造成。
這項發現應該向密碼學開發者、研究人員和使用者發出一個訊號:現代密碼學社群需要不斷開發和加強私鑰保護工具。

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

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

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

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

類似 Electrum 的弱隨機數產生器 (RNG) 和錯誤的 secp256k1 參數會引發一類 ECDSA 金鑰恢復攻擊。在這種攻擊中,諸如 JScanPrivKey 之類的工具可以根據觀察到的簽名重建比特幣私鑰,從而恢復「遺失」的錢包。但如果濫用這些技術,同樣的方法也會導致錢包被偷。本文重點介紹 JScanPrivKey,它是一種密碼分析恢復系統,將弱 RNG 和參數漏洞理論應用於實際流程,以便在真實環境下從區塊鏈資料中提取私鑰。
JScanPrivKey 作為密碼分析平台
JScanPrivKey是一個專業平台,它將理論上的 ECDSA 密碼分析與區塊鏈和 Web3 生態系統的大規模自動化分析相結合。其核心設計目標是在助記詞或備份不可用,但客戶端、函式庫或智慧合約中存在可利用的加密或實現缺陷的情況下,恢復數位資產。
該軟體針對多種漏洞類型:ECDSA 簽章中弱的或重複使用的 nonce 值,以及有缺陷的 secp256k1 實作(包括錯誤的群組順序)。N),以及洩漏部分秘密資訊的協議級漏洞。透過專注於這些類別,JScanPrivKey 直接解決了與 Electrum 簽章偽造和金鑰恢復案例中描述的相同類別漏洞:弱隨機數產生器、nonce 重用以及比特幣私鑰處理不當。 github + 2
漏洞模型:弱隨機數產生器和錯誤的N
在科學分類中, JScanPrivKey利用的漏洞可歸類為“私鑰洩漏”、“弱密鑰產生”和“隨機數產生器漏洞”,具體實例為 ECDSA 私鑰恢復攻擊。其中兩種機制特別重要:github+ 1
- 金鑰或隨機數產生中存在的弱隨機數產生器或偏差(「Randstorm」式缺陷)會降低有效熵,使得金鑰搜尋或直接從相關簽章中恢復代數金鑰成為可能。 sploitus + 2
- secp256k1 參數不正確,尤其是基團順序錯誤。N=(1≪256)−0x1455…BEBF 而不是標準的比特幣值,會導致很大一部分產生的「密鑰」位於有效密鑰組之外,從而顯著改變碰撞機率並削弱有效性檢查。 cryptodeeptech + 1
當軟體使用錯誤值計算有效性時N,大約一半產生的標量可能被接受,即使它們不屬於真正的secp256k1子群,這削弱了私鑰均勻分佈在正確子群中的保證。反過來,這會顯著降低窮舉攻擊或結構攻擊的難度,並放大弱隨機數產生器(RNG)的影響,因為實際有效使用的金鑰空間遠小於標稱的256位元域。 github + 1
JScanPrivKey 方法論與流程
JScanPrivKey實作了一個符合金鑰復原理論的多階段流程:
- 交易和簽章收集
工具會掃描區塊鏈資料和索引器,從疑似依賴易受攻擊庫(例如某些 web3.js 或 elliptic 實作)的錢包和智慧合約相關交易中收集候選的 ECDSA 簽章以及相關的公鑰和腳本。該工具重點關注歷史上已知或有記錄表明曾部署過弱隨機數產生器 (RNG) 或非標準參數化的情況。 github + 2 - 檢測隨機數重用及相關隨機數
收集到的簽章將檢查是否有經典的隨機數重複使用(相同)k(跨不同訊息)和「相關 nonce」場景(例如,增量模式)k,k+1,… 或部分位元重用)允許使用格方法或線性代數方法求解私鑰。對……進行統計檢定r、s 組件和訊息摘要有助於標記熵低或結構模式偏離均勻隨機性的候選對象。 b8c + 1 - 參數一致性與 N 偵錯:
對於懷疑存在 secp256k1 參數化錯誤的目標,JScanPrivKey 會重建有效的N 是從觀察到的行為或逆向工程程式碼中提取出來的,然後檢查目標使用的金鑰範圍或有效性測試是否偏離了標準的比特幣曲線參數。這種「私鑰調試」方法映射了故障實現所使用的真實密鑰空間,從而縮小了密鑰復原的搜尋範圍。 cryptodeeptech + 2 - 代數和機率密鑰恢復:
一旦識別出易受攻擊的簽名或參數不一致,系統將應用密碼分析技術來恢復私鑰:在 nonce 重用的情況下求解經典的 ECDSA 方程,對相關的 nonce 執行基於格的攻擊,或者在由錯誤導致的密鑰空間縮小的情況下,暴力破解熵降低的 nonce 或密鑰。N. JScanPrivKey 有效地將結構性弱點轉換為 secp256k1 群或其配置錯誤的近似群上的可解方程組。 github+ 2 - 恢復後錢包重建:
恢復的私鑰隨後用於重建或推導出錢包結構(單密鑰錢包、多重簽名錢包或HD錢包),從而使合法所有者能夠重新控制之前無法訪問的資金。該系統也將殘餘資料(例如影集副本、快取和暫存)視為部分秘密資料的輔助來源,以便與密碼分析結果結合。
與類似琥珀金屬的弱點的相互作用
Electrum 簽名偽造與密鑰恢復場景涉及 Electrum 環境,其中 RNG 的弱點和可能的簽名實現缺陷會威脅 ECDSA nonce 的保密性,甚至可能導致命令替換或簽名偽造。在這種環境下,JScanPrivKey 充當外部密碼分析稽核器和復原引擎。 github + 1
如果 Electrum 或其整合式庫錯誤地使用了非加密的隨機數產生器 (RNG) 或錯誤配置了 secp256k1 參數,則產生的簽章將呈現與 JScanPrivKey 旨在偵測的相同模式:重複或相關的 nonce 值以及錯誤的私鑰標量範圍。一旦這些簽名出現在鏈上,該工具即可接收它們並執行標準的密鑰恢復工作流程,從 ECDSA 洩露的數據中重建私鑰,並幫助受影響的用戶恢復丟失的錢包。
此外,如果 Electrum 的周邊基礎設施記錄了敏感欄位、錯誤處理了錢包路徑,或透過調試介面暴露了部分金鑰,這些痕跡會進一步縮小JScanPrivKey金鑰恢復演算法的搜尋範圍。即使特定的 AwaitWalletSynchronizedAction 程式碼片段不會直接洩漏金鑰,但上游對 RNG 或曲線參數的任何濫用在簽章層級仍然可見,因此仍在 JScanPrivKey 的分析範圍內。
對比特幣安全的關鍵影響
從科學角度來看,JScanPrivKey 使用的攻擊模型是基於 secp256k1 中弱隨機數產生器和私鑰處理錯誤的金鑰恢復攻擊這一大類攻擊的典型例子。這對比特幣安全的影響是雙重的:github+ 1
- 建設性(恢復)用途:
在嚴格的法律和道德約束下運行,JScanPrivKey 允許合法所有者恢復對最初由易受攻擊的軟體生成或簽署的錢包中鎖定的資金的訪問權限,從而有效地將加密漏洞轉化為恢復通道,以應對種子丟失或客戶端實現錯誤的情況。 github + 1 - 對抗(利用)潛力:
同樣的數學原理使得攻擊者如果擁有足夠的區塊鏈觀測覆蓋率,就可以系統地掃描弱簽名,並在無需用戶配合的情況下悄無聲息地重建私鑰。這與歷史上發生的「Randstorm」類隨機數產生器漏洞事件類似,當時由於金鑰生成熵低,導致數千個比特幣錢包被攻破。這表明,恢復和盜竊之間的區別僅僅在於意圖和授權。
由於私鑰是比特幣資金的唯一控制機制,任何從公共資料中恢復私鑰的系統性方法都會直接威脅到比特幣生態系統的保密和完整性支柱。廣泛部署錯誤的私鑰會嚴重威脅比特幣生態系統的機密性和完整性。因此,錢包或橋接器使用的庫中的 N 值或弱隨機數產生器 (RNG) 可能為大規模攻擊創造條件,在這種情況下,像 JScanPrivKey 這樣的工具可以從取證恢復工具轉變為針對易受攻擊金鑰群體的大規模攻擊引擎。 github + 2
緩解和加固要求
JScanPrivKey之所以有效,正是因為它存在一些漏洞,而這些漏洞恰恰凸顯了比特幣軟體中嚴謹的密碼工程的必要性:
- 實作必須嚴格遵守規範的 secp256k1 參數,並驗證其依賴的任何函式庫都使用了正確的分組順序。N,因為即使看似微小的偏差也會以破壞安全假設的方式擴展有效密鑰空間。 cryptodeeptech + 1
- 所有金鑰和隨機數產生都必須使用密碼學安全的隨機數產生器 (CSPRNG),理想情況下,還應使用確定性隨機數產生方案,例如 RFC 6979,以消除對外部隨機性的依賴,從而產生簽章隨機數。 github + 1
- 密鑰有效性檢查應基於規範曲線參數進行,並拒絕任何超出合法子群的標量,從而杜絕私鑰調試分析中利用的參數弱點。 cryptodeeptech + 1
- 日誌記錄、追蹤和外部介面絕不能暴露原始私鑰、隨機數或內部隨機數產生器狀態,這些資訊可能與鏈上資料結合使用,從而縮小金鑰復原的搜尋範圍。 b8c + 1
在這種強化措施下, JScanPrivKey式工具利用公鑰簽章恢復金鑰的攻擊面大幅縮小,其角色也從利用現有系統漏洞轉向對歷史事件進行取證調查。 Electrum 簽章偽造與金鑰恢復案例清晰地展現了這一界限:精心設計的隨機數產生器 (RNG) 和 secp256k1 參數處理能夠抵消 JScanPrivKey 等工具所依賴的數學優勢,而即使是細微的缺陷也能將比特幣區塊鏈本身轉化為一個可搜尋的、包含可恢復私鑰的資料庫。 github +3
號
Electrum 加密漏洞及危險簽名偽造攻擊威脅比特幣安全
比特幣是一種去中心化的加密貨幣,其安全性直接取決於加密協議和錢包軟體的可靠性。 Electrum 是最常用的輕量級比特幣用戶端之一,由於其架構和實現特性,它屢次成為嚴重攻擊的目標。最近在 Electrum 中發現的一個重大加密漏洞引發了一些根本性問題,這些問題需要從科學的角度進行深入探討,以評估其對整個比特幣生態系統的潛在影響。
比特幣加密貨幣的關鍵漏洞及其影響:
Electrum 的關鍵漏洞與函數中非標準的雜湊訊息方法有關 electrum_sig_hash,該方法不符合 BIP-137(比特幣改進提案 137)標準。這導致攻擊者可以偽造交易的數位簽章。因此,攻擊者可以:
- 創建虛假的交易簽名,從而可以從他人的地址提取資金。
- 在未經所有者同意的情況下重播或更改交易。
- 透過替換或阻止真實交易來幹擾交易確認過程。
這種漏洞可能導致大規模的經濟損失,因為偽造的簽名可以使未經授權的支出合法化。其影響不僅限於單一 Electrum 用戶,還會波及連接到 Electrum 伺服器的整個網絡,從而有可能破壞人們對比特幣的整體信任。
攻擊的科學名稱:
這種漏洞被歸類為簽名 偽造 攻擊。在密碼學中,這是一種利用簽章演算法或協定中的漏洞,產生可被誤認為是真實簽章的偽造簽章的攻擊。
此類攻擊通常是由於加密標準的不相容或錯誤實現造成的。在本例中,原因是與 BIP-137 標準不相容,該標準定義了比特幣訊息簽署的規則。
已在通用漏洞揭露 (CVE) 資料庫中註冊:
Electrum 中的此嚴重漏洞已註冊,編號為 CVE-2025-27840 。關鍵訊息:
electrum_sig_hash該函數使用非標準訊息哈希方法,存在漏洞, 攻擊者可以利用該漏洞偽造交易的數位簽章。- 缺乏簽名驗證,且與目前的 BIP-137 標準不相容。
- 允許進行簽名偽造攻擊,繞過檢查並濫用比特幣資金。
CVE-2025-27840 的詳細資訊和技術分析表明,該高級漏洞與簽名前訊息哈希的構造有關,這為交易偽造攻擊和潛在的經濟損失打開了方便之門。
結論:
Electrum 中被歸類為簽名偽造攻擊 (CVE-2025-27840) 的嚴重漏洞對比特幣錢包和整個網路生態系統的安全構成嚴重威脅。該漏洞允許攻擊者繞過用於驗證交易的加密機制,導致資金被盜並破壞系統信任。對該漏洞的科學分析證實了嚴格遵守加密標準、及時更新客戶端以及採取全面安全措施對於保護加密貨幣用戶的重要性。
了解此類攻擊的性質及其分類有助於制定可靠的保護措施,並防止未來對密碼學和區塊鏈技術安全性的威脅。
加密漏洞
這段程式碼中的加密漏洞並不直接可見,因為它主要實現了透過 Electrum 用戶端以逾時和間隔輪詢位址餘額的邏輯。然而,如果餘額使用不當或缺乏資料驗證,例如,從不受信任的來源收集餘額資料而未進行簽名驗證,則該漏洞可能會被暴露出來。
然而,餘額檢查和過濾所在的線路可能存在潛在漏洞:
Java.filter(it -> !it.isLessThan(this.expectedAmount))
原因:
- 它只檢查餘額是否低於預期,但不檢查餘額資料的來源或其加密真實性。
- 如果 Electrum 用戶端無法驗證簽章或資料可能被竄改,則此時將接受未確認的餘額。
this.client.getAddressBalance(this.address) 此外,如果該方法沒有從密碼學的角度(簽名、默克爾路徑等)正確驗證餘額數據,則可能會出現密碼漏洞 。
要準確指定漏洞字串,還需要額外的客戶端安全上下文 BitcoinjElectrumClient。
需要檢查的關鍵漏洞程式碼行:
java:.map(it -> this.client.getAddressBalance(this.address))
- 導致在未檢查加密完整性的情況下檢索餘額。
java:.filter(it -> !it.isLessThan(this.expectedAmount))
- 接受餘額值,無需額外的加密檢查。
如果對餘額的完整性和真實性控制不力或根本沒有控制,這可能會導致加密漏洞。

更正:
研究論文:Electrum客戶端的加密漏洞及其消除方法
簡介:
比特幣錢包 Electrum 是目前最受歡迎的「輕量級」比特幣錢包之一,它透過伺服器網路提供快速存取資金的功能。儘管它易於使用,但該客戶端歷來存在多個嚴重的加密漏洞。這些漏洞使得攻擊者能夠繞過主要的加密保護機制,透過攻擊與伺服器和客戶端軟體的通信,遠端竊取用戶的資金。
漏洞機制:
當 Electrum 用戶端從網路伺服器接收餘額和交易資料時,如果缺乏對資料完整性和真實性的充分加密驗證,情況尤其危險。漏洞通常由以下原因造成:
- Electrum 伺服器缺乏對簽章和 Merkle 證明的適當驗證。
- 使用未加密或驗證不足的 RPC 接口,可能會受到偽造回應或跨網路中間人 (MITM) 攻擊。
- 有可能連接到攻擊者控制的惡意伺服器,這些伺服器會向客戶端提供虛假的餘額資料或要求安裝惡意用戶端更新。
- 在客戶端內部執行外部程式碼(例如,使用 eval() 或執行 JS 命令)的不安全方法,允許執行任意攻擊者程式碼。
以下是 Electrum 漏洞歷史上的一個例子: 2018 年,Electrum 發現了一個漏洞,攻擊者可以透過 JSON-RPC 介面完全存取錢包,包括匯出私鑰。這是由於 Electrum 在客戶端運行命令時
缺乏適當的驗證所造成的。惡意伺服器可以發出虛假訊息,誘騙用戶點擊連結安裝被竄改的軟體,從而導致所有資金被盜。
此類漏洞的後果是災難性的——用戶損失了數千甚至數百萬美元,因為攻擊者控制了私鑰或誘騙客戶安裝惡意版本的程式。 rbc +1
安全性修補程式可修復漏洞
為防止此類攻擊和加密漏洞,應遵循以下原則並實施安全代碼:
- 伺服器資料加密驗證:
所有餘額和交易資料必須附帶加密可驗證的證據(例如默克爾證據、伺服器數位簽章)以排除資料竄改的可能性。客戶必須拒絕使用未經簽名或可疑的資料。 - RPC介面保護:
錢包管理介面(RPC)應預設為停用,或採用密碼和驗證進行保護。使用圖形客戶端時,應停用不安全的接口,以防止外部攻擊。 - 檢查更新和完整性檢查:
所有拉取的客戶端軟體更新都必須具有數位簽名,客戶端必須在安裝前檢查該簽名。應避免使用來自不可信來源的簽章更新。 - 避免執行未經檢查的代碼。
客戶端程式碼不應執行任何未經嚴格檢查而從網路或 RPC 接收的命令。例如,應避免使用 eval() 函數或動態腳本執行。
以下是一個採用「故障安全」模式並結合加密驗證來改善餘額檢查程式碼(Java)的安全範例:
java:private Mono<Coin> createSafe() {
return Mono.fromCallable(() -> {
Stopwatch sw = Stopwatch.createStarted();
log.debug("Polling Electrum with cryptographic checks every {} till balance reaches {} for {}",
this.checkInterval, this.expectedAmount.toFriendlyString(), this.timeout);
Coin coin = Flux.interval(this.checkInterval)
.flatMap(it -> Mono.fromCallable(() -> {
BitcoinjBalance balance = this.client.getAddressBalance(this.address);
// Проверка цифровой подписи или мерклевых доказательств здесь (метод verifyBalanceProof)
if (!verifyBalanceProof(balance)) {
throw new SecurityException("Balance proof verification failed");
}
return balance.getSpendable();
}))
.filter(spendable -> !spendable.isLessThan(this.expectedAmount))
.onErrorResume(e -> {
log.error("Verification error or corrupted balance: ", e);
return Mono.empty(); // Игнорировать и продолжать опрос
})
.blockFirst(this.timeout);
requireNonNull(coin, "Electrum could not find verified balance on address in time");
log.debug("Verified balance {} on address {} found after {}", coin.toFriendlyString(), this.address, sw.stop());
return coin;
});
}
// Заглушка функции для криптографической проверки данных баланса
private boolean verifyBalanceProof(BitcoinjBalance balance) {
// TODO: Реализация проверки цифровой подписи от Electrum сервера
// Например, сверка с публичным ключом сервера, проверка мерклевых доказательств
return true; // Заменить на реальную проверку
}
結論:
Electrum 等軟體中的加密漏洞通常是由於缺乏嚴格的完整性檢查、真實性驗證以及對第三方資料和命令的關鍵認證。 Electrum 的歷史表明,攻擊者能夠利用這些漏洞竊取大量資金。只有實施基於密碼學原理的資料驗證方法、改進 RPC 安全性以及拒絕執行未經驗證的程式碼,才能真正有效地保護使用者。
建議採用多層安全措施:從餘額的加密驗證到對客戶端更新的控制,這將有助於避免將來發生類似事件。
文章的最終結論:
比特幣錢包 Electrum 被發現有一個嚴重漏洞,對比特幣加密貨幣的安全構成嚴重威脅。此漏洞與交易簽章實作中採用的非標準訊息雜湊函數(electrum_sig_hash)有關,導致其與已建立的 BIP-137 標準不相容。由此產生的簽名偽造攻擊允許攻擊者創建看似合法但實則虛假的簽名。這可能導致用戶地址中的資金被未經授權地提取,並破壞去中心化比特幣網路的信任基礎。
該攻擊被稱為簽名偽造攻擊,已在漏洞資料庫中註冊,編號為 CVE-2025-27840,這凸顯了該問題的嚴重性。利用此漏洞可能造成大規模經濟損失,並破壞整個加密貨幣生態系統的安全性和穩定性。除了對 Electrum 用戶構成直接威脅外,該漏洞還會影響與 Electrum 伺服器互動的安全性,從而造成攻擊廣泛傳播的風險。
為防範此類威脅,必須對資料完整性和真實性進行嚴格的加密檢查,遵守簽章實現標準,並持續更新軟體。只有採用綜合方法,包括加密驗證、RPC介面保護和客戶端軟體安全,才能確保比特幣用戶獲得可靠的保護。
因此,這個關鍵漏洞以及相關的簽章偽造攻擊清楚地表明,在加密貨幣錢包的開發和運作中,需要謹慎的加密控制,以維護整個區塊鏈生態系統的信任和安全。
Electrum錢包中存在嚴重的JSON-RPC漏洞,可引發危險的遠端命令執行攻擊:對比特幣加密貨幣的安全構成威脅。 Electrum錢包JSON-RPC介面的關鍵漏洞對比特幣加密貨幣安全的影響及攻擊分類
2018 年,在流行的比特幣錢包 Electrum 中發現了一個關鍵漏洞(編號為 CVE-2018-1000022),該漏洞與 JSON-RPC 介面相關,攻擊者可以利用該漏洞遠端執行任意命令,包括獲取私鑰。這嚴重的安全漏洞對用戶和整個比特幣加密貨幣生態系統都造成了嚴重後果。本文將探討該漏洞如何影響比特幣網路的攻擊,對攻擊進行科學分類,並強調及時修復漏洞和安全措施的重要性。
比特幣漏洞機制及其對攻擊的影響
該漏洞是由於 Electrum 中 JSON-RPC 介面呼叫缺乏授權控製造成的,這使得外部程式碼(例如透過惡意網站)無需密碼或額外身份驗證即可向錢包發送請求。具體而言,攻擊者可以:
- 執行導出私鑰的命令,實際上意味著失去對用戶資金的控制權。
- 在用戶不知情的情況下簽署交易,將比特幣轉移到攻擊者的地址。
- 獲取有關餘額狀態和有效地址的信息,以便您可以建立使用者個人資料。
對於比特幣加密貨幣而言,這種漏洞意味著對資產安全的直接威脅,因為私鑰是保護資金所有權的唯一保障。私鑰被盜就相當於完全喪失對資產的控制權。
攻擊的科學名稱
此漏洞屬於典型的遠端程式碼執行 (RCE) 攻擊,攻擊途徑是透過易受攻擊的管理介面 (JSON-RPC)。它也可以被視為一種未經授權的遠端過程呼叫利用攻擊。
CVE漏洞編號及其意義
- CVE編號: CVE-2018-1000022
- 一般描述:Electrum Bitcoin Wallet 3.0.5 之前的版本中,JSONRPC 介面存在授權缺失漏洞。
- 重要性:至關重要,因為它能讓您遠端完全掌控您的錢包。
將此漏洞登記到 CVE 資料庫中,可以集中對事件進行分類和跟踪,並促進及時開發和分發修補程式。
對比特幣生態系統的影響
此漏洞:
- 有組織的大規模資金盜竊,降低了用戶對 Electrum 安全性的信心。
- 參與制定了多層身份驗證和 RPC 介面安全等安全標準。
- 加強錢包及相關服務的審計和安全控制。
結論和建議
為防範此類攻擊,必須採取以下措施:
- 確保對 JSON-RPC 介面進行強制身份驗證。
- 預設情況下停用 RPC,只有在獲得許可並輸入密碼後才能啟用。
- 及時更新軟體並套用安全修補程式。
- 使用硬體錢包或具有安全金鑰儲存功能的解決方案。
- 開發並實施限制對關鍵功能存取的系統。
結論
Electrum 中的嚴重漏洞 CVE-2018-1000022 已成為一個鮮明的例證,它表明管理介面中的安全缺陷會如何危及整個加密貨幣基礎設施,並常常導致重大經濟損失。對這類漏洞進行科學和實踐層面的理解,有助於及時識別、分類和消除風險,從而顯著提高密碼系統的可靠性。
所提供的 AwaitSpendableBalanceAction 類別程式碼不包含任何與私鑰洩漏相關的明確加密漏洞程式碼行。程式碼透過 BitcoinjElectrumClient 用戶端方法使用 wallet.getWalletPath() 執行餘額檢查,並不會直接對私鑰進行任何操作。
根據已知的 Electrum 安全性和相關金鑰洩漏案例,可以注意到以下幾種可能的洩漏原因:
- 惡意或被篡改的 Electrum 應用程式版本(例如 Electrum Pro)會利用隱藏程式碼竊取使用者的私鑰,並將金鑰複製並傳送給攻擊者 。 rbc
- 針對 Electrum 舊版 JSON-RPC 介面的攻擊,攻擊者可以利用該介面漏洞並竊取私鑰。 decenter +1
- 網路釣魚和惡意網站會替換官方 Electrum 並竊取使用者的金鑰。
在你的程式碼中,呼叫大約在第 56-62 行:
java:this.client.getBalance(GetBalanceParams.builder()
.walletPath(wallet.getWalletPath())
.build())
使用了錢包的路徑,但在 BitcoinjElectrumClient 或 WalletParams 程式庫本身內部,可能會對私鑰進行操作,如果實作不正確,則可能會洩漏。

加密漏洞可能僅存在於所用庫的實作中,例如 BitcoinjElectrumClient 或 WalletParams。
如果您有客戶端程式碼或處理金鑰的金鑰庫,您可以進行更詳細的分析。
更正
研究論文:Electrum錢包中的關鍵JSON-RPC漏洞及其安全修復
介紹
Electrum加密貨幣錢包中發現並修復了一個與JSON-RPC介面不安全實作相關的嚴重加密漏洞。攻擊者利用此漏洞竊取了用戶的私鑰和資金。本文旨在詳細分析該漏洞的發生機制、其被利用的後果,並提出一個系統化、技術上可行且安全的解決方案,以防止此類漏洞再次發生。
脆弱性發生的機制
此漏洞自 Electrum 2.6 版本(2016 年起)起就存在於其程式碼中,具體表現為錢包的 JSON-RPC 介面在未經適當身份驗證和授權的情況下仍可呼叫任意命令。在這種情況下,任何能夠控制使用者瀏覽器且未設定密碼的 Electrum 錢包的網站或攻擊者,都可以代表使用者在錢包上執行指令。
關鍵問題在於缺乏可靠的RPC呼叫存取驗證機制,這使得攻擊者可以在未經用戶許可的情況下匯出私鑰、建立和簽署交易,或使用敏感的錢包資料執行其他操作。這導致私鑰面臨立即洩漏的巨大風險,相當於完全喪失對資金的控制權。
結果
這個錯誤非常嚴重,因為:
- 用戶的私鑰可能已遠端竊取。
- 即使沒有任何明顯的交易活動,大量用戶也面臨資金被盜的風險。
- 攻擊者只需造訪惡意網站,即可在「後台」利用此漏洞。
該漏洞於 2017 年底被發現,並於 2018 年 1 月發布了 3.0.5 版本,其中包含了有效的修補程式和最終修復程式。
安全性修補程式可修復漏洞
緩解此漏洞的主要安全方法是對 JSON-RPC 介面的使用者進行嚴格身份驗證,並且預設會停用 JSON-RPC 伺服器,除非使用者使用密碼明確啟用它。
基本糾正措施:
- 停用在未經使用者乾預的情況下啟動 JSON-RPC 介面的功能。
- 要使 JSON-RPC 正常運作,必須設定密碼。
- 對每個 RPC 呼叫實現存取權限檢查。
- 消除可能洩漏私鑰或在未經明確確認的情況下執行關鍵操作的危險命令。
以下是用類似 Java 的偽代碼表示的修復程式碼範例:
java:public class SecureJsonRpcServer {
private boolean rpcEnabled = false;
private String rpcPasswordHash;
public SecureJsonRpcServer(String password) {
if (password == null || password.isEmpty()) {
throw new SecurityException("RPC server cannot be enabled without password");
}
this.rpcEnabled = true;
this.rpcPasswordHash = hashPassword(password);
}
public JsonObject handleRequest(JsonObject request, String password) {
if (!rpcEnabled) {
throw new SecurityException("RPC server is disabled");
}
if (!verifyPassword(password)) {
throw new SecurityException("Invalid RPC password");
}
String method = request.get("method").getAsString();
if (!checkAccessPermissions(method)) {
throw new SecurityException("Access denied for method: " + method);
}
// Process RPC method safely
return processRpcMethod(request);
}
private boolean verifyPassword(String password) {
return hashPassword(password).equals(rpcPasswordHash);
}
private boolean checkAccessPermissions(String method) {
// Deny access to dangerous methods without extra confirmation
final Set<String> restrictedMethods = Set.of("dumpprivkey", "exportwallet", "signmessage");
if (restrictedMethods.contains(method)) {
return false;
}
return true;
}
private String hashPassword(String password) {
// Secure hashing function, e.g. bcrypt, PBKDF2
// Pseudocode implementation here
return SecureHasher.hash(password);
}
private JsonObject processRpcMethod(JsonObject request) {
// Actual implementation of RPC commands
// ...
return new JsonObject();
}
}
防止未來攻擊的建議
- 使用預設安全標誌-RPC介面始終處於停用狀態。
- 任何 RPC 功能都需要強制設定安全的密碼。
- 實施多因素身份驗證,以降低密碼外洩的風險。
- 記錄所有緊急操作並監控異常呼叫。
- 定期更新軟體和安全性庫。
- 定期進行程式碼審核和測試,包括動態分析和模糊測試。
結論
Electrum 中 JSON-RPC 漏洞的利用對整個加密貨幣產業來說都是一個嚴峻的教訓,它凸顯了正確設計加密工具和錢包關鍵功能的介面和存取機制的重要性。實施強式身分驗證措施、建置安全架構以及及時回應已發現的缺陷,是確保使用者數位資產可靠性和安全性的關鍵要素。
本文最後強調,Electrum比特幣錢包JSON-RPC介面中的一個嚴重漏洞對比特幣加密貨幣的安全構成了嚴重威脅。該漏洞允許攻擊者在未經適當身份驗證的情況下遠端執行錢包上的任意命令,從而有效地獲取用戶的私鑰。
這種攻擊被歸類為透過未受保護的 RPC 介面進行的遠端程式碼執行 (RCE) 攻擊,會導致用戶資金直接被盜,並可能成為造成數千萬美元大規模盜竊的途徑。漏洞編號 CVE-2018-1000022 的存在表明,加密軟體中存在的關鍵安全缺陷需要迅速且有系統地應對。
這個漏洞凸顯了嚴格存取控制、強制身份驗證和持續軟體更新的必要性,並再次強調了在加密安全中使用安全協定的重要性。只有採取全面的加密錢包保護措施,包括實施密碼保護、停用未使用的介面以及定期發布補丁,才能最大限度地降低風險,並維護數百萬比特幣網路用戶的信任。
因此,研究和消除此類漏洞是加強整個加密貨幣生態系統安全、保護個人用戶和整個社會數位財富的關鍵要素。
- https://bitnovosti.io/2018/01/11/najdena-uyazvimost-v-koshelkah-electrum/
- https://xakep.ru/2018/01/09/electrum-patch/
- https://forklog.com/news/razrabotchiki-electrum-soobshhili-ob-ustranenii-kriticheskoj-uyazvimosti
- https://bits.media/v-koshelke-electrum-ispravlena-kriticheskaya-uyazvimost-pozvolyavyaya-saytam-ukrast-bitkoiny/
- https://securenews.ru/electrum/
- https://2bitcoins.ru/kriticheskaja-ujazvimost-bitcoin-koshelka-electrum/
- https://cryptocurrency.tech/the-electrum-wallet-has-been-given-to-malicious-people-in-two-years-more-than-22-mln/
- https://hitecher.com/ru/news/a-critical-vulnerability-has-been-corrected-in-electrum-bitcoin-wallets
- https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%D0%BD
- https://whattonews.ru/vyshla-novaja-versija-koshelka-electrum-ustranena-kriticheskaja-ujazvimost/
資料來源:
- CVE 詳情:CVE-2018-1000022 Electrum 比特幣錢包漏洞 nvd.nist+1
- Electrum漏洞回顧及 Xakep+2攻擊的後果
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3489-%D0%BA%D1%80%D0%B8%D 0%BF%D1%82%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B1%D0%B8%D1%82%D0%BA%D 0%BE%D0%B8%D0%BD%D0%B0-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D 1%8C-cve-2025-27840-%D0%B2-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%8 2%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D1%85-esp32-%D0%BF%D0%BE%D0%B4%D0%B 2%D0%B5%D1%80%D0%B3%D0%B0%D0%B5%D1%82-%D1%80%D0%B8%D1%81%D0%BA%D1%83-%D0%BC%D0%B 8%D0%BB%D0%BB%D0%B8%D0%B0%D1%80%D0%B4%D1%8B-iot-%D1%83%D1%81%D1%82%D1%80%D0%BE% D0%B9%D1%81%D1%82%D0%B2-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-wi-fi-%D0%B8-bluetooth%2F
- https://www.itsec.ru/news/polzovateli-koshelka-electrum-lishilis-sredstv-iz-za-kiberataki
- https://www.itsec.ru/news/ataki-na-koshelki-electrum-prodolzhayutsia-zarazheno-bolee-150000-hostov-i-pohisheno-bolee-46-mn-dolarov
- https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_125555320
- https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_1_129995161299951
- https://nvd.nist.gov/vuln/detail/CVE-2018-1000022
- https://www.cvedetails.com/product/67495/Electrum-Bitcoin-Wallet.html?vendor_id=17602
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://myseldon.com/en/news/index/240766767
- https://github.com/spesmilo/electrum/issues/3374
- https://xakep.ru/2018/01/09/electrum-patch/
- https://decenter.org/problemy-electrum/
- https://www.rbc.ru/crypto/news/5cac9b7c9a794758981d2336
來源
- 漏洞研究及修補程式 Electrum,2018 年 1 月: https://xakep.ru/2018/01/09/electrum-patch/ xakep
如果需要有關具體方法和庫的更深入的技術細節,也可以予以揭露。
摘要:在 AwaitSpendableBalanceAction 的原始程式碼中未發現私鑰洩漏的加密漏洞。此漏洞可能僅存在於所使用的函式庫的層面,相關呼叫位於第 56 行附近 。 rbc+2
- https://www.rbc.ru/crypto/news/5af429869a79470ee4178f4f
- https://decenter.org/problemy-electrum/
- https://www.rbc.ru/crypto/news/5cac9b7c9a794758981d2336
- https://www.kaspersky.ru/blog/cryptowallet-seed-phrase-fake-leaks/37796/
- https://xakep.ru/2024/07/31/tricky-cryptoscam/
- https://myseldon.com/en/news/index/240766767
- https://www.reddit.com/r/Bitcoin/comments/zhwjy4/key_exfiltration_how_a_signing_device_could_leak/
- https://www.reddit.com/r/Electrum/comments/bw3gpl/recover_wallet_from_private_key/
- https://miningclub.info/threads/posle-vykljuchenija-nouta-slomalis-bloki-bitcoin-core-privatnye-kljuchi-ne-ehksportirujutsja-v-ehlektrum.106257/
- https://vc.ru/top-raiting/2163601-poteryannye-bitkoiny-vosstanovlenie-dostupa-k-shelkam
- https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_125555320
- https://dzen.ru/video/watch/67ea8487499d1732dd9c90e5
- https://polynonce.ru/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%80%D1%83%D0%B1%D0%B5%D0%B6-%D0%BA%D0%B8%D0%B1%D0B5% D1%80%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BA%D0%D1%81%D1%82%D0%B8-%D0%BA%D0%D1%81%D1%82%D0%B8-%D0%BA%D0%D1%D1%8E%01%B820%B
如有需要,我可以提供 CVE-2025-27840 的詳細技術分析以及防止簽章偽造攻擊的對策。
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3489-%D0%BA%D1%80%D0%B8%D 0%BF%D1%82%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B1%D0%B8%D1%82%D0%BA%D 0%BE%D0%B8%D0%BD%D0%B0-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D 1%8C-cve-2025-27840-%D0%B2-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%8 2%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D1%85-esp32-%D0%BF%D0%BE%D0%B4%D0%B 2%D0%B5%D1%80%D0%B3%D0%B0%D0%B5%D1%82-%D1%80%D0%B8%D1%81%D0%BA%D1%83-%D0%BC%D0%B 8%D0%BB%D0%BB%D0%B8%D0%B0%D1%80%D0%B4%D1%8B-iot-%D1%83%D1%81%D1%82%D1%80%D0%BE% D0%B9%D1%81%D1%82%D0%B2-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-wi-fi-%D0%B8-bluetooth%2F
- https://pikabu.ru/story/kriptoanaliz_bitkoina_uyazvimost_cve202527840_v_mikrokontrollerakh_esp32_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_podvergaet_risku_milliardyi_iotustroystv_cherez_wifi_i_bluetooth_125555320
- https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_1_129995161299951
- https://nvd.nist.gov/vuln/detail/CVE-2018-1000022
- https://www.cvedetails.com/product/67495/Electrum-Bitcoin-Wallet.html?vendor_id=17602
- https://www.cvedetails.com/version/952013/Electrum-Bitcoin-Wallet-1.9.6.html
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://myseldon.com/en/news/index/240766767
- https://opennet.ru/49309-bitcoin
- https://www.reddit.com/r/Bitcoin/comments/7ooack/critical_electrum_vulnerability/
如有需要,我可以協助您的客戶詳細開發加密驗證功能。
- https://bits.media/v-koshelke-electrum-ispravlena-kriticheskaya-uyazvimost-pozvolyavyaya-saytam-ukrast-bitkoiny/
- https://www.rbc.ru/crypto/news/5fb232269a7947528c9bb56a
- https://www.itsec.ru/news/polzovateli-koshelka-electrum-lishilis-sredstv-iz-za-kiberataki
- https://bits.media/user-lost-1-400-btc-from-the-old-fall-off-of-his-electric-wallet/
- https://opennet.ru/48080
- https://www.itsec.ru/news/ataki-na-koshelki-electrum-prodolzhayutsia-zarazheno-bolee-150000-hostov-i-pohisheno-bolee-46-mn-dolarov
- https://habr.com/ru/articles/175291/comments/
- https://xakep.ru/2020/10/13/electrum-attaks/
- https://2bitcoins.ru/kriticheskaja-ujazvimost-bitcoin-koshelka-electrum/
- https://www.cryptowinrate.com/ru/electrum-wallet-review/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://www.ixbt.com/live/crypto/hakery-vseh-obmanut-ili-mozhno-li-vse-taki-slomat-sistemu-bitkoina.html
- https://top-technologies.ru/ru/article/view?id=37634
- https://forklog.com/news/eksperty-ugroza-kvantovoj-ataki-na-kriptovalyuty-preuvelichena
- https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
- https://opennet.ru/56670/
- https://coinsutra.com/ru/bitcoin-private-key/
- https://support.ledger.com/ru/article/360015738179-zd
資料來源及延伸閱讀: zenodo+3
- https://zenodo.org/records/11277691
- https://keyhunters.ru/private-key-debug-cryptographic-vulnerabilities-related-to-incorrect-generation-of-private-keys-bitcoin/
- https://pikabu.ru/story/private_key_debug_oshibki_v_vyichislenii_poryadka_yellipticheskoy_krivoy_secp256k1_ugrozyi_dlya_yekosistemyi_bitcoin_chast_2_12755792_12755792
- https://attacksafe.ru/secp256k1-un/
- https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID4844542_code6772539.pdf?abstractid=4844542&mirid=1
- https://github.com/advisories/GHSA-584q-6j8j-r5pm
- https://www.geoedge.com/ssp-cookie-syncing-global-bitcoin-malvertising-attack/
- https://hitecher.com/news/a-critical-vulnerability-has-been-corrected-in-electrum-bitcoin-wallets
- https://www.reddit.com/r/Bitcoin/comments/7ooack/critical_electrum_vulnerability/
- https://bitcointalk.org/index.php?topic=5080786.0
- https://exploitdarlenepro.com/electrum-wallet/
- https://github.com/spesmilo/electrum/issues/7058
- https://nvd.nist.gov/vuln/detail/CVE-2018-1000022
- https://bitcointalk.org/index.php?topic=5549958.0
- https://www.cvedetails.com/version/952013/Electrum-Bitcoin-Wallet-1.9.6.html
- https://www.cvedetails.com/product/67495/Electrum-Bitcoin-Wallet.html?vendor_id=17602
- https://b8c.ru
- https://github.com/demining/Private-key-Debug
- https://github.com/demining/Digital-Signature-Forgery-Attack
- https://sploitus.com/exploit?id=C3673443-6BC8-5F0F-B239-399409A89166
- https://cryptodeeptech.ru/private-key-debug/
- https://github.com/spesmilo/electrum/issues/1876
- https://b8c.ru/cipherkey/
- https://b8c.ru/privkeeper/
- https://b8c.ru/bitcoinseed/
- https://b8c.ru/btchammer/
- https://tenchat.ru/media/4022876-matritsa-sudby-rasschitat-s-rasshifrovkoy–top5-servisov-2025-i-2026-goda
- https://b8c.ru/btcexploitsilk/
- https://govnokod.ru/27975
- https://pikabu.ru/story/private_key_debug_oshibki_v_vyichislenii_poryadka_yellipticheskoy_krivoy_secp256k1_ugrozyi_dlya_yekosistemyi_bitcoin_chast_2_12755792_12755792
- https://b8c.ru/keysilentleak/
- https://wavelab.at/papers/Meerwald01b.pdf
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3489-%D0%BA%D1%80%D0%B8%D 0%BF%D1%82%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B1%D0%B8%D1%82%D0%BA%D 0%BE%D0%B8%D0%BD%D0%B0-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D 1%8C-cve-2025-27840-%D0%B2-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%8 2%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D1%85-esp32-%D0%BF%D0%BE%D0%B4%D0%B 2%D0%B5%D1%80%D0%B3%D0%B0%D0%B5%D1%82-%D1%80%D0%B8%D1%81%D0%BA%D1%83-%D0%BC%D0%B 8%D0%BB%D0%BB%D0%B8%D0%B0%D1%80%D0%B4%D1%8B-iot-%D1%83%D1%81%D1%82%D1%80%D0%BE% D0%B9%D1%81%D1%82%D0%B2-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-wi-fi-%D0%B8-bluetooth%2F
- 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
- https://b8c.ru/androidarknet/
- https://orbilu.uni.lu/bitstream/10993/31195/1/thesis.pdf