Linux——https基础理论

1. 初步认识https协议

 属于应用层

 相较于http协议,https在应用层多了一层加密层,为了保证数据安全

 简单理解:https就是对http的加密和解密


2. 中间人攻击

 数据在传输过程中,遭第三方篡改。


3. 加密方式

 对称加密:双方使用同一个密钥进行加密和解密

特点:通信速度快

 非对称加密:需要两个密钥,一共公开 → 公钥, 一个私有 → 私钥

特点:慢


4. 加密方案

4.1 方案一:只使用对称加密

首次申请时,client端需要将对称密钥X,发给服务端,该过程会被中间人攻击,因此不安全,所以pass

4.2 方案二:只使用非对称加密

只能保证单向数据安全,所以pass

4.3 方案三:双方都使用非对称加密

通信的双方将各自的公钥传给对方,然后开始通信。

流程

1. server端将公钥s传给client端

2. client端将公钥c传给server端

3. client端将数据+公钥s传给server端,server端用自己的私钥s对数据进行解密

4. server端拿着响应+公钥c传给client端,client 端用自己的私钥c对数据进行解密

缺陷

1.本质还是不安全的,稍后解释

2.通信速度太慢了

4.4 方案四:非对称加密 + 对称加密

流程

1. server端将公钥s传给client端,

2. client端将对称密钥X + 公钥s形成密文数据传给 server端

3. server端拿着自己的私钥s对密文数据进行解密,这样server端也就拿到了 对称密钥X,

4. 双方使用对称密钥x进行通信

缺陷

中间人可以篡改由server端发送的公钥s,篡改为自己的公钥m,client端发送密文数据时, 发送的是:对称密钥X + 公钥m,中间人就可以拿自己的私钥m解密,获得对称密钥X

后续server端和client端通信时,中间人就一览无余了,这也是方案三的缺陷

中间人为了隐藏其存在,将自己解出来的对称密钥X和原先的公钥S 进行加密,再传给server端,此时双方都不知道数据已经被中间人篡改过了

4.5 最终方案:非对称加密 + 对称加密 + 证书认证

现存方案问题:client端无法验证收到公钥s的合法性。

引入新概念

 摘要:将数据通过散列函数(哈希算法)得到的散列值称为摘要

 签名:将获得的摘要通过签名者的私钥A进行加密,得到的数据称为签名

:签名者是CA机构 or CA子机构,后续介绍

 证书:铭文数据 + 签名的组合称为证书

 验证:client端将 铭文数据通过散列函数得到的散列值H1,client端通过签名者的公钥A对签名进行解密,得到散列值H2,判断H1和H2是否相等来验证client端收到的公钥s是否合法。

方案五的通信流程

1. server端拿着域名、公钥s、申请者向CA机构申请证书,

:域名、公钥s、申请者等其他信息称为sever端的铭文数据

2. CA机构根据server端的铭文数据通过散列函数获得散列值,对散列值进行加密后获得签名,将铭文数据和签名数据附加在一起形成证书,然后再向server端颁发证书

3. 此时http服务器建立完毕,就可以正式上线给用户使用了

4. 用户端发起http申请,获得携带证书的公钥

5. 验证公钥的合法性,将 铭文数据通过散列函数得到的散列值 与 通过CA机构的公钥S解密后的散列值 进行对比,来验证合法性

:所有的浏览器都内置了CA的公钥

6. 一旦公钥可信任,形成对称密钥X + 证书中的公钥s ,将对称密钥发给server端

:如果有中间方修改了数据,用户进行验证时得到的散列值完全不同,该报文会被丢弃,只要中间方拿不到CA的私钥 or 用户使用的是合法的CA公钥进行解密,注定了中间方无法对信息进行篡改

7. 后续双方通过该对称密钥X进行通信。

补充:如何成为中间人?

假wifi or 假网站等

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

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

相关文章

在 C++ 中对类型进行排序

0.前言 在 C 中&#xff0c;我编写了一个 tuple-like 模板&#xff0c;这个模板能容纳任意多且可重复的类型&#xff1a; template<typename... Ts> struct TypeList {};// usage: using List1 TypeList<int, double, char, double>; using List2 TypeList<…

Unity-Socket通信实例详解

今天我们来讲解socket通信。 首先我们需要知道什么是socket通信&#xff1a; Socket本质上就是一个个进程之间网络通信的基础&#xff0c;每一个Socket由IP端口组成&#xff0c;熟悉计网的同学应该知道IP主要是应用于IP协议而端口主要应用于TCP协议&#xff0c;这也证明了Sock…

使用Go语言对接全球股票数据源API实践指南

使用Go语言对接全球股票数据API实践指南 概述 本文介绍如何通过Go语言对接支持多国股票数据的API服务。我们将基于提供的API文档&#xff0c;实现包括市场行情、K线数据、实时推送等核心功能的对接。 一、准备工作 1. 获取API Key 联系服务提供商获取访问密钥&#xff08;替…

LeetCode 热题 100 17. 电话号码的字母组合

LeetCode 热题 100 | 17. 电话号码的字母组合 大家好&#xff0c;今天我们来解决一道经典的算法题——电话号码的字母组合。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。下面我将详细讲解解…

OpenCV计算机视觉实战(3)——计算机图像处理基础

OpenCV计算机视觉实战&#xff08;3&#xff09;——计算机图像处理基础 0. 前言1. 像素和图像表示1.1 像素 2. 色彩空间2.1 原色2.2 色彩空间2.3 像素和色彩空间 3. 文件类型3.1 图像文件类型3.2 视频文件3.3 图像与视频 4. 计算机图像编程简史5. OpenCV 概述小结系列链接 0. …

Vite 的工作流程

Vite 的工作流程基于其创新的 “预构建 按需加载” 机制&#xff0c;通过利用现代浏览器对原生 ES 模块的支持&#xff0c;显著提升了开发效率和构建速度。以下是其核心工作流程的详细分析&#xff1a; 一、开发环境工作流程 1. 启动开发服务器 冷启动&#xff1a;通过 npm …

线性DP(动态规划)

线性DP的概念&#xff08;视频&#xff09; 学习线性DP之前&#xff0c;请确保已经对递推有所了解。 一、概念 1、动态规划 不要去看网上的各种概念&#xff0c;什么无后效性&#xff0c;什么空间换时间&#xff0c;会越看越晕。从做题的角度去理解就好了&#xff0c;动态规划…

MySQL中sql_mode的设置

■ 57版本原来配置 show variables like %sql_mode%; STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ■ 修改配置文件 注释掉sql_mode&#xff0c;并重启&#xff0c;查看57版本的默认设置 ONL…

MCAL学习(1)——AutoSAR

1.了解AutoSAR及一些概念 AutoSAR是Automotive Open System Architecture ,汽车开放系统架构。 针对汽车ECU的软件开发架构。已经是汽车电子软件开发的标准。 OS服务&#xff1a;Freertos 整车厂&#xff08;OEM&#xff09;主要负责应用层算法 一级供应商&#xff1a;生产制…

Vue报错:Cannot read properties of null (reading ‘xxx‘)

一、报错问题 Cannot read properties of null (reading style)at patchStyle (runtime-dom.esm-bundler.js:104:22)二、错误排查 这类报错一般是在已经开发好后&#xff0c;后面测试时突然发现的&#xff0c;所以不好排查错误原因。 三、可能原因及解决方案 v-if 导致 在 …

25G 80km双纤BIDI光模块:远距传输的创新标杆

目录 一、产品优势&#xff1a;双纤与BIDI的独特价值 易天光通信25G SFP28 ZR 80KM 易天光通信25G SFP28 BIDI ZR 80KM 二、权威认证与技术突破 三、双纤与BIDI的核心差异解析 四、应用场景&#xff1a;驱动多领域高效互联 总结 在5G、云计算与数字化转型的推动下&#xff0c;光…

2025-05-06 学习记录--Python-注释 + 打印变量 + input输入

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、注释 ⭐️ &#xff08;一&#xff09;、块注释 &#x1f36d; 举例&#xff1a; &#x1f330; # 打印数字 print(2025) …

基于mediapipe深度学习的眨眼检测和计数系统python源码

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 人工智能算法python程序运行环境安装步骤整理_本地ai 运行 python-CSDN博客 3.部分核心程序 &…

怎样通过API 实现python调用Chatgpt,gemini

怎样通过API 实现python调用Chatgpt,gemini 以下为你详细介绍如何设置和调用这些参数,以创建一个类似的 ChatCompletion 请求: 1. 安装依赖库 如果你使用的是 OpenAI 的 API 客户端,需要先安装 openai 库。可以使用以下命令进行安装: pip install openai2. 代码示例 …

Linux 下MySql主从数据库的环境搭建

测试环境&#xff1a;两台服务器&#xff0c;Mysql版本 8.0&#xff0c;linux版本&#xff1a;Ubuntu 20.04.3&#xff1b; 1.在两台服务器上安装MySql&#xff1b; 2.选一台作为主服务器&#xff0c;在主服务器上以root用户进入Mysql&#xff0c;执行以下语句&#xff1a; …

力扣1812题解

记录 2025.5.7 题目&#xff1a; 思路&#xff1a; 从左下角开始&#xff0c;棋盘的行数和列数&#xff08;均从 1 开始计数&#xff09;之和如果为奇数&#xff0c;则为白色格子&#xff0c;如果和为偶数&#xff0c;则为黑色格子。 代码&#xff1a; class Solution {pu…

适合java程序员的Kafka消息中间件实战

创作的初心&#xff1a; 我们在学习kafka时&#xff0c;都是基于大数据的开发而进行的讲解&#xff0c;这篇文章为java程序员为核心&#xff0c;助力大家掌握kafka实现。 什么是kafka: 历史&#xff1a; 诞生与开源&#xff08;2010 - 2011 年&#xff09; 2010 年&#xf…

PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现

前言 在数字化信息爆炸的时代&#xff0c;PDF&#xff08;便携式文档格式&#xff09;作为一种通用的电子文档标准&#xff0c;承载着海量的结构化与非结构化知识。然而&#xff0c;PDF格式的设计初衷是用于展示而非数据提取&#xff0c;这使得从PDF中挖掘有价值的信息成为数据…

Python爬虫+代理IP+Header伪装:高效采集亚马逊数据

1. 引言 在当今大数据时代&#xff0c;电商平台&#xff08;如亚马逊&#xff09;的数据采集对于市场分析、竞品监控和价格追踪至关重要。然而&#xff0c;亚马逊具有严格的反爬虫机制&#xff0c;包括IP封禁、Header检测、验证码挑战等。 为了高效且稳定地采集亚马逊数据&am…

架构思维:探讨架构师的本质使命

文章目录 软件工程1. 软件工程的定义与核心目标2. 软件工程 vs. 软件项目管理3. 软件工程的两大特性4. 软件工程的关键活动与方法论5. 架构师在软件工程中的职责架构师的职责和思维架构师心性修炼三大核心能力架构设计的基本准则 团队共识“设计文档”的统一结构框架阅读他人代…