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协议—加密算法和中间攻击人的博弈的全部内容啦~~~

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

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

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

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

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

相关文章

Java替换jar包中class文件

在更新java应用版本的运维工作中&#xff0c;由于一些原因&#xff0c;开发没办法给到完整的jar包&#xff0c;这个时候&#xff0c;就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件&#xff0c;重新启动服务即可&#xff1a; 1、将jar包和将要替换的cl…

【UI设计】一些好用的免费图标素材网站

阿里巴巴矢量图标库https://www.iconfont.cn/国内最大的矢量图标库之一&#xff0c;拥有 800 万 图标资源。特色功能包括团队协作、多端适配、定制化编辑等&#xff0c;适合企业级项目、电商设计、中文产品开发等场景。IconParkhttps://iconpark.oceanengine.com/home字节跳动…

【10】高效存储MongoDB的用法

目录 一、什么是MongoDB 二、准备工作 &#xff08;1&#xff09;安装MongoDB ​&#xff08;2&#xff09;安装pymongo库 三、连接MongoDB 四、指定数据库 五、指定集合 六、插入数据 &#xff08;1&#xff09; insert 方法 &#xff08;2&#xff09;insert_one(…

MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用&#xff0c;之前的知识都忘掉了。需要逐步捡起来。 1 熟悉按键的使用 2熟悉灯的控制 1 电路 我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信&#xff0c;读取按键状态并控制 LED 灯的亮灭。 按键&#xff1a;连接到 Arduino 的数字引脚&#xff08;例如…

《深度学习》——YOLOv3详解

文章目录 YOLOv3简介YOLOv3核心原理YOLOv3改进YOLOv3网络结构 YOLOv3简介 YOLOv3&#xff08;You Only Look Once, version 3&#xff09;是一种先进的实时目标检测算法&#xff0c;由 Joseph Redmon 和 Ali Farhadi 开发。它在目标检测领域表现出色&#xff0c;具有速度快、精…

【项目设计】网页版五子棋

文章目录 一、项目介绍1.项目简介2.开发环境3.核心技术4.开发阶段 二、Centos-7.6环境搭建1.安装wget工具2.更换软件源(yum源)3.安装scl工具4.安装epel软件源5.安装lrzsz传输工具6.安装高版本gcc/g编译器7.安装gdb调试器8.安装git9.安装cmake10.安装boost库11.安装Jsoncpp库12.…

在coze工作流中将数据回写到飞书表格

在coze工作流中将数据回写到飞书表格

并查集(竞赛)

一、模型建立 本质就是一个数组&#xff0c;数组的下标对应节点的编号&#xff0c;数组的值对应对应编号的节点的父节点。规定根节点的父节点是自己。 规定三个集合的根节点分别是1 4 6 二、并查集操作并实现 并查集主要操作&#xff1a;查找一个节点的父节点&#xff0c;判…

Leetcode 刷题笔记1 图论part04

leetcode 110 字符串接龙 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…

从扩展黎曼泽塔函数构造物质和时空的结构-7

有了先前关于电荷之间吸引和排斥关系的频率分析图&#xff0c;我们可以按照类似的方法&#xff0c;对磁场做一样的分析&#xff0c;即分析磁体同极相斥&#xff0c;异极相吸的本质。 我们知道上图得以成立的原因在于磁感线&#xff0c;如下图所示的排布方式&#xff0c; 磁体的…

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

把事物看成链&#xff0c;看成网&#xff0c;看成生态。 定义 万物系统思维模型是一种将宇宙万物视为一个相互关联、相互作用的整体系统的思维方式。它强调从系统的角度去认识、分析和解决问题&#xff0c;认为系统中的各个要素之间存在着复杂的相互关系&#xff0c;这些关系不…

Qt-Q_ENUM宏和QMetaEnum类

Q_ENUM是一个宏定义&#xff0c;它的作用是将一个枚举类型注册到元对象系统&#xff0c;从而能够通过QMetaEnum类获得一些关于enum类型的一些信息&#xff0c;例如获取enum类型的名称字符串&#xff0c;enum值和字符串互相转换&#xff0c;enum类型保存在QVariant中&#xff0c…

MongoDB 配合python使用的入门教程

MongoDB 入门教程 1. 安装 MongoDB 首先&#xff0c;你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后&#xff0c;启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上&#xff0c;你可以通过Windows服务启动Mo…

【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括

说明 1. Python 定位&#xff1a;基础编程语言。作用&#xff1a;Python 是大模型生态系统的核心语言&#xff0c;几乎所有深度学习框架&#xff08;如 PyTorch、TensorFlow&#xff09;和工具链&#xff08;如 vLLM&#xff09;都通过 Python 接口提供服务。特点&#xff1a…

西门子200smart之modbus_TCP(做主站与第三方设备)通讯

西门子200smart做MODBUS_TCP主站通讯,只有一个指令。设置相关参数即可完成读写操作。整 个过程非常复杂,操作非常严谨。此次,我们使用汇川EASY系列PLC做从站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做从站)-CSDN博客 关于主站和从站的介…

缓存设计模式

缓存设计模式&#xff08;Cache Design Pattern&#xff09;是一种用于存储和管理频繁访问数据的技术&#xff0c;旨在提高系统性能、降低数据库或后端服务的负载&#xff0c;并减少数据访问延迟。以下是几种常见的缓存设计模式&#xff0c;并用 Python Redis 进行示例代码实现…

Java算法队列和栈经常用到的ArrayDeque

主要是记录一下add&#xff0c;push&#xff0c;poll这三个常用api&#xff0c;因为这三个就是栈和队列一念之差的关键 1.add(E e) 方法 ​作用&#xff1a;将元素添加到双端队列的尾部​&#xff08;等价于 addLast(E e)&#xff09;。​行为&#xff1a; ​成功时&#xff1…

机器学习——一元线性回归(算法实现与评估)

一元线性回归是统计学中最基础的回归分析方法&#xff0c;用于建立两个变量之间的线性关系模型。 1. 模型表达式 一元线性回归的数学模型为&#xff1a; &#xff1a;因变量&#xff08;预测值&#xff09;&#xff1a;自变量&#xff08;输入变量&#xff09;&#xff1a;回…

Ubuntu下用QEMU模拟运行OpenBMC

1、前言 在调试过程中&#xff0c;安装了很多依赖库&#xff0c;具体没有记录。关于kvm&#xff0c;也没理清具体有什么作用。本文仅记录&#xff0c;用QEMU成功的将OpenBMC跑起来的过程&#xff0c;做备忘&#xff0c;也供大家参考。 2、环境信息 VMware Workstation 15 Pro…

Gradle/Maven 本地仓库默认路径迁移 (减少系统磁盘占用)

Gradle 配置环境变量 GRADLE_USER_HOME&#xff0c;如D:/.gradle同时将 %userprofile%/.gradle 移动到配置路径 Maven 修改settings.xml文件&#xff0c;localRepository同时将 %userprofile%/.m2/repository 移动到配置路径 IDEA默认用的bundle maven, 路径为安装目录下 p…