eMudhra 中间证书私钥泄露事件分析
事件概览
发生了什么: 2026 年 10 月 17 日,eMudhra 的八个中间证书(六个 TLS,两个代码签名)被发现其私钥可被轻易恢复——每个密钥的 P-384 私钥标量都是小于 256 的整数。Mozilla、Chrome、Apple 和 Microsoft 已收到通知,相关证书已通过 OneCRL 撤销,eMudhra 的信任根层级已从浏览器中移除。 为何重要: 恢复的中间密钥可让攻击者签发任意 TLS 证书,任何仍信任受损根的浏览器都会信任这些证书,从而能够对任何域名实施中间人攻击。
关键事件时间线(UTC)
| 时间 | 事件 |
|---|---|
| 2026-10-17 20:06 | Mozilla 收到报告(由 Chrome 转发),称 eMudhra 八个中间证书的私钥已泄露。 |
| 2026-10-17 20:08 | Mozilla 确认收到并验证了密钥控制证明。 |
| 2026-10-17 20:18 | 完整的 CCADB 扫描显示其中两个中间证书由 Sectigo 交叉签名。 |
| 2026-10-17 21:28 | eMudhra 确认问题并表示正在调查。 |
| 2026-10-17 21:48 | Mozilla 独立恢复了私钥,确认密钥是通过有缺陷的流程生成的。 |
| 2026-10-17 22:59 | Mozilla 在 Firefox 的 OneCRL 中撤销了六个 TLS 中间证书。 |
| 2026-10-18 09:38 | eMudhra 将所有八个中间证书标记为已撤销(原因 caCompromise)。 |
| 2026-10-18 12:06 | Mozilla 发起 Bugzilla 事件以协调响应。 |
| 2026-10-20 | Mozilla 发布了包含内置 OneCRL 快照的临时 Firefox 版本/ESR。 |
| 2026-10-21-23 | eMudhra 发布公开状态页面和新闻稿,宣布退出全球 TLS 市场。 |
技术根本原因
弱 P-384 私钥标量
- P-384 私钥必须是范围 [1, order-1](约 2^192)内的随机整数。八个受损密钥均 小于 256,即它们由 255 个零字节加上一个非零字节组成。
- 此类密钥可通过枚举前 256 个可能的私钥值或通过简单的 baby-step-giant-step 离散对数攻击立即恢复。
- 缺陷 并非 在签名算法中;签名本身使用弱密钥也能正确验证。
弱密钥是如何产生的
- 这些密钥是在 2025 年 4 月 30 日 的一次批量密钥生成仪式中生成的,该仪式创建了 24 个中间 CA(三个系列 A、B、C;两种算法 RSA-4096 和 P-384;四个验证级别 DV、OV、EV、CS)。
- B 系列和 C 系列的 P-384 密钥(即八个受影响的证书)是由一个 偏离规范的 KGC 脚本 创建的,该脚本执行了 wrap/unwrap 测试。脚本错误地在 HSM 上生成了 第二对 密钥,并在 CSR 中使用了较弱的那对。
- 使用的 HSM 型号是 Utimaco(FIPS 140-2 Level 3 认证)。该偏差导致 HSM 接受了外部提供的标量(低熵值),而不是使用其内部 RNG。
- A 系列和 A-1 系列密钥是在 Entrust HSM 上生成的,未受影响。
相关事件
- Bug 1970728(2025 年 6 月)报告了同一六个 TLS 中间证书的无效 CRL 签名。CRL 使用 原始 强密钥签名,但由于颁发的 CA 证书引用了弱密钥,签名验证失败。
- 2026 年 10 月 14 日 为 emSign Root TLS CA - G1 发布了另一份无效 CRL(CRL #11),使用了错误的私钥签名,表明密钥映射控制存在更广泛的失误。
影响评估
| 类别 | 详情 |
|---|---|
| 受影响的证书 | 6 个 TLS 中间证书(EV、OV、DV)受 Chrome、Firefox、Apple、Microsoft 信任;2 个代码签名中间证书受 Microsoft 信任。 |
| 潜在攻击者能力 | 为任何链接到受损根的域名签发任意 TLS 证书;对任何未收到撤销更新的客户端执行 MITM 攻击。 |
| 浏览器中的缓解措施 | 通过 OneCRL(Firefox)撤销,并从 Chrome、Apple 和 Microsoft 信任库中移除 emSign ECC Root CA - G3。 |
| 剩余风险 | 未获取 OneCRL 或缓存了根证书的设备(例如旧版 Android、嵌入式系统)在根证书从其信任库中移除之前仍然易受攻击。 |
| 交叉签名证书 | Sectigo 交叉签名的中间证书在某些信任库中仍未撤销;Sectigo 此后已撤销它们并发布了新的 CRL/OCSP。 |
Mozilla 的响应
- 立即撤销 – 2026 年 10 月 17 日 22:59 UTC 的 OneCRL 更新撤销了六个 TLS 中间证书。
- 根证书移除 – 紧急从所有主要浏览器中移除 emSign ECC Root CA - G3,以保护缺乏撤销获取能力的客户端。
- 版本升级 – 临时 Firefox Release/ESR(10 月 20 日)内置了最新的 OneCRL 快照。
- 协调 – Bug 2083382 跟踪了 OneCRL 流程;Bug 2083449 记录了整个事件,并包含一份针对 eMudhra 的详细问卷。
- 外联 – Mozilla 发布了公告,指导依赖方迁移离开受损的信任层级。
eMudhra 的公开声明和行动
- 状态页面(2026 年 10 月 20 日) – 宣布泄露、撤销八个中间证书,并退出全球 TLS 市场。
- 新闻稿(2026 年 10 月 21 日) – 声称“已直接通知受影响的客户和合作伙伴”,并承诺从替代 CA 提供免费替换证书。
- 撤销行动 – 于 2026 年 10 月 18 日将所有八个中间证书标记为已撤销;Sectigo 撤销了交叉签名证书并发布了新的 CRL/OCSP。
- 退出信任根 – 停止签发链接到 emSign ECC Root CA - G3 的证书;继续在独立层级下运营非 TLS 根(CS、SMIME)。
- 未决问题 – 截至 2026 年 10 月 23 日,eMudhra 尚未回答 Mozilla 的详细技术问卷(硬件细节、KGC 脚本、审计证据、内部发现时间线等)。
社区反应(精选 Hacker News 评论)
- 系统性信任担忧 – 评论者指出,该事件凸显了“任何 CA 都可以为任何域名签发证书”模型的脆弱性,并呼吁更严格地将 CA 绑定到特定命名空间(例如 DNSSEC)。
- HSM 责任 – 一些人认为 Utimaco HSM 不应允许低熵密钥生成,暗示密钥是导入的而非内部生成的。
- 操作责任 – 其他人指出人为错误(重复的密钥标签、wrap/unwrap 测试)和工具不足是直接原因。
- 问责 – 多条评论要求追究 eMudhra 的责任,并将其疏忽与其他行业的工程失败进行比较。
对 PKI 生态系统的教训
- 严格的密钥生成审计 – HSM 必须强制生成高熵密钥,除非明确授权,否则拒绝外部提供的标量。
- 唯一的密钥标识符 – 密钥标签和元数据应全局唯一,以防止意外重用错误的密钥对。
- 自动化的签名后验证 – 每份 CRL 和证书在发布前都应针对预期的签名密钥进行验证;自动化检查可以捕获类似 Bug 1970728 中的不匹配。
- 信任根卫生 – 当颁发 CA 受损时,应迅速撤销交叉签名的中间证书;下游 CA 必须积极监控撤销源。
- 透明度义务 – CA 计划(Mozilla、Chrome、Apple、Microsoft)应强制及时、详细的披露;未能回应调查问卷会削弱信任。
仍未解答的开放问题
- 确切的 HSM 固件版本,以及仪式期间是否以 FIPS 批准模式运行。
- 完整的 KGC 脚本以及导致 wrap/unwrap 偏差的具体代码缺陷。
- 是否有其他 eMudhra 根(CS、SMIME)遭受类似的密钥标签或生成问题。
- 详细的迁移指标:受影响的证书数量、替换进度以及预计完成日期。
- eMudhra 将如何确保未来的密钥生成仪式避免同样的缺陷,尤其是对于仍在运营的非 TLS 根。
结论
eMudhra 事件表明,一个弱密钥生成步骤就可能使整个信任层级失效。浏览器迅速采取行动撤销中间证书并移除受损根,但这一事件凸显了在整个 PKI 生态系统中加强程序性保障、自动化验证和透明事件处理的必要性。