Java SSL握手过程
我将开始学习安全性,并了解SSL握手场景。在这篇文章中,回复者提到对称密钥是在浏览器上生成的,使用服务器的公钥加密并发送到服务器 然而,在其他文章中,他们提到生成了主密钥之前的密钥,并将其发送给对称密钥的计算Java SSL握手过程,java,security,encryption,ssl,Java,Security,Encryption,Ssl,我将开始学习安全性,并了解SSL握手场景。在这篇文章中,回复者提到对称密钥是在浏览器上生成的,使用服务器的公钥加密并发送到服务器 然而,在其他文章中,他们提到生成了主密钥之前的密钥,并将其发送给对称密钥的计算 我可以知道哪个是正确的解释吗?这个预主密钥是如何生成并用于生成对称密钥的?您链接到的帖子中的描述只是对协议的简单解释 客户端生成预主密钥,并在握手过程中使用服务器的公钥对其进行加密。然后,双方根据中的方法导出对称密钥材料,包括IV密钥和MAC密钥 您链接到的帖子中的描述只是对协议的简化解释
我可以知道哪个是正确的解释吗?这个预主密钥是如何生成并用于生成对称密钥的?您链接到的帖子中的描述只是对协议的简单解释
客户端生成预主密钥,并在握手过程中使用服务器的公钥对其进行加密。然后,双方根据中的方法导出对称密钥材料,包括IV密钥和MAC密钥 您链接到的帖子中的描述只是对协议的简化解释
客户端生成预主密钥,并在握手过程中使用服务器的公钥对其进行加密。然后,双方根据中的方法导出对称密钥材料,包括IV密钥和MAC密钥 下面是一篇描述SSL/TLS握手的优秀文章的链接(包括客户端和服务器使用预主密钥生成主密钥,用于生成MAC和加密的一组会话密钥):
下面是一篇描述SSL/TLS握手的优秀文章的链接(包括客户端和服务器使用预主密钥生成主密钥,用于生成MAC和加密的一组会话密钥):
说浏览器生成对称密钥只是一种简化(至少比说加密是用证书完成的要好)。有关更多详细信息,请访问on Security.SE: 然后,密码套件确定这些对称密钥最终如何共享。SSL/TLS握手的直接目的是在客户端和服务器之间建立共享预主密钥。这被更广泛地称为 这分为两类(不包括匿名密钥交换):
- RSA密钥交换(例如,TLS_RSA_WITH_AES_128_CBC_SHA):客户端使用服务器的公钥(在证书中找到)加密预主密钥
- DH(E)密钥交换(例如,TLS_DHE_RSA_与_AES_256_CBC_SHA):进行Diffie-Hellman密钥交换。服务器对其DH参数进行签名,客户端根据服务器证书中的公钥验证签名。(拥有基于RSA的证书并不意味着需要交换RSA密钥。)
根据该主密钥,双方可以导出加密密钥(和MAC密钥),如中所述。说浏览器生成对称密钥只是一种简化(至少比说加密是用证书完成的要好)。有关更多详细信息,请访问on Security.SE: 然后,密码套件确定这些对称密钥最终如何共享。SSL/TLS握手的直接目的是在客户端和服务器之间建立共享预主密钥。这被更广泛地称为 这分为两类(不包括匿名密钥交换):
- RSA密钥交换(例如,TLS_RSA_WITH_AES_128_CBC_SHA):客户端使用服务器的公钥(在证书中找到)加密预主密钥
- DH(E)密钥交换(例如,TLS_DHE_RSA_与_AES_256_CBC_SHA):进行Diffie-Hellman密钥交换。服务器对其DH参数进行签名,客户端根据服务器证书中的公钥验证签名。(拥有基于RSA的证书并不意味着需要交换RSA密钥。)
根据该主密钥,双方可以派生加密密钥(和MAC密钥),如中所述。您可能可以链接到TLS规范(1.0或更高版本)。此SSLv3规范最近才作为历史记录发布。您可能会链接到TLS规范(1.0或更高版本)。此SSLv3规范仅在最近作为历史记录发布。