【网络协议】【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 的公钥来验证服务器证书的有效性 并获取服务器公钥

(通过 证书签名验证,客户端可以确认:1公钥的真实性:通过验证签名,客户端确保了服务器提供的公钥没有被篡改,并且该公钥确实属于服务器。2.服务器身份的真实性:通过证书中的其他信息(如服务器名称、域名等)以及 CA 的签名,客户端可以确信该服务器的公钥属于其身份所声明的实体。客户端通过服务器的公钥加密一段数据并发送给服务器,服务器使用自己的私钥解密这段数据。若解密成功,客户端便能进一步验证服务器是否控制着该公钥对应的私钥。)
(会检查数字签名(服务器会使用其私钥对一些重要的 TLS 握手消息(如 “ServerKeyExchange”)进行数字签名。)客户端收到这些签名后,会使用服务器证书中的公钥解密签名,得到哈希值(TLS 握手消息先摘要再使用私钥加密 此时使用公钥解密),客户端重新计算收到的消息的哈希值(摘要),并与解密后的哈希值进行比对。如果两个哈希值一致,说明消息在传输过程中没有被修改,确保了数据的完整性。(这里就是验证数据完整性 数字签名+摘要))。

3.客户端
生成一个“预主密钥”,并使用服务器的公钥对其进行加密,然后发送给服务器。生成会话密钥。这个会话密钥将用于加密接下来的通信。客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。

4.服务器
解密这个预主密钥,生成会话密钥:客户端和服务器使用之前交换的随机数(客户端随机数和服务器随机数)以及预主密钥来生成会话密钥。这个会话密钥将用于(AES对称加密)加密接下来的通信。

如何验证CA证书可信

首先,客户端会从服务器获取证书链。证书链通常包括服务器证书、一个或多个中间证书。
客户端首先会检查服务器证书的有效性,包括证书的有效期、证书的颁发机构等。
然后,客户端会使用 中间证书的公钥 来验证服务器证书的签名(如上图:证书签名验证)。
接着,客户端会检查中间证书的有效性,并使用根证书的公钥来验证中间证书的签名。
最后,客户端会检查根证书的有效性。由于根证书是自我签名的,所以客户端会使用根证书的公钥来验证根证书的签名。
如果所有的证书都通过了验证,那么证书链就被认为是有效的。如果任何一个证书没有通过验证,那么证书链就被认为是无效的。在这里插入图片描述
部分转自https://i-blog.csdnimg.cn/direct/ab9d5a5d087f42a18da1453774c0032e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【16届蓝桥杯寒假刷题营】第1期DAY5

5.依依的询问最小值 - 蓝桥云课 问题描述 依依有个长度为 n 的序列 a,下标从 1 开始。 她有 m 次查询操作,每次她会查询下标区间在 [li​,ri​] 的 a 中元素和。她想知道你可以重新排序序列 a,使得这 m 次查询的总和最小。 求你求出 m 次…

Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

本篇博主将带大家深入底层探秘系统是如何与磁盘进行相互交流的,配合精美配图,细节讲解来带大家深入探究(注:本篇文章建议了解磁盘内部物理结果组成及设计再进行阅读)。 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C…

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。 面向对象:注重找“参与者…

GeekHour

Linux Linux的是类Unix系统,作者是Linus,也是git的作者。符合GPL(General Public License)就可以Linux的使用、修改、再发布。 Linux四部分: 内核:驱动、内存管理、进程管理、文件系统、网络协议栈…。作…

学习golang语言时遇到的难点语法

作者是java选手,实习需要转go,记录学习go中遇到的一些与java不同的语法。 defer defer特性 1. 关键字 defer 用于注册延迟调用。 2. 这些调用直到 return 前才被执。因此,可以用来做资源清理。 3. 多个defer语句,按先进…

一个面向领域的直播平台开源!

面向教育等领域,二开后可以做视频会议等 在线直播平台 基于 Spring Boot 和 SRS 平台功能 视频直播 在线聊天 直播提醒 作业上传和批改 项目介绍了一个基于Spring Boot和SRS的在线直播平台,这个平台具备视频直播、在线聊天、直播提醒以及…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试(HTTP和HTTPS) HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头(Request Headers)示例请求标头 响应标头(Response Header…

Mysql约束(学习自用)

一、概述 注意: 1)多个约束之间用空格分开 二、外键约束 三、约束行为

linux-NFS网络共享存储服务配置

1.NFS服务原理 NFS会经常用到,用于在网络上共享存储,这样讲,你对NFS可能不太了解,举一个例子, 加入有三台机器A,B,C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些 图…

LabVIEW太赫兹二维扫描成像系统

使用LabVIEW设计太赫兹二维扫描成像系统。通过LabVIEW平台开发,结合硬件如太赫兹源、平移台、锁相放大器等,实现了高效、精准的成像功能。系统采用蛇形扫描方式,通过动态调整扫描参数,达到优化成像质量的目的。 ​ 项目背景 在非…

kafka学习笔记6 ACL权限 —— 筑梦之路

在Kafka中,ACL(Access Control List)是用来控制谁可以访问Kafka资源(如主题、消费者组等)的权限机制。ACL配置基于Kafka的kafka-acls.sh工具,能够管理对资源的读取、写入等操作权限。 ACL介绍 Kafka的ACL是…

ARM学习(42)CortexM3/M4 MPU配置

笔者之前学习过CortexR5的MPU配置,现在学习一下CortexM3/M4 MPU配置 1、背景介绍 笔者在工作中遇到NXP MPU在访问异常地址时,就会出现总线挂死,所以需要MPU抓住异常,就需要配置MPU。具体背景情况可以参考ARM学习(41)NXP MCU总线挂死,CPU could not be halted以及无法连…

Python----Python高级(正则表达式:语法规则,re库)

一、正则表达式 1.1、概念 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、 regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母&#xff0…

docker 使用远程镜像启动一个容器

使用前提: 首先你得安装docker,其次你得拥有一个远程镜像 docker run --name io_11281009 --rm -it -p 2233:22 -v .:/root/py -e ed25519_rootAAAAC3NzaC1lZDI1********Oy7zR7l7aUniR2rul ghcr.lizzie.fun/fj0r/io srv对上述命令解释: 1.docker run:…

SSM课设-学生管理系统

【课设者】SSM课设-学生管理系统 技术栈: 后端: SpringSpringMVCMybatisMySQLJSP 前端: HtmlCssJavaScriptEasyUIAjax 功能: 学生端: 登陆 学生信息管理 个人信息管理 老师端: 多了教师信息管理 管理员端: 多了班级信息管理 多了年级信息管理 多了系统用户管理

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章:三层架构和MVC 三层架构: 开发服务器端,一般基于两种形式,一种 C/S 架构程序,一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序,B/S 架构又分成了三层架构三层架构: 表现…

工程上LabVIEW常用的控制算法有哪些

在工程应用中,LabVIEW常用的控制算法有很多,它们广泛应用于自动化、过程控制、机器人、测试测量等领域。以下是一些常见的控制算法: 1. PID 控制 用途:PID(比例-积分-微分)控制是最常用的反馈控制算法&…

2024年博客之星主题创作|从零到一:我的技术成长与创作之路

2024年博客之星主题创作|从零到一:我的技术成长与创作之路 个人简介个人主页个人成就热门专栏 历程回顾初来CSDN:怀揣憧憬,开启创作之旅成长之路:从平凡到榜一的蜕变持续分享:打卡基地与成长复盘四年历程&a…

【2024年华为OD机试】(B卷,200分)- 战场索敌 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 有一个大小为 N * M 的战场地图,被墙壁 # 分隔成大小不同的区域。上下左右四个方向相邻的空地 . 属于同一个区域,只有空地上可能存在敌人 E。请求出地图上总共有多少区域里的敌人数小于 K。 输入描述 第一行输入为 N, M, K&…

机器学习(5):支持向量机

1 介绍 支持向量机(Support Vector Machine,简称 SVM)是一种监督学习算法,主要用于分类和回归问题。SVM 的核心思想是找到一个最优的超平面,将不同类别的数据分开。这个超平面不仅要能够正确分类数据,还要使…