【网络原理】——图解HTTPS如何加密(通俗简单易懂)

ops/2024/10/31 15:09:14/

 8e19eee2be5648b78d93fbff2488137b.pnghttps>https://i-blog.csdnimg.cn/direct/8e19eee2be5648b78d93fbff2488137b.png" />

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:HTTP为什么不安全

二:HTTPS加密过程

1:密码学中的概念

(1)明文

(2)密文

(3)密钥

(4)对称加密

(5)非对称加密

(6)公钥和私钥

2:HTTPS工作过程

(1)引入对称加密

(2)非对称加密

(3)证书加密


一:HTTP为什么不安全

在介绍HTTP的那一篇文章中我们提了一嘴,HTTP是明文传输,不安全的。HTTPS在HTTP的基础上,引入了一个加密层(SSL)来保证安全性——防运营商劫持篡改Referer~(可以参考这篇文章)

【网络原理】——HTTP请求头中的属性-CSDN博客

比如我们想要下载一个音乐播放器,点击了下载,蹦出来的并不是这个音乐播放器的下载链接,而变成另一个的了,很常见的挂羊头卖狗肉~

https>https://i-blog.csdnimg.cn/direct/7df53277bd6b4df181b27a9a11d02eec.png" width="900" />

https>https://i-blog.csdnimg.cn/direct/84523ef449574c2695484fbc102864ba.png" width="869" />

https>https://i-blog.csdnimg.cn/direct/e7fdd67fb58f4cb08c156a275577bb40.png" width="1200" />

二:HTTPS加密过程

1:密码学中的概念

(1)明文

传输的真实的数据,表达的实际意思

(2)密文

给明文经过加密之后得到的结果就是密文,不直观,不易理解

(3)密钥

可以理解成对照表,比如我们将字符A设置成明文,我给字符A按照ASCII码值进行加密,我们通过ASCII码值表对照,知道了密文97所代表就是A.

(4)对称加密

加密和解密使用的同一个密钥,我们举个简单的例子哈,看下面的图(这种感觉,我称之为偷感)

https>https://i-blog.csdnimg.cn/direct/45f352a3424a411fbe144fb03a8c41af.png" width="1200" />

(5)非对称加密

加密和解密使用的是两个密钥,比如K1密钥和K2密钥,这两者成对的,

使用K1来加密,此时就是K2来解密;使用K2来加密,此时就是K1来解密

(6)公钥和私钥

公开出去,大家都知道的叫做公钥;私自保留的,只有自己知道的叫私钥

2:HTTPS工作过程

由引入我们知道,运营商劫持的根本原因在于“明文传输”,于是我们也提出了好几种加密对策,主要针对header和body进行加密

(1)引入对称加密

通过对称加密的方式,针对传输的数据进行加密操作

关键点:

对称加密,客户端和服务器使用的是同一个密钥

②不同的客户端,需要使用不同的密钥

③TCP建立连接后,在进行SSL握手(交换/传输密钥),最后才是加密传输

注:每个客户端连接到服务器的时候,都要自己生成一个随机密钥,在传输告知给服务器(服务器也可以生成,调换一下角色,关键在于密钥的传输),如果黑客入侵路由器拿到了这个密钥,意味着加密操作就没有意义了。

https>https://i-blog.csdnimg.cn/direct/6f7ba0636b3a4001a83ec61df5ec1755.png" width="1200" />

https>https://i-blog.csdnimg.cn/direct/1c577f62d7a4476588396e6ed7e0979a.png" width="1200" />

解决方式:对咱们得密钥也进行加密

(2)非对称加密

主要目的就是为了对“对称密钥”进行加密,确保密钥的安全性

关键点:

①传输问题上,可以让服务器生成公钥和私钥,把公钥传输给客户端,自己手持私钥

②非对称加密消耗CPU的资源远远高于对称加密,所以不能大规模使用

③黑客入侵不了的根本原因:不能对公钥进行解密

注:可以理解成——我持有信箱和和钥匙(私钥),邮递员持有信箱的锁(公钥)

https>https://i-blog.csdnimg.cn/direct/9ccaa9012aee4ed48d741edae07bef05.png" width="1200" />

(3)证书加密

问题引入:中间人攻击

上述非对称加密任然有问题——服务器可以生成一对公钥和密钥,那么黑客也可以模仿生成一对假的公钥和秘钥进行冒充

这里我们设置对称秘钥为key,非对称秘钥中公钥为pub私钥为pri

https>https://i-blog.csdnimg.cn/direct/e6fe7b08ded240f78383540a85dc353c.png" width="1200" />

解决方式:引入证书

问题关键就是,客户端在拿到公钥的时候,有办法验证这个公钥是真的,不是冒充的

证书:是一个结构化的数据(里面包含很多数据,比如:服务器的主域名、公钥、证书的有效期,以字符串的形式呈现),需要服务器从第三方公正机构进行申请https>https://i-blog.csdnimg.cn/direct/4fcc045e25f14ddea4f2b7bfb478840b.png" width="1200" />

https>https://i-blog.csdnimg.cn/direct/f67691b2b0a04b769a677ad2da32fab9.png" width="1200" />

注意:

①证书的信息是基于字符串提供,便于后面我们使用算法进行计算

②证书的私钥只有公正机构有,如果黑客用公钥解密证书,并用自己的私钥加密签名,客户端会解密失败,所以黑客无法重新生成加密的签名。

③私钥对应解密的公钥系统电脑自带就有

④校验和是对证书中的字段用(CRC,MD5等)算法得到一个较短的字符串

⑤客户端拿到证书做两件事:对证书签名解密得到校验和1,对证书的字段进行计算得到校验和2,再比较两者


http://www.ppmy.cn/ops/129891.html

相关文章

数据结构和算法-动态规划(1)-认识动态规划

认识动态规划 什么是动态规划 Dynamic Programming is a method used in mathematics and computer science to solve complex problems by breaking them down into simpler subproblems. By solving each subproblem only once and storing the results, it avoids redundan…

在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm

安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# nvm --version 0.40.1安装 Node.js 的不同版本 列出所有可用的 Node.js 远程版本 nvm ls-remotenvm install v18.20.4# node --version v18.20.4# nvm current v18.20.4npm 是 …

python笔记一

一、逻辑运算符 在 Python 中你可以使用 or、and 和 not 进行逻辑运算。 1、逻辑或 (||):在 Python 中用 or 表示 2、逻辑与 (&&):在 Python 中用 and 表示 3、逻辑非 (!):在 Python 中用 not 表示 a = True b = Falseprint(a or b) #输出 Trueprint(a and b) …

ELK同时采集Nginx、linux内核日志信息

在logstash服务机器136上安装nginx(配置ELK服务在上一篇文档中) 复制之前写的linux内核日志采集配置文档改名字为linux_nginx.conf 编辑linux_nginx.conf 修改完成后启动nginx服务 重新加载linux_nginx.conf配置文件 看到有java进程说明logstash采集成功&#xff0c…

BatchNorm推理阶段和Conv合并

BatchNorm推理阶段和Conv合并 本文全文来自: https://www.cnblogs.com/xiaxuexiaoab/p/16422640.html。 只只作为自己的复习使用,不作他用。 BN层作用 批量归一化(Batch Normalization,BN)在深度学习中常放在卷积层之…

sass软件数据架构思路——未来之窗行业应用跨平台架构

一、SAAS多商户数据库 1.1 SaaS 多商户数据库的全部商户数据放在一个服务器上 1. 成本效益:集中管理和维护一个服务器通常比维护多个独立服务器更经济,降低硬件、运维和管理成本。 2. 数据集中管理:便于进行统一的数据备份、恢复和数据治理…

【Python3】【力扣题】405. 数字转换为十六进制数

【力扣题】题目描述: 题意理解:(不允许使用库函数) 数字等于0,则结果为0, 数字小于0,则补码运算,即最高位(32位)为1,其余全部取反,再加…

C++中的string类

目录 一.C与C的string比对 二.string类的使用 与构造相关的函数(copy control) 访问及遍历操作(access) 容量操作(capacity) 修改操作(modify) 非成员函数(non-memb…