Generated by Answer me with HTML 0.5.2 · 2026-10-22 14:45 · ★ Star on GitHub
8 個 bit 的信任崩塌
eMudhra CA 私鑰毫秒破解懶人包
Lead: eMudhra 八張中繼憑證私鑰全是單位數,筆電毫秒還原,信任十七個月只靠八個 bit。
發生了什麼
- 2025-04建 8 張中繼六張 TLS 加兩張程式碼簽署,同被 Sectigo 交叉簽署
- 2025-04 至 2026-10空窗十七個月憑證公開,任何人可毫秒還原私鑰
- 2026-10-17通報研究員經 paranoid_crypto 掃 CCADB 發現,回報五方
- 2026-10-17封鎖Chrome 推 CRLSet,Firefox 經 OneCRL 封鎖
- 2026-10-20公開Mozilla 發公告,移除 eMudhra root,Chrome 跟進 v43
私鑰有多離譜
eMudhra 金鑰前 47 個 byte 全是零,只剩最後一 byte。 單一 byte 只有 256 種可能,最多算 255 次就命中。 P-384 私鑰應為 384 bit 隨機數,約有 10 的 115 次方種可能。 本次金鑰等於把 115 位數保險箱換成三位數腳踏車鎖。
八支金鑰一覽
| 中繼憑證 | 類型 | 私鑰 d |
|---|---|---|
| EM DV TLS CA - G3B | TLS | 156 |
| EM DV TLS CA - G3C | TLS | 230 |
| EM EV TLS CA - G3B | TLS | 115 |
| EM EV TLS CA - G3C | TLS | 56 |
| EM OV TLS CA - G3B | TLS | 155 |
| EM OV TLS CA - G3C | TLS | 4 |
| EM OV CS CA - G3B | 程式碼簽署 | 66 |
| EM OV CS CA - G3C | 程式碼簽署 | 237 |
誰安全誰危險
| 對象 | 狀態 |
|---|---|
| 更新版 Chrome / Firefox / Safari | 安全,擋中繼並強制檢查 CT |
| curl / Python / Node / Go / Java | 危險,信任磁碟 bundle,不查撤銷與 CT |
| CI runner / 容器 / API 呼叫 | 危險,金鑰與客戶資料全在 header |
| IoT / 路由器 / 車 / 醫療裝置 | 危險,韌體凍結,信任到 2039-07 |
| Windows 程式碼簽署 | 危險,未查撤銷即視惡意程式為合法 |
為何無法收拾
無法收拾
一般洩露有小偷與時間點,本次沒有。 金鑰隨憑證公開十七個月,下載憑證者皆可還原。 無人能證明期間無人使用,撤銷也救不了不查撤銷的客戶端。
作者實測偽造 api.stripe.com 憑證,curl 顯示驗證通過,Python 完成交握,Node 顯示授權成功。
現在怎麼做
- 更新 OS 憑證包與 certifi
- 更新 Node 與 Homebrew
- 重建容器映像
- 開啟撤銷檢查
- 凍結裝置列冊追蹤
網友精華
- 發現工具就是 Google paranoid_crypto,開箱即掃出。
- 疑為模 256 寫錯、截斷複製、序號誤用、手打假隨機。
- eMudhra 歸因 KGC 腳本缺陷加名稱相近誤用。
- 稽核只驗產生器,不管後續亂搞,制度破洞。
- 金句:4 甚至不是質數,手工密碼學,有機 nonce。
- 行動派已做 test.key4.lol 檢測頁,並有人解開 ESP32 韌體。