SSL握手过程

我正在开始安全性并阅读有关SSL握手方案。 在这篇文章中,回复者提到在浏览器上生成对称密钥,并使用服务器的公钥进行加密并发送到服务器。

然而,在其他文章中,他们提到了一个预主秘密被生成并被发送,而不是用于计算对称密钥。

我可否知道哪一个是正确的解释,以及这个预主密钥是如何生成并用于生成对称密钥的?


您链接到的帖子中的说明只是协议的简单说明。

客户端生成预主密钥,并使用服务器的公钥对其进行加密,作为握手过程的一部分。 双方根据RFC 6101中的方法推导出对称密钥材料,包括IV和MAC密钥。


下面是一篇描述SSL / TLS握手的优秀文章的链接(包括客户端和服务器使用预主密钥生成主密钥,该密钥用于为MAC和加密生成一组会话密钥):

第一个毫秒的HTTPS连接


说浏览器生成对称密钥只不过是一种简化(至少比说明使用证书进行加密更好)。 您可能会对Security.SE上的此答案感兴趣,以获取更多详细信息:

密码套件然后确定这些对称密钥最终如何共享。 SSL / TLS握手的直接目的是在客户端和服务器之间建立共享预主密钥。 这更广泛地称为密钥交换(参见RFC 4346附录F.1.1,也许参见第7.4.7节)。

这分为两类(不包括匿名密钥交换):

  • RSA密钥交换(例如TLS_RSA_WITH_AES_128_CBC_SHA ):客户端使用服务器的公钥(在证书中找到)加密预主密钥。
  • DH(E)密钥交换(例如TLS_DHE_RSA_WITH_AES_256_CBC_SHA ):发生Diffie-Hellman密钥交换。 服务器签署DH参数,客户端根据服务器证书中的公钥验证签名。 (拥有基于RSA的证书并不意味着RSA密钥交换。)
  • 在握手结束时,无论采用这两个步骤中的哪一步,客户端和服务器都拥有一个共同的主控密钥,从中获得主密钥(参见RFC 4346第8.1节)。

    根据这个主秘密,双方可以派生加密密钥(和MAC秘密),如RFC 4346第6.3节所述。

    链接地址: http://www.djcxy.com/p/21801.html

    上一篇: SSL handshake process

    下一篇: How does browser generate symmetric key during SSL handshake