您现在的位置是:首页 >技术杂谈 >HTTP协议(二)/HTTPS网站首页技术杂谈

HTTP协议(二)/HTTPS

二肥是只大懒蓝猫 2024-06-17 10:18:43
简介HTTP协议(二)/HTTPS

HTTPS是啥

https是在http协议的基础上,加上了数据的加密解密层,即TLS/SSL。在进行http请求的时候,通过TLS/SSL进行加密,在响应的时候,也会通过TLS/SSL进行解密。加密解密层TLS/SSL不会对下三层加密解密,而是只会对应用层进行加密解密,因此在网络中,HTTP的请求的有效载荷信息总是被加密的。

接下来我们将要分析HTTPS协议是如何进行通信的,通信是如何进行保密的,在此之前,需要先学习以下概念。

加密方式:对称加密和非对称加密。数字摘要/数字指纹和数字签名

加密方式

加密的方式有两种:对称加密和非对称加密。

对称加密

在对称加密中,只有一个密钥(比如说是X)。那么加密和解密的过程,这里使用异或举例:

客户端发送给服务器的数据进行加密:data ^ X = result;

服务器通过对客户发来的数据进行解密:result ^ X = data;

非对称加密

在非对称加密中,有一对密钥:公钥和私钥。如果使用了公钥加密,那么只能使用私钥解密,反过来,如果使用了私钥加密,那么只能使用公钥解密。一般来说,公钥是公开的,而私钥必须是自己进行私有保存的。

数字摘要/数字指纹/数字签名

比如现在我们手中有一篇需要加密的科学报告,并且需要将这份加密后的科学报告传输给目的接收方,接收方接收后需要进行解密。

数据摘要 or 数据指纹

使用hash散列将科学报告进行一份固定长度,唯一的字符序列,这一份字符序列就叫做数据摘要或者数据指纹。其作用是:如果科学报告被篡改,哪怕是篡改了一个字符,都会对原有的hash散列产生大的差异,可用作后续的检测。

数字签名

使用加密算法对数据摘要进行加密得出来的加密结果就叫做数字签名

校验

发送方会将数字签名和数据摘要发送给接收方,接收方对其进行校验。使用解密算法对数字签名进行解密,然后拿着解密出来的这份数据摘要和原本的数据摘要进行对比,看看有没有被篡改。

CA证书

服务方或者是客户方需要通过申请CA证书才能是合法的。那么在申请CA证书时,一般就是把公司的基本信息+域名+公钥给过去,然后CA机构会拿着这些要素组成的文本,用CA机构的私钥进行加密,得出一个数字签名。最后把这个数字签名+文本形成证书颁发给申请的服务方等。

HTTPS的通信

采用的加密方式

在HTPPS协议通信中,采用的加密方式是对称+非对称的组合形式进行对有效载荷的加密。

对称方式作用于双方通信时用于对报文加密和解密,非对称方式是用于密钥协商阶段的

发送公钥,回送私钥,携手合作

首先,服务端和客户端都有属于自己的公钥和私钥,因此在通信开始前,通信双方需要把自己的公钥交给对方。在这一步骤中,比如服务端,因为其公钥s被包含在了CA证书中,因此服务端就把自己的CA证书传给客户端,客户端拿到证书后,因为CA证书机构的公钥C是公开的,因此客户端拿着CA的公钥C对服务端的CA证书中的数字签名进行解密,从而进行校验。如果校验通过,那么客户端就拿到了服务端的公钥s,然后客户端拿着这个公钥s,形成一个私钥X(这个私钥需要发送回给服务端,进行对称加密的通信),然后客户端再拿这个公钥s,对私钥X进行加密,然后发送回给服务端,服务端拿着这个报文用自己的私钥S解密,拿到私钥X。

 

非法截取公钥,狸猫换太子

但是事情并不会那么顺利,总有一些非法分子想要截取信息,他们截取信息的方法是通过拦截通信方,比如是服务端的公钥s,然后用自己的公钥m将服务端的公钥s替换下来,然后再传给客户端。好一招狸猫换太子!客户端并不知道这个公钥m已经不是服务端的了,所以客户端拿着这个传来的公钥m去形成用于通信是私钥X,接着再拿着非法分子的公钥m对私钥X进行加密,形成报文发送回去。非法分子截取报文,用自己的私钥M对其进行解密,拿到了这个用于通信的私钥X。最后,非法分子用服务端的公钥s对报文重新加密,发送回给服务端!此时,通信双方,加上这个非法分子,都拥有了这个用于通信的私钥X!后果可想而知!

 

CA证书大显神通

非法分子想要做到将原有的公钥替换下来,换成自己的公钥,得先问问CA证书同不同意!

在上面的非法截取公钥的过程中,因为CA证书的存在,如果非法分子修改了数据摘要中的公钥信息,那么他也必须修改数字签名中的公钥信息,而修改数字签名,需要将其解密。因此CA证书的数字签名是用CA机构的私钥加密而来的,并且其公钥是公开的,当非法分子拿着CA机构的公钥对数字签名进行解密后,成功修改数字签名,那么问题来了,他如何重新对修改后的数字签名进行加密?他无法加密了啊,因为CA的私钥,只有CA自己有!这一手,打的就是一个明牌!因此,一旦非法分子想要对CA证书进行修改,他是不能成功的,因为客户端会对其进行校验,一旦校验不通过,哦吼~

就算非法分子也是一个合法的服务方,也不能修改,别忘了,证书里面是包含了域名的,域名不对,也是校验不通过。

公钥互送完毕,开始通信

当通信双方安全地拿到用于通信的私钥X,便开始使用对称加密的方式进行通信啦!

总结HTTPS通信过程:

服务端发送自己的CA证书给客户端,客户端拿着证书,对证书中的内容通过hash散列形成数据报文,再通过CA公钥对数字签名进行解密,获取其中的数据报文,两份报文进行对比校验。校验通过后,拿着服务端的公钥形成用于通信的私钥X,然后对私钥X加密,发送回给服务端,服务端用自己的私钥对齐进行解密,拿到这个私钥X。此后,双方可用私钥X进行加密解密的https通信啦!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。