HTTPS与SSL/TLS握手过程详解
字数 1332 2025-11-03 00:19:05

HTTPS与SSL/TLS握手过程详解

知识点描述
HTTPS是在HTTP协议基础上增加了SSL/TLS加密层的安全通信协议,用于保障数据传输的机密性和完整性。其核心在于SSL/TLS握手过程,通过非对称加密协商对称密钥,最终使用对称加密高效传输数据。

一、HTTPS基础概念

  1. HTTP的安全缺陷

    • 明文传输:请求和响应内容可被中间人窃听
    • 无法验证身份:可能访问到伪造的服务器
    • 数据易被篡改:中间人可修改传输内容
  2. HTTPS解决方案

    • 加密传输:通过混合加密机制防止窃听
    • 身份认证:通过数字证书验证服务器身份
    • 完整性校验:通过MAC(消息认证码)防篡改

二、SSL/TLS握手分步解析
以TLS 1.2为例,完整握手包含以下步骤:

  1. ClientHello(客户端问候)

    • 客户端发送:
      • 支持的TLS版本(如TLS 1.2)
      • 客户端随机数(Client Random,用于后续密钥生成)
      • 支持的密码套件列表(如RSA、ECDHE等)
      • 会话ID(用于会话恢复)
  2. ServerHello(服务器回应)

    • 服务器返回:
      • 选定的TLS版本和密码套件
      • 服务器随机数(Server Random)
      • 会话ID(新会话时生成新ID)
  3. 服务器证书发送

    • 服务器将数字证书链发送给客户端
    • 证书包含服务器公钥、域名、颁发机构(CA)等信息
    • 可选发送请求客户端证书(双向认证场景)
  4. ServerKeyExchange(密钥交换)

    • 根据密码套件类型可能发送:
      • DH参数:服务器临时公钥(用于ECDHE等算法)
      • 签名:用服务器私钥对参数签名(防篡改)
  5. ServerHello Done

    • 服务器告知客户端初始协商消息发送完毕
  6. 客户端验证证书

    • 客户端验证证书链:
      1. 检查证书有效期
      2. 验证颁发机构是否受信任(查询系统信任库)
      3. 核对证书中的域名与访问域名是否一致
      4. 验证数字签名确保证书未被篡改
  7. ClientKeyExchange(客户端密钥交换)

    • 客户端生成预主密钥(Pre-Master Secret)
    • 用服务器公钥加密预主密钥发送给服务器
    • (ECDHE方案下)客户端也会发送临时公钥参数
  8. 密钥生成

    • 双方根据以下要素生成对称会话密钥:
      • 客户端随机数
      • 服务器随机数
      • 预主密钥
    • 通过PRF(伪随机函数)生成:
      • 加密密钥(用于数据加密)
      • MAC密钥(用于完整性校验)
      • 初始化向量(IV,用于分组加密模式)
  9. 切换加密通信

    • 双方发送ChangeCipherSpec报文,确认后续通信使用协商的密钥
    • 交换Finished报文(加密的握手摘要),验证握手过程是否被篡改

三、简化握手(会话恢复)
当客户端存有会话ID或会话凭证时:

  1. 客户端在ClientHello中携带会话ID
  2. 服务器确认会话有效后直接跳过证书验证和密钥交换
  3. 使用之前协商的会话密钥快速恢复通信

四、防御相关攻击

  1. 降级攻击:通过TLS扩展功能防止协商到弱加密算法
  2. 重放攻击:使用随机数和时间戳确保消息新鲜性
  3. 中间人攻击:证书体系保证服务器公钥真实性

核心要点总结
HTTPS通过"非对称加密协商密钥+对称加密传输数据"的混合机制,在安全性和性能间取得平衡。握手过程的核心目标是安全地协商出只有通信双方知道的会话密钥,并通过数字证书实现身份认证。

HTTPS与SSL/TLS握手过程详解 知识点描述 HTTPS是在HTTP协议基础上增加了SSL/TLS加密层的安全通信协议,用于保障数据传输的机密性和完整性。其核心在于SSL/TLS握手过程,通过非对称加密协商对称密钥,最终使用对称加密高效传输数据。 一、HTTPS基础概念 HTTP的安全缺陷 明文传输:请求和响应内容可被中间人窃听 无法验证身份:可能访问到伪造的服务器 数据易被篡改:中间人可修改传输内容 HTTPS解决方案 加密传输:通过混合加密机制防止窃听 身份认证:通过数字证书验证服务器身份 完整性校验:通过MAC(消息认证码)防篡改 二、SSL/TLS握手分步解析 以TLS 1.2为例,完整握手包含以下步骤: ClientHello(客户端问候) 客户端发送: 支持的TLS版本(如TLS 1.2) 客户端随机数(Client Random,用于后续密钥生成) 支持的密码套件列表(如RSA、ECDHE等) 会话ID(用于会话恢复) ServerHello(服务器回应) 服务器返回: 选定的TLS版本和密码套件 服务器随机数(Server Random) 会话ID(新会话时生成新ID) 服务器证书发送 服务器将数字证书链发送给客户端 证书包含服务器公钥、域名、颁发机构(CA)等信息 可选发送请求客户端证书(双向认证场景) ServerKeyExchange(密钥交换) 根据密码套件类型可能发送: DH参数:服务器临时公钥(用于ECDHE等算法) 签名:用服务器私钥对参数签名(防篡改) ServerHello Done 服务器告知客户端初始协商消息发送完毕 客户端验证证书 客户端验证证书链: 检查证书有效期 验证颁发机构是否受信任(查询系统信任库) 核对证书中的域名与访问域名是否一致 验证数字签名确保证书未被篡改 ClientKeyExchange(客户端密钥交换) 客户端生成预主密钥(Pre-Master Secret) 用服务器公钥加密预主密钥发送给服务器 (ECDHE方案下)客户端也会发送临时公钥参数 密钥生成 双方根据以下要素生成对称会话密钥: 客户端随机数 服务器随机数 预主密钥 通过PRF(伪随机函数)生成: 加密密钥(用于数据加密) MAC密钥(用于完整性校验) 初始化向量(IV,用于分组加密模式) 切换加密通信 双方发送ChangeCipherSpec报文,确认后续通信使用协商的密钥 交换Finished报文(加密的握手摘要),验证握手过程是否被篡改 三、简化握手(会话恢复) 当客户端存有会话ID或会话凭证时: 客户端在ClientHello中携带会话ID 服务器确认会话有效后直接跳过证书验证和密钥交换 使用之前协商的会话密钥快速恢复通信 四、防御相关攻击 降级攻击 :通过TLS扩展功能防止协商到弱加密算法 重放攻击 :使用随机数和时间戳确保消息新鲜性 中间人攻击 :证书体系保证服务器公钥真实性 核心要点总结 HTTPS通过"非对称加密协商密钥+对称加密传输数据"的混合机制,在安全性和性能间取得平衡。握手过程的核心目标是安全地协商出只有通信双方知道的会话密钥,并通过数字证书实现身份认证。