IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【前端知识体系梳理(一)】深入理解HTTPS协议 -> 正文阅读

[网络协议]【前端知识体系梳理(一)】深入理解HTTPS协议

?作者简介:大家好我是无处不楼台,是一个什么都会一点的大前端小白博主!
📃个人主页:无处不楼台的博客_CSDN博客-JavaScript学习,项目开发,node学习领域博主
🔥系列专栏:知识体系梳理
💖如果觉得博主的文章还不错的话,请👍三连支持一下博主哦🤞??

?

目录

前言🔥

一、对称加密🔥

缺点

优点

具体实现过程

二、非对称加密🔥

缺点

优点

具体实现过程

三、对称加密+非对称加密🔥

模拟流程

缺点

四、数字证书🔥

数字证书防伪

数字签名的制作过程

客户端的验证过程

https的优点

https的缺点

结束语🏆



前言🔥

????????聊到https,我们就得谈到http,了解http与https的关系是我们深入了解https的重点;

????????首先我们需要明白https为什么要比http安全;

? ? ? ? 这是因为https使用对称+非对称混合加密的方式解决安全问题;

? ? ? ? 我们先来了解一下什么叫做对称加密非对称加密


一、对称加密🔥

????????对称加密是指 在加密和解密的过程中使用相同的密钥的算法;

? ? ? ? 其中所谓相同的密钥就是加密和解密的工具,对称加密属于单钥密码加密

? ? ? ? 而对称加密使用的加密算法也是公开的,只要获取到密钥就可以解密;

缺点

?????????密钥的安全性很低,在密钥发送传达的过程中,密钥可能被第三方截取,导致第三方也可以破解密文;

优点

?????????算法公开、效率高;

具体实现过程

? ? ? ? 1)、在每一次发送真实数据之前,客户端会先生成一把密钥,然后把密钥传输给服务端。

? ? ? ? 2)、客户端给服务端发送真实数据的时候,会用这把密钥对数据进行加密;

? ? ? ? 3)、服务端收到加密数据后,用刚才收到的密钥进行解密。


二、非对称加密🔥

? ? ? ? 与对称加密不同,非对称加密需要两个密钥:公开密钥和私有密钥;

????????公钥与密钥是一对,如果使用公钥对数据进行加密,那么只有对应的私钥能够解密;

????????由于加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法

????????传输双方均有一对密钥,也就是双方均有公、私密钥一对;

? ? ? ? 要知道,使用公钥加密的过程是真正加密的过程,使用私钥加密的过程其实是签名的过程,这个后面会说;

缺点

?????????非对称加密的算法太复杂了,远远没有对称加密的速度快;

优点

?????????由于加密算法复杂度高,安全性较高;

具体实现过程

? ? ? ? 1)、如果客户端要向服务端发送消息,客户端和服务端都要产生一对用于加密和解密的公钥和私钥

? ? ? ? 2)、客户端的私钥保密,客户端中的公钥告诉服务器;

????????3)、服务端的私钥也保密,把它的公钥告诉客户端;

? ? ? ? 4)、客户端要给服务端发送消息时,客户端用服务端的公开密钥加密信息,然后将这个已经经过加密的消息发送到服务端;

? ? ? ? 5)、服务端收到这个消息后,服务端用自己的密钥解密客户端的消息,只有这个指定服务端才具有解密的能力。

这样的话,第三方最多只能获取到用来加密的公钥和加密的密文,无法加密


三、对称加密+非对称加密🔥

????????上面就说过了,https采用的是混合密钥加密;

? ? ? ? 下面我们先使用对称加密+非对称加密来大致模拟一下https通信的流程;

? ? ? ? 要注意,这并不是真正的流程,只是为了让大家加深理解模拟的流程

模拟流程

????????1)、服务器用明文的方式给客户端发送自己的公钥;

????????2)、客户端收到公钥后,会随机生成一把会话密钥,然后用服务器传过来的公钥对这把新生成的会话密钥进行加密;

????????3)、服务器收到后解密,最后服务器就可以安全得到会话密钥;

? ? ? ? 4)、客户端与服务端使用会话密钥进行共享密钥加密通信;

????????在这个模拟的过程,相信大家已经发现这个流程中的缺陷;

缺点

?????????如果在服务器明文传输公钥的时候。中间人截取了这把属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传输给了客户端;

?????????之后客户端就会用中间人的公钥来加密自己生成的密钥;在客户端发送给服务端的过程中,密文又被中间人截取,最后中间人就可以获取这个会话密钥;

? ? ? ? ?为了仍然保持两端通信,中间人假冒成客户端,使用服务端的公钥加密这把密钥,再发给服务器;

?????????那么之后,中间人就可以随意破解这双方的密文内容了;

? ? ? ? ?https为了解决服务器公钥的问题,使用了数字证书;


四、数字证书🔥

????????HTTPS中的非对称加密之所以不安全,是因为客户端在接收服务端公钥的时候,不清楚这把公钥到底是不是服务器的;

????????我们需要使用数字证书来解决这个问题;

????????这个时候需要找到一个可靠的第三方机构,可以叫他们叫CA机构

????????网站在使用HTTPS协议之前,需要向CA机构申请一份数字证书;

????????数字证书中包含证书持有者的信息、公钥信息等可以证明服务器身份的信息;

????????服务端把证书传输给客户端,客户端从证书中获取到公钥就行了;

? ? ? ? 在这里,大家应该也能够看出问题,如果数字证书在传输过程中被篡改,不久会出现问题吗?别急,数字证书没那么简单;

数字证书防伪

????????为了防止数字证书在传输的过程中被篡改,我们要使用数字签名;

数字签名的制作过程

????????1)、CA机构本身拥有一对非对称加密的公钥和私钥;

????????2)、CA机构对证书明文数据A进行hash散列加密

????????3)、对hash散列之后的值使用私钥加密,得到数字签名B;

????????这样,明文和数字签名共同组成了数字证书,这样一份数字证书就可以颁发给网站了;

????????然后服务器在接收客户端请求后,将这个数字证书发送给客户端,客户端会用以下方式验证公钥是否正确;

客户端的验证过程

????????1)、客户端拿到证书,得到明文A,签名B;

????????2)、用CA机构的公钥对B解密,得到B',

????????3)、使用证书里面指明的hash算法对明文进行hash处理得到A’;??

????????4)、通过上述步骤,如果A'等于B',那么证书可信;

????????我们假设中间人这个时候拿到了证书,也就是拿到了明文和签名,中间人当然也知道这个CA机构的公钥,也能根据证书中指明的hash算法对明文进行加密,就这样,中间人也可以验证这个证书的真假,但他又能够做些什么呢?

????????中间人想要改变的东西是服务端提供的公钥,而这个写在了证书的明文中;所以中间人需要改变的是明文和签名中加密的明文,证书中自带的明文非常容易修改,而要瞒过客户端的验证是个问题;

? ? ? ? 因为数字签名通过公钥解密之后,得到的B'是不可变的;

????????如果中间人想要改变公钥并且使得A'==B',他只能改变证书指定的hash散列算法,但是破解hash散列算法的难度很大,这就是限制住中间人的难关;

? ? ? ? 到这里,我们基本清楚了https为什么那么安全;

????????我们再来梳理一下HTTPS的通讯步骤:

????????1)、客户端使用HTTPS的URL访问web服务器,要求与服务端与之建立SSL连接

????????2)、web服务端收到客户端的请求后,会将网站的数字证书传送一份给客户端;

????????3)、客户端与web服务端协商SSL连接的安全等级,也就是信息加密等级

????????4)、浏览器通过A‘和B'验证公钥确实真实可信,就生成本次的会话密钥,然后利用证书上的公钥加密会话密钥,并传输到服务端

????????5)、web服务器利用自己的私钥解密出会话密钥;

????????6)、web服务器利用会话密钥加密与客户端的通信;

https的优点

????????1)、使用https协议可以认证用户和服务器,确保数据发送到正确的客户机和服务器;

????????2)、https协议是有ssl+http协议构建的可进行加密传输、身份认证的网络协议,要比http安全的多

????????3)、使用https加密的网站在搜索中排名更高

https的缺点

????????1)、https最初的握手阶段非常耗时间,会让页面的加载事件延长50%,增加10%-20%的耗电;

????????2)、https连接缓存不如http高效;


结束语🏆

????????好了,以上就是我本篇文章的所有内容了,我应该是说清楚了个大概,深度不够,还望理解。

? ? ? ? 看到这里了,给个赞吧,如果希望看到更多知识体系整理,请关注博主,及时更新!!~~

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:13:23  更:2022-04-28 12:13:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:31:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码