为什么要停止使用RSA密钥交换?

今天我们将讨论为什么你应该停止使用RSA密钥交换。SSL/TLS生态系统的最大弱点之一是其向后兼容性。上周,有六位研究人员发表了一篇论文,详细介绍了一种名为Bleichenbacher CAT的旧漏洞的新变种,该漏洞强调了这种弱点。 那么,让我们花一点时间来解读论文及其含义,然后我们将讨论为什么你绝对不应该使用RSA密钥交换。

Bleichenbacher的CAT与SSL / TLS

让我们来看看Bleichenbacher的CAT吧。在进行安全连接之前,客户端和服务器必须执行TLS握手。这是一组步骤,其中客户端验证服务器证书,协商要在连接中使用的密码套件,然后交换将在连接本身期间使用的对称会话密钥。

同样,在规模上,同时执行有时成千上万次握手所需的处理能力可能需要完全卸载这些功能。但是,为了帮助缓解一些垃圾请求,Oracle会确定是否需要解密消息。

这种利用发生在密钥交换期间。预主密钥用于计算将在连接期间使用的会话密钥。正如我们所讨论的那样,使用PKCS1 v1.5定义的RSA,当较小的预主密钥(可能是128或256位)放入大公钥时,它会被填充以弥补大小的差异。

问题在于填充,有一个“不可忽略的”概率,即用随机的字节序列轰炸Oracle,最终你会发送一个看起来正确填充的消息。

大多数情况下,服务器将返回一条消息,告诉客户端它无法解密消息,因为它没有正确的填充。“ 但是,当猜到正确的序列时,服务器将发送不同的消息。如果一切顺利,Oracle允许服务器解密预主密钥,服务器推断出对称密钥,然后发回完成的消息。

但在这种情况下,由于攻击者能够猜测填充但未发送正确的预主密钥,因此不会正确加密完成的消息。 这是攻击者想要的,因为它开始缩小预主密钥的可能值。如果你能猜到这个值,你可以猜出钥匙。

最初,通过向RSA添加额外的安全措施来对此漏洞进行分类,例如限制允许的请求数或在消息失败时不发送响应。但是这个漏洞在2003年得到了改进,然后再次在2012年,2014年,它是DROWN攻击的一个关键组成部分,2017年是机器人攻击 - 此时它是SSL / TLS和PKI最常见的威胁之一。

Bleichenbacher的CAT已经找到了一种通过向使用相同公钥的多个服务器发送查询来放大攻击的方法。这不是通配符SSL证书的常见用例。实际上,这是部署通配符的最大缺点之一,即使用相同密钥的多个站点增加了泄密的可能性。

停止使用RSA密钥交换

当给定密码系统的创建者告诉你停止使用它时,它通常是有充分理由的。这就是本报告发生的情况: 支持这一小部分[RSA]用户会使每个人面临风险,因为它允许攻击者通过将RSA指定为服务器支持的唯一公钥算法来执行降级攻击。 这就是为什么向后兼容性如此危险的原因。

绝大多数企业和组织都尽最大努力使SSL / TLS实施至少保持最新状态。花了一点时间才能告别TLS 1.0而不是它应该拥有的东西,但整体事情正朝着正确的方向发展。

TLS 1.3通过弃用对RSA密钥交换的支持完全解决了这个问题(它还改进了我们之前讨论过的握手)。不幸的是,只要我们仍然需要支持仍然使用RSA的一小部分客户端和服务器,所有这些都没有实际意义。如果您属于该类别,建议您弃用对RSA的支持并切换Elliptic Curve Diffie-Helman进行密钥交换。

现在,请快速提醒。这是一个可行的利用,但不容易实现。因此,不要期望很快就会听到一连串的Oracle填充攻击。

为了解决Bleichenbacher的CAT攻击(真的不能很好地推翻舌头),你需要从另一台运行在同一系统上的虚拟机中定位服务器。你不能使用一些远程shell。您还需要一定的权限级别来执行攻击,这需要自己的妥协才能实现。哦,是的,你还需要避免被发现。

所以,这可能不是我们很快就会在野外看到的东西。

但是,就像最初的Bleichenbacher攻击一样,这种攻击可能会继续得到改进,直到有一天,这将是一个真正的威胁。
原文链接:https://www.wosign.com/faq/faq_2018120501.htm

上一篇:C#和windows系统哪些事


下一篇:Windows系统日志分析