该问题直接存在于 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”值,攻击者可以通过分析服务器响应延迟的变化,确定导致接收从零开始的主键的值。 确定这些值后,攻击者可以创建一组方程
OpenSSL 漏洞
其他问题单独注明(
来源: opennet.ru