【HTTPS基础概念与原理】TLS握手过程详解

发布于:2025-05-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

以下是 TLS握手过程的详细拆解,涵盖客户端与服务器之间的关键交互步骤,包括ClientHello、ServerHello、证书验证、密钥交换等核心阶段,并对比TLS 1.2与TLS 1.3的差异:


一、TLS握手的核心目标

  1. 协商协议版本:确定双方支持的TLS版本(如TLS 1.2或1.3)。
  2. 选择加密套件:确定对称加密算法(如AES-GCM)、密钥交换算法(如ECDHE)等。
  3. 交换密钥:通过非对称加密生成共享的对称密钥。
  4. 验证身份:服务器证明自身合法性,客户端可选验证(双向认证时)。
  5. 建立安全通道:后续数据通过对称加密传输。

二、TLS 1.3 握手流程(精简版)
TLS 1.3 标准化后,握手步骤从 两次RTT(Round-Trip Time)优化为一次RTT,并支持0-RTT握手。以下是详细步骤:

1. ClientHello(客户端问候)
• 发送内容:

• 支持的TLS版本(优先TLS 1.3)。

• 客户端随机数(Client Random,32字节)。

• 支持的加密套件列表(按优先级排序,如TLS_AES_256_GCM_SHA384)。

• 支持的密钥交换算法(如ECDHE-ECDSA、X25519)。

• 扩展字段(如SNI、Session ID)。

• 目的:告知服务器客户端的支持能力,启动握手。

2. ServerHello(服务器响应)
• 发送内容:

• 确认的TLS版本(如TLS 1.3)。

• 服务器随机数(Server Random,32字节)。

• 选择的加密套件(如TLS_AES_128_GCM_SHA256)。

• 选择的密钥交换算法(如ECDHE with X25519)。

• 扩展字段(如证书链、OCSP Stapling)。

• 目的:确认协议版本和加密参数,进入密钥交换阶段。

3. 证书交换
• 服务器发送证书链:

• 服务器证书(由中间CA签发)。

• 中间CA证书(根CA通常不发送,预装在客户端中)。

• 客户端验证证书:

• 检查证书链有效性(颁发机构、有效期、域名匹配)。

• 检查吊销状态(CRL或OCSP)。

• 验证证书签名(使用内置根CA公钥)。

4. 密钥交换(ECDHE)
• 步骤:

  1. 生成临时密钥对:客户端和服务器各自生成ECDHE临时密钥对(如X25519)。
  2. 交换公钥:客户端发送自己的临时公钥,服务器回复自己的临时公钥。
  3. 计算共享密钥:双方用对方的公钥和己方的私钥计算出相同的共享密钥(Pre-Master Secret)。
    • 特点:

• 前向保密:即使长期私钥泄露,历史会话无法解密。

• 密钥长度短:X25519密钥仅需256位,安全性等效RSA 3072位。

5. 生成会话密钥
• 公式:

Master Secret = PRF(Pre-Master Secret, Client Random + Server Random)

PRF:伪随机函数(基于HMAC-SHA256)。

• 使用Client Random和Server Random生成主密钥(Master Secret)。

• 衍生对称密钥:

• 客户端写MAC密钥、服务器写MAC密钥。

• 客户端写加密密钥、服务器写加密密钥。

• 初始化向量(IV)等。

6. 完成握手(Finished)
• 双方发送Finished消息:

• 内容包含握手过程中所有消息的哈希值(使用Master Secret加密)。

• 验证握手过程的完整性和密钥正确性。

• 后续通信:使用对称加密算法(如AES-GCM)传输数据。


三、TLS 1.2 握手流程(对比)
TLS 1.2 握手需两次RTT,且密钥交换与身份验证耦合,步骤如下:

1. ClientHello
• 与TLS 1.3类似,但支持旧版加密套件(如RSA、RC4)。

2. ServerHello
• 选择加密套件(如TLS_RSA_WITH_AES_128_CBC_SHA)。

3. 证书交换
• 同TLS 1.3。

4. 密钥交换(RSA)
• 步骤:

  1. 服务器发送RSA公钥。
  2. 客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送。
  3. 服务器用私钥解密,获取预主密钥。
    • 缺陷:无前向保密,私钥泄露可解密历史会话。

5. 生成会话密钥
• 使用预主密钥和随机数生成主密钥,后续步骤同TLS 1.3。


四、关键安全机制
1. 证书验证
• 信任链:客户端验证证书是否由受信任根CA签发。

• 吊销检查:

• CRL(证书吊销列表):下载CA发布的吊销列表,检查证书序列号。

• OCSP(在线状态协议):实时查询证书状态。

• OCSP Stapling:服务器缓存OCSP响应,减少客户端延迟。

2. 密钥交换安全
• ECDHE:抗量子计算,支持前向保密。

• RSA密钥交换(已淘汰):易受中间人攻击,无前向保密。


五、TLS 1.3的改进与优势

特性 TLS 1.2 TLS 1.3
握手延迟 两次RTT 一次RTT(0-RTT可选)
加密套件数量 多(含弱算法) 精简(仅AEAD+现代算法)
前向保密 可选(需ECDHE) 强制支持
密钥导出 PRF基于SHA-256 HKDF,更安全
0-RTT握手 不支持 支持(需会话复用)

六、实际应用与优化

  1. 服务器配置:
    • 优先启用TLS 1.3,禁用弱密码套件(如RC4、SHA-1)。

    • 使用ECDSA证书(比RSA更短、更快)。

  2. 性能优化:
    • 启用OCSP Stapling,减少证书验证延迟。

    • 使用Session Resumption(会话复用)减少握手开销。

  3. 安全加固:
    • 强制HSTS头部,防止降级攻击。

    • 配置CSP(内容安全策略)防御XSS。


总结
TLS握手是HTTPS通信的核心,通过协商加密参数、验证身份、生成共享密钥,确保数据传输的机密性与完整性。TLS 1.3通过精简协议、强制前向保密和0-RTT握手,显著提升了安全性与性能,成为现代网站的标配。