什么是TLS握手?TLS握手如何工作

2025年4月2日

在数据传输过程中,SSL/TLS协议通常用于加密通信,确保数据的机密性和完整性。

什么是TLS握手?

在数据传输过程中,通常通过TLS/SSL连接对数据进行加密,而建立这样的连接需要进行TLS握手(TLS Handshake)。

TLS握手是启动TLS通信会话的关键步骤。在握手过程中,通信双方(客户端和服务器)交换信息,互相验证身份,协商使用的加密算法,并生成一致的会话密钥。TLS握手确保了通信的机密性和完整性,并为后续的数据传输提供加密保护。

SSL(安全套接字层)是为HTTP开发的原始安全协议。此前,SSL被TLS(Transport Layer Security)所取代。SSL握手现在称为TLS握手,尽管“SSL”这个名称仍在广泛使用。

何时进行TLS握手?

当用户访问一个使用HTTPS的网站时,浏览器会先定位网站的源服务器,并随后发起TLS握手。类似地,在所有涉及HTTPS的通信(如API调用、DNS over HTTPS查询)中,TLS握手同样会发生。

在建立TCP连接(完成TCP握手)后,TLS握手随即开始,以确保通信加密和安全性。

TLS握手期间会发生什么?

在TLS握手过程中,客户端与服务器将共同完成以下关键步骤:

协商TLS版本(如TLS 1.0、1.2、1.3等)

选择密码套件,确定加密算法及密钥交换方式

验证服务器身份,通过服务器的公钥和SSL证书颁发机构的数字签名确保其可信度

生成会话密钥,用于在握手完成后进行对称加密通信

TLS握手的具体步骤

TLS握手是由客户端和服务器交换的一系列数据报或消息。不同版本的TLS握手过程有所不同,以下是主要步骤:

TLS握手

主要包括以下几个阶段:

1、客户端问候(Client Hello)

客户端向服务器发起通信请求,并在此过程中提供:

支持的TLS版本

支持的密码套件列表

随机数(Client Random)

2、服务器问候(Server Hello)

服务器响应客户端请求,并进行以下操作:

确保TLS版本兼容

选择一个客户端支持的密码套件

发送服务器证书

生成并发送服务器随机数(Server Random)

发送公钥

3、证书验证

客户端通过证书颁发机构(CA)验证服务器证书的有效性,确保服务器身份的真实性。

4、预主密钥(Pre-Master Secret)

客户端生成一个预主密钥,使用服务器的公钥加密后发送给服务器。由于只有服务器拥有对应的私钥,因此只有服务器可以解密该密钥,从而增强通信安全性。

5、会话密钥生成

服务器解密预主密钥,客户端和服务器根据客户端随机数、服务器随机数和预主密钥计算出相同的会话密钥,用于后续通信加密。

6、完成握手

双方互相发送“握手完成”消息,并验证生成的密钥是否匹配。握手完成后,会话密钥将用于加密和解密客户端与服务器之间传输的数据。

TLS 1.3中的握手有什么不同?

与TLS 1.2及以下版本相比,TLS 1.3在性能和安全性上进行了显著提升。其最大变化是移除了对不安全密码套件和RSA密钥交换算法的支持,并对握手流程进行了简化,从而提高了安全性和性能。

TLS 1.3握手的基本步骤为:

  • 客户端问候:

客户端发送客户端问候消息,内含协议版本、客户端随机数和密码套件列表。由于已从TLS 1.3中删除了对不安全密码套件的支持,因此可能的密码套件数量大大减少。客户端问候消息还包括将用于计算预主密钥的参数。大体上来说,客户端假设它知道服务器的首选密钥交换方法(由于简化的密码套件列表,它有可能知道)。这减少了握手的总长度——这是TLS 1.3握手与TLS 1.0、1.1和1.2握手之间的重要区别之一。

  • 服务器生成主密钥:

此时,服务器已经接收到客户端随机数以及客户端的参数和密码套件。它已经拥有服务器随机数,因为它可以自己生成。因此,服务器可以创建主密钥。

  • 服务器问候和“完成”:

服务器问候包括服务器的证书、数字签名、服务器随机数和选择的密码套件。因为它已经有了主密钥,所以它也发送了一个“完成”消息。

  • 最后步骤和客户端“完成”:

客户端验证签名和证书,生成主密钥,并发送“完成”消息。

  • 实现安全对称加密

TLS握手是实现安全加密通信的核心步骤。通过双方的身份验证和密钥协商,确保了数据在传输过程中的机密性和完整性。

随着TLS 1.3的引入,握手过程更加简化和高效,同时提供了更强的安全保障,消除了以前版本中的潜在安全漏洞。

图源|AIGC

编辑|公钥密码开放社区

免责声明

1、本文部分内容来源于网络,不代表本网站立场。本网站对上述信息的来源、准确性及完整性不作任何保证。在任何情况下,本文信息仅作参考。

2、文章重在分享,如有原创声明和侵权,请及时联系本站,我们将在24小时之内对稿件作删除处理。

相关阅读

QQ
微信
微信
公众号
公众号
在线咨询
电话

联系热线:400-080-0149

返回顶部