【网络】 ——图解HTTPS协议以及HTTP和HTTPS的区别

一、HTTPS协议简介

(这次是来兑现我的承诺来啦,之前的一篇博客就讲要写篇HTTPS和HTTP区别的文章,今天是爱学习的好学生)

在开始之前,我们需要明白为什么需要HTTPS,换句话说,HTTP有啥缺点

  1. 内容:通信使用明文,不加密,内容可能会被窃听
  2. 通信方身份:不验证通信方身份,可能遭遇伪装
  3. 篡改:无法证明报文完整性,有可能被篡改

所以说白了就是不够安全!引入HTTPS就是为了针对以上三点,使得传输更加安全

HTTPS全称:Hyper Text Transfer Protocol Secure,相比于HTTP多了一个secure.也就是多了一个下图中安全层的SSL安全传输协议
在这里插入图片描述
所以严格来说,HTTPS=HTTP+通信加密+认证+完整性保护

二、HTTPS的加密之路

2.1 对称加密

事先约定一种对称加密的方式,并且约定一个随机生成的秘钥,后续的通信中,信息发送方都是用秘钥对信息加密,而信息接收方则使用秘钥进行解密,like this:
在这里插入图片描述
这样就意味着安全吗?那它加密方法未免太low了,通常情况下一般高大上的做法肯定比这复杂。二般情况就当我没说过前一句话。如果第一次在交换秘钥的时候就被中间人截获到了密钥,那么加密是毫无意义的。
在这里插入图片描述

2.2 非对称加密

非对称加密就是对密钥的传输做一层额外的保护,非对称加密的一组秘钥中,包含一个公钥和一个私钥,明文既可以用公钥加密私钥解密,也可以用私钥加密公钥解密。like this:
在这里插入图片描述
看看具体非对称加密的过程:
step1:在服务端和客户端进行通信的时候,服务端先把自己的公钥key1给客户端
在这里插入图片描述
step2:客户端收到服务端的公钥之后,自己生成一个用于对称加密的密钥key2,并且用刚才的key1对key2加密,发送给服务端(敲黑板划重点了,好好理解)
在这里插入图片描述
step3:服务端利用自己非对称加密的私钥,解开了公钥key1的加密,获得了key2的内容,此后,两人就可以利用key2进行对称加密通信了
在这里插入图片描述
要根据公开密钥和密文进行解密是十分困难的,即使攻击者一开始就截获公钥key1,但是没有相应的私钥解密,也没有办法解密。

这里我感觉到有那么一点点高大上的意思,值得注意的是,这个其实也不是最高大上的办法,攻击者虽然不知道服务端的秘钥,但是人家万一截获了服务端的公钥key1之后,偷天换日,人家直接把公钥换成key3,下图这个样纸的:
在这里插入图片描述
那按照这个过程,攻击者把换了的公钥key3给客户端,客户端继续用key3去加密自己的对称加密密钥key2,发送给服务端。攻击人就可以完全截获客户端key2的所有信息。
在这里插入图片描述
呕吼,我的博客结束,大家都散了散了。开个玩笑,最高大上的来了。

2.3 混合加密

为了解决上述问题,可以使用有数字认证机构(CA,Cerrutificate Authority)和相关机关颁发的公开密钥证书。人家证书长这样:
在这里插入图片描述
挺漂亮的对吗。也挺有业务能力的。混合加密的流程如下:

step1:服务端把自己的公钥key1给证书颁发机构,向机构申请证书,颁发机构自己也有一对公钥私钥,它利用自己的私钥加密key1,通过服务端网址等信息生成一个证书签名,证书签名同样经过机构的私钥加密,然后把证书发送给服务端
在这里插入图片描述
step2:当客户端向服务端请求通信的时候,服务端不再直接返回自己的公钥,而是把自己申请的证书返回给客户端。
在这里插入图片描述
step3:客户端收到证书后,肯定先验证证书是不是真的。由于各大浏览器和操作系统已经维护了所有权威证书机构的名称和私钥。所以向客户端只需要知道是哪个机构颁发的证书,就可以从本地找到对应的机构公钥,解密出证书签名。客户端按照同样的签名规则,自己也声称一个证书签名,如果两个签名一致,说明证书有效,之后,客户端利用机构公钥解密出服务端的公钥key1

step4:客户端跟之前一样生成自己的对称加密密钥key2,用上一步解密出服务端的公钥key1加密key2,发送给服务端在这里插入图片描述

step4:服务端用自己的私钥解密出key1,得到key2的内容,两人开始用key2进行对称加密。
在这里插入图片描述
可能这里也有人会问,我要是攻击者,我就向认证机构再申请一个证书,拿着这个假的证书发送给客户端呢?值得注意的是证书的签名是由服务端网址等信息构成,并且经过机构私钥加密,攻击者截获证书是得不到任何有效信息的。当然由于没有认证机构的私钥也是没办法篡改证书的。

三、HTTPS的缺点

从来都没有十全十美的方法,HTTPS也有缺点,SSL是为了让HTTP更安全而强行添加的一层协议,肯定会导致处理的速度变慢

SSL在加密解密过程中占用了大量CPU和内存资源,并且在通信中还要占用部分网络资源,处理速度就会变慢。和HTTP相比,使用HTTPS会让网络负载变慢2-100倍。

那既然HTTPS比HTTP更加安全,为啥我们不从始至终都是用HTTPS呢?很好,我之前也这么想,但是学完HTTPS我恍然大悟,加密通信会消耗更多的CPU以及内存资源,如果每次通信都加密,会消耗相当多的资源,那计算机处理的请求也会相应的变少。所以对于我们的非敏感信息则使用HTTP通信,只有包含个人信息等铭感数据才会使用HTTPS加密通信。除此之外,想要节约购买证书的开销也是原因之一。

四、总结

如果你觉得之前的文章都太长,只想一步到位了解到HTTP和HTTPS的区别,我很勤快,直接给出以下几点干条:

HTTP和HTTPS的区别

  1. HTTPS协议需要到ca申请证书,一般免费证书都很少,需要缴费

  2. HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的ssl加密传输协议

  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

  4. HTTP连接都很简单,是无状态的

  5. HTTPS协议是有SSL+HTTP协议构建的了进行加密传输,身份认证的网络协议,要比HTTP安全

今天有在好好学习当然明天也会,之前就想把它弄懂,奈何我的拖延症…今天算是结束HTTPS的学习。有问题的欢迎指出。一定虚心改正。

(好了文末给你们贴个有趣的链接,今天的快乐源泉来着,我给这个链接取名为:直男程序员的结婚请柬,哈哈哈哈,那个花…太丑了吧!!!)

原创文章 78 获赞 21 访问量 3507

猜你喜欢

转载自blog.csdn.net/Vicky_Cr/article/details/105836485