TLS 中 DHE 和 ECDHE 之间的性能差异(对于客户端和服务器)是什么?

信息安全 tls 密钥交换 diffie-hellman 电子抄送 表现
2021-09-07 05:53:02

我的问题是关于(EC)DHE 的客户端和服务器性能。我很难理解这张图片(这是基于 Ivan Ristic 的“Bulletproof SSL and TLS”一书中的数字)。

让我们从第三行“RSA 2048,DHE 2048”开始。我可以理解客户端和服务器计算时间不同,因为创建签名与验证签名不同。

我知道 ECDHE 比 DHE 快,因此第二行的数字小于第三行的数字。

我的问题是:

  1. DHE 和 ECDHE 的工作量对于客户端和服务器来说是相同的,不是吗?
  2. 为什么“RSA 2048,ECDHE 256”的客户端计算时间小于服务器的计算时间,而“RSA 2048,DHE 2048”则相反?
2个回答

DHE 使用模运算来计算共享秘密。ECDHE 使用代数曲线生成密钥,因此对计算、存储和内存的要求较低。

DHE 比 ECDHE 慢得多。如果你想要一些实际的数字,它们是:

Key exchange    Parameters               Transactions/sec
DHE-RSA         1024-bit RSA key,
                1024-bit DH parameters        347.64

ECDHE-RSA       1024-bit RSA key,
                192-bit ECDH parameters       612.25


DHE-RSA         1776-bit RSA key, 
                1776-bit DH parameters        97.62

ECDHE-RSA       1776-bit RSA key,
                192-bit ECDH parameters       349.53

如您所见,当增加位数时,DHE 的性能损失会增加很多。如果你真的想要两全其美,你可以使用 ECDHE-ECDSA 并且你同时拥有前向保密性和效率。

在这里,您可以找到其他应该为您提供相关信息的独立结果。

努力完全不同。客户永远不是问题。您只会注意到服务器上的性能差异(因为有一台服务器和许多可能的协商客户端 - 所以只有在 1 个客户端和 1 个服务器的情况下,工作量才会相等)。

-编辑-

因此,总结: 1. 是的,对于一位客户。出于明显的原因,对于更多的并发客户端不适用。2. 两个假设都不正确。在相同的机器上,两种情况下的计算时间相似。

不幸的是,RSA 在客户端和服务器所需的计算工作量方面存在不平衡。

服务器在解密客户端提供时需要做更多的工作,因为通常在服务器证书中选择的公共指数要小得多。私有模数“d”不能太小(Boneh 和 Durfee:私钥 d 小于 N^0.292 的 RSA 密码分析)。

这样做的效果是客户端只需要执行少量的模乘并且可以使用平方和乘法优化,而服务器需要使用大的私有指数进行幂运算。

幸运的是服务器对私钥有更多的了解,所以它可以使用中国剩余定理(CRT)优化,它可以将昂贵的取模取幂一n分为二。进行模幂运算的成本增加了模中位数的立方。因此,进行两次幂运算(mod pmod q)效率更高(详情)。但这仍然比客户必须做的工作多得多。然后服务器还需要做 RSA 致盲以防止定时攻击

(我目前不确定为什么 DHE 或 ECDHE 是相反的。对于 EC,我想这与检查曲线上的参数的需要有关)