首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git 迁离 SHA-1,迁移到 SHA-265

大受欢迎的Git软件版本控制系统的开发人员宣布,他们现在开始走上了迁离SHA-1哈希算法的道路。

这条道路将面临挑战,因为自Linux之父Linus Torvalds早在2005年最初开发Git以来,SHA-1就已经是这个版本控制系统的一部分。Git使用SHA-1生成的哈希值来识别修订版,保护代码免受损坏。遗憾的是,SHA-1的基础已因代码库中发现的一系列安全漏洞而削弱,被认为支离破碎。实际上,迁离SHA-1的主要原因之一是这种哈希算法的糟糕状态可用于破坏Git代码存储库。

换句话说,这种数据外密码哈希函数不再被认为是安全的。据官方的Git哈希函数转换文档(https://github.com/bk2204/git/blob/transition-stage-4/Documentation/technical/hash-function-transition.txt)介绍,SHA-1的不安全性广为人知已有一段时日。该文档指出:“随着时间的推移,安全研究人员已陆续发现了SHA-1的一些漏洞和缺陷。2017年2月23日,SHAttered攻击就表明了实际存在的SHA-1哈希冲突。”

为什么如此具有挑战性?

有人会认为,这只是将Git迁移到一种更新颖更安全的哈希算法的简单方法。遗憾的是,事实并非如此。为什么?Git存储了许多对象。每当对一个对象进行哪怕最细小的更改,都会创建新的SHA-1哈希,然后将该对象以不同的名称存储起来。因为Git是一个版本控制系统,所以这意味着那每一个对象都保存起来。

现在设想一下:将Git上存储的每个对象统统迁移到一种新的哈希算法。单单一个Git存储库可能含有数千个对象。2018年,Git上的存储库数量超过1亿个。再加上提交的代码也有SHA-1哈希,因此迁移任务变得很艰巨。

但由于其他开发人员(比如Mozilla的那些开发人员)已经从SHA-1迁移出去,因此早该进行迁移了。

新哈希

Git计划从SHA-1迁移到SHA-265。所有存储库都进行这种迁移,显然会分阶段完成。据迁移文档显示,“默认情况下,Git v2.13.0及更高版本随后迁移至经过加固的SHA-1实现,这不易受到SHAttered攻击。”当然,这不足以确保存储在Git上的对象的安全性,因此要迁移到新算法。

Git要实现的一些迁移目标包括:

不需要Git之外的任何一方采取任何行动。

SHA-256存储库可以与SHA-1 Git服务器进行联系(用于推送/获取)。

用户可以在SAH-1标识符和SHA-256标识符之间选择。

新的签名对象将使用新的更强大的哈希函数。

便于全面迁离SHA-1(包括如果不再需要与SHA-1兼容,就删除本地元数据)。

对象格式保留了简单性和一致性。

创建存储库转换工具。

眼下,没有给出迁移方面的时间表或截止日期。该计划最初由Git的开发人员Brian Carlson早在2017年就提出了。这项迁移工作开展已有一段时日,代码现处于alpha测试阶段。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200211A0SV2L00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券