当前位置: 首页 > article >正文

HTTPS协议—加密算法和中间攻击人的博弈

活动发起人@小虚竹 想对你说:

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!

提醒:在发布作品前,请将不需要的内容删除。

各位看官,大家早安午安晚安呀~~~

如果您觉得这篇文章对您有帮助的话

欢迎您一键三连,小编尽全力做到更好
欢迎您分享给更多人哦

今天我们来学习HTTPS协议—加密算法和中间攻击人的博弈

         HTTPS不仅是一种安全的通信协议,更是一场加密算法与中间人攻击者的精彩博弈。在这场博弈中,加密算法就像是一把坚固的锁,而中间人攻击者则试图找到这把锁的弱点。今天,我们就来深入探讨HTTPS协议中的加密算法,以及它们如何与中间人攻击者展开这场没有硝烟的战争!

       一段数据需要经过一段路程到达目的地,我们如果想要这个数据安全的到达终点,不仅需要护送人实力强大,还需要这个数据本身就具有安全性(如何数据更安全呢?)

我们直接想到的办法就是对这个数据进行加密!

举个例子:

 83 版 <<火烧圆明园>> , 有人要谋反干掉慈禧太后. 恭亲王奕䜣给慈禧递的折子. 折子内容只是扯

一扯家常, 套上一张挖了洞的纸就能看到真实要表达的意思.

明文: "当心肃顺, 端华, 戴恒" (这几个人都是当时的权臣, 后来被慈禧一锅端).

密文: 奏折全文

密钥: 挖了洞的纸.

在密码学中,使用密钥加密,主要有两种方式

1.对称加密

加密和解密使用的密钥是同一个密钥,如果只是单纯的对称加密,安全性不能保证。

2.非对称加密

有两个密钥:公钥和私钥(一对),公钥(可以公开的)私钥自己拿好。用其中一个钥匙加密,就只能用另一个钥匙进行解密。

对称加密算法的效率要比非对称算法的效率更高!!!

对称加密算法的加密和解密速度非常快。由于算法的简单性和高效的数学运算,对称加密可以在短时间内完成大量的数据加密和解密。

1.HTTPS的加密过程

    在加密的过程中,我们还要考虑到算法的效率,不能单纯因为加密的事情,搞得程序变得效率低下,这样就未免得不偿失了

目前我们知道 对称加密算法效率很高,但不是很安全;非对称反之。

因此我们很容易就能得出我们需要的加密方法需要二者的结合~(如果还是不行的话,还需要再加上一些其他的机制——证书的使用)

1.1.为何对称加密不安全的呢?

首先我们知道对称加密是客户端和服务器公用一个密钥,那么这里就分成两种情况了。

  1. 所有的客户端密钥都一样(这样的想都不要想,黑客也和你的密钥一样,几乎没什么作用)
  2. 不同的客户端的密钥不一样

第一种明显是不科学的,那第二种呢?

我先给出的解释:

如果不一样的客户端秘钥不一样,但是传输密文的时候需要把密钥发送给服务器然后黑客就能中间拿到了这个秘钥。

问题:

为什么服务器不维护一个数据库,通过辨别客户端的身份然后识别出这个客户端的密钥是什么?这样密钥就不通过网络传输了,不就安全了?

解释:

这里存在着很多问题:首先辨识就是一个复杂的过程,根据什么来辨识?在我卡那里主要的矛盾在于——服务器维护成本高:如果服务器需要维护一个包含每个客户端密钥的数据库,这将带来巨大的管理成本(特别是处理大量的请求时,频繁地访问数据库无疑是一个巨大的开销)。

这就给我们带来思考:要是随时生成的密钥能安全传输就好了(这样的密钥肯定要传输的呀,不然另一方不知道)(一旦传输就又要泄露,所以我们要给这个密钥再加密)。

故:我们要解决的问题:给密钥再进行加密。

这个时候我们就可以引出随时生成的公钥和私钥了

1.2.非对称加密解决对称加密的不安全问题(但是还会有中间人攻击的问题)

图解:

大家可以看到,上面的步骤看似很好的解决了问题。

但是黑客凭什么要把公钥给你(黑客为什么不进行掉包?)

1.3.中间人攻击的问题

这里的问题就是:
黑客根本就不会把pub1(服务器生成的是私钥返回给客户端),而是把自己pub2返回给了客户端,但是客户端完全不知道这个公钥(pub2)是错误的

客户端使用pub2对密钥进行加密,黑客拿到这个数据,用自己的pri2把密钥拿出来。在用pub1加密发给服务器(天衣无缝)

这里主要的问题就是客户端无法分辨这里的公钥是否正确,如果自己手里面有一个确定的东西可以验证这个公钥是否正确,这个问题就解决了

1.4.公正机构的证书解决公钥是否正确的问题

公证机构(Certificate Authority,简称CA):是数字证书的颁发机构(会生成一对公钥和私钥,公钥往往会内置在每个系统中(大家都有),私钥绝不泄露

关于公正机构的注释:

网站的开发人员,想要搭建一个服务器的时候,就需要像公证机构提交申请(提交一些材料,像域名,服务器自己的公钥(一份就好了,不必每个客户端都不一样,主要是密钥不一样并且安全传输就行了),厂商…………)

然后公证机构就会对这些材料进行审批,审核通过就会颁发一个数字证书(里面包含里服务器的域名,公钥,证书时间范围,数字签名………)

什么是数字签名呢?

数字签名是 CA 对证书内容的一个加密哈希值(我们下面姑且称这个哈希值为校验和),由以下步骤生成:

  1. 计算哈希值
    CA 对证书的明文信息(域名、公钥、有效期等)使用哈希算法(如 SHA-256)生成一个唯一的哈希值

  2. 加密哈希值
    CA 使用自己的私钥对这个哈希值进行加密,加密后的结果就是数字签名

  3. 将签名附加到证书
    签名和证书的其他信息(明文)一起发送给服务器。

具体过程实现:

再来一个问题哈哈:

黑客能否自己也申请一个证书,把服务器的证书替换掉(直接在服务器申请材料的时候把服务器的公钥换成自己的?)

妈呀,这个黑客也忒狠了!!!

在申请数字证书时,证书颁发机构(CA)会对申请者的身份进行严格验证!!!这包括验证申请者的身份信息(如公司注册信息、个人身份证明等)以及申请者对所申请域名的所有权。黑客无法通过这些验证,因为他们无法提供合法的身份证明和域名所有权证明。(如果这也行,那真没啥办法了哈哈哈)

2.总结:

总的来说,我们最终实现HTTPS的加密过程如下:

虽然我的文章结束了,但是加密算法和中间攻击人的博弈故事还在继续!!!

写完真的很激动——哈哈哈

上述就是HTTPS协议—加密算法和中间攻击人的博弈的全部内容啦~~~

能看到这里相信您一定对小编的文章有了一定的认可。

有什么问题欢迎各位大佬指出
欢迎各位大佬评论区留言修正~~

您的支持就是我最大的动力​​​!!!

相关文章:

HTTPS协议—加密算法和中间攻击人的博弈

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

【大模型理论篇】CogVLM:多模态预训练语言模型

1. 模型背景 前两天我们在《Skywork R1V: Pioneering Multimodal Reasoning with Chain-of-Thought》中介绍了将ViT与推理模型结合构造多模态推理模型的案例&#xff0c;其中提到了VLM的应用。追溯起来就是两篇前期工作&#xff1a;Vision LLM以及CogVLM。 今天准备回顾一下Cog…...

AI知识补全(一):tokens是什么?

名人说&#xff1a;苔花如米小&#xff0c;也学牡丹开。——袁枚《苔》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是Tokens&#xff1f;二、为什么Tokens如此重要&#xff1f;1.模型的输入输出限制2.…...

Wpf Avalonia-实现中英文切换工程

文章目录 language工程项目代码创建获取资源文件string工程图片主项目引用LanguageView中使用ViewModel中使用language工程项目 <Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><ImplicitUsings>enable</ImplicitUsings><TargetFrame…...

pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解决)

我在使用pyqt库的时候报错&#xff1a; qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…...

【MySQL数据库】触发器与事件

MySQL触发器 trigger&#xff0c;在表的插入insert、更新update、删除delete操作发生时自动执行MySQL语句。 学过Qt的都知道信号槽&#xff0c;一旦发出某个信号&#xff0c;那么就会触发关联的信号槽函数。触发器就类似于这个操作。 创建触发器时需要给出一些信息&#xff…...

【LC插件开发】基于Java实现FSRS(自由间隔重复调度算法)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【LC插件开发】基于Java实现FSRS&#xff08;自由间隔重复调度算法&#xff09;&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录…...

java后端接收数组,数组长度超256个就会报错

1.原因 DataBinder 中默认限制了list最大只能增长到256。 2.解决方案 1.在BaseController添加InitBinder方法&#xff0c;其余继承BaseController InitBinder //类初始化是调用的方法注解public void initBinder(WebDataBinder binder) {//给这个controller配置接收list的长…...

第45章:配置更新与应用热重载策略

第45章:配置更新与应用热重载策略 作者:DogDog_Shuai 阅读时间:约25分钟 难度:中级 目录 1. 引言2. 配置更新挑战3. Kubernetes原生配置更新机制4. 应用热重载技术5. 配置更新最佳实践...

数据库MVCC详解

MVCC 1.基本介绍 数据库&#xff1a;MySQL。【很多主流数据库都使用了MVCC&#xff0c;比如MySQL的InnoDB引擎、PostgreSQL、Oracle】 MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。是数据库管理系统中的一种并发控制方法。 MVCC的…...

MySQL数据库基础篇

目录 SQL的分类 数据定义语言&#xff08;DDL&#xff09;---Data Definition Language 数据操作语言(DML) ---Data Manipulation Language 数据查询语言(DQL) ---Data Query Language 数据控制语言(DCL) ---Data Control Language 事务控制语言(TCL) --- Transaction Cont…...

Rust函数、条件语句、循环

文章目录 函数**语句与表达式**条件语句循环 函数 Rust的函数基本形式是这样的 fn a_func(a: i32) -> i32 {}函数名是蛇形风格&#xff0c;rust不在意函数的声明顺序&#xff0c;只需要有声明即可 函数参数必须声明参数名称和类型 语句与表达式 这是rust非常重要的基础…...

AI比人脑更强,因为被植入思维模型【17】万物联系思维模型

万物联系,万物,并不孤立。 定义 万物联系思维模型是一种强调世界上所有事物都相互关联、相互影响的思维方式。它认为任何事物都不是孤立存在的,而是与周围的环境、其他事物以及整个宇宙构成一个有机的整体。这种联系不仅包括直接的因果关系,还涵盖了间接的、潜在的、动态的…...

Android Compose 约束布局(ConstraintLayout、Modifier.constrainAs)源码深度剖析(十二)

Android Compose 约束布局&#xff08;ConstraintLayout、Modifier.constrainAs&#xff09;源码深度剖析 一、引言 在 Android 开发中&#xff0c;布局是构建用户界面的基础。随着 Android 开发技术的不断发展&#xff0c;Jetpack Compose 作为一种全新的声明式 UI 框架应运…...

【MySQL篇】复合查询

目录 前言&#xff1a; 1&#xff0c;多表查询 2&#xff0c;自连接 3&#xff0c;子查询 3.1&#xff0c;单行子查询 3.2&#xff0c;多行子查询 3.3&#xff0c;多列子查询 3.3&#xff0c;在from子句中使用子查询 4&#xff0c;合并查询 4.1&#xff0c;union …...

点亮STM32最小系统板LED灯

对于如何点亮板载LED灯只需要掌握如何初始化GPIO引脚&#xff0c;并改变GPIO引脚的电平即可实现点亮或者熄灭LED。 Led_INFO led_info {0}; led_info 是一个结构体变量&#xff0c;类型为 Led_INFO&#xff0c;用于存储LED的状态信息。这里初始化为 {0}&#xff0c;表示所有成…...

unsloth微调QwQ32B(4bit)

unsloth微调QwQ32B(4bit) GPU: 3090 24G unsloth安装部署 pip 安装 pip install unsloth --index https://pypi.mirrors.usrc.edu.cn/simplesource /etc/network_turbopip install --force-reinstall --no-cache-dir --no-deps githttps://github.com/unslothai/unsloth.git​…...

基于腾讯云大模型知识引擎×DeepSeek的高等职业学校单独招生二级学院考前咨询系统

1、主要思路 通过大模型知识引擎DeepSeek搭建高等职业学校单独招生二级学院考前咨询专有问答&#xff0c;使得专业老师能够更好的服务考试学生&#xff0c;有利于二级学院能够更好的进行考试宣传&#xff0c;招来优秀学子&#xff01; 2、创作过程 2.1、本地部署大模型的缺陷…...

【Linux】线程库

一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s &#xff0c;我的地址&#xff1a;0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…...

数组作为哈希表的妙用:寻找缺失的第一个正数

数组作为哈希表的妙用&#xff1a;寻找缺失的第一个正数 大家好&#xff0c;我是Echo_Wish&#xff0c;今天我们来探讨一个经典的算法问题——“缺失的第一个正数”。听起来可能有点简单&#xff0c;但它实际上是一个非常有意思且富有挑战性的题目&#xff0c;在面试中常常会碰…...

物化视图详解:数据库性能优化的利器

物化视图&#xff08;Materialized View&#xff09;作为数据库性能优化的核心手段&#xff0c;通过预计算和存储查询结果&#xff0c;显著提升了复杂查询的效率。本文将深入剖析物化视图的工作原理、应用场景及最佳实践&#xff0c;帮助企业在合适的场景中充分发挥其性能优势。…...

【C++】类和对象(匿名对象)

匿名对象 用 类型(实参) 定义出来的对象叫做匿名对象&#xff0c;相比之前我们定义的 类型 对象名(实参) 定义出来叫有名对象匿名对象生命周期只在当前一行&#xff0c;一般临时定义一个对象当前用一下即可&#xff0c;就可以定义匿名对象。 class A { public:A(int a 0):_a…...

一文读懂 GPT 与 BERT:预训练逻辑及差异剖析

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预训练语言模型GPT&#xff08;Generative Pretrained Transformer&#xff09;和 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;作为杰出代表&#xff0c;备受关注。本文将…...

【算法】十大排序算法(含时间复杂度、核心思想)

以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结&#xff0c;适用于面试快速回顾&#xff1a;排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换&#xff0c;大数沉底…...

渐进式滑坡多场信息演化特征与数据挖掘研究

标题:渐进式滑坡多场信息演化特征与数据挖掘研究 内容:1.摘要 摘要&#xff1a;在地质灾害频发的背景下&#xff0c;研究渐进式滑坡多场信息演化特征与数据挖掘具有重要的实际意义。本研究旨在深入探究渐进式滑坡在不同阶段的多场信息&#xff08;如应力场、位移场、渗流场等&…...

蓝桥杯备考-》单词接龙

很明显&#xff0c;这道题是可以用DFS来做的&#xff0c;我们直接暴力搜索&#xff0c;但是这里有很多点是我们需要注意的。 1.我们如何确定两个单词能接上&#xff1f; 比如touch和choose 应该合成为touchoose 就是这样两个单词&#xff0c;我们让一个指针指着第一个字符串…...

解锁C++模板参数:开启泛型编程新世界

目录 C++ 模板:编程世界的瑞士军刀 一、模板参数初相识 1.1 类型参数 1.2 非类型参数 1.3 模板模板参数 二、模板参数推导大揭秘 2.1 推导规则深度剖析 2.2 推导成功场景展示 2.3 推导失败场景解析 三、模板参数实战应用 3.1 通用算法实现 3.2 容器类设计 3.3 元…...

计算机视觉yolov8模型应用-学习笔记

计算机视觉yolov8模型应用-学习笔记 YOLOv8是由Ultralytics公司在‌2023年1月10日‌发布的一款深度学习模型。它是YOLOv5的重大更新版本&#xff0c;支持图像分类、物体检测和实例分割任务。这一版本在发布前就受到了广泛关注&#xff0c;并在发布后迅速成为目标检测领域的热门…...

【网络层协议】NAT技术内网穿透

IP地址数量限制 我们知道&#xff0c;IP地址&#xff08;IPv4&#xff09;是一个4字节32位的整数&#xff0c;那么一共只有2^32也就是接近43亿个IP地址&#xff0c;而TCP/IP协议栈规定&#xff0c;每台主机只能有一个IP地址&#xff0c;这就意味着&#xff0c;一共只有不到43亿…...

SQL中的索引是什么

在 SQL 中&#xff0c;索引&#xff08;Index&#xff09; 是一种用于加速数据检索的数据库对象&#xff0c;通过建立特定的数据结构&#xff08;如 B树、哈希表等&#xff09;&#xff0c;帮助数据库系统快速定位目标数据。以下是关于索引的详细分类、工作原理、使用场景和最佳…...