谷歌公告:SHA-1 哈希算法被攻破

谷歌宣布攻破 SHA-1 技术的研究成果,Git 强依赖 SHA-1 引出 Linus 本人出面回应。作为非战斗人员,面对持续的“高能”安全漏洞如何保护自己?

加密学哈希算法 SHA-1 被誉为密码学的瑞士军刀。哈希算法在我们日常的网络安全、代码仓库安全、甚至是确认文件的完整性方面扮演着重要的角色。哈希函数可以为大量数据生成为很小的信息摘要。依照密码学需满足大规模使用的要求,算法设计使得两个不同内容的消息要得到相同的信息摘要在计算量上难以达成。然而时过境迁,算法设计当初的需求定义会遭遇基于算法数学基础上的攻击和硬件计算能力提升而产生的风险

今天,在 SHA-1 首次发布的20年后,Google 宣布了首次可操作的生成冲突的技术。这是 Google 与 CWI Institute 合作 2 年的研究成果。为了证明他们确实掌握了攻击的方法,他们发布了2个 PDF 文件,两个文件的内容是不同的,但经过 SHA-1 算法哈希后却能得到相同的信息摘要。

上图是 Google 发布的证据,两个不同内容(背景蓝色和背景红色)的 PDF 文件,经过 SHA-1 计算后却得到相同的信息摘要。

什么是哈希碰撞

密码学的哈希算法(Hash),例如 MD5 和 SHA-1,就是可以将任意长度的信息映射成固定长度的信息。一个文件 Doc 1 通过哈希算法后会得到 42C1..21 这样的一段信息摘要(digest),只要文件 Doc 1 没有被修改过,通过相同的哈希算法总是得到相同的信息摘要。另一个文件 Doc 2 因为内容与 Doc 1 不同,通过哈希算法后就会得到不同的信息摘要 3E2A..AE。通过这样的方式,我们就可以用这套算法来保证数据的完整性,保证文件不会被篡改。

哈希碰撞 指的就是算法出现问题的情况,通过某种攻击手段,攻击者可以创造出一个 Bad doc,让它通过哈希算法后却得到与 Good doc 相同的数字摘要 3713..42。也就是说,有人可以修改信息的内容,而不能被你察觉到。如果攻击者掌握了这套攻击手段,所有依赖哈希算法验证文件是否被篡改的系统都变得不再可靠了。

哪些系统会受影响?

任何依赖 SHA-1 做数字签名的应用程序都将受影响。包括:

  • 数字证书签名
  • 邮件 PGP/GPG 签名
  • 软件发布签名
  • 备份系统
  • 冗余热备份系统
  • Git

Git 高度依赖 SHA-1,由于算法出现漏洞,重要的代码就有被篡改却无法被检查出来的风险。这次算法漏洞公布迫使 Linus 本人发声回应,他的部分观点是:

I doubt the sky is falling for git as a source control management tool. Do we want to migrate to another hash? Yes. Is it "game over" for SHA1 like people want to say? Probably not.

翻译:我不信代码管理软件的天就要塌了。Git 要不要迁移到新的哈希算法呢?要。但 SHA-1 真如人们所说的要完蛋了吗?未必。

不过,Linus 的回应遭到了猛烈抨击,说 Linus 已经年老色衰,判断力不行了。

非技术人员应该怎么保护自己

作为非战斗人员,我们可能平时接触不到这些算法,但我们永远都需要提高安全意识。下面是一些避免自己受伤的几点建议:

  1. 不在电脑或手机中安装未知来源的软件
  2. 不随意下载和打开未知来源的文档
  3. 尽量在软件官网和 App Store 下载软件,不信任软件下载站点和网盘
  4. 在不同网站(或 app)使用不同的密码
  5. 重要文件离线保存
  6. 电脑和手机一定要设定密码,尽量开启全磁盘加密

(完)


Stuff I Learned Yesterday 系列文章与你分享科技、设计、娱乐有关的话题。欢迎关注、打赏和转载。