什么是TLS

发布时间 2023-05-29 12:32:21作者: 不会上猪的树

TLS


1. SSL与TLS的关系

SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 是用于保护网络通信的安全协议。

在早期是用SSL通信安全和加密的协议,如今慢慢被TLS所取代,SSL/TLS 是用于保护网络通信的安全协议,其中 SSL 是旧的术语,指代 TLS,而 TLS 是一种协议,用于加密和保护通信的安全性

2.TLS的四次握手

在HTTPS里我们了解了数字证书的签约大致过程,这其中的这几个过程就是TLS协议的几个握手,也是基于这四次握手,在后续的数据传输中,双方才可以继续用HTTP协议进行数据传输。

当客户端和服务器之间建立 TLS 连接时,它们会经历以下基本步骤:

  1. 客户端发起连接:客户端向服务器发送一个连接请求,并提供支持的加密算法和协议版本。
  2. 服务器回应:服务器收到客户端的连接请求后,选择一种加密算法和协议版本,并返回一个数字证书给客户端。数字证书包含服务器的公钥和其他相关信息。
  3. 客户端验证证书:客户端会验证服务器的数字证书的有效性。这包括检查证书的颁发机构是否受信任、证书是否过期、是否与服务器域名匹配等。
  4. 密钥交换:如果证书验证通过,客户端会生成一个随机的对称密钥,称为会话密钥。然后,客户端使用服务器的公钥加密该会话密钥,并将其发送给服务器。
  5. 密钥解密:服务器接收到加密的会话密钥后,使用自己的私钥进行解密,得到原始的会话密钥。
  6. 安全通信建立:客户端和服务器现在都有了相同的会话密钥,用于加密和解密通信内容。双方可以使用对称密钥进行加密和认证码计算,以确保通信的机密性和完整性。
  7. 数据传输:客户端和服务器使用会话密钥对传输的数据进行加密和解密。数据在传输过程中使用加密算法进行保护,防止被窃听或篡改。

其中四次握手就是包含着前5步,接下来让我们了解一下四次握手都做了什么

使用WireShark进行抓包处理:

在过滤栏中输入 ip.addr == 110.242.68.4&&ssl ,我这里是以百度的地址为例

S{{$ZI8F4PKJF9W6Y@VG7

估摸着会有人问为什么有五个红框,实际上在服务器第二次握手时,发送了Server Hello和Certificate,用来表示一些相关信息和证实自己的身份,这里到后面的了解就明白了.


2.1TLS的第一次握手

  • 客户端向服务器端发送一个Client Hello

TLS第一次握手

这个随机数是用来生成对称密钥的原材料

2.2TLS的第二次握手

  • 服务器端想客户端返回一个Server Hello
  • 服务器端向客户端返回一个Certificate

TLS握手第二次1

这里随机数依然是为了用来生成对称密钥用的

TLS握手第二次2

在这里,我之前有看到过相关问题说TLS记录为什么要分为两层,结合我个人的理解以及相关资料的查阅得出的结论是这样的:

因为在数字证书进去签发前,版本号和加密算法的相关信息已经协商,但不代表除了这些信息就没有其他信息进行协商,而之所以进行化层次可能是为了以后协议的升级,需要交换的信息更多,进行的灵活扩展,顺便将信息进行分割.

2.3TLS的第三次握手

  • 客户端向服务器端发送Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

TLS第三次握手

这里由第一次握手的Client Number和第二次握手生成的Sever Number以及第三次生成的Pub Number三个随机数,就共享到客户端和服务端了,只需要第三次数据发出给服务端,服务端便得知了,然后根据这三次随机数生成对称密钥

2.4TLS的第四次握手

  • 服务器端向客户端返回Change Cipher Spec, Encrypted Handshake Message

    TLS第四次握手

这里的会话票据是为了实现会话恢复的一种机制.在下次客户端需要重新建立的时候,便可以通过这个会话票据再次建立了,而不需要重复前面几次握手过程.


3.TLS总结

TLS四次握手

在进行TLS过程中也存在TCP的握手以及ACK号确认,所以其实每一次握手都会存在相应的ACK号用来表示已经接受了,在进行TLS四次握手的前提下,其实就已经进行了TCP的三次握手了,从协议层次上来讲,TCP越接近底层,越先在数据交互的时候发生,而不是同时发生的,这一点很重要,以上就是TLS四次握手的大致过程了

至此,TLS的四次握手大致过程就这样结束了.