Security 在TSL/SSL握手中,如何使用ClientHello中发送的密码套件信息?

Security 在TSL/SSL握手中,如何使用ClientHello中发送的密码套件信息?,security,ssl,https,network-protocols,handshake,Security,Ssl,Https,Network Protocols,Handshake,我正在研究SSL/TSL握手是如何工作的,虽然我了解了非对称加密部分的要点,但我不理解握手过程中的密码套件信息 下面是我对握手的简要总结 客户您好 发送会话信息、可用密码套件和随机字符串 服务器你好 发送其证书信息,选择密码套件和随机字符串 客户 从证书中提取公钥 将两个随机字符串组合在一起,并用它们创建一个预先掌握的秘密 用公钥加密预先掌握的秘密 发送加密的预先掌握的秘密 服务器 使用私钥解密预先掌握的秘密 客户机和服务器 两者都会根据预先掌握的秘密自行生成主秘密 使用主密钥,两者

我正在研究SSL/TSL握手是如何工作的,虽然我了解了非对称加密部分的要点,但我不理解握手过程中的密码套件信息

下面是我对握手的简要总结


  • 客户您好
    发送会话信息、可用密码套件和随机字符串

  • 服务器你好
    发送其证书信息,选择密码套件和随机字符串

  • 客户

    • 从证书中提取公钥
    • 将两个随机字符串组合在一起,并用它们创建一个预先掌握的秘密
    • 用公钥加密预先掌握的秘密
    • 发送加密的预先掌握的秘密
  • 服务器

    • 使用私钥解密预先掌握的秘密
  • 客户机和服务器

    • 两者都会根据预先掌握的秘密自行生成主秘密
    • 使用主密钥,两者都会生成要使用的对称密钥
  • 客户端更改密码套件

    • “(未加密)确定立即更改密码套件”,“(加密)完成。”消息类型
  • 服务器更改密码套件

    • “(未加密)确定立即更改密码套件”,“(加密)完成。”消息类型
  • 安全连接


  • 初始密码套件信息在此交换中的相关性如何


    如果我对TSL/SSL握手有任何错误的理解,请纠正我。谢谢大家!

    密码套件定义了用于密钥交换、消息加密和消息身份验证的TLS握手的算法集。解释得很好。

    我不太清楚你在问什么。在第2步中,您可以清楚地看到服务器选择了密码,而选择基于客户端在第1步中发送的密码以及服务器本身支持的密码。或者,您是否在询问密码套件实际上是什么,以及它的各个部分(加密、身份验证等)在TLS中是如何实际使用的?除此之外,我不认为这是真正的主题在这里。一个更好的网站应该是security.stackexchange.com,关于TLS的细节也有很多问题。另外,您只描述RSA密钥交换。但今天推荐的密钥交换是Diffie Hellman。@steffenUlrich谢谢!我一定会签出security.stackexchange。我想知道,在服务器选择了一个密码后,密码套件的各个部分在TLS中是如何实际使用的——从我的抽象理解来看,我无法真正确定密码套件是如何应用的。在进一步研究之后,我将发布一个更具体的问题。因此,基本上,密码套件定义了密钥交换和消息加密的“方式”。消息加密本身使用服务器的公钥进行,但密码套件算法使用公钥进行加密,我的理解正确吗?@JohnSuh:不,消息加密使用对称密钥而不是公钥。对称密钥是密钥交换的结果。密码定义用于对称加密和HMAC的算法。