I've factored the RSA keys of a Certificate Authority from the 90s
512 points • 6 days agoArticle Link

RSA 密码学的安全性建立在对大半素数(semiprime numbers)进行因式分解的数学难度之上。虽然现代网络在很大程度上已迁移到至少 2048-bit 的 RSA,但公钥基础设施(Public Key Infrastructure)早期缺乏严格标准。在 1990 年代中后期,由于当时普遍存在的加密出口限制(encryption export restrictions),像 Netscape Navigator 和 Internet Explorer 这样的浏览器内置的根证书使用了 512-bit 的密钥,这些密钥现在可以在现代消费级硬件上轻易被分解。

为了验证这一漏洞,可以恢复这些过时证书颁发机构(certificate authorities)的私钥。通过检索旧版浏览器安装程序的存档,可以提取出曾被默认信任的原始根证书。借助像 CADO-NFS 这样的工具,在普通台式机处理器上,这些 512-bit 密钥大约可以在一到两天内被分解。这个过程直观地显示了密码学标准进步的速度:当年作为网络安全基石的密钥如今在计算上已经不堪一击。

除了因式分解的理论演示外,实际测试这些密钥需要专门环境。现代 TLS 实现不再支持 90 年代后期使用的过时协议,因此要复活这些密钥,需要自定义服务器实现(server implementations),以便与像 Netscape 4.51 这样的旧软件通信。搭建这样的服务器可以签发在老浏览器看来有效的证书,从而揭示长期废弃的安全基础设施所带来的风险。

归根结底,这些发现提醒我们早期数字安全的脆弱性。虽然 E-Certify 和早期的 VeriSign 根证书早已从信任存储(trust stores)中移除,但这些密钥的存在及其易于因式分解的事实说明了行业为何转向更大密钥长度并主动弃用旧标准。尽管如今它们更多是一种有趣的技术好奇心,但它们凸显了在计算能力不断提升的情况下,保持安全标准更新的重要性。

129 comments • Comments Link

- Modern Go 标准库刻意去除了对 SSLv3 和过时的出口级密码套件等老旧协议的支持,因此需要与 Netscape Communicator 4.51 等历史软件互通的项目不得不自行实现这些协议。

- 部署传统的加密服务器本身就存在很大风险,即便在隔离的虚拟环境中也是如此;而像 OpenSSL 这样的现代工具通常需要大量非标准的重编译才能支持这些过时的安全标准。

- 在数字"复古考古"工作中,常用自定义的极简 TLS 实现,让现代用户无需修改客户端就能与遗留系统(例如私有游戏服务器)互通。

- 依赖 LLMs 为技术项目生成可运行代码,往往会丧失对工程细节的把握;在处理复杂任务时,人类操作者更关注高层目标,而不是解释底层工程实现,这会留下隐患。

- 用现代消费级硬件因式分解 512-bit RSA 密钥几乎是微不足道的计算,但这也严肃提醒我们:缺乏临时密钥交换的历史通信存在被未来解密的风险。

- 由于存在 General Number Field Sieve 等次指数级因式分解算法,RSA 的安全性并不会随着位数线性增长,这类算法远比蛮力更高效。

- 破解 1024-bit RSA 的成本在资金充足的参与者可承受范围内,而 2048-bit 密钥在现实中仍被视为安全,破解它们需要更多时间与资源。

- 关于量子计算和 Shor's algorithm 的讨论常常忽视实现可扩展、稳定 qubit 的物理挑战;必须取得重大突破,才能对现行 RSA 标准构成可信威胁。

- 鼓励从 RSA 向 Ed25519 等现代椭圆曲线方案过渡,以避免传统非对称密钥尺寸带来的固有弱点与性能限制。

本次讨论集中在保护数字历史与支持过时安全协议之间的张力。尽管一些项目通过自定义 TLS 实现成功恢复了与 Netscape 的连通性,参与者仍对依赖 AI 生成关键安全代码而非人工工程所带来的松懈表示担忧。由此引发的更广泛讨论涵盖了 RSA 的有限安全性、政府级数据保存对未来解密的风险,以及向现代加密原语过渡以确保长期数字安全的必要性。