【网络协议】【http】【https】RSA+AES-TLS1.2

devtools/2025/1/22 21:38:53/
http://www.w3.org/2000/svg" style="display: none;">

httphttpsRSAAESTLS12_0">【网络协议】【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" alt="在这里插入图片描述" />
部分转自https://i-blog.csdnimg.cn/direct/ab9d5a5d087f42a18da1453774c0032e.png


http://www.ppmy.cn/devtools/152693.html

相关文章

如何使用Python爬虫获取微店商品详情:代码示例与实践指南

在电商领域,获取商品详情数据对于商家和开发者来说至关重要。微店作为国内知名的电商平台,提供了丰富的商品数据接口,方便开发者通过API调用获取商品详情。本文将详细介绍如何使用Python爬虫获取微店商品详情,并提供具体的代码示例…

MATLAB语言的文件操作

MATLAB语言的文件操作 1. 引言 MATLAB是一种高性能的语言,广泛应用于数学计算、数据分析和可视化等领域。在实际的应用中,经常需要对文件进行操作,包括读取文件、写入文件以及对文件进行修改等。本文将详细探讨MATLAB的文件操作&#xff0c…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件,最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型,具备高吞吐、低延迟、高可用和强一致性的特点,适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …

Linux测试处理fps为30、1920*1080、一分钟的视频性能

前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…

【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序

文章目录 Ⅰ. Linux 软件包管理器 yum一、什么是软件包?二、查找软件包三、安装与卸载软件包 拓展:lrzsz简介拓:配置 yum 源路径的方法Ⅱ. Linux开发工具vim编辑器一、vim 的基本概念二、vim 的基本操作三、vim 命令模式的操作四、vim 底行模…

【大厂面试题】软件测试面试题整理(附答案)

以下面试题为最近大厂面试整理的内容,可供应届生参考。 目录 1. 实习期间用python写过哪些东西? 2. Opencv如何使? 3. 用Python写过什么,在大学期间是必修语言吗,当时考了多少分? 4. Python学下来比较困…

Visual Studio2019调试DLL

1、编写好DLL代码之后,对DLL项目的属性进行设置,选择待注入的DLL,如下图所示 2、生成DLL文件 3、将DLL设置为启动项目之后,按F5启动调试。弹出选择注入的exe的界面之后,使用代码注入器注入步骤2中生成的dll&#xff0…

网络安全技术深度解析与实践案例

网络安全技术深度解析与实践案例 随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分。然而,网络空间的开放性也带来了各种安全隐患。为了保障网络和数据的安全,网络安全技术显得尤为重要。本文将深入探讨网络安全技术的核心要素,并通过Python代码示例展示其具体…