Git 3.0 将把默认内容哈希算法从 SHA-1 改为 SHA-256,Scott Chacon 在 GitButler 上称这一变化是‘难以理解的昂贵且最终毫无价值且可以避免的全球噩梦’。他指出,这一变化将影响每一个通过 `git init` 创建的新仓库,除非显式覆盖,否则将使用 SHA-256。

显示在新建仓库过程中哈希算法选择的 Forge 界面
代码 Forge 界面的模型图,在初始化新仓库时要求用户选择哈希算法(SHA-1 或 SHA-256),展示了 Git 3.0 默认更改对用户的影响。blog.gitbutler.com

此图像支持文章观点,即更改 Git 的默认哈希算法会影响每一个通过 `git init` 创建的新仓库,要求用户做出大多数人可能不理解的明智选择。

Chacon 认为,尽管 SHA-1 在理论上存在碰撞攻击的弱点(如 SHAttered 演示所示),但利用这些弱点需要天文数字的计算资源——即使使用巨大的 GPU 农场,估计也需要数十亿年——而对版本控制系统的真实攻击并不依赖于哈希碰撞,而是通过破坏可信的分发渠道来实现,这呼应了 Linus Torvalds 的观点:‘真正的安全在于分发।’

根据该博客文章,实际后果是,使用 SHA-256 初始化的仓库在 GitHub 或类似托管平台添加明确支持之前无法被推送,这迫使项目必须选择其一哈希算法,否则可能导致现有工具、构建脚本和工作流(这些工具假设使用 SHA-1 哈希)中断,而 Chacon 认为这一点带来的安全收益可以忽略不计。

显示由于哈希算法不兼容而被划掉的各种开发工具的图示
展示当面对使用新 SHA-256 默认算法的仓库时,期望 SHA-1 哈希的现有工具可能会中断的可视化表示,突出文章中描述的实际后果。blog.gitbutler.com

此图像说明文章的主张:使用 SHA-256 初始化的仓库在 GitHub 或类似平台添加支持之前无法被推送,可能导致依赖 SHA-1 哈希的现有工作流程和构建脚本中断。