← LeisureLinux 文章索引
LeisureLinux · 微信公众号文章

Linux 7.2 砍掉了最后一款优化的 MD5 实现——一个时代的终结

安全/漏洞 阅读原文(微信)↗

MD5:从全球最流行的哈希算法,到内核里最后一个优化实现也被砍掉,走了整整 30 年。

━━━ ━━━ ━━━

原文:Phoronix——*\"Linux 7.2 Gets Rid Of The Last Optimized MD5 Implementation\"*

作者:Michael Larabel

发表日期:2026年6月18日

━━━ ━━━ ━━━

一、原文翻译

Linux 内核已经删除了最后一个架构专用的优化 MD5 哈希算法实现。

虽然 MD5 曾广泛用于数据完整性校验,但其已知的碰撞漏洞已经存在了很多年——更准确地说,是几十年。值得庆幸的是,大多数软件已经弃用了 MD5,转而使用更安全的算法。对于那些仍在使用 MD5 的遗留场景,现代处理器上的通用代码路径已经足够高效,架构专用的实现已经没什么价值了。

去年,MIPS 和 SPARC 架构的 MD5 优化实现已被移除,理由是\"不值得保留了\"。PowerPC 当时也被标记为待移除,但一位 PowerPC 用户指出,他的组织仍在使用 MD5,并且从中获得了性能收益。不过那部分使用是通过 AF_ALG 接口和 libkcapi-hasher 实现的。

但随着 Linux 7.2 因安全原因加速弃用 AF_ALG,PowerPC 上优化 MD5 代码的使用场景也就不再适用了。对于那些想在更新的 Linux 内核上获得更快 MD5 的 PowerPC 用户来说,优化的内核实现不包含任何特权指令,完全可以在用户空间中无痛携带。

因此,随着 Linux 7.2 的加密库更新现已合并,PowerPC MD5 代码被删除——\"最后一款架构专用的 MD5 实现\"。

MD5 支持仍在内核中,只是作为通用实现继续存在——对于现代硬件和遗留用途来说已经\"足够好了\",且适用于所有 CPU 架构。

━━━ ━━━ ━━━

二、深度解读:为什么砍掉 MD5 优化实现是个历史性时刻?MD5 的 30 年兴衰简史

时间 事件
1992 Ronald Rivest 设计 MD5,成为互联网事实标准
1996 首次发现压缩函数的碰撞------专家开始建议弃用
2004 王小云团队破解完整 MD5------一小时找到碰撞
2005 可在几小时内构造碰撞,US-CERT 建议停用
2007 可构造两个不同行为的可执行文件共享同一 MD5
2008 利用碰撞伪造 SSL 证书------MD5 正式\"密码学破灭\"
2013 普通电脑不到一秒即可找到碰撞
2025 Linux 砍掉 MIPS/SPARC 优化 MD5
2026 Linux 7.2 砍掉 PowerPC MD5------最后一块阵地失守

这背后的三件事值得关注

1. 这其实是一个\"拖了 20 年的清理\"

MD5 的碰撞漏洞早在 1996 年就被发现。2004 年王小云团队已经能在一小时内构造碰撞。但直到 2026 年,Linux 内核里还留着最后一款优化实现。

这说明什么?\"知道不安全\"和\"真正停止使用\"之间,差了整整二十年。 即使是最活跃的开源项目,技术债务的清零也需要巨大的动力才能触发。

2. PowerPC 用户的坚持是故事最有意思的部分

去年砍 MIPS 和 SPARC 时,PowerPC 本来也在名单上。但一个有说服力的用户站了出来:他的组织确实还有 MD5 的需求。这不是什么\"还在用 Windows 95\"的段子——大企业的遗留系统就是这样,只要还能跑,没人愿意动。

而推动它最终被删的不是 MD5 本身的安全性,是 AF_ALG 接口的安全问题——一个更底层、更危险的接口。

3. AF_ALG 的死亡才是真正的推手

AF_ALG 是 Linux 内核的一个密码学套接字接口,2010 年引入。它让用户空间可以直接调用内核加密算法。听起来很美好,但实际上这是一个安全噩梦——内核开发者现在承认它是一个\"设计错误\"。

2026 年 4 月爆出的 CVE-2026-31431(Copy Fail),允许无权限的本地用户通过 AF_ALG 的 algif_aead 模块获得 root 权限,影响自 2017 年以来构建的所有内核。

这就是蝴蝶效应:一个给 AF_ALG 的致命漏洞 → AF_ALG 被弃用 → PowerPC 用户的 MD5 用例消失 → 最后的优化 MD5 实现被砍。

现在还在用 MD5 的,都是谁?

理论上,MD5 已经\"密码学破灭\"了,但某些场景仍然在用:

  • 旧版软件兼容:一些企业级 ERP、银行系统的文件校验
  • 非安全场景:非对抗性环境下的数据去重、一致性检查
  • BT 种子/磁力链接:某些旧版协议仍依赖 MD5

说白了,在没有人故意攻击的环境里,MD5 依然\"够用\"——但这就像家里不上锁的门,平时没事,但一旦有人想进来,就毫无防备。

通用实现 vs 优化实现:有什么区别?

砍掉的是架构特定的优化实现(手写汇编代码,针对特定 CPU 做了调优),而不是 MD5 算法本身。

通用实现是 C 语言写的,现代 CPU 上跑 1GB/s 级吞吐量很容易——对于 MD5 仅存的使用场景来说绰绰有余。保留架构优化代码还需要维护,牵涉内核子系统的耦合,收益已经趋近于零。

━━━ ━━━ ━━━

三、一句话总结

Linux 7.2 砍掉最后一个架构专用 MD5 优化实现,不是因为 MD5 不安全——这件事大家知道 20 年了——而是因为它依附的 AF_ALG 接口自己先死了。

这才是内核开发的真实写照:技术债不会因为你\"想清理\"就被清理,它需要一个外部的引爆点。

━━━ ━━━ ━━━

*本文基于 Phoronix 2026年6月18日文章 \"Linux 7.2 Gets Rid Of The Last Optimized MD5 Implementation\",结合 MD5 历史演变和 AF_ALG 安全事件整理。*

Linux 内核"紧急阻断开关"(Killswitch)提案与 CopyFail/Dirty Frag 危机

【Debian 上安装 boost 编译出 fastcoll:生成两个相同 md5 值的二进制文件-哔哩哔哩】 https://b23.tv/DX6klY0

OSCCA 国密认证介绍

深度解析:2026最新国测安全可靠测评结果,为何"二级"才是国产操作系统的真标杆?

本文整理自微信公众号 LeisureLinux 的原创内容(Linux / AI / 安全 硬核技术)。

· 阅读原文(微信公众号)

· 关注公众号 LeisureLinux,第一时间获取技术深度内容。

LeisureLinux 公众号二维码(微信扫一扫关注)