私钥竟然是"4":eMudhra 证书风暴真相,与"打穿全球银行"传言核查

10 月 22 日晚间,一则帖子在国内社媒悄然流传:「三哥搞的那个私密泄露相当于炸飞了全世界的安全密钥……连 VSIA 系统都已经被击穿了……除了用国密系统的,全世界的银行系统都被打穿了」,收获数百点赞。把它逐句拆开,每一条都能找到真实原型,但结论几乎全错。真实原型是:10 月 17 日,安全研究员发现印度证书颁发机构 eMudhra 的 8 张中级 CA 证书私钥弱到荒唐——其中一张的「私钥」就是数字 4。这确实是近年全球 PKI 体系最戏剧性的一次失守,但它既没有「炸飞」任何东西,也和国密、跨境支付毫无关系。本文把事件的技术细节、全球防御体系的真实响应与传言的错位逐一讲清。

事件原型:8 张私钥,最弱的一张是"4"

eMudhra 是印度最大的数字信任服务提供商,旗下 emSign 品牌在全球 TLS 证书市场经营多年,据国内媒体报道累计签发证书超过 6000 万份。10 月 17 日,研究员 Wayne 在扫描公开证书数据时发现异常并报告 Mozilla;随后研究员 Flüpke 公开了其中一把私钥:中级证书 EM OV TLS CA - G3C 对应的 P-384 椭圆曲线私钥,取值是 4。

技术细节值得展开。P-384 私钥本应是一个约 384 位的随机大整数,全部安全性都建立在「猜不中」这三个字上。事后确认,8 张涉事证书的私钥取值分别是 4、56、66、115、155、156、230、237——全部小于 256,搜索空间最多只有 256 种可能。所谓「破解」既不需要量子计算机也不需要超算,一部手机毫秒级穷举即可完成。正常应有 384 位随机性的密钥,实际随机性只剩个位数或两位数整数。

起因同样离谱。eMudhra 在 10 月 21 日的说明中承认:2025 年 4 月 30 日的一次密钥生成仪式,虽然使用了符合 FIPS 140-2 Level 3 的硬件安全模块(HSM),但密钥封装/解封装流程存在缺陷,额外生成了一组弱密钥;又因公司为测试目的「偏离常规操作」,弱密钥与正常密钥的标签高度相似,工作人员误将其用于 CSR 并由根证书签名,部分证书还提交给了 Sectigo 交叉签名。公司口径称之为「多处人为失误」,并计划重查所有历史密钥生成仪式。

后果是什么?持有这 8 把私钥的攻击者,可以为任意域名签出被浏览器信任的伪造 HTTPS 证书,在中间人位置冒充目标网站、拦截或篡改通信——Palo Alto Unit 42 特别指出,对不检查吊销状态的客户端尤其有效。换句话说,如果攻击者在 4 月 30 日之后、10 月 17 日之前真的拿到并利用了这些私钥(目前没有证据表明发生过),一次精准的中间人攻击可以骗过任何人的眼睛。这才是这件事真正的分量:不是「全球密钥失效」,而是全球信任链上出现了 8 个理论上可被随意冒用的签章。

timeline
    title 2026 年 10 月第三周:从弱私钥到连环风波
    10月16日 : 暗网出现 SBI 客户数据叫卖帖 : OpenCode Console 旧系统遭入侵
    10月17日 : 研究员报告 eMudhra 弱私钥 : Chrome 与 Firefox 数小时内完成封锁
    10月19日 : Android 经 Google Play 服务推送等效更新 : Cloudflare 启动评估
    10月20日 : Firefox 158.0.1 发布 : Cloudflare 完成全线缓解
    10月21日 : LiteLLM 投毒版上架 : SBI 交易所公告确认泄露 : PHP 修复 PHP2Shell
    10月22日 : Apple 加入封锁 : eMudhra 宣布退出 SSL/TLS 证书业务
    10月27日 : Chrome 根商店将移除 emSign ECC Root CA - G3

防御端实录:信任体系如何"响亮地失败"

这起事件还有另一面常被忽略:全球 PKI 的防御机制这次工作得相当好。

Google 官方博客记录了完整时间线:10 月 17 日 18:05 UTC,报告送达 Chrome Root Program;19:45 UTC,Chrome 完成核实并通过 CRLSet 按 SPKI 哈希封锁涉事中间证书——用户无需更新浏览器、无需重启。Firefox 同日经 OneCRL 完成同等级封锁;10 月 19 日,Android 设备经 Google Play 服务收到等效更新(重启设备可立即触发);Apple 于 10 月 22 日跟进;微软不再信任相关证书。工具链侧,Go 发布 1.27.3 与 1.26.10(CVE-2026-111943),Python certifi、curl CA bundle、NSS 3.131.1 相继更新,Node.js 也在 10 月 21 日的安全更新中加入封锁;Mozilla 工程师 Dennis Jackson 维护着一份公开事件追踪页,逐项列出各软件的修复状态。

误伤面同样有交代。Chrome Root Program 确认,涉事 8 张证书中有权签发 TLS 证书的 6 张从未出现在任何证书透明度(CT)日志中,受 CT 强制约束的客户端(Chrome 默认配置、新版 Android 应用)不会受欺诈证书影响;Cloudflare 复核后表示未在其服务上发现主动利用迹象。eMudhra 则吊销了全部 8 张证书、停止在 G3 根证书下签发新证书,并于 10 月 22 日宣布自愿退出全球 SSL/TLS 证书业务——该业务仅占公司收入约 1%。Chrome 将于 10 月 27 日从根商店移除 emSign ECC Root CA - G3,受影响的合法网站需迁移到其他证书层级。

把镜头拉远,「弱随机数毁掉强算法」是密码学世界的经典剧本,eMudhra 只是最新一集:

年份 事件 失效环节
2008 Debian OpenSSL 弱密钥 维护者误删熵源代码,两年间生成的密钥只剩 32768 种可能
2012 Mining your Ps and Qs 大量设备首次启动时熵不足,TLS/SSH 密钥共享素数因子
2017 ROCA Infineon 芯片密钥生成存在结构性缺陷,RSA 私钥可被高效分解
2026 eMudhra 脚本误选弱密钥,P-384 私钥实际取值小于 256

规律始终没变:RSA、ECC 还是国密 SM2,一切公钥算法都建立在「私钥不可猜」之上,随机数一塌,任何算法一起陪葬。这条规律也不挑国籍——2016 年国内 CA 沃通(WoSign)因违规签发等问题被各大浏览器根程序逐步停止信任,同样说明 PKI 是一套按规则运行、无国籍可言的全球信任体系。

恐慌帖逐条核查

回到开头那则帖子,逐句对照事实:

恐慌帖说法 核查结论 事实
「三哥搞的那个私密泄露」 原型存在,定性错误 真实事件是 eMudhra 密钥生成脚本缺陷导致的弱私钥,不是「某人窃密」,公司称基础设施未被入侵
「炸飞了全世界的安全密钥」 严重夸大 受影响的是一家 CA 旗下 8 张中级证书,主流浏览器数小时内封锁,普通用户无需任何操作
「全世界除了阿里、腾讯、字节、国密」 查无实据 不存在任何这样的「测试」;上述厂商与全球同行同处一套公开 PKI 生态,本次事件与它们无关,与国密算法更无关
「连 VSIA 系统都已经被击穿」 虚假 查无此系统,「VSIA」是中文网络上 VISA 的常见误拼;本次事件没有任何支付网络被击穿的报道
「全世界的银行系统都被打穿」 虚假 本周唯一的银行事件是 SBI 数据泄露(确认 3897 条记录,核心银行系统未受影响,与 eMudhra 无关)
「乐子人拿 AI 跑撞库」 歪打正着 OpenCode 泄露的 API 密钥确实被攻击者拿去烧用户额度;PHP2Shell 漏洞的发现有 AI 辅助研究参与

「只有国密安全」这个说法值得多说一句,因为它把因果完全弄反了。SM2 与 ECC 同属椭圆曲线算法,私钥同样是随机大整数——如果同一个烂脚本去生成 SM2 密钥,结果一样可能是「4」。签名环节的随机数低熵同样致命:早年 PS3 因 ECDSA 签名随机数可预测而被整体攻破,2013 年 Android 端比特币钱包因系统随机数缺陷导致私钥失窃。这次出事的是密码基础设施的「生成环节」而非算法本身,换任何算法都救不了坏随机数;真正接住这次事件的,是浏览器根程序、CT 日志、CRLSet/OneCRL 这套全球协同的信任运维体系——它恰恰是「体系性信任」,而非「某国算法更安全」。

同一周的连环事件:丢的不是算法,是密钥的管理

恐慌帖把一周的混乱压缩成了「世界毁灭」,但真实的这一周本身就足够刺激。印度《商业世界》的总结是:从银行数据泄露、弱加密密钥、被污染的软件发布到严重漏洞,暴露的是系统性信任缺口。除 eMudhra 外,同周至少还有五起值得记住的事件:

  • SBI 数据泄露:10 月 16 日,多家机构向印度最大银行 State Bank of India 预警,暗网出现叫卖帖,声称握有 37.5 万行数据与 2722 个 PDF;10 月 21 日 SBI 在交易所公告中确认 3897 条客户记录泄露(姓名、联系方式、出生日期、住址、客户标识与贷款记录)。银行强调核心系统未受访问;安全公司 eScan 的 CEO 评估泄露源头可能是贷获客/线索管理管道的被盗供应商凭据或暴露 API——数据丢在「周边系统」而非核心,这是现代银行泄露的典型形态。
  • OpenCode 密钥泄露:10 月 16 日,攻击者进入 AI 编程工具 OpenCode 支撑 Console 服务的旧系统,约 1.4% 用户保存在平台上的 OpenAI、Anthropic、Google API 密钥可能外泄,并被拿去在用户账号上烧钱跑模型。Anthropic 与 Google 封锁了相关密钥,OpenAI 配合恢复访问并退款。
  • Railway 凭据暴露:云部署平台 Railway 披露存有客户环境变量的系统遭未授权访问,部分变量(可含 API 密钥、数据库密码)可能已被解密读取,平台暂停部署并要求客户轮换全部密钥。
  • LiteLLM 供应链投毒:10 月 21 日,开源 AI 网关 LiteLLM 的发布管道被污染,投毒版 1.107.0 上架 PyPI 与容器镜像源,内含窃取云凭据、API 密钥与 SSH 密钥并实现远程代码执行的恶意代码;起因是开发者凭据失窃。
  • PHP2Shell 漏洞:PHP 核心曝出两个严重漏洞 CVE-2026-109618 / CVE-2026-109619,可实现未认证远程代码执行与类 Heartbleed 的内存泄露;Unit 42 估计截至 10 月 21 日有超过 2260 万实例暴露在互联网上,披露前已出现利用尝试。值得注意的是,Tenable 确认这组漏洞的发现过程有 AI 辅助研究参与——AI 在放大攻击者探测能力,而 OpenCode 事件里 AI 平台本身又成了赃物仓库。

五起事件加起来,共性一目了然:没有人「破」了任何算法,丢的都是密钥与凭据的生成、存放和流转。恐慌帖担心「AI 跑撞库」,而现实是攻击者根本不用撞库——平台自己会把密钥递出来。

给不同读者的行动清单

开发者与企业:排查自有资产中有无链到 eMudhra/emSign G3 层级的证书,立即通过其他 CA 重签(Unit 42 建议顺手检查代码仓库、构建管线、自定义信任库——Linux /etc/ssl/certs、Java keystore、Python certifi、Docker 镜像都可能是藏身处);升级 Go/Python certifi/curl/NSS/Node.js 等运行时与依赖,确认修复真正到达「实际做证书校验的那一层」——Cloudflare 特别提醒,SDK 测试通过不代表后台服务安全,curl 测试通过不代表应用真的在用系统信任库;用过 LiteLLM 的核对版本,1.107.0 为投毒版,应立即轮换环境内全部凭据;PHP 服务器尽快打上 10 月 21 日补丁并检查 Webshell。启用 CAA 记录、监控 CT 日志、坚持吊销检查与短有效期证书,是把下次「4 号私钥」的窗口压到最小的办法。

普通用户:把浏览器和操作系统更新到最新(Android 用户重启一次设备即可确保拿到 Google Play 的更新),然后什么都不用做——这次事件里,全球防御体系数小时内的表现配得上用户的信任,反而提醒我们及时更新的重要性。至于「银行被打穿」的帖子,转发之前先想想:一家 CA 出了事故,应急响应是几小时,而谣言的传播根本不需要响应时间。

结语

eMudhra 事件是一堂公开课:现代密码学的软肋从来不在算法的数学里,而在生成密钥的那段脚本、存放凭据的那台旧系统、按下发布按钮的那套流程里。恐慌帖把「一家 CA 的 8 把坏钥匙」放大成「全世界被炸飞」,本质上是把一次被体系成功接住的失败误读成了体系本身的崩塌。看懂这一层,比记住任何一条传言都有价值。

参考资料

← 返回资讯列表

读者留言

COMMENTS 暂无
仅本站原创文章开放留言 · 请勿留下手机号、邮箱等个人信息

还没有留言,来说第一句?