在2025年,未能生成足夠隨機簽名隨機數的加密錢包,已經超越了疏忽。
Tansel Kaya
Tansel Kaya11月29日 04:47
在 Upbit 黑客事件中提到的「從簽名中提取密鑰」是針對 Solana(以及其他許多區塊鏈)使用的橢圓曲線數位簽名演算法(ECDSA)的一種先進的密碼分析攻擊。 攻擊者利用 Upbit 錢包軟體生成的可預測隨機數(一次性隨機數 k),在簽名中捕捉到隱藏的模式,從而數學上計算出錢包的私鑰(private key)。 1. ECDSA 是如何工作的? 每次簽署交易時: 私鑰:d(絕不分享) 一次性隨機數:k(nonce)→ 每個簽名必須完全隨機且保密 產生的簽名:(r, s)對(在區塊鏈上所有人可見) 如果 k 不是隨機的或有可預測的模式,則可以從多個簽名中恢復私鑰 d。 2. Upbit 的漏洞 Upbit 自己的錢包軟體無法生成足夠隨機的 nonce 值。這導致簽名的(r, s)值出現統計偏差(bias)。攻擊者收集了 Upbit 熱錢包中的數十/數百筆交易,通過分析這些簽名找出 nonce 的哪些位是可預測的,並通過數學方法(格攻擊)在幾秒/幾分鐘內計算出私鑰。 3. 使用的數學攻擊類型 隱藏數字問題(HNP)+ 格約簡(LLL/BKZ 演算法) 僅僅 3–8 位的可預測性,配合 20–100 個簽名就足以完全破解密鑰。 即使偏差較弱(1–2 位),也可以通過數千個簽名來破解。 4. 為什麼說「只有 Lazarus 能做到」? 這種攻擊需要:博士級的密碼學知識(HNP、格密碼分析) 區塊鏈數據分析專業知識 強大的計算資源(GPU 集群) 耐心和長期監控 5. 應吸取的教訓和預防措施 Nonce 的生成必須使用 RFC 6979(確定性但安全)或真正的硬體隨機數源(HWRNG)。 簽名必須通過隨機性測試(NIST、Dieharder)。
我不確定這裡的細節是什麼。正如一些人所指出的,Solana 應該使用 Ed25519,這具有確定性隨機數。但這是一種 Schnorr 簽名,如果有人錯誤實現了均勻取樣隨機數的過程,則具有相同的漏洞。
我還想說:如果我在一個加密錢包中發現了一個簽名方案的 nonce 隨機性/均勻性缺陷,特別是被國家贊助的團體利用的,我不會僅僅將其解釋為「意外」。
11.86K