http、https、TLS、证书原理理解,对称加密到非对称加密问题,以及对应的大致流程
http 超文本传输协议
存在问题:
-
安全性、隐私性、数据完整性
-
易被中间人(黑客之类的)对数据进行劫持、篡改、隐私泄露
引出了=====================================================================
https (source)
- http 在网络模型中的应用层
Application => transport => internet => network Access - 所有经由网络中的数据都是 以 最原始状态传输的,一旦被截获,内容会被轻易获取
https中引入了 =====================================================================
TLS协议
的概念=====================================================================
- 专门对数据进行加密解密操作
- 客户端产生数据后,会通过TLS进行数据加密,传到对端,通过TLS对数据进行解密
- 将解密后的 数据传输给http服务的
—网络中 传输的 是加密后的数据
TLS 和 SSL 对比
- TLS(transport layer security):使用广泛的网络传输加密协议,规定了如何为在网络中传输的数据进行加密和解密,确保数据安全性
- SSL(Secure Socket Layer) ===> SSL.3.0版本 共享给IETF组织,最终重命名为TLS
- SSL 为 TLS 前身
对称加密
TLS 采用哪种方式对数据进行加密解密的
对称加密
- 指通讯双方更具协商好的算法,生成一个唯一密钥
- 该密钥用于同时对数据进行加解密操作
大致流程
- 访问某个服务时(已经三次握手了),会先向服务端发送个 hello请求,请求中包含了客户端所支持的 TSL版本 和加密函数 和 加密算法等信息
- 服务器接收请求,选取最优TSL协议、加密函数、加密算法,返回给客户端
- 客户端接收到响应后,先随机生成一段字符串(预主密钥),通过使用加密的函数和算法生成一组密钥(会话密钥)
- 同时客户端把生成的 预主密钥 发送给服务端,并且告知生成对称密钥的算法和信息。
- 服务端通过使用客户端发送过来的 加密的函数和算法生成一组密钥(会话密钥)
名词
预主密钥: 客户端随机生成的一段字符串
会话密钥(对称密钥): 预主密钥 结合服务端返回的TLS协议、加密函数、加密算法 生成
问题
- 无法保证 预主密钥安全传输给服务端
- 中间人也能拿到客户端发送过来的 预主密钥 和 TLS协议、加密算法、函数等信息,生成对应的 会话密钥
怎么解决 预主密钥安全传输===================================================
引入了=====================================================================
非对称加密(PKI)
- 公钥: 用于加密,对外开发,所有人都能获取
- 私钥: 用于解密,只有拥有者知道
public key infrastructure
示例
- 客户端 向服务传输数据时, 服务端首先会生成 公钥私钥对
- 服务器将公钥发送给客户端,还有合适的TLS 协议, 加密算法等信息
- 客户端随机生成一串字符串(预主密钥),预主密钥通过 加密算法生成 对应的 会话密钥
- 客户端使用服务器发送的公钥 对 预主密钥进行加密。并且发送给服务端。还有 TLS 、加密算法等信息。
- 服务端通过自己的私钥对 加密过的预主密钥进行解密。得到正确的预主密钥,通过加密算法得到 会话密钥。
问题
- 无法保证客户端获取的公钥真的是 目标服务提供的。
- 客户端获取到公钥真的是目标服务所颁发的吗?
举例
- 服务器的公钥、密钥对被中间人截取。中间人提供自己的公钥私钥对给客户端。客户端不知道
- 客户端随机生成 预主密钥,使用 中间人提供的公钥进行加密;使用中间人提供的加密算法生成 会话密钥
- 中间人拿到客户端发来的加密后的预主密钥,用自己的私钥进行解密,拿到了正确的 预主密钥。
- 中间人用预主密钥生成对应的会话密钥(中间人和客户端之间的)
- 中间人用服务器的公钥对 预主密钥进行加密;用服务器提供的加密算法生成会话密钥(中间人和服务器之间的)
- 服务器拿到中间人提供的加密后的预主密钥,用自己的私钥进行解密拿到 预主密钥;进行会话密钥生成。
- 这样中间人就能对两边通讯内容继续截取、监听了
为解决这问题=================================================================
引入了=====================================================================
证书CSR
-Digital Certification 证书颁发机构(CA)所签发
- 唯一,表示一个站点的身份信息;网站的身份证
- 证书:内容包含–证书的申请者、证书的颁发机构、证书的有效起始结束信息、证书的指纹(公钥)
证书的申请流程
- 向CA机构进行申请,—签发签证。
网站申请证书时
- 申请者需要创建一个证书申请请求文件(SCR)Certificate Signing Request
- 申请证书中通常要包含:网站域名、IP地址、公司名称、地理位置、邮箱地址、公钥信息等信息
- 发送给 CA,ca对信息审核,审核完成后颁发给申请者,申请者把证书部署在web服务即可
证书的工作原理
1. 证书指纹:
- 用户唯一表示证书(确保证书的完整性)
-
hash 加密: 单项加密算法
- 特性:不可逆、唯一性
生成证书时,会对证书的内容和公钥分别进行hash计算,作为证书指纹附加到证书中,同时说明使用的hash算法
- 浏览器从服务端获取到证书后会使用相同的算法对证书进行hash 算法。将计算后的结果与附加在证书的中的指纹做对比
- 如果一致,证明证书在网络传输过程中没有被人所截获并篡改内容
- 实现对证书正确性的核实(但无法保证证书是合法机构颁发的。也可能是一些伪造证书)
问题
- 还需要核实证书的真实性,确定证书真是由证书中所描述的CA所颁发的,而不是伪造的。
通过证书签名实现=====================================================================
2. 数字签名(验证证书的真实性)
-
通过 KPI(非对称加密)来进行加密和解密进行验证证书的真伪
-
CA使用私钥进行加密,公钥进行解密
-
CA生成好证书后,会对证书进行 私钥加密,并附加到证书中发送给服务器
-
客户端网站获取到证书后。会使用 CA对应的公钥 对其进行解密,一但解密成功。就代表 证书确实是CA机构颁发的
问题
浏览器CA的公钥在那儿呢,怎么安全获取CA公钥呢,如何保证公钥不被中间人替换
就要知道=============================================================
预安装
-
机构对证书进行签名时,不仅用到私钥,还会用到另外一个证书-根证书
- 作用;为其他证书进行签名,每个操作系统都会维护一个根证书库:默认浏览器已经安装好了受信人的CA根证书
-
验证证书中的数字签名时,只要找到对应的CA根证书即可(避免网络传输时被窃听,掉包的风险)
=============
大概流程
- 客户端请求时(三次握手后),发送hello 请求,携带 支持的TLS、加密算法
- 服务端响应 服务端采用的 TLS协议, 解密算法;同时发送 证书给客户端
- 客户端验证证书指纹、签名确定证书的真实性。
- 客户端通过CA提供的公钥从证书中提起出服务器的公钥(保证公钥一定是目标服务器的)
- 客户端生成预主密钥,使用 公钥进行加密,发送给服务器,携带加密算法等信息;预主密钥使用加密算法生成 会话密钥
- 服务器使用自己的私钥 对 加密的预主密钥解密,拿到正确的预主密钥;使用加密算法生成 对应的会话密钥。
- 开始真正传输数据,并且这些数据进行会话密钥加密。
1-6之间的过程(不包括三次握手) 俗称为 TLS握手。
相关文章:
http、https、TLS、证书原理理解,对称加密到非对称加密问题,以及对应的大致流程
http 超文本传输协议 存在问题: 安全性、隐私性、数据完整性 易被中间人(黑客之类的)对数据进行劫持、篡改、隐私泄露 引出了 https (source) http 在网络模型中的应用层 Application > transport > inter…...
捋一遍Leetcode【hot100】的二叉树专题
二叉树专题 除了后面两个,都挺简单 二叉树的中序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int …...
[安全实战]Python程序打包为EXE的安全加固全攻略(加密+混淆+签名)
Python程序打包为EXE的安全加固全攻略 (加密+混淆+签名:三位一体的Python程序保护体系) 摘要 本文深度解析Python程序打包为EXE的全流程安全防护方案,涵盖加密算法选择、代码混淆技术、反逆向工程等核心安全策略。通过典型攻击防护方案、商业级加固方案对比,打造企业级…...
【测试文档】项目测试文档,测试管理规程,测试计划,测试文档模版,软件测试报告书(Word)
原件获取列表: 系统测试方案-2.docx B-Web安全服务渗透测试模板.docx 压力测试报告.docx安全测试用例及解析.docx 测试计划.doc 测试需求规范.doc 测试需求指南.docx 测试用例设计白皮.doc 单元测试报告模板.doc 单元测试计划模板.doc 回归测试指南.doc 集成测试报…...
Linux的联网网络管理攻略
RHEL9版本特点 在RHEL7版本中,同时支持network.service和NetworkManager.service(简称NM)。 在RHEL8上默认只能通过NM进行网络配置,包括动态ip和静态ip,若不开启NM,否则无法使用网络RHEL8依然支持network.service&am…...
Zookeeper三台服务器三节点集群部署(docker-compose方式)
1. 准备工作 - 服务器:3 台服务器,IP 地址分别为 `10.10.10.11`、`10.10.10.12`、`10.10.10.13`。 - 安装 Docker:确保每台服务器已安装 Docker 和 Docker Compose。 - 网络通信:确保三台服务器之间可以通过 IP 地址互相访问,并开放以下端口: - `2181`:Zookeeper 客户…...
ISO26262-浅谈用例导出方法和测试方法
目录 1 摘要2 测试方法3 测试用例导出方法4 测试方法与用例导出方法的差异和联系5 结论 1 摘要 ISO26262定义了测试方法和用例导出方法,共同保证产品的开发质量。但在刚开始学习ISO26262的时候,又不是非常清晰地理解它俩的区别和联系。本文主要对它俩的…...
Linux上位机开发实践(SoC和MCU的差异)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 soc一般是指跑linux的芯片,而mcu默认是跑rtos的芯片,两者在基本原理方面其实差异不大。只不过,前者由于性能的原…...
【基于Fluent+Python耦合的热管理数字孪生系统开发:新能源产品开发的硬核技术实践】
引言:热管理数字孪生的技术革命 在新能源领域(如动力电池、储能系统、光伏逆变器等),热管理是决定产品性能与安全的核心问题。传统热设计依赖实验与仿真割裂的流程,而数字孪生技术通过实时数据驱动与动态建模…...
ios app的ipa文件提交最简单的方法
ipa文件是ios的app打包后生成的二级制文件,在上架app store connect或做testflight测试的时候,它提示我们需要使用xcode、transporter或xcode命令行等方式来上传。 而xcode、transporter或xcode命令行的安装都需要使用mac电脑,假如没有mac电…...
详细解释浏览器是如何渲染页面的?
渲染流程概述 渲染的目标:将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务࿰…...
swift-12-Error处理、关联类型、assert、泛型_
一、错误类型 开发过程常见的错误 语法错误(编译报错) 逻辑错误 运行时错误(可能会导致闪退,一般也叫做异常) 2.1 通过结构体 第一步 struct MyError : Errort { var msg: String } 第二步 func divide(_ …...
如何查看HTTP状态码?
目录 一、HTTP状态码查看方法 1. 浏览器开发者工具 2. 命令行工具 3. 服务器日志分析 二、HTTP状态码分类与核心含义 1. 信息类(1xx) 2. 成功类(2xx) 3. 重定向类(…...
下采样(Downsampling)
目录 1. 下采样的定义与作用 2. 常见下采样方法 (1) 池化(Pooling) (2) 跨步卷积(Strided Convolution) (3) 空间金字塔池化(SPP) 3. PyTorch 实现示例 …...
PostgreSQL 常用客户端工具
PostgreSQL 常用客户端工具 PostgreSQL 拥有丰富的客户端工具生态系统,以下是各类常用工具的详细分类和介绍: 一 图形化客户端工具 1.1 跨平台工具 工具名称特点适用场景许可证pgAdmin官方出品,功能全面开发/运维PostgreSQLDBeaver支持多…...
Nacos安装及数据持久化
1.Nacos安装及数据持久化 1.1下载nacos 下载地址:https://nacos.io/download/nacos-server/ 不用安装,直接解压缩即可。 1.2配置文件增加jdk环境和修改单机启动standalone 找到bin目录下的startup.cmd文件,添加以下语句(jdk路径根据自己…...
ES关系映射(数据库中的表结构)
ES常见数据类型及用途 1. 基础类型 ES类型对应MySQL类型特点示例场景textVARCHAR/TEXT全文分词搜索,默认用标准分词器商品描述、日志内容keywordCHAR/VARCHAR精确匹配,不分词订单号、标签、枚举值(如状态码)longBIGINT64位整数ID、…...
FPGA_YOLO(四)用HLS实现循环展开以及存储模块
Vivado HLS(High-Level Synthesis,高层次综合)是赛灵思(Xilinx)在其 Vivado 设计套件 中提供的一款工具,用于将 高级编程语言(如 C、C、SystemC) 直接转换为 硬件描述语言࿰…...
ASP.NET MVC 实现增删改查(CRUD)操作的完整示例
提供一个完整的 ASP.NET MVC 实现增删改查(CRUD)操作的示例。该示例使用 SQL Server 数据库,以一个简单的 Product 实体为例。 步骤 1:创建 ASP.NET MVC 项目 首先,在 Visual Studio 中创建一个新的 ASP.NET MVC 项目…...
MCP理解笔记及deepseek使用MCP案例介绍
文章目录 一、MCP介绍(1)使用MCP与之前的AI比较(2)原理(3)优点 二、deepseek使用MCP使用案例介绍 一、MCP介绍 全称 模型上下文协议 来源 由Claude母公司Anthropic于24年底开源发布 简介 AI大模型的标准化…...
# 手写数字识别:使用PyTorch构建MNIST分类器
手写数字识别:使用PyTorch构建MNIST分类器 在这篇文章中,我将引导你通过使用PyTorch框架构建一个简单的神经网络模型,用于识别MNIST数据集中的手写数字。MNIST数据集是一个经典的机器学习数据集,包含了60,000张训练图像和10,000张…...
扩展虚拟机磁盘空间并使其在Linux系统中可用的步骤总结
VMware在虚拟机扩展空间时,若想扩展到150G,那么所在盘的空闲空间须大于150G,否则VM将不允许扩展。 1:确认新磁盘空间是否被识别 使用 lsblk 或 fdisk -l 命令检查 /dev/sda 的大小是否已经更新到新的容量(例如从原来的…...
A股周度复盘与下周策略 的deepseek提示词模板
以下是反向整理的股票大盘分析提示词模板,采用结构化框架数据占位符设计,可直接套用每周市场数据: 请根据一下markdown格式的模板,帮我检索整理并输出本周股市复盘和下周投资策略 【A股周度复盘与下周策略提示词模板】 一、市场…...
dev_set_drvdata、dev_get_drvdata使用详解
在Linux内核驱动开发中,dev_set_drvdata() 及相关函数用于管理设备驱动的私有数据,是模块化设计和数据隔离的核心工具。以下从函数定义、使用场景、示例及注意事项等方面进行详细解析: 一、函数定义与作用 核心函数 dev_set_drvdata() 和 dev…...
数据驱动未来:大数据在智能网联汽车中的深度应用
数据驱动未来:大数据在智能网联汽车中的深度应用 引言 随着智能网联汽车(Intelligent Connected Vehicles,ICV)的快速发展,数据已成为其核心驱动力。从实时交通数据到车辆传感器信息,大数据的深度应用正在让智能汽车更安全、更高效、更智能化。那么,大数据如何赋能智能…...
LeetCode:DFS综合练习
简单 1863. 找出所有子集的异或总和再求和 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。 例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 1 。 给你一个数组 nums ,请你求出 n…...
Perf学习
重要的能解决的问题是这些: perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…...
齐次坐标变换+Unity矩阵变换
矩阵变换 变换(transform):指的是我们把一些数据,如点,方向向量甚至是颜色,通过某种方式(矩阵运算),进行转换的过程。 变换类型 线性变换:保留矢量加和标量乘的计算 f(x)…...
Pandas取代Excel?
有人在知乎上提问:为什么大公司不用pandas取代excel? 而且列出了几个理由:Pandas功能比Excel强大,运行速度更快,Excel除了简单和可视化界面外,没有其他更多的优势。 有个可怕的现实是,对比Exce…...
启动vite项目报Unexpected “\x88“ in JSON
启动vite项目报Unexpected “\x88” in JSON 通常是文件被防火墙加密需要寻找运维解决 重启重装npm install...
