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.pswp.cn/pingmian/88991.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88991.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88991.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LSTM入门案例(时间序列预测)| pytorch实现

需求 假如我有一个时间序列,例如是前113天的价格数据(训练集),然后我希望借此预测后30天的数据(测试集),实际上这143天的价格数据都已经有了。这里为了简单,每一天的数据只有一个价…

WPS、Word加载项开发流程(免费最简版本)

文章目录1 加载项对比2 WPS 加载项2.1 本地开发2.1.1 准备开发环境2.1.2 新建 WPS 加载项项目2.1.3 运行项目2.2 在线部署2.2.1 编译项目2.2.2 部署项目2.2.3 生成分发文件2.2.4 部署分发文件2.3 安装加载项2.4 取消发布3 Word 加载项3.1 本地开发3.1.1 准备开发环境3.1.2 新建…

Flink SQL 性能优化实战

最近我们组在大规模上线Flink SQL作业。首先,在进行跑批量初始化完历史数据后,剩下的就是消费Kafka历史数据进行追数了。但是发现某些作业的追数过程十分缓慢,要运行一晚上甚至三四天才能追上最新数据。由于是实时数仓指标计算上线初期&#…

HTML 树结构(DOM)深入讲解教程

一、HTML 树结构的核心概念 1.1 DOM(文档对象模型)的定义 DOM(Document Object Model)是 W3C 制定的标准接口,允许程序或脚本(如 JavaScript)动态访问和更新 HTML/XML 文档的内容、结构和样式。…

用鼠标点击终端窗口的时候出现:0;61;50M0;61;50M0;62;50M0

在做aws webrtc viewer拉流压测的过程中,我本地打开了多个终端,用于连接EC2实例: 一个终端用于启动 ‘并发master脚本’、监控master端的cpu、mem;一个终端用于监控master端的带宽情况;一个终端用于监控viewer端的cpu、…

C++-linux 5.gdb调试工具

GDB调试工具 在C/C开发中,程序运行时的错误往往比编译错误更难定位。GDB(GNU Debugger)是Linux环境下最强大的程序调试工具,能够帮助开发者追踪程序执行流程、查看变量状态、定位内存错误等。本章将从基础到进阶,全面讲…

Update~Read PLC for Chart ~ Log By Shift To be... Alarm AI Machine Learning

上图~ 持续迭代 1、增加报警弹窗,具体到哪个值,双边规格具体是多少 2、实时显示当前值的统计特征,Max Min AVG ... import tkinter as tk from tkinter import simpledialog import time import threading import queue import logging from datetime import datet…

es的自定义词典和停用词

在 Elasticsearch 中,自定义词典是优化分词效果的核心手段,尤其适用于中文或专业领域的文本处理。以下是关于 ES 自定义词典的完整指南: 为什么需要自定义词典? 默认分词不足: ES 自带的分词器(如 Standard…

微算法科技技术突破:用于前馈神经网络的量子算法技术助力神经网络变革

随着量子计算和机器学习的迅猛发展,企业界正逐步迈向融合这两大领域的新时代。在这一背景下,微算法科技(NASDAQ:MLGO)成功研发出一套用于前馈神经网络的量子算法,突破了传统神经网络在训练和评估中的性能瓶颈。这一创新…

一文读懂循环神经网络(RNN)—语言模型+读取长序列数据(2)

目录 读取长序列数据 为什么需要 “读取长序列数据”? 读取长序列数据的核心方法 1. 滑动窗口(Sliding Window) 2. 分段截取(Segmentation) 3. 滚动生成(Rolling Generation) 4. 关键信息…

Oracle Virtualbox 虚拟机配置静态IP

Oracle Virtualbox 虚拟机配置静态IP VirtualBox的网卡,默认都是第一个不能自定义,后续新建的可以自定义。 新建NAT网卡、host主机模式网卡 依次点击:管理->工具->网络管理器新建host主机模式网卡 这个网卡的网段自定义,创建…

Linux RAID1 创建与配置实战指南(mdadm)

Linux RAID1 创建与配置实战指南(mdadm)一、RAID1 核心价值与实战目标RAID1(磁盘镜像) 通过数据冗余提供高可靠性:当单块硬盘损坏时,数据不丢失支持快速阵列重建读写性能略低于单盘(镜像写入开销…

MySQL数据库----函数

目录函数1,字符串函数2,数值函数3,日期函数4,流程函数函数 1,字符串函数 MySQL中内置了很多字符串函数 2,数值函数 3,日期函数 4,流程函数

1.2 vue2(组合式API)的语法结构以及外部暴露

vue2 vue3中可以写vue2的语法&#xff0c;vue2的结构像一个花盆里的根&#xff08;根组件App.vue&#xff09;&#xff0c;根上可以插上不同的枝杈和花朵&#xff08;组件&#xff09;。 组件的结构&#xff1a; // 这里写逻辑行为 <script lang"ts"> export d…

Swift 解 LeetCode 324:一步步实现摆动排序 II,掌握数组重排的节奏感

文章目录摘要描述题解答案题解代码&#xff08;Swift&#xff09;题解代码分析步骤一&#xff1a;排序数组步骤二&#xff1a;左右指针分段步骤三&#xff1a;按位置交错插入示例测试及结果示例 1示例 2示例 3&#xff08;边界情况&#xff09;时间复杂度分析空间复杂度分析总结…

使用SQLMAP的文章管理系统CMS的sql注入渗透测试

SQLMAP注入演示&#xff1a;抓包拿到Cookie:召唤sqlmap&#xff1a;sqlmap -u "http://192.168.1.99:8085/show.php?id34" --cookie "pma_langzh_CN; kbqug_admin_username2621-PL_LxhFjyVe43ZuQvht6MI5q0ZcpRVV5FI0pzQ6XR8; kbqug_siteid2621-PL_LxhFjyVe4yA5…

I3C通信协议核心详解

一、物理层与电气特性双线结构 SCL&#xff08;串行时钟线&#xff09;&#xff1a;主设备控制&#xff0c;支持 推挽&#xff08;Push-Pull&#xff09;输出&#xff08;高速模式&#xff09;和 开漏&#xff08;Open-Drain&#xff09;&#xff08;兼容I2C模式&#xff09;。…

Docker搭建Redis哨兵集群

Redis提供了哨兵机制实现主从集群下的故障转移&#xff0c;其中包含了对主从服务的检测、自动故障恢复和通知。 1.环境 centos7、redis6.2.4、MobaXterm 目的&#xff1a; 搭建redis的主从同步哨兵集群&#xff08;一主一从三哨兵&#xff09; 2.步骤 1.主从集群的搭建 主从…

暑假Python基础整理 --异常处理及程序调试

异常概念 在程序运行过程中&#xff0c;经常会遇到各种各样的错误&#xff0c;这些错误统称为“异常”。如下表是Python常见的异常与描述&#xff1a; 异常描述NameError尝试访问一个未声明的变量引发错误IndexError索引超出序列范围引发错误IndentationError缩进错误ValueErr…

k8s-高级调度(二)

目录 Taint(污点)与Toleration(容忍) Taint&#xff08;污点&#xff09;&#xff1a;节点的排斥标记 Toleration&#xff08;容忍&#xff09;&#xff1a;Pod的适配声明 与节点亲和性的对比 警戒(cordon)和转移(drain) Cordon&#xff1a;节点隔离&#xff08;阻止新 Po…