分类
编程

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

最近密码学家盖坦.勒伦(GaëtanLeurent)和托马.佩林(Thomas Peyrin)宣布已经对SHA-1成功计算出第一个选择前缀冲突并对利用相关成功撰写了论文。这表明了SHA-1哈希已经被完整而实在的攻破,如果还在使用该哈希函数,将带来具有严重的风险:所有适用于MD5的攻击现在也适用于SHA-1。下面我们一起来看看他们的研究和结论。

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

SHA-1选择前缀冲突研究

我们都知道针对SHA-1的碰撞攻击,之前早有谷歌团队于2017宣布可操作的生成冲突的技术,并证明攻击的方法,但是该攻击依赖了谷歌大规模计算群并不具备通用性,而且时间和成本较大。

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

这次由盖坦.勒伦(GaëtanLeurent)和托马.佩林(Thomas Peyrin)主导的研究则利用SHA-1选择前缀冲突,极大提高了SHA-1攻击效率,将加速因子提高了大约10倍。研究使用GTX 970 GPU计算条件下碰撞攻击的成本从2^64.7降低到26^1.2,选择前缀碰撞攻击的成本从2^67.1降低到2^63.4 。

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络
SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

通过改进,实施了整个选定的前缀冲突攻击。这种攻击是非常具有技术性的,包含许多细节,各个步骤,并且需要大量的工程工作。为了节省成本、以较少的学术预算进行计算,他们从GPU serversrental租用了下便宜的游戏或采矿GPU,没有使用大型云提供商的数据中心级硬件。在19年夏天,已经使用900个GPU(Nvidia GTX 1060)计算了两个月。计算结果表明现在以64位安全级别破解密码(即计算264个对称密码的操作)的成本不到10万美元。

PGP/GnuPG模拟和攻击示例

他们选择了PGP/GnuPG信任网络来演示SHA-1的前缀冲突攻击。 “Web of Trust”是PGP的信任模型,该模型依赖用户彼此签名的身份证书,而不是使用中央PKI。出于兼容性原因,默认情况下,GnuPG(1.4版)的旧分支仍默认使用SHA-1进行身份认证。使用SHA-1选择前缀冲突,创建了两个具有不同UserID和冲突证书的PGP密钥:密钥B是Bob的合法密钥(由W​​eb of Trust签名),但是签名可以转移伪造的Alice ID签名的密钥A。由于哈希冲突,该签名仍然有效,这样Bob可以用Alice的名字控制密钥A,并通过第三方签名。因此,Bob可以冒充Alice,并以她的名字签署任何文件。

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

示例

研究创建了一个带有前缀99040d047fe81780012000和99030d047fe81780011800(以十六进制表示)的选择前缀冲突。大家可以下载以下两条消息,并使用sha1sum工具验证其哈希值:

SHA-1已被攻破:使用选择前缀冲突可以成功突破PGP信任网络

messageA(sha-mbles.github.io/messageA)

messageB(sha-mbles.github.io/messageB)

sha1sum验证:

sha1sum messageA && sha1sum messageB

8ac60ba76f1999a1ab70223f225aefdc78d4ddc0 messageA

8ac60ba76f1999a1ab70223f225aefdc78d4ddc0 messageB

已选择前缀来构建两个具有冲突SHA-1认证签名的PGP公钥。可以在下载以下两个具有不同用户名的示例密钥,并使用pgpdump -i检查它们,以查看由0xAFBB1FED6951A956发出的SHA-1签名是否相同:

alice.asc(sha-mbles.github.io/alice.asc)

bob.asc(sha-mbles.github.io/bob.asc)

为了避免恶意使用,密钥的创建日期很远。如果要使用pgp分析它们,则可以使用–ignore-time-conflict –ignore-valid-from选项,可以给命令前添加falsetime @2145920400作为前缀)。

相关系统漏洞情况

GnuPG

在2019年5月9日以及GnuPG开发人员讨论了这种攻击,并在2019年10月1日将新发现的选定前缀冲突发出通知。问题的CVE编号为CVE-2019-14855。 GnuPG 2.2.18版(2019年11月25日发布)中包含的edc36f5提交中已采取策略:对2019-01-19之后基于SHA-1创建的身份签名视为无效。

CAcert

CAcert是PGP密钥的主要CA之一。在公共密钥服务器上,有大量带有CAcert最新SHA-1签名的密钥。在12月14日通过电子邮件联系,并在1月6日收到确认此答复。CAcert正计划切换到用于密钥认证的安全哈希功能。

OpenSSL

已于12月14日联系OpenSSL开发人员。已经在安全级别1(定义为80位安全性)禁用SHA-1。由于安全级别1是默认配置,该设置可以防止SHA-1用于证书和握手签名。Debian Linux先前已在最新版本(Debian Buster)中将默认配置设置为安全级别2(定义为112位安全),可以防止危险使用SHA-1。

相关问题

前缀选择冲突

哈希函数H的经典冲突(或相同前缀的冲突)只是两个消息M和M’,它们导致相同的哈希输出:H(M)= H(M’)。即使此安全概念在密码学中很重要,但在实践中利用经典冲突进行攻击仍然是困难的。虚构的选择前缀的冲突是一种更受约束(且更难获得)的冲突,其中首先给攻击者以两个消息前缀P和P’作为挑战,然后他的目标是计算两个消息M和M ‘,使得H(P || M)= H(P’|| M’),其中||表示串联。这样,可以任意选择前缀(因此可能包含一些有意义的信息),攻击者也可以获取冲突。如果数字签名方案中使用哈希函数时,安全风险巨大。

SHA-1使用情况

在最近几年,SHA-1的使用已大大减少;尤其是Web浏览器现在拒绝使用SHA-1签名的证书。但是,许多应用程序仍支持SHA-1签名。SHA-1是用于在GnuPG的旧有分支中认证PGP密钥的默认哈希函数,签名已被GnuPG的现代分支所接受。许多非Web TLS客户端也接受SHA-1证书,并且TLS和SSH中的协议内签名仍允许使用SHA-1。即使实际使用率较低(约1%),这也会形成安全威胁,因为中间相遇的攻击者会先将连接降级为SHA-1,然后伪造证书攻击。SHA-1也是Git版本控制系统的基础。还有许多鲜为人知或专有的协议仍在使用SHA-1,但这很难评估。

攻击成本

研究通过在线租用GPU集群,对SHA-1进行的整个所选前缀冲突攻击,耗费总共约7.5万美金。但是,在进行计算时没有特别优化,不是最佳算法实现。并且为了研究浪费额外的计算时间。如果去除这些影响,目前可以把攻击成本控制到4.5万美元。随着计算成本持续快速下降,预计到2025年在SHA-1上生成选定前缀冲突攻击的成本应该能降低到1万美元。

已有的SHA-1的碰撞攻击

在2017年SHA-1已经发生过计经典碰撞攻击,但是与选择前缀冲突攻击大不相同,后者可以对任何前缀对进行挑战,这在实践中会导致更为严重的影响。

针对SHA-1选择前缀冲突攻击

研究者已经宣布了一种新的选择的前缀冲突攻击,并且已在Eurocrypt 2019大会上发布了。攻击已经现在已经做了改进,可以在一定成本下进行攻击,并且编写了针对SHA-1的选定前缀冲突攻击的实际实现。为了避免被恶意利用会将等待一段时间后再发布相关的代码。

研究论文为eprint.iacr.org/2020/014.pdf,大家可以下载学习。

总结

影响

任何希望从SHA-1获得耐碰撞性的用途都具有很高的风险。可能受所选前缀冲突直接影响一些案例:

如果第三方生成和使用SHA-1密钥认证,则可以伪造PGP密钥

如果某些证书颁发机构颁发具有可预测序列号的SHA-1证书,则X.509证书可能会被破坏。

经典冲突和选择前缀冲突不会威胁SHA-1所有使用场景。比如,HMAC-SHA-1似乎相对安全,并且直到今天,SHA-1的原像抵抗性(即反转哈希函数的能力)仍然保持不变。但是建议在所有地方都弃用SHA-1,即使还没有证据可以直接利用。

建议

产品中避免使用SHA-1,对已经使用的,尽快升级换用SHA-256或SHA-3或者ECDSA。

SHA-1破解已经有15年,因此没有充分的理由在现代安全软件中再使用该哈希函数。随着时间的流逝,攻击只会变得越来容易,密码分析工作的目标是警告用户,以便他们可以在攻击变得实用之前就弃用算法。

原文: https://www.toutiao.com/a6779876505460670988/

发表评论

电子邮件地址不会被公开。