RSA 在 ECDHE-RSA 中的作用是什么?

信息安全 tls RSA diffie-hellman 脚本
2021-09-01 07:14:30

我已经阅读了一些教科书,但没有找到令人信服的解释。

在密码套件ECDHE-RSA-AES128-GCM-SHA256中,RSA在第一部分(ECDHE-RSA)中的作用是什么?密码套件的这一部分表示密钥交换算法,对吗?这就是 ECDHE 的用途:密钥交换,那么我们为什么需要 RSA?

两种算法都用于交换密钥吗?我对此有点困惑。

显然,没有必要单独解释 ECDHE 或 RSA。我只想解释一下它们在这种情况下是如何工作的。

4个回答

ECDHE 本身对主动攻击者毫无价值——无法将收到的 ECDH 密钥与您尝试访问的站点联系起来,因此攻击者可以发送他们自己的 ECDH 密钥。这是因为 ECDHE 是ephemeral,这意味着服务器的 ECDH 密钥不在其证书中。因此,服务器使用 RSA 签署其 ECDH 密钥,其中 RSA 公钥是服务器证书中的内容。

 $ openssl ciphers -V ECDHE-RSA-AES128-GCM-SHA256
 ... Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD

这意味着密钥交换 (Kx) 是 ECDH,但身份验证部分(Au,即证书的验证)是 RSA,因此它需要一个内部带有 RSA 密钥的证书。

密码套件名称由以下部分组成:

  • TLS 前缀
  • 密钥交换算法
  • 认证算法
  • 加密演算法
  • 加密强度
  • 加密方式
  • MAC 或 PRF 功能(取决于 TLS 版本)

在您的情况下,椭圆曲线 diffie-hellman 密钥交换将以临时模式(提供前向保密)使用,并且此交换将使用 RSA 签名进行身份验证。

RSA 用于验证服务器,而 ECDHE 用于在客户端和服务器之间生成共享密钥。

具体来说,这意味着服务器使用其 RSA 私钥对它发送给客户端的临时 ECDH 参数(公钥)进行签名。

这就是客户端知道 ECDH 公钥属于服务器而不属于某些 MITM 的方式。

您可以将其视为充当某种 CA 的服务器,它签署一次性公钥。