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

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

有什么问题欢迎各位大佬指出
欢迎各位大佬评论区留言修正~~
您的支持就是我最大的动力​​​!!!

相关推荐
最懒的菜鸟14 分钟前
spring boot jwt生成token
java·前端·spring boot
壹只菜鸟18 分钟前
K8s的网络
网络·kubernetes
漫谈网络19 分钟前
Mininet--moduledeps.py源码解析
网络·network·sdn·mininet
瑜舍25 分钟前
Apache Tomcat RCE漏洞(CVE-2025-24813)
java·tomcat·apache
un_fired26 分钟前
【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权
java·人工智能·spring
martian66528 分钟前
Java并发编程从入门到实战:同步、异步、多线程核心原理全解析
java·开发语言
Blockchina36 分钟前
第 1 章 | 开篇词:Dapp安全 区块链安全 Web3安全 区块链合约一旦部署,安全就是生死线
安全·web3·区块链·智能合约·solidity·合约审计
计算机学姐37 分钟前
基于SpringBoot的电影售票系统
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
半升酒39 分钟前
Spring MVC
java·spring
M1A143 分钟前
走进Java异步编程的世界:开启高效编程之旅
java·后端