问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SSL / TLS 工作原理和详细握手过程

创作时间:
作者:
@小白创作中心

SSL / TLS 工作原理和详细握手过程

引用
CSDN
1.
https://blog.csdn.net/Vermont_/article/details/118897449

HTTPS与HTTP的主要区别在于前者多了一层SSL(安全套接层)或TLS(安全传输层协议)。这层安全机制确保了互联网通信的安全性。本文将详细介绍SSL/TLS的工作原理和握手过程,帮助读者理解这一重要安全机制的核心概念和具体实现。

1. SSL/TLS以及SSL/TLS握手的概念

SSL和TLS协议可以为通信双方提供识别和认证通道,从而保证通信的机密性和数据完整性。TLS协议是从Netscape SSL 3.0协议演变而来的,不过这两种协议并不兼容,SSL已经被TLS取代。所以下文就以TLS指代安全层。

TLS握手是启动HTTPS通信的过程,类似于TCP建立连接时的三次握手。在TLS握手的过程中,通信双方交换消息以相互验证,相互确认,并确立它们所要使用的加密算法以及会话密钥(用于对称加密的密钥)。可以说,TLS握手是HTTPS通信的基础部分。

2. TLS握手过程中发生了什么

我们已经知道TLS握手的目的是建立安全连接,那么通信双方在这个过程中究竟干了什么呢?下面就是答案:

  • 商定双方通信所使用的的TLS版本(例如TLS1.0, 1.2, 1.3等等);
  • 确定双方所要使用的密码组合;
  • 客户端通过服务器的公钥和数字证书(上篇文章已有介绍)上的数字签名验证服务端的身份;
  • 生成会话密钥,该密钥将用于握手结束后的对称加密。

3. TLS握手详细过程

下面来看TLS握手的详细过程(注:此图与HTTPS详解一中的HTTPS原理图的流程大致相同,不同的是此图把重点放在了TLS握手的相关概念上):

  1. "client hello"消息:客户端通过发送"client hello"消息向服务器发起握手请求,该消息包含了客户端所支持的TLS版本和密码组合以供服务器进行选择,还有一个"client random"随机字符串。

  2. "server hello"消息:服务器发送"server hello"消息对客户端进行回应,该消息包含了数字证书,服务器选择的密码组合和"server random"随机字符串。

  3. 验证:客户端对服务器发来的证书进行验证,确保对方的合法身份,验证过程可以细化为以下几个步骤:

  • 检查数字签名
  • 验证证书链(这个概念下面会进行说明)
  • 检查证书的有效期
  • 检查证书的撤回状态(撤回代表证书已失效)
  1. "premaster secret"字符串:客户端向服务器发送另一个随机字符串"premaster secret(预主密钥)",这个字符串是经过服务器的公钥加密过的,只有对应的私钥才能解密。

  2. 使用私钥:服务器使用私钥解密"premaster secret"。

  3. 生成共享密钥:客户端和服务器均使用client random,server random和premaster secret,并通过相同的算法生成相同的共享密钥KEY

  4. 客户端就绪:客户端发送经过共享密钥KEY加密过的"finished"信号。

  5. 服务器就绪:服务器发送经过共享密钥KEY加密过的"finished"信号。

  6. 达成安全通信:握手完成,双方使用对称加密进行安全通信。

自制时序图:

参考资料:https://segmentfault.com/a/1190000021559557

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号