SHA-1碰撞检测提速:让Git验证快两倍

Solving for faster SHA-1 collision detection

SHA-1碰撞检测提速:让Git验证快两倍

在优化Enroute的Git服务器后端时,我发现现有的sha1-checked库在碰撞检测上拖慢了性能,仅达到普通SHA-1速度的28%。为了解决这个问题,我重写了SHA-1算法,推出了sha1dc。通过利用SIMD指令集和自研的代码生成器,我将碰撞检测的开销大幅降低,使速度提升至普通SHA-1的68%至81%。这一改进不仅让Git包验证速度翻倍,还揭示了如何通过算法优化在安全与性能之间找到最佳平衡点。

理想情况下,我们当然都会为Git对象使用SHA-256,但迁移工作……幸运的是,我们可以通过检测SHA-1状态空间内的制造碰撞来缓解这一安全问题。
  1. gleenn

    这看起来酷毙了,但这玩意儿听起来也太复杂了吧。文章写得很详尽,但算法复杂到连作者自己都写不出好的测试用例,这让人很担心。考虑到他们是在处理动态组合的大型二进制表达式,我很担心他们的算法可能会意外漏掉某些关键内容。你可以让它跑得飞快,但如果无法证明其正确性,且又涉及安全问题,那恐怕就需要更严格的证明了,哪怕 SHA1 本身已经不再安全了。

  2. rurban

    Git 本体已经支持 Rust 了吗?2 倍的 pack 检查速度提升是值得的,因为这关系到所有人。我听说从 2.55 版本开始就已经支持了。

  3. someonebaggy

    这篇写作的感觉几乎像是 AI 生成的,但它其实不是。为什么会这样?

同日更多故事

2026-09-24