我成功分解了 90 年代 CA 的 RSA 密钥

I've factored the RSA keys of a Certificate Authority from the 90s

我成功分解了 90 年代 CA 的 RSA 密钥

最近我在思考 RSA 加密的安全性,特别是那些早期的弱密钥。Web PKI 早在十多年前就弃用了 1024 位 RSA,但 90 年代初期由于缺乏标准,许多浏览器仍内置了极短的密钥。我从 archive.org 下载了旧版 Internet Explorer 和 Netscape 的归档,利用 Claude Code 提取了所有根证书。意外发现 Netscape 4.51 在 1999 年曾内置了加拿大证书机构 E-Certify 的 512 位 RSA 根证书。我在自己的 Ryzen 9 5950X 台式机上运行 CADO-NFS,仅用 32 小时就成功分解了该密钥并重构了私钥。现在,你可以利用这些私钥在配置了旧时钟的 Netscape 4.51 环境中签发证书,甚至搭建一个仅能被旧浏览器识别的网站。

RSA 的加密依赖于分解大半素数的难度,但究竟多大的数才算“大”,这是一个有趣的问题。
  1. hnmullany

    我是 Netscape 4.51 浏览器的产品经理,负责根证书相关事务。看到有人在 25 年后成功分解了那个密钥,简直让人难以置信。

    顺便回复一下评论区的一些人:是的,我们当时就知道出口级加密很弱——这正是目的所在,即让 NSA 能够解密它,而政府也强制要求我们这么做。

    顺便一提(FWIW),我们的目标是在 4.5x 版本中扩展根证书颁发机构(CA)的列表,这或许也是首次尝试对根证书槽位进行商业化,因为当时 Netscape 面临着巨大的营收压力。

    (另外,Verisign 非常讨厌我们引入竞争,曾试图说服我们实施一个计划,将列表重新限制为一组“负责任”的公司,说白了就是 Verisign 和一两家其他公司。我们拒绝了。)

  2. 63

    有点遗憾的是,很多有趣的部分都留给了 AI。我本来很想看到一些关于为什么需要自定义 TLS 实现的评论。算了。

    更新:在链接仓库中那个(出奇地短)Go 文件顶部的评论里找到了这个解释:

    目标客户端是 Netscape Communicator 4.51(包括 40 位出口版和 128 位美国版),且其时钟被设定为 2000 年。

    Go 的 crypto/tls 帮不上忙:它在 Go 1.14 中移除了 SSLv3,从未接受过 Netscape 4 发送的兼容 SSLv2 的 ClientHello,也从未支持过 RC4-MD5 或 40 位出口套件。因此,这个文件在标准库原语(RSA PKCS#1 v1.5, RC4, DES, 3DES, MD5, SHA-1)之上,自带了一个微小的服务端 SSLv3 实现。服务端密钥是 512 位 RSA,这样出口客户端就可以直接将预主密钥加密给它,而无需 ServerKeyExchange。

  3. goalieca

    基本上,用消费级 GPU 花了 2 天就破解了一个 512 位的证书。关键是,当时的很多流量并没有使用临时密钥(ephemeral keys)。大多数流量甚至根本没有加密!但大约十年后,加密一切就成了常态。我不禁好奇,世界上有哪些政府正在坐等时机,通过录制并保存数据,以便在将来解密能力具备时,去破解匿名的政治言论。

  4. alexpotato

    我曾在一家对冲基金负责“经纪商 FTP

  5. GracefullyShot

    2021 年有个项目,目的是联系我们对接的银行和经纪商,要求他们升级密钥和加密套件到现代版本。

    据我所记(IIRC),最老的密钥/加密套件来自 2000 年代末,所以如果有人在某个地方还在使用 90 年代的 RSA 密钥,我也不会感到惊讶。

    你可以阅读更多关于对冲基金如何使用 FTP 的内容:

    https://x.com/alexpotato/status/1809579426687983657?s=20

    或者听我和 patio11 聊聊这些系统:

    https://www.complexsystemspodcast.com/episodes/two-banks-can...

  6. pvillano

    我不是密码学专家,但对这个领域很感兴趣。话虽如此:我最近很难理解,基于底层问题、材料大小以及通过优化和并行能力破解它所需的计算强度,来评估一个加密套件的实际强度。

    > Web PKI 在十多年前就弃用了 1024 位 RSA,虽然我不确定是否有人分解过这种大小的密钥,但对于拥有大量计算机的政府或其他组织来说,这在理论上是可能的。

    真的吗?我该如何验证这种说法?

    ---

    > 就在几天前,有人分解了 RSA 分解挑战中的 862 位 RSA-260 密钥。

    是的,但这花了多少时间?资源消耗如何?这只是一个数字,并不是所有 861 位的 n 数值。

  7. teiferer

    那份 SSL 报告里四个自动生成的 'F' 等级,真是个绝妙的讽刺结尾。

  8. mitxela

    > 我没有什么正当理由去做这件事,但这看起来很有趣。

    除了“有趣”之外,还有什么更好的理由去做一件事呢?

同日更多故事

2026-09-08