【发布时间】:2012-04-13 17:54:26
【问题描述】:
SSL 服务器是否会为每个连接的客户端随机生成一个临时密钥对?
我了解公共密钥加密的工作原理——公共加密密钥、秘密解密密钥。这解释了具有 SSL 证书的主机如何从客户端接收加密数据。但是 SSL 服务器如何将加密数据发送回客户端呢?
【问题讨论】:
标签: encryption ssl
SSL 服务器是否会为每个连接的客户端随机生成一个临时密钥对?
我了解公共密钥加密的工作原理——公共加密密钥、秘密解密密钥。这解释了具有 SSL 证书的主机如何从客户端接收加密数据。但是 SSL 服务器如何将加密数据发送回客户端呢?
【问题讨论】:
标签: encryption ssl
(this question 有关于这个话题的讨论,虽然被编辑了很多次,所以可能会造成混淆。)
服务器证书中的公钥仅在握手期间使用。 在握手期间,客户端和服务器协商一个秘密共享密钥(每个会话一个新的),用于实际加密。
如何协商这个秘密取决于密码套件:RSA or Diffie-Hellman 密钥交换。当使用 RSA 密钥交换时,客户端加密 pre-master-secret 并将其发送到服务器(谁是唯一能够解密它的人)。使用 DH 时,客户端在 DH 交换过程中验证服务器发送的临时参数的签名:最终结果也是共享的 pre-master-secret。然后,双方将其与交换的随机值一起用于计算主密钥。
在名为 "Handshake Protocol Overview" 的 TLS 规范部分中有更多详细信息。
【讨论】:
DH_anon 密码套件(TLS_NULL_WITH_NULL_NULL 是另一种情况)。所有 TLS 版本都不鼓励使用它们,但 TLS 1.2 措辞更强烈(“这些密码套件不得被 TLS 1.2 实现使用,除非应用层特别要求允许匿名密钥交换。”)。从技术上讲,DHE 密码套件每次还会生成新的 (DH) 密钥(即使使用 RSA/DSS 身份验证)。