zh

是时候在域名系统 (DNS) 中停用 SHA-1 算法了

2020 年 01 月 24 日

Paul HoffmanPaul Hoffman, Distinguished Technologist

本月早些时候,密码学家贾坦·勒伦特 (Gaëtan Leurent) 和托马斯·佩林 (Thomas Peyrin) 公布了针对在互联网内广泛应用的 SHA-1 散列算法的安全性进行的一种攻击。SHA-1 算法已经被更优秀的散列算法替代了近 20 年之久,但该算法仍旧应用广泛,其用户多是并不知晓 SHA-1 算法存在缺陷的人员。

散列算法被用于生成可以代表较长信息的短字节串,即散列值。良好散列算法的一个特质是:很难或几乎不能创建由相同散列值生成的两条不同信息。十多年来,密码学家们不断发表文章,展示 SHA-1 的"强度"(即 SHA-1 算法可针对任意输入生成唯一散列值的能力)被各类攻击日益瓦解。本月发表的这篇文章则是在前人的工作上更上了一层楼。与大多数互联网上的安全协议一样,域名系统安全扩展 (Domain Name System Security Extensions, DNSSEC) 使用散列算法来提高签名的签署和验证速度。

这种新的攻击则使得攻击人能够蒙蔽域名系统 (Domain Name System, DNS) 根区管理人让其创建散列值,或从 DNSSEC 的角度来看,让根区管理人针对他们本无意签署的 DNS 记录创建可信签名。从技术角度来看,这项新攻击使得心怀不轨的人员能够更快地创建已选好的前缀冲突。从非技术角度来看,一名攻击者则能更容易地创建拥有相同 SHA-1 散列值的两个 DNS 记录。如果这两个记录的其中一个看起来是良性的,攻击者就能够说服根区持有人签署这个记录,而该签名也将适用于根区持有人从未见过的另一个不良记录。

这种改进后的攻击方式对使用 SHA-1 的所有互联网元素都会带来严重影响。在 DNSSEC 中,SHA-1 是某些从早期即用来保护 DNS 的签名算法的一部分。即便使用 DNSSEC 签署的大多数根区均已采用更强大的散列算法,但仍旧有许多根区使用 SHA-1 算法来进行签署。实际上,超过 250 个顶级域 (TLD) 仍在使用 SHA-1 算法。DNS 的长期贡献人、现供职于剑桥大学的托尼·芬奇 (Tony Finch) 曾发表文章,深入介绍了这种新攻击与 DNSSEC 之间的联系。

现呼吁域名系统中所有层级的根区管理人都能暂停使用 SHA-1,转而使用更强大的散列算法。尽管无需大家立即进行调整,但随着涉及改进后攻击的公告现已得到广泛传播,这可能将引发其他研究者进一步改良这类攻击。另外,我们预计停用 SHA-1 算法终将成为一项紧急任务。没人想在面临极其紧迫的时间压力的情况下进行这项调整,因此现在或在接下来三个月内进行调整或将避免日后遭遇紧急调整。

Distinguished Technologist

Paul Hoffman

Read biographyRead biography