发现 SHA-1 冲突有什么影响?
目前,考虑到使用的具体碰撞方法,影响非常有限。特别是,此方法不允许攻击者与已提供 SHA-1 哈希的现有文件产生冲突。例如,不可能使用此方法生成与合法分发网站上提供的签名相匹配的恶意可执行文件。
理论上,攻击者有可能生成两个具有相同 SHA-1 哈希值的可执行文件,但在运行时执行不同的操作。同样,可以生成多个具有相同 SHA-1 哈希的 ISO 映像。但是,在每种情况下,其他哈希值都不匹配,并且下载站点通常会提供多种类型的哈希(例如,Ubuntu 为所有下载提供 MD5、SHA-1 和 SHA256 哈希)。这可以通过 shattered-1.pdf 和 shattered-2.pdf 文件看到:
# sha1sum shattered-1.pdf
38762cf7f55934b34d179ae6a4c80cadccbb7f0a shattered-1.pdf
# md5sum shattered-1.pdf
ee4aa52b139d925f8d8884402b0a750c shattered-1.pdf
# sha1sum shattered-2.pdf
38762cf7f55934b34d179ae6a4c80cadccbb7f0a shattered-2.pdf
# md5sum shattered-2.pdf
5bd9d8cabc46041579a311230539b8d1 shattered-2.pdf
可以创建一种在 SHA-1 和 MD5 中产生相同哈希值的多语言文件,但这尚未得到证明,并且仍然会失败,例如,给定 SHA-512 哈希。
类似地,对于任何使用 SHA-1 哈希作为文件标识符的系统,有可能将冲突的文件对的一半放入系统,然后将其换成另一半。这方面的一个例子是一个备份系统,它在文件级别使用 SHA-1 来确定文件是否被正确复制。但是,在这种情况下,很难使整个备份内容的哈希值保持不变,因为恶意文件不太可能形成整个备份文件的前缀(更有可能是将整个文件标识为备份)。
因此,总的来说,谷歌的公告主要只是证实了一段时间以来的怀疑——SHA-1 很容易受到碰撞,就像 MD5 一样,但找到它们需要付出很多努力,而且大多数真正引人注目的目标(如生成 CA 证书)对之前发现的非常相似的 MD5 冲突进行了适当的缓解。专家们已经建议从 SHA-1 迁移一段时间了,这个建议仍然有效。
然而,就像 MD5 一样,这不会特别影响 HMAC-SHA1 的使用,因为在 HMAC 值的构造中使用的特定组合方法使这种类型的冲突无关紧要。