Git 3.0's upcoming SHA-256 default will be a costly mistake
2 hours ago
- Git 3.0 将默认哈希算法从 SHA-1 改为 SHA-256,这会导致破坏性变更。
- SHA-1 碰撞攻击在理论上可行,但由于成本高昂且复杂度高,实际利用难以实现。
- Git 的信任模型基于源认证(例如,从何处拉取代码),而非哈希完整性。
- 针对代码库的真实攻击通常利用社会工程或入侵维护者,而非哈希碰撞。
- 迁移到 SHA-256 将引发生态系统范围的问题:不兼容的仓库格式、损坏的工具链,以及现有项目的被迫转换。
- 另一种方法是保留 SHA-1 用于内容寻址,并添加独立的树哈希头(例如 SHA-256)用于签名验证。
- 这种二次签名方法避免了生态碎片化,同时提供了更强的安全性,正如 git-evtag 等工具所展示的那样。