https交互原理

发布于:2025-07-14 ⋅ 阅读:(18) ⋅ 点赞:(0)

Https 交互时序图:

在这里插入图片描述

HTTPS 通信中结合 RSA 和 AES 加密的流程,本质是利用 RSA 的安全特性交换 AES 密钥,再用高效的 AES 加密实际数据传输。


HTTPS 交互核心流程(TLS/SSL 握手)

1. 建立 TCP 连接
  • 客户端通过 TCP 三次握手连接服务器的 443 端口。
2. TLS/SSL 握手(密钥协商阶段)
  • Client Hello
    客户端发送支持的功能列表:TLS 版本、支持的加密套件(如 TLS_RSA_WITH_AES_256_GCM_SHA384)、客户端随机数(Client Random)。

  • Server Hello
    服务器选择加密套件(如 RSA + AES-256),并发送:

    • 服务器随机数(Server Random
    • 数字证书(含服务器的 RSA 公钥,由 CA 签发)。
  • 客户端验证证书
    客户端用 CA 公钥验证证书合法性(防中间人攻击)。

  • Pre-Master Secret 生成与加密(RSA 核心步骤)

    • 客户端生成 Pre-Master Secret(46 字节随机数)。
    • 用服务器的 RSA 公钥加密 Pre-Master Secret → 得到 Encrypted Pre-Master Secret
    • 发送 Client Key Exchange 消息(包含加密后的 Pre-Master Secret)。
  • 服务器解密 Pre-Master Secret(RSA 核心步骤)
    服务器用 RSA 私钥解密获得 Pre-Master Secret。

  • 生成会话密钥(AES 密钥的诞生)
    客户端和服务器分别用以下三个参数生成相同的 Master Secret

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

    再根据 Master Secret 派生出 AES 对称密钥(如 AES-256 密钥)和 MAC 密钥。

  • 切换加密模式通知
    双方发送 Change Cipher Spec 消息,宣告后续通信使用协商的密钥加密。

  • 握手完成验证
    双方发送加密的 Finished 消息,验证握手过程是否一致且未被篡改。


3. 加密数据传输(AES 核心阶段)
  • 应用数据加密

    • 客户端用协商的 AES 密钥加密 HTTP 请求(如 AES-GCM 模式加密 + 完整性校验)。
    • 发送加密后的数据到服务器。
  • 服务器解密与响应

    • 服务器用相同的 AES 密钥解密请求。
    • 处理请求后,再用 AES 密钥加密响应数据返回给客户端。
  • 客户端解密响应
    客户端用 AES 密钥解密响应,获得明文内容。


为什么结合 RSA 和 AES?

阶段 RSA 作用 AES 作用 优势
密钥交换 加密传输 Pre-Master Secret(短数据) - 非对称加密保证密钥安全交换
数据传输 - 加密实际 HTTP 数据(长数据) 对称加密速度快,适合大数据量
安全性 解决密钥分发问题 提供高效加密 兼顾安全性与性能

关键安全设计解析

  1. RSA 保护 AES 密钥

    • Pre-Master Secret 是 AES 密钥的“种子”,由 RSA 公钥加密后传输,仅服务器私钥可解密。
    • 即使攻击者截获流量,也无法破解 Pre-Master Secret(RSA 数学难题保障)。
  2. 前向保密(可选增强)
    现代 TLS 常用 ECDHE-RSA 替代 RSA 密钥交换:

    • ECDHE 生成临时会话密钥,即使服务器 RSA 私钥泄漏,历史会话仍安全。
    • RSA 仅用于签名认证(不直接加密密钥)。
  3. AES 高效加密

    • AES-256 提供 256 位密钥强度,加密速度快(比 RSA 快千倍以上)。
    • 工作模式(如 GCM)同时提供加密和完整性校验。

总结

  • RSA 用于信任链建立和安全交换 AES 密钥(短数据加密)。
  • AES 用于高效加密实际通信数据(长数据加密)。
  • 这种组合在安全性和性能上达到最优平衡,是 HTTPS 的基石设计。

网站公告

今日签到

点亮在社区的每一天
去签到