SSL/TLS握手协议
字数 1753
更新时间 2026-01-31 21:08:54

SSL/TLS握手协议

  1. 基础概念与需求
    SSL(安全套接层)和其继任者TLS(传输层安全)是为网络通信提供安全及数据完整性的协议。在互联网上传输敏感信息(如密码、信用卡号)时,如果使用明文协议(如HTTP),数据容易被窃听和篡改。SSL/TLS的核心需求就是解决这三个问题:机密性(通过加密防止窃听)、完整性(通过消息认证码防止篡改)和身份验证(通过数字证书验证服务器身份,有时也验证客户端身份)。

  2. 协议位置与组成
    SSL/TLS协议位于应用层(如HTTP, FTP)和传输层(TCP)之间。它本身是一个分层的协议,主要分为两层:

    • 握手协议:这是最复杂的子协议,负责在传输应用数据前,进行加密算法协商、交换密钥、验证身份等。这是本次词条的核心。
    • 记录协议:位于握手协议下层。它负责使用握手协议协商好的参数,对应用数据进行分块、压缩(已弃用)、加密和附加消息认证码(MAC),然后传给TCP传输。它确保了数据的机密性和完整性。
  3. 握手协议详解 - 核心步骤
    握手协议的目标是建立一个安全的会话状态,包含后续通信所需的加密密钥和参数。以最常见的“基于RSA的TLS握手”为例,其主要步骤如下:

    步骤一:ClientHello
    客户端向服务器发起连接,并发送一条“ClientHello”消息,内容包含:客户端支持的TLS协议版本、一个客户端随机数、支持的密码套件列表(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)以及支持的压缩方法等。

    步骤二:ServerHello
    服务器响应“ServerHello”消息,内容包含:从客户端列表中选择的协议版本、一个服务器随机数、选择的密码套件和压缩方法。

    步骤三:服务器证书与密钥交换
    服务器发送自己的数字证书,该证书由可信的证书颁发机构签发,包含了服务器的公钥和身份信息。根据所选密码套件,服务器可能还会发送“ServerKeyExchange”消息(例如,在基于迪菲-赫尔曼交换时发送DH参数)。

    步骤四:服务器问候结束
    服务器发送“ServerHelloDone”消息,表明握手协商部分结束。

    步骤五:客户端密钥交换与验证
    客户端验证服务器的证书(检查颁发机构是否可信、证书是否在有效期内、域名是否匹配等)。验证通过后,客户端生成一个预主密钥,并用服务器证书中的公钥加密,通过“ClientKeyExchange”消息发送给服务器。只有拥有对应私钥的服务器才能解密出预主密钥。

    步骤六:密钥生成与密码切换通知
    此时,客户端和服务器都拥有了三个共同的元素:客户端随机数服务器随机数预主密钥。双方使用相同的密钥派生函数,根据这三个值计算出一组主密钥,进而派生出用于后续记录协议加密和完整性验证的会话密钥(包括对称加密密钥和MAC密钥)。然后双方发送“ChangeCipherSpec”消息,通知对方后续消息将使用协商好的加密参数进行保护。

    步骤七:握手完成验证
    双方分别发送一个“Finished”消息。这个消息是对之前所有握手消息的加密摘要(使用会话密钥)。对方收到后验证其正确性,以确保整个握手过程未被篡改。验证成功后,安全的TLS通道就此建立。

  4. 关键特性与演进

    • 前向安全性:上述基于RSA的握手不具备完美的前向安全性。现代TLS更推荐使用ECDHE(基于椭圆曲线的迪菲-赫尔曼临时密钥交换)等算法。在这种模式下,即使服务器的长期私钥未来泄露,过去的通信记录也不会被解密。
    • 会话恢复:为了提升性能,TLS提供了会话恢复机制(通过会话ID或会话票据),允许客户端和服务器跳过完整的握手流程,快速重建安全会话。
    • 协议版本:SSL因存在严重漏洞已被彻底淘汰。应使用TLS 1.2或更安全的TLS 1.3。TLS 1.3极大地简化了握手过程,减少了往返次数,并禁用了不安全的加密算法。
  5. 应用与重要性
    SSL/TLS握手协议是HTTPS、SMTPS、FTPS等安全服务的基础。当你访问网站时,浏览器地址栏显示的锁形图标,就代表成功完成了与服务器的TLS握手,建立了加密连接。它是互联网信任和安全体系的基石之一,保护着全球绝大部分的Web流量和数据传输。

 全屏