【网络协议】【http】【https】RSA+AES-TLS1.2
【网络协议】【http】【https】RSA+AES-TLS1.2
https并不是一个协议 而是在传输层之间添加了SSL/TLS协议
TLS 协议用于应用层协议(如 HTTP)和传输层(如 TCP)之间,增加了一层安全性来解决 HTTP 存在的问题,HTTPS 就是使用 TLS 加密的 HTTP,确保数据在客户端和服务器之间的安全传输。
(这几个后面详细说一下)
| TLS解决了HTTP存在的问题 | 解决方式 |
|---|---|
| 明文传输数据存在窃听风险 | 混合加密 |
| 无法证明数据完整性,数据可能被篡改。无法证明数据可靠 | 摘要+数字签名 |
| 验证数据传输者身份 | CA数字证书 |
TLS 的主要特点:
加密:TLS 确保数据在传输过程中被加密,防止被未授权的第三方窃取或篡改。
数据完整性:TLS 使用数字签名和摘要(哈希算法)来验证数据在传输过程中未被篡改。证明数据来源可靠。
身份认证:TLS 使用证书认证机制,保证连接的服务器是合法的,避免中间人攻击。
TLS 握手过程:建立安全连接的过程涉及多个步骤:
客户端向服务器发送支持的 TLS 版本和密码套件(加密算法)。
服务器响应客户端,选择一种密码套件并返回自己的公钥,通常会嵌入在由 CA(证书授权中心)签名的证书中,客户端用这个公钥来验证服务器身份,并交换加密密钥。
客户端和服务器进一步交换加密消息,建立共享的密钥,这个密钥会在会话中用来加密通信。
握手的阶段:
在不同版本的 TLS 中,握手过程的步骤数量不同:
TLS 1.2 通常包含多个步骤,过程较为复杂。
TLS 1.3 通过简化握手过程,减少了握手的步骤,使其更加高效,只有两个主要阶段。
安全元素:
基于RAS+AES的TLS1.2
1.客户端发起请求
首先,客户端向服务器发送一个 “ClientHello” 消息,这个消息中包括:
TLS 版本:客户端支持的最大 TLS 版本。
密码套件:密钥交换算法(非对称加密)+签名算法(非对称加密且私钥加密公钥解密)+对称加密算法(后续数据传输)+摘要算法(hash)
客户端随机数:一个由客户端生成的随机数,用于后续生成会话密钥。
2.服务器响应
服务器收到 “ClientHello” 后,会返回一个 “ServerHello” 消息(ServerHello是明文传输的),其中包括:
TLS 版本:服务器选择的 TLS 版本。
密码套件:密钥交换算法+签名算法+对称加密算法+摘要算法
服务器随机数:服务器生成的随机数。
服务器证书:服务器随后会发送自己的证书(通常是由一个受信任的证书颁发机构 CA 签名的),这个证书中包含了服务器的公钥证明服务器的身份
(如果是基于DH或ECDHE,服务器还会向客户端发送**“ServerKeyExchange消息”的数字签名**,确保数据完整性)。
客户端验证服务器:客户端使用 CA 的公钥来验证服务器证书的有效性 并获取服务器公钥
(会检查数字签名(服务器会使用其私钥对一些重要的 TLS 握手消息(如 “ServerKeyExchange”)进行数字签名。)客户端收到这些签名后,会使用服务器证书中的公钥解密签名,得到哈希值(TLS 握手消息先摘要再使用私钥加密 此时使用公钥解密),客户端重新计算收到的消息的哈希值(摘要),并与解密后的哈希值进行比对。如果两个哈希值一致,说明消息在传输过程中没有被修改,确保了数据的完整性。(这里就是验证数据完整性 数字签名+摘要))。
3.客户端
生成一个“预主密钥”,并使用服务器的公钥对其进行加密,然后发送给服务器。生成会话密钥。这个会话密钥将用于加密接下来的通信。客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。
4.服务器
解密这个预主密钥,生成会话密钥:客户端和服务器使用之前交换的随机数(客户端随机数和服务器随机数)以及预主密钥来生成会话密钥。这个会话密钥将用于(AES对称加密)加密接下来的通信。
如何验证CA证书可信
首先,客户端会从服务器获取证书链。证书链通常包括服务器证书、一个或多个中间证书。
客户端首先会检查服务器证书的有效性,包括证书的有效期、证书的颁发机构等。
然后,客户端会使用 中间证书的公钥 来验证服务器证书的签名(如上图:证书签名验证)。
接着,客户端会检查中间证书的有效性,并使用根证书的公钥来验证中间证书的签名。
最后,客户端会检查根证书的有效性。由于根证书是自我签名的,所以客户端会使用根证书的公钥来验证根证书的签名。
如果所有的证书都通过了验证,那么证书链就被认为是有效的。如果任何一个证书没有通过验证,那么证书链就被认为是无效的。
部分转自https://i-blog.csdnimg.cn/direct/ab9d5a5d087f42a18da1453774c0032e.png
相关文章:
【网络协议】【http】【https】RSA+AES-TLS1.2
【网络协议】【http】【https】RSAAES-TLS1.2 https并不是一个协议 而是在传输层之间添加了SSL/TLS协议 TLS 协议用于应用层协议(如 HTTP)和传输层(如 TCP)之间,增加了一层安全性来解决 HTTP 存在的问题,H…...
【数据库】MySQL数据库之约束与多表查询
约束 1.概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据目的:保证数据库中数据的正确性、有效性,完整性和一致性分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表…...
【Pandas】pandas Series dot
Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…...
02UML图(D2_行为图)
目录 学习前言 ---------------------------------- 讲解一:活动图 ---------------------------------- 讲解二:用例图 ---------------------------------- 讲解三:状态机图 ---------------------------------- 讲解四:…...
Kali环境变量技巧(The Environment Variable Technique Used by Kali
Kali环境变量技巧 朋友们好,我们今天继续更新《黑客视角下的Kali Linux的基础与网络管理》中的管理用户环境变量。为了充分利用我们的黑客操作系统Kali Linux,我们需要理解和善于使用环境变量,这样会使我们的工具更具便利,甚至具…...
【C++】如何从源代码编译红色警戒2地图编辑器
【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库,已经包含三方库。 一、运行效果:二、源代码来源及编程语言:三、环境搭建:安装红警2安装VS2022下载代码,源代码其实不太多,…...
安路FPGA开发工具TD:问题解决办法 及 Tips 总结
安路科技(Anlogic)是一家专注于高性能、低功耗可编程逻辑器件(FPGA)设计和生产的公司。其提供的开发工具TD(TangDynasty)是专门为安路FPGA系列产品设计的集成开发环境(IDE)。以下是对…...
【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】
本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…...
IDEA2023版中TODO的使用
介绍:TODO其实本质上还是注释,只不过加上了TODO这几个字符,可以让使用者快速找到。 注意:在类、接口等文件中,注释是使用// 即:// TODO 注释内容 在配置文件中,注释是使用# 即:# TO…...
windows 搭建flutter环境,开发windows程序
环境安装配置: 下载flutter sdk https://docs.flutter.dev/get-started/install/windows 下载到本地后,随便找个地方解压,然后配置下系统环境变量 编译windows程序本地需要安装vs2019或更新的开发环境 主要就这2步安装后就可以了࿰…...
支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节
支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘-CSDN博客 支持向量机算法(二):层层拆解,精读公式每一处细节-CSDN博客 支持向量机算法(一)、算法࿰…...
一文读懂iOS中的Crash捕获、分析以及防治
Crash系统性总结 Crash捕获与分析Crash收集符号化分析 Crash类别以及解法分析子线程访问UI而导致的崩溃unrecognized selector send to instance xxxKVO crashKVC造成的crashNSTimer导致的Crash野指针Watch Dog超时造成的crash其他crash待补充 参考文章: 对于iOS端开…...
代码随想录刷题day11|(链表篇)206.翻转链表
目录 一、链表理论基础 二、翻转链表思路 双指针解法 递归解法 三、相关算法题目 四、总结 一、链表理论基础 代码随想录 (programmercarl.com) 二、翻转链表思路 两种方法:双指针解法和递归解法 双指针解法 首先定义一个指针curr,初始化为原…...
【STM32-学习笔记-8-】I2C通信
文章目录 I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元① 起始条件② 终止条件③ 发送一个字节④ 接收一个字节⑤ 发送应答⑥ 接收应答 Ⅲ、IIC时序① 指定地址写② 当前地址读③ 指定地址读 Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地…...
2025年1月17日(点亮三色LED)
系统信息: Raspberry Pi Zero 2W 系统版本: 2024-10-22-raspios-bullseye-armhf Python 版本:Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标:…...
ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本
本系列为个人学习 ASP .NET Core学习全过程记录,基于.NET 9 和 VS2022 ,实现前后端分离项目基础框架搭建和部署,以简单、易理解为主,注重页面美观度和后台代码简洁明了,可能不会使用过多的高级语法和扩展,后…...
mysql-5.7.18保姆级详细安装教程
本文主要讲解如何安装mysql-5.7.18数据库: 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图,该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件,文件内容及各配置项内容如下图,需要先将配置项【skip-grant-tab…...
RK3588平台开发系列讲解(NPU篇)NPU 驱动的组成
文章目录 一、NPU 驱动组成二、查询 NPU 驱动版本三、查询 rknn_server 版本四、查询 librknn_runtime 版本沉淀、分享、成长,让自己和他人都能有所收获!😄 一、NPU 驱动组成 NPU 驱动版本、rknn_server 版本、librknn_runtime 版本以及 RKNN Toolkit 版本的对应关系尤为重…...
ESP32学习笔记_FreeRTOS(6)——Event and Notification
摘要(From AI): 这篇博客详细介绍了 FreeRTOS 中的事件组和任务通知机制,讲解了事件组如何通过位操作实现任务间的同步与通信,以及任务如何通过通知机制进行阻塞解除和数据传递。博客提供了多个代码示例,展示了如何使用事件组和任务通知在多任…...
力扣-数组-350 两个数组的交集Ⅱ
解析 与刚刚的《两个数组的交集》一样,只是这道题允许重复,将上一题的set去除即可。 代码 class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;int index1 …...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
