Marvin 是一个已有 25 年历史的漏洞的回归,该漏洞允许 RSA 签名和解密操作
在 2023 年9 月 25 日至 29 日于荷兰举行的ESORICS(欧洲计算机安全研究研讨会)上,一位在 Red Hat 工作的安全研究员展示了“Marvin 攻击”,这是一种攻击技术,它可以通过测量基于 RSA 算法的解密操作期间的延迟来确定原始数据。
Marvin 攻击是 Bleichenbacher 方法的变体,于 1998 年提出,并延续了 2017 年和 2019 年发布的 ROBOT 和 New CAT 攻击的发展。
Marvin 攻击是一个已有 25 年历史的漏洞的回归,该漏洞允许攻击者以只能观察使用私钥执行解密操作的时间的方式执行 RSA 签名和解密操作。
1998 年,Daniel Bleichenbacher 发现 SSL 服务器针对 PKCS #1 v1.5 填充中的错误提供的错误消息启用了自适应选择密文攻击; 当与 RSA 加密一起使用时,此攻击完全破坏了 TLS 的机密性。 2018 年,Hanno Böck、Juraj Somorovsky 和 Craig Young 表明 19 年后,许多互联网服务器仍然容易受到原始攻击的轻微变化。
该方法的基本原理是,攻击者可以根据服务器的不同反应和执行时间,区分使用 PKCS #1 v1.5 标准添加的正确和错误的 Oracle 数据块(这些数据块用于将加密数据沿数据块边界对齐)。通过操纵有关填充块准确性的信息,攻击者可以使用暴力破解来重建有效的密文。
在这种情况下,攻击并不能直接恢复私钥;它只能解密密文或生成伪造的签名消息。要成功发起攻击,必须发送大量的测试消息进行解密。
针对使用基于 RSA 加密的 TLS 服务器发起攻击,攻击者可以被动存储截获的流量,然后对其进行解密。对于支持 PFS 的服务器,发起攻击的难度要大得多,攻击的成功与否取决于攻击执行的速度。
此外,该方法允许生成虚假的数字签名,以验证在密钥交换阶段传输的 TLS 1.2 中的 ServerKeyExchange 消息或 TLS 1.3 中的 CertificateVerify 消息的内容,这可用于执行中间人攻击以拦截客户端和服务器之间的 TLS 连接。
文中提到, Marvin 方法与传统方法的区别在于:改进了分离正确和错误增量数据、过滤误报、更准确地确定计算延迟以及在测量过程中使用额外的第三方通道的技术。
实际上,所提出的方法允许在不知道 RSA 私钥的情况下解密流量或生成数字签名。 为了测试攻击的适用性,发布了一个用于检查 TLS 服务器的特殊脚本和用于识别库中问题的工具。
该问题影响了多种使用 RSA 和 PKCS 的协议实现。尽管现代加密库包含一些针对基于 Bleichenbacher 方法的攻击的保护措施,但研究表明,这些库存在开放的泄漏通道,并且对填充正确和填充错误的包的处理时间不一致。例如,Marvin 实现的 GnuTLS 攻击并非直接与执行 RSA 相关计算的代码绑定,而是对决定是否显示特定错误消息的代码使用了不同的执行时间。
该研究的作者还认为,所考虑的漏洞类别不仅限于 RSA,还可能影响许多其他依赖于整数计算标准库的加密算法。
为了证实在实践中进行 Marvin 攻击的可能性,研究人员证明了该方法对基于 M2Crypto 和 pyca/密码学库的应用的适用性,其中通过在一个计算机上进行实验,几个小时就足以破坏加密。普通笔记本电脑。
最后,如果您有兴趣了解更多信息,可以点击以下链接查看详情。