SSL 服务的拒绝服务

信息安全 tls ddos 拒绝服务
2021-08-13 22:33:45

当 SSL 握手发生时,客户端完成的计算工作是否明显少于服务器完成的计算工作?

是否可以利用这种不平衡来产生更有效的 DoS?是否有任何学术论文或概念验证实现?

3个回答

是的,SSL 服务器上基于 CPU 的 DoS 很容易。考虑 SSL 中常用的两种主要类型的密码套件:

  • RSA 密钥交换:服务器使用 RSA 公钥发送其证书;客户端生成使用服务器公钥加密的随机 blob(预主密钥);服务器解密它。

  • DHE 密钥交换:服务器发送它的一半 Diffie-Hellman 密钥交换,用服务器的私钥签名。客户端发送自己的一半 DH。服务器通过应用其 DH 私钥(模幂运算)完成 DH 密钥交换。

无论哪种方式,服务器都必须执行相对繁重的加密操作:RSA 解密或 DH 模幂运算(对于 DHE,服务器可以重用其临时 DH 参数,只要它不重新启动,但它不能逃避最终的模根据客户端发送的内容计算的幂)。另一方面,尝试对服务器进行 DoS 攻击的客户端根本不需要做任何工作:它只需要发送大约正确大小的 blob。服务器上的解密会失败,但 CPU 开销还是会丢失。

(已经有了诚实的客户端和 RSA 密钥交换,服务器的 CPU 成本更高,因为 RSA加密比 RSA解密快得多。但是一个恶意的客户端,意图 DoSing,完全可以避免工作。)

这种攻击已经在野外观察到,不需要学术论文来解释它们是如何工作的。

是的,有这样的点。特别是如果 SSL-Renegotiation 处于活动状态,则可以利用这些来非常有效地关闭服务器:

在此处输入图像描述

此图表取自SSL 计算 DoS 缓解措施,显示了使用通用算法在客户端和服务器之间握手所需的计算时间。如您所见,某些算法明显优于其他算法。

例如,使用 2048 位 RSA 证书和 AES256-SHA 之类的密码套件,服务器需要的 CPU 能力是客户端的 6 倍。但是,如果我们改用 DHE-RSA-AES256-SHA,服务器需要的 CPU 功率减少 34%。从服务器的角度来看,最有效的密码套件似乎类似于 DHE-DSS-AES256-SHA,其中服务器需要客户端一半的功率。

有关这方面的详细信息,请查看SSL 计算 DoS 缓解和用于演示此 dDoS 的 THC 工具的原始发行说明:THC SSL DOS

希望我有帮助,

格乌雷

答案是否定的,因为你是第一个做最多工作的人。但是你仍然可以攻击它。

你问题的关键是分布式的。即使攻击者的数量相同(或几乎相同),也有许多客户端开始握手。这意味着您在握手时不需要全力以赴,只需将工作负载分配给不同的客户端,没有客户端可能会感受到性能的真正显着变化,而服务器可能处于其极限。

我认为诀窍是启动多个 SSL 会话,但除了说 HELLO,服务器将回复并等待。这意味着您可以同时使用其资源和最大会话数对它进行 DoS。(有点像 TCP SYN 攻击)