http、https、TLS、证书原理理解,对称加密到非对称加密问题,以及对应的大致流程

http 超文本传输协议

存在问题:

  1. 安全性、隐私性、数据完整性

  2. 易被中间人(黑客之类的)对数据进行劫持、篡改、隐私泄露

引出了=====================================================================

https (source)

  1. http 在网络模型中的应用层
    Application => transport => internet => network Access
  2. 所有经由网络中的数据都是 以 最原始状态传输的,一旦被截获,内容会被轻易获取

https中引入了 =====================================================================

TLS协议

的概念=====================================================================

  1. 专门对数据进行加密解密操作
  2. 客户端产生数据后,会通过TLS进行数据加密,传到对端,通过TLS对数据进行解密
  3. 将解密后的 数据传输给http服务的

—网络中 传输的 是加密后的数据

TLS 和 SSL 对比

  1. TLS(transport layer security):使用广泛的网络传输加密协议,规定了如何为在网络中传输的数据进行加密和解密,确保数据安全性
  2. SSL(Secure Socket Layer) ===> SSL.3.0版本 共享给IETF组织,最终重命名为TLS
  3. SSL 为 TLS 前身

对称加密

TLS 采用哪种方式对数据进行加密解密的

对称加密

  • 指通讯双方更具协商好的算法,生成一个唯一密钥
  • 该密钥用于同时对数据进行加解密操作

大致流程

  1. 访问某个服务时(已经三次握手了),会先向服务端发送个 hello请求,请求中包含了客户端所支持的 TSL版本 和加密函数 和 加密算法等信息
  2. 服务器接收请求,选取最优TSL协议、加密函数、加密算法,返回给客户端
  3. 客户端接收到响应后,先随机生成一段字符串(预主密钥),通过使用加密的函数和算法生成一组密钥(会话密钥)
  4. 同时客户端把生成的 预主密钥 发送给服务端,并且告知生成对称密钥的算法和信息。
  5. 服务端通过使用客户端发送过来的 加密的函数和算法生成一组密钥(会话密钥)

名词

预主密钥: 客户端随机生成的一段字符串

会话密钥(对称密钥): 预主密钥 结合服务端返回的TLS协议、加密函数、加密算法 生成

问题

  1. 无法保证 预主密钥安全传输给服务端
  2. 中间人也能拿到客户端发送过来的 预主密钥 和 TLS协议、加密算法、函数等信息,生成对应的 会话密钥

怎么解决 预主密钥安全传输===================================================

引入了=====================================================================

非对称加密(PKI)

  • 公钥: 用于加密,对外开发,所有人都能获取
  • 私钥: 用于解密,只有拥有者知道

public key infrastructure

示例

  1. 客户端 向服务传输数据时, 服务端首先会生成 公钥私钥对
  2. 服务器将公钥发送给客户端,还有合适的TLS 协议, 加密算法等信息
  3. 客户端随机生成一串字符串(预主密钥),预主密钥通过 加密算法生成 对应的 会话密钥
  4. 客户端使用服务器发送的公钥 对 预主密钥进行加密。并且发送给服务端。还有 TLS 、加密算法等信息。
  5. 服务端通过自己的私钥对 加密过的预主密钥进行解密。得到正确的预主密钥,通过加密算法得到 会话密钥。

问题

  1. 无法保证客户端获取的公钥真的是 目标服务提供的。
  2. 客户端获取到公钥真的是目标服务所颁发的吗?
举例
  1. 服务器的公钥、密钥对被中间人截取。中间人提供自己的公钥私钥对给客户端。客户端不知道
  2. 客户端随机生成 预主密钥,使用 中间人提供的公钥进行加密;使用中间人提供的加密算法生成 会话密钥
  3. 中间人拿到客户端发来的加密后的预主密钥,用自己的私钥进行解密,拿到了正确的 预主密钥。
  4. 中间人用预主密钥生成对应的会话密钥(中间人和客户端之间的)
  5. 中间人用服务器的公钥对 预主密钥进行加密;用服务器提供的加密算法生成会话密钥(中间人和服务器之间的)
  6. 服务器拿到中间人提供的加密后的预主密钥,用自己的私钥进行解密拿到 预主密钥;进行会话密钥生成。
  7. 这样中间人就能对两边通讯内容继续截取、监听了

为解决这问题=================================================================
引入了=====================================================================

证书CSR

-Digital Certification 证书颁发机构(CA)所签发

  • 唯一,表示一个站点的身份信息;网站的身份证
  • 证书:内容包含–证书的申请者、证书的颁发机构、证书的有效起始结束信息、证书的指纹(公钥)

证书的申请流程

  • 向CA机构进行申请,—签发签证。
    网站申请证书时
  1. 申请者需要创建一个证书申请请求文件(SCR)Certificate Signing Request
  2. 申请证书中通常要包含:网站域名、IP地址、公司名称、地理位置、邮箱地址、公钥信息等信息
  3. 发送给 CA,ca对信息审核,审核完成后颁发给申请者,申请者把证书部署在web服务即可

证书的工作原理

1. 证书指纹:

  1. 用户唯一表示证书(确保证书的完整性)
  • hash 加密: 单项加密算法

    • 特性:不可逆、唯一性

    生成证书时,会对证书的内容和公钥分别进行hash计算,作为证书指纹附加到证书中,同时说明使用的hash算法

  1. 浏览器从服务端获取到证书后会使用相同的算法对证书进行hash 算法。将计算后的结果与附加在证书的中的指纹做对比
  2. 如果一致,证明证书在网络传输过程中没有被人所截获并篡改内容
  3. 实现对证书正确性的核实(但无法保证证书是合法机构颁发的。也可能是一些伪造证书)
问题
  1. 还需要核实证书的真实性,确定证书真是由证书中所描述的CA所颁发的,而不是伪造的。

通过证书签名实现=====================================================================

2. 数字签名(验证证书的真实性)

  • 通过 KPI(非对称加密)来进行加密和解密进行验证证书的真伪

  • CA使用私钥进行加密,公钥进行解密

  • CA生成好证书后,会对证书进行 私钥加密,并附加到证书中发送给服务器

  • 客户端网站获取到证书后。会使用 CA对应的公钥 对其进行解密,一但解密成功。就代表 证书确实是CA机构颁发的

问题

浏览器CA的公钥在那儿呢,怎么安全获取CA公钥呢,如何保证公钥不被中间人替换

就要知道=============================================================

预安装

  1. 机构对证书进行签名时,不仅用到私钥,还会用到另外一个证书-根证书

    • 作用;为其他证书进行签名,每个操作系统都会维护一个根证书库:默认浏览器已经安装好了受信人的CA根证书
  2. 验证证书中的数字签名时,只要找到对应的CA根证书即可(避免网络传输时被窃听,掉包的风险)

=============

大概流程

  1. 客户端请求时(三次握手后),发送hello 请求,携带 支持的TLS、加密算法
  2. 服务端响应 服务端采用的 TLS协议, 解密算法;同时发送 证书给客户端
  3. 客户端验证证书指纹、签名确定证书的真实性。
  4. 客户端通过CA提供的公钥从证书中提起出服务器的公钥(保证公钥一定是目标服务器的)
  5. 客户端生成预主密钥,使用 公钥进行加密,发送给服务器,携带加密算法等信息;预主密钥使用加密算法生成 会话密钥
  6. 服务器使用自己的私钥 对 加密的预主密钥解密,拿到正确的预主密钥;使用加密算法生成 对应的会话密钥。
  7. 开始真正传输数据,并且这些数据进行会话密钥加密。

1-6之间的过程(不包括三次握手) 俗称为 TLS握手。

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

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

相关文章

深度补全网络:如CSPN++填补稀疏点云的深度信息

深度补全网络:CSPN填补稀疏点云的深度信息 深度补全(Depth Completion)是计算机视觉中的一个重要任务,旨在从稀疏的深度测量中恢复密集的深度图。CSPN(Convolutional Spatial Propagation Network)是这一领域的前沿方法之一。 CSPN概述 CSPN是对原始CSPN…

QT网络拓扑图绘制实验

前言 在网络通讯中,我qt常用的是TCP或者UDP协议,就比方说TCP吧,一台服务器有时可能会和多台客户端相连接,我之前都是处理单链接情况,最近研究图结构的时候,突然就想到了这个问题。那么如何解决这个问题呢&…

DNS主从同步实验

dns域名解析原理 实验步骤1、主dns要完成dns解析:192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…

知识了解03——怎么解决使用npm包下载慢的问题?

1、为什么使用npm下载包会下载的慢 因为使用npm下载包时,默认使用国外服务器进行下载,此时的网络传输需要经过漫长的海底电缆,因此下载速度会变慢 2、怎么解决?(切换镜像源) (1)方…

在Ubuntu系统中安装和升级RabbitVCS

在Ubuntu系统中安装和升级RabbitVCS 目前在ubuntu中使用svn的GUI工具,已经安装了。想升级一下。 当前遇到的问题是,我想用它看看我当前的代码对应的版本号,然后再决定是否update。但是,好像我看不出来。根本不如在windows使用To…

cv::dnn::NMSBoxes和nms-free的比较

1. 原理与目标 cv::dnn::NMSBoxes 基于传统的非极大值抑制(NMS)算法,通过交并比(IoU)筛选重叠框,保留置信度最高的框,抑制冗余检测。支持变体如 Soft-NMS(通过降低分数而非直接抑制&…

React-useImperativeHandle (forwardRef)

我们会遇到这样的场景:某个组件想要暴露一些方法,来供外部组件来调用。例如我们在开发form表单的时候,就需要把设置表单值、重置值、提交等方法暴露给外部使用。会有如下代码: import { forwardRef } from react;const Form for…

多人五子棋联机对战平台 测试报告

目录 项目介绍 测试用例设计 部分功能测试示例 自动化测试 测试范围 排除范围 自动化测试目录​编辑 执行全部自动化测试用例 性能说明 总结 性能测试 结果分析 测试总结 项目介绍 该项目基于WebSocket实现实时通信,采用SSM框架构建在线五子棋多人联机…

JAVAEE(网络原理—UDP报头结构)

我们本篇文章要讲的是UDP的报头结构以及注意事项。 下面呢,我先说一下UDP是什么? 1.UDP是什么? UDP是一种网络协议。网络协议是计算机网络中,为了使不同设备之间能够准确、高效地进行数据交换和通信,而预先制定的一…

STM32学习笔记汇总

所有学习资料均参考b站江科大,和铁山羊 一.创建工程(比较麻烦,而且时间长了就容易忘记) 二.点灯大师(成功的第一步) 三.不同的烧录器使用(Jlink-stlink)

【MySQL】SQL语句在MySQL中的执行过程?主要存储引擎区别?

MySQL SQL语句执行过程详解 作为面试官,我来详细剖析一条SQL语句在MySQL中的完整执行过程,这是每个后端开发者都应该掌握的核心知识。 一、连接阶段 建立连接 客户端通过TCP/IP协议与MySQL服务器建立连接(默认3306端口)服务器验证用户名、密码和权限…

【记录】服务器安装ffmpeg

前言 因为项目中需要用到 ffmpeg 进行图像的一些操作,本文记录下在服务器安装 ffmpeg 的全过程,还是具有一定挑战性的。 系统详情 本文使用的操作系统详情如下 通过 命令 cat /etc/os-release 获取 虽然操作系统为 Rocky Linux,但安装过程是通用的,因为本文记录的是从源代码…

Django之modelform使用

Django新增修改数据功能优化 目录 1.新增数据功能优化 2.修改数据功能优化 在我们做数据优化处理之前, 我们先回顾下传统的写法, 是如何实现增加修改的。 我们需要在templates里面新建前端的页面, 需要有新增还要删除, 比如说员工数据的新增, 那需要有很多个输入框, 那html…

HTML5 应用程序缓存:原理、实践与演进

在 Web 技术的发展历程中,HTML5 引入的应用程序缓存(Application Cache)曾是提升 Web 应用离线体验的重要技术。它允许 Web 应用进行缓存,使用户在没有因特网连接时也能访问应用,为 Web 应用带来了显著的优势。然而&am…

【问题笔记】解决python虚拟环境运行脚本无法激活问题

【问题笔记】解决python虚拟环境运行脚本无法激活问题 错误提示问题所在解决方法**方法 1:临时更改执行策略****方法 2:永久更改执行策略** **完整流程示例** 错误提示 PS F:\PythonProject\0419graphrag-local-ollama-main> venv1\Scripts\activate…

解决echarts饼图label显示不全的问题

解决办法 添加如下配置: labelLayout: {hideOverlap: false},

Pandas数据合并与重塑

在数据处理与分析的领域中,Pandas 无疑是一颗璀璨的明星。它提供了丰富且强大的功能,让我们能够轻松应对各种复杂的数据操作。其中,数据合并与重塑是两个至关重要的环节,它们能够帮助我们整合不同来源的数据,调整数据的…

Nodejs数据库单一连接模式和连接池模式的概述及写法

概述 单一连接模式和连接池模式是数据库连接的两种主要方式: 单一连接模式: 优点:实现简单,适合小型应用缺点:每次请求都需要创建新连接,连接创建和销毁开销大,并发性能差,容易出…

将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据

文章目录 项目简介GiteeMCP 简介环境要求项目代码核心实现代码MCP 服务端(批量注册 Tool)MCP 客户端(调用 DeepSeek) DeepSeek APIDockersse 连接ws 连接(推荐)http 连接 Cherry Studio配置模型配置 MCP调用…

【HDFS入门】HDFS性能调优实战:压缩与编码技术深度解析

目录 1 HDFS性能调优概述 2 HDFS压缩技术原理与应用 2.1 常见压缩算法比较 2.2 压缩流程架构 2.3 压缩配置实践 3 列式存储编码技术 3.1 ORC与Parquet对比 3.2 ORC文件结构 3.3 Parquet编码流程 4 性能调优实战建议 4.1 压缩选择策略 4.2 编码优化技巧 5 性能测试…