【前端知识体系梳理(一)】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高效;


结束语🏆

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

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

henuGM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值