【网络原理】详解 HTTPS 协议

发布于:2025-03-04 ⋅ 阅读:(10) ⋅ 点赞:(0)

🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈

在这里插入图片描述

1. 介绍 HTTPS

在学习 HTTPS 的时候,我们需要对 HTTP 有较深的理解,HTTPS 基于 HTTP 上,HTPPS 只是比 HTTP 多了一个 “加密层”

HTTPS = HTTP + 加密层

(回顾 HTTP 可参考往期内容:【网络原理】万字详解 HTTP 协议

2. 为什么有 HTTPS

主要是解决运营商劫持! 当然,不止运营商可以劫持,其它黑客也可以劫持,也可以用类似的手段进行劫持,来窃取用户隐私信息,或者纂改内容

只要网络上的数据,明文传输的,都是存在劫持的,被篡改的风险
(所以,网络看着是一片祥和,其实是一个原始森林一样,处处充满危机~)

为了能够改善上述问题,就引入了加密,HTTPS 就应运而生了~
(只能说改善,不能说解决,安全是相对的,如果破译成本高于获利,那么就是相对安全的啦)

补充运营商劫持

在这里插入图片描述

从而运营商可以获取一定的利润~

3. HTTPS 的基本工作过程

3.1 基本概念

明文】实际要传达的信息
密文】转换后得到的信息(光看密文,是看不到什么信息的,需要看到明文)

加密】把明文转换成密文的过程
解密】把密文转换成明文的过程

密钥】加密和解密的过程需要一个关键的钥匙,这个钥匙称为密钥

既然要保证数据安全,就需要进行 “加密”,网络传输中不再直接传输明文了,而是加密之后的 “密文”,加密针对的就是 HTTP 的各种 header 和 body,加密的方式有很多,但是整体可以分成两大类:对称加密非对称加密

对于密码学,并没有太多的了解,不讨论加密和解密的细节算法实现,只考虑宏观的过程~

接着,我们一起往下看,继续学习~

3.2 引入对称加密

3.2.1 对称加密概念介绍

对称加密,只有一个密钥,key

在这里插入图片描述

加密和解密使用的是同一个密钥,对称加密的特点就是计算起来比较快速~

3.2.2 具体使用过程

在这里插入图片描述
如果有黑客,黑客如果没有密钥 key,此时黑客就拿到了密文之后,是不知道真实信息的,自然也就无法纂改,安全性大幅上升!

在这里插入图片描述

问题1:但是存在一个问题,服务器对应的客户端,有很多个,不是只有一个的,不同的客户端肯定使用的不同的密钥(如果是同一个密钥,黑客作为客户端,不就可以拿到密钥了嘛),既然是客户端需要自己生成一个密钥,如何把这个密钥告诉给服务器呢?
也是通过网络传输的~

既然客户端的密钥需要通过网络传输给服务器,那么在这个传输的过程中,也有可能被黑客截获,这样黑客就知道了密钥!

问题2:看起来需要针对 key 也加密一下,保证 key 的安全性,难道要生成一个 key2 嘛,使用 key2 加密 key 嘛,key2 也需要告诉服务器,那 key2 谁来加密呢?

走到这里,是行不通的,就得考虑其他办法,我们接着看看非对称加密~

3.3 引入非对称加密

3.3.1 非对称加密概念介绍

非对称密钥需要两个密钥,一个叫做公钥(pub),一个叫做私钥(pri)

在这里插入图片描述

即用一个密钥加密,就用另一个密钥解密,非对称加密的特点就是计算起来比较慢,消耗的资源也更多一些~

这里的公钥和私钥,其实就是两个比较大的整数,这两个谁当公钥谁当私钥都行,此处约定,自己留着的这个数字就是私钥,公布给别人的数字就是公钥~

3.3.2 具体使用过程

那么,这个客户端生成的密钥 key 到底如何安全的传输给服务器呢?

这里可以采用对 key 非对称加密~ 具体过程如下:
在这里插入图片描述
这里其实就用到了 3 把钥匙,一对公钥私钥,一个密钥key,我们知道 key 通过网络传输过去,有被纂改的风险,此处服务器传递 pub 给 客户端,客户端拿到 pub 对自己的生成的密钥 key 进行加密,加密后的密文传输给服务器,服务器通过 pri 解密,得到密钥 key,之后的数据传输,就可以直接通过 key 加密,传输密文了~~

这样就完全安全? 没有其它攻击了嘛~

其实,并不是的,安全只是"相对的",黑客也不是吃素的,黑客通过"来骗来偷袭"的方式,中间人攻击,纂改了 pub,具体过程如下:

在这里插入图片描述

这里的关键就是,客户端不知道公钥 pub 是不是服务器真正传过来的数据!

中间人的攻击,破解的关键就是 —— 在于让客户端能够完全信任公钥

3.4 引入证书

这个"证书"并不是一个"纸质"的证书,而是一串数字!类似于一个对象,里面有很多属性,数字证书~

有一个权威的机构,负责颁发证书,证书内的属性:

  • 服务器 url
  • 证书的过期时间
  • 颁布证书的机构是啥
  • 服务器自己的公钥 pub
  • 加密后的签名

加密后的签名是:先针对证书的属性,计算一个校验和(签名),再由证书的颁布机构,使用自己的私钥对于这个签名进行加密!

引入证书后,具体流程如下:

接下来,这里有 5 把钥匙,不要弄混淆啦,具体 5 把钥匙如下:

密钥 key,客户端生成的,用来加密业务数据
服务器生成的非对称密钥,公钥 pub, 私钥 pri,用来加密对称密钥key
权威机构生成的非对称密钥, 公钥 pub2,私钥 pri2,私钥是权威机构持有的,公钥是客户端电脑系统内置,用来加密证书的签名
在这里插入图片描述

客户端拿到证书后,首先就是需要针对证书进行校验,具体校验过程如下:

1)得到初始的签名:客户端使用系统中内置的权威机构的公钥 pub2,针对上述证书的加密签名进行解密,得到了初始的签名,这个签名是由权威机构算出来的,设为 sum1
2)计算现在的签名:客户端使用同样的签名计算算法,基于证书中的属性重新计算,得到 sum2
3)比较两个签名是否相同,如果相同,说明证书中的数据都是未被纂改的原始数据,如果签名不同,说明证书的数据就被纂改过,客户端的浏览器弹框报错

(需要明确一个事实:如果数据相同,按照相同的算法计算得到的签名,也一定相同,反制,如果发现签名不同了,说明原始的数据一定不同)

问题1: 为什么说黑客不能纂改了呢?

那我们要清楚,黑客要纂改,需要如何做?

1)黑客把证书的服务器的公钥,替换成自己的公钥
2)黑客针对证书的各个属性,重新计算签名
3)黑客需要把签名,重新加密,要想加密,务必需要知道权威机构的私钥 pri2,但是这个 pri2 只有权威机构知道,黑客并不知道(此处是关键!)

此处安全的关键,不是黑客"看不到",黑客也是可以看到证书的,而是黑客"改不了"~~

上述介绍的这一套,对称加密+非对称加密+证书,这一套流程,不仅仅是 HTTPS 会涉及到,其它场景也会用到,如 SSH协议、JDBC 等

HTTPS = HTTP + SSL/TLS(也是一个协议,相当于私钥是权威机构持有的)

3.5 完整流程

  1. 通过对称密钥,来保证业务数据的安全
  2. 使用非对称密钥,来安全传输对称密钥
  3. 通过中间人攻击,黑客能够拿到对称密钥
  4. 引入证书(使客户端能够验证该公钥是否合法)

4. HTTP 与 HTTPS 区别

从三个方面来说:

  • 端口号:HTTP默认端口号是80,HTTPS默认端口号是443;
  • url前缀:HTTP的url前缀是http://,HTTPS的url前缀是https://;
  • 安全性:HTTPS是HTTP的增强版,在HTTP协议的基础上增加了SSL/TLS协议,确保数据在传输过程中是加密的,SSL/TLS需要向CA(证书权威机构)申请数字证书,用于验证服务器身份

💛💛💛本期内容回顾💛💛💛

在这里插入图片描述

✨✨✨本期内容到此结束啦~