我已经阅读了一些教科书,但没有找到令人信服的解释。
在密码套件ECDHE-RSA-AES128-GCM-SHA256中,RSA在第一部分(ECDHE-RSA)中的作用是什么?密码套件的这一部分表示密钥交换算法,对吗?这就是 ECDHE 的用途:密钥交换,那么我们为什么需要 RSA?
两种算法都用于交换密钥吗?我对此有点困惑。
显然,没有必要单独解释 ECDHE 或 RSA。我只想解释一下它们在这种情况下是如何工作的。
我已经阅读了一些教科书,但没有找到令人信服的解释。
在密码套件ECDHE-RSA-AES128-GCM-SHA256中,RSA在第一部分(ECDHE-RSA)中的作用是什么?密码套件的这一部分表示密钥交换算法,对吗?这就是 ECDHE 的用途:密钥交换,那么我们为什么需要 RSA?
两种算法都用于交换密钥吗?我对此有点困惑。
显然,没有必要单独解释 ECDHE 或 RSA。我只想解释一下它们在这种情况下是如何工作的。
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 密钥的证书。
密码套件名称由以下部分组成:
在您的情况下,椭圆曲线 diffie-hellman 密钥交换将以临时模式(提供前向保密)使用,并且此交换将使用 RSA 签名进行身份验证。
RSA 用于验证服务器,而 ECDHE 用于在客户端和服务器之间生成共享密钥。
具体来说,这意味着服务器使用其 RSA 私钥对它发送给客户端的临时 ECDH 参数(公钥)进行签名。
这就是客户端知道 ECDH 公钥属于服务器而不属于某些 MITM 的方式。
您可以将其视为充当某种 CA 的服务器,它签署一次性公钥。