当前位置: 首页 > news >正文

https交互原理

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 的基石设计。
http://www.dtcms.com/a/277653.html

相关文章:

  • 010_学习资源与社区支持
  • cs285学习笔记(一):课程总览
  • 融合开源AI大模型与MarTech:AI智能名片与S2B2C商城小程序源码赋能数字化营销新生态
  • Boost.Asio 中 io_context 类 post 和 dispatch的区别
  • 启动Tomcat报错:A child container failed during start
  • MCP 服务开发到发布
  • 更换docker工作目录
  • MongoDB对接SpringBoot【大数据存储】
  • Hashtable 与 HashMap 的区别笔记
  • 利用DeepSeek证明立体几何题目
  • Flink学习笔记:整体架构
  • Vue 3 动态ref问题
  • 第十五篇:Python操作Excel速成:读写单元格、样式与公式,你的第一个数据自动化脚本!告别手动录入!
  • 002大模型基础知识
  • 多项式运算→复数域FFT→有限域NTT
  • 在上海开发小程序,怎么做出“高级感”?
  • RTDETR融合[CVPR2024]SHViT中的SHSA模块
  • 业务访问控制-ACL与包过滤
  • openeuler使用桥接模式(包括新建虚拟机和已有虚拟机)
  • C语言集成ip2region快速指南
  • java: DDD using oracle 21c
  • 【实证分析】上市公司绿色战略数据集(2000-2023年)
  • 【PTA数据结构 | C语言版】字符串删除操作
  • Mybatis自动创建数据库表,并根据创建的表自动生成Mvc框架基础代码
  • WPS新版Latex公式改为显示样式,防止内嵌缩小
  • 清华北大西工大!具身导航最新综述
  • Git的常用操作
  • MYSQL笔记2
  • NW756NW815美光固态闪存NW821NW828
  • Switch表达式