使用 Ephemeral Diffie-Hellman 时服务器密钥交换的目的是什么?

信息安全 tls
2021-08-28 13:00:35

ServerKeyExchange使用临时 Diffie-Hellman的目的是什么在这种情况下,ClientHello广告的 EDH 和 EECDH(而不是匿名协议),以及TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA在其ServerHello.

根据RFC 5246,第 7.4.3 节:

  This message will be sent immediately after the server Certificate
  message (or the ServerHello message, if this is an anonymous
  negotiation).

  The ServerKeyExchange message is sent by the server only when the
  server Certificate message (if sent) does not contain enough data
  to allow the client to exchange a premaster secret. This is true
  for the following key exchange methods:

     DHE_DSS
     DHE_RSA
     DH_anon

我了解 RSA 用于身份验证(而不是密钥传输)。但由于使用了 Diffie-Hellman,双方都为决赛贡献了材料master_secret因此,不需要允许客户更早地为premaster_secret.

ServerKeyExchange使用临时 Diffie-Hellman的目的是什么?

1个回答

在 Diffie-Hellman 中,客户端无法自行计算预主密钥;双方都参与计算,因此客户端需要从服务器获取 Diffie-Hellman 公钥。在临时 Diffie-Hellman 中,该公钥不在证书中(这就是临时 Diffie-Hellman 的意思)。因此,服务器必须在单独的消息中向客户端发送其临时 DH 公钥,以便客户端可以计算预主密钥(请记住,双方都需要知道预主密钥,因为这是他们派生主密钥的方式)。该消息是ServerKeyExchange.

关于ServerKeyExchange. ServerKeyExchange 不让客户贡献更多的材料ClientKeyExchange客户端在所有 TLS 套件中发送一个。这样做的ServerKeyExchange目的是让服务器为密钥交换提供更多材料,方法是让它发送证书中没有的附加信息。

关于“回溯到premaster secret”:这premaster_secret是密钥交换的直接结果。TLS 中的密钥交换从不直接产生master_secret这是因为 TLS 设计者希望主密钥具有一致的长度,并且熵分布在各处,这样您的密钥派生代码就不必担心密钥交换是如何发生的。不同的密钥交换方法会产生不同格式的共享密钥,因此您始终必须将预主密钥转换为 48 字节的主密钥。没有真正的“回溯”概念,因为在密钥交换完成之前不会导出主密钥。