TLS 中的漏洞允许基于 DH 密码确定连接的密钥

已公开 有关新的信息 弱点 (CVE-2020-1968) 在 TLS 协议中,代号为
并在极少数情况下允许确定初步主密钥 (pre-master),该主密钥可用于在拦截传输流量 (MITM) 时解密 TLS 连接,包括 HTTPS。 值得注意的是,这种攻击在实际实施中非常困难,而且更多的是理论性质。 要进行攻击,需要 TLS 服务器的特定配置以及非常准确地测量服务器处理时间的能力。

该问题直接存在于 TLS 规范中,并且仅影响使用基于 DH 密钥交换协议(Diffie-Hellman,TLS_DH_*”)的密码的连接。 使用 ECDH 密码就不会出现这个问题,并且它们仍然安全。 只有 1.2 版及以下版本的 TLS 协议容易受到攻击;TLS 1.3 不受此问题的影响。 该漏洞发生在跨不同 TLS 连接重用 DH 密钥的 TLS 实现中(这种行为发生在大约 4.4% 的 Alexa Top 1M 服务器上)。

在 OpenSSL 1.0.2e 及更早版本中,除非显式设置 SSL_OP_SINGLE_DH_USE 选项,否则在所有服务器连接中都会重用 DH 主键。 自 OpenSSL 1.0.2f 起,仅在使用静态 DH 密码(“DH-*”,例如“DH-RSA-AES256-SHA”)时重用 DH 主密钥。 该漏洞不会出现在 OpenSSL 1.1.1 中,因为该分支不使用 DH 主密钥,也不使用静态 DH 密码。

当使用 DH 密钥交换方法时,连接双方都会生成随机私钥(以下称为密钥“a”和密钥“b”),并根据该私钥计算并发送公钥(ga mod p 和 gb mod p)。 各方收到公钥后,计算出公共主密钥(gab mod p),用于生成会话密钥。 Raccoon 攻击允许您通过旁道分析来确定主键,这是基于以下事实:直到版本 1.2 的 TLS 规范都要求在涉及主键的计算之前丢弃主键的所有前导空字节。

包括将截断的主键传递给会话密钥生成函数,该函数基于处理不同数据时具有不同延迟的哈希函数。 准确测量服务器执行关键操作的时间可以让攻击者确定线索(oracle),从而可以判断主键是否从头开始。 例如,攻击者可以拦截客户端发送的公钥(ga),将其重新传输到服务器并确定
生成的主键是否从零开始。

就其本身而言,定义一个字节的密钥不会给出任何东西,但是通过拦截客户端在连接协商期间传输的“ga”值,攻击者可以生成一组与“ga”相关的其他值并将它们发送到服务器在单独的连接协商会话中。 通过生成并发送“gri*ga”值,攻击者可以通过分析服务器响应延迟的变化,确定导致接收从零开始的主键的值。 确定这些值后,攻击者可以创建一组方程 解决方案 隐藏数问题 并计算原始主键。

TLS 中的漏洞允许基于 DH 密码确定连接的密钥

OpenSSL 漏洞 分配 危险级别较低,并且修复已减少为将版本 1.0.2w 中有问题的密码“TLS_DH_*”移至保护级别不足的密码类别(“weak-ssl-ciphers”),默认情况下禁用该密码。 Mozilla 开发者也做了同样的事情, 关掉 在 Firefox 中使用的 NSS 库中,有 DH 和 DHE 密码套件。 从 Firefox 78 开始,有问题的密码被禁用。 Chrome 对 DH 的支持早在 2016 年就停止了。 BearSSL、BoringSSL、Botan、Mbed TLS 和 s2n 库不受该问题的影响,因为它们不支持 DH 密码或 DH 密码的静态变体。

其他问题单独注明(CVE-2020-5929)在 F5 BIG-IP 设备的 TLS 堆栈中,使攻击更加真实。 特别是,已经识别出主键开头存在零字节时设备行为的偏差,可以使用它来代替测量计算的确切延迟。

来源: opennet.ru

添加评论