security - 在 TSL/SSL 握手中,如何使用 ClientHello 中发送的 Cipher Suite 信息?

标签 security ssl https network-protocols handshake

https://en.wikipedia.org/wiki/Transport_Layer_Security#Protocol_details

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

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


  1. 客户您好
    发送 session 信息、可用的密码套件和随机字符串。

  2. 服务器问候
    发送其证书信息,选择密码套件和随机字符串。

  3. 客户

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

    • 使用私钥解密预掌握的 secret
  5. 客户端和服务器

    • 他们自己从预掌握的 secret 中生成主 secret
    • 有了Master secret,两者都会生成一个对称 key 以供使用
  6. 客户端更改密码套件

    • “(未加密)好的,现在更改密码套件”,“(加密)完成。”消息类型
  7. 服务器更改密码套件

    • “(未加密)好的,现在更改密码套件”,“(加密)完成。”消息类型
  8. 安全连接


初始密码套件信息与此交换有何关联?

如果我对TSL/SSL Handshake的理解有误,请指正。谢谢!

最佳答案

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

关于security - 在 TSL/SSL 握手中,如何使用 ClientHello 中发送的 Cipher Suite 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48136215/

相关文章:

security - 存储 ASP.NET key 、密码的安全方法

.net - 使用 WCF 创建 Web API

ssl - 建立 SSL 连接时 PKIX 路径构建失败错误

ajax - Cordova Https ajax 请求失败或编码响应

apache-flex - 检查来自 SWF 文件的 HTTPS 流量

https - 使用 FiddlerCore 将 HTTPS 请求捕获到不存在的服务器

java - 使用 Java 8 拒绝访问 ("java.net.SocketPermission"...)

rest - 调用 REST 服务时 SSL 握手失败

c - 从内存中删除敏感信息

python - 如何在 Kubernetes 集群中部署简单的 python HTTPS 服务器?