(网络)应用层协议-HTTPS
1.HTTPS是什么?
HTTPS是应用层的一种协议,是在HTTP的基础上进行了加密层的处理。
HTTP协议的内容都是按照文本的形式进行传输的,所以呢就很容易被别人知道传输的是什么。
我们在了解了TCP/IP之后是知道我们的数据在传输的过程中是通过路由器进行传输的,所以呢中间的路由器就会知道我们传输的信息是什么。这个路由器就是运营商进行控制的。
我们现在的网站都是有很多的广告的,只要我们搜索了信息之后就会,首先给我们弹出广告,之后才会出现我们想要的内容。
我们要是不小心点进去之后,这边的服务器就会统计出我们的时长,之后让广告方进行支付,这样就进行了金钱交易。这样赚钱的话就会引起别人的嫉妒,本来这个运营商就知道我们传输的数据,运营商就将数据进行了篡改,改成了他们相关的产品,这就使得原本浏览器的厂商的收入减少,这就推进了HTTP的发展,之后这些厂商就想着怎么把这个信息进行加密下,这就最后诞生了HTTPS协议,直到现在的话HTTPS也是普遍使用的。
2.加密是什么?
加密:加密就是将我们原本的信息进行加密,生成密文。
解密:解密就是将密文进行一系列的运算,还原成明文。
我们在加密和解密的过程中我们就需要一套密码之类的东西,使得可以将原本的数据进行加密或者使得加密的数据进行解密,这个东西就叫做秘钥。
3.HTTPS的工作原理。
目的就是将原本透明的数据进行加密。之后我们的网络传输中传输的就是“密文”。
加密的方式有很多种,但是整体上分为两大类:对称加密 和 非对称加密。
3.1引入对称加密。
对称加密其实就是通过同⼀个 "密钥" , 把明⽂加密成密⽂, 并且也能把密⽂解密成明⽂。
我们上图中传输的过程就算黑客将数据进行截获了,因为我们的数据是加密的所以呢,中间的黑客也拿数据没有办法。
但是事情不是这样的,就是服务器需要维护很多客户的数据的,所以每个人的秘钥都是不一样的,要是秘钥是服务器进行存储的话,这就给服务器造成了很多的负担。所以呢我们要进行的是客户端和服务器建立连接的时候,两者协商这次的秘钥是啥,这就降低了我们服务器的担忧。
下面是秘钥不在服务器存储的交互图:
我们在客户端的时候将数据进行了加密,我们传输过去的内容就是加密的,那么我们传输了过去之后,服务器是怎么知道咋解开密码的,所以就需要借助到秘钥。那么我们从客户端进行传输密钥的时候就会被黑客获取到,这就使得我们被黑客获取的数据被解开,就没有达到我们想要的效果。
上面我们直接将密钥进行明文传输的话,就会被黑客获取到,那么我们只要将密钥进行加密,黑客就获取不到了。那么我们要是对秘钥再次进行对称加密的话,这个加密的密钥还是会被黑客获取到的,所以我们就要使用非对称加密了。
3.2引入非对称加密。
⾮对称加密要⽤到两个密钥, ⼀个叫做 "公钥", ⼀个叫做 "私钥"。公钥和私钥是配对的. 最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多.。
我们在使用 公钥和私钥的时候是错开的,就是使用公钥加密的需要使用私钥进行解密,使用私钥加密的就需要使用公钥进行解密
下面是通过非对称加密对对称加密中的密钥进行的加密的简单交互图:
我们观察上图我们使用了公钥对秘钥进行了加密,公钥中间的黑客是知道的,黑客也可以获取到密文,可是这个包含密钥的数据只能通过私钥进行解密,所以呢,黑客拿到也是没用的。所以数据传输的到服务器之后,服务器使用私钥解开了密码,获取到了密钥,之后就获取到了信息,我们这样看的话是不存在问题的。
那么我们怎么保证最后客户端收到的答复是真正服务器收到了呢,怎么确保数据在中间没有被黑客进行更改,最后返回结果答复的时候是被专门修改过的呢?
3.3中间人攻击。
我们观察下面的图是被黑客替换过信息的:
就是上面的过程就是中间人攻击,中间的黑客对数据进行更改了,交互的两边也没办法知道,就造成了数据的丢失。
3.4引入证书,通过证书解决中间人攻击。
我们解决上面的 只要保证这个传输的公钥是正确的就解决了问题。那么我们就需要一个证书,确保传输的信息是没被改过的。证书就如⾝份证,证明服务端公钥的权威性。
证书中包含以下信息:
证书发布机构,证书有效期,公钥,证书所有者,签名。
需要注意的是:申请证书的时候,需要在特定平台⽣成查,会同时⽣成⼀对⼉密钥对⼉,即公钥和私钥。这对密钥对⼉就是⽤来在⽹络通信中进⾏明⽂加密以及数字签名的。
其中数字签名是至关重要的,会在我们进行数据长度计算对比中起到作用,我们弄得数字签名是有认证机构的认证的。
对数据进行验证的时候我们会使用自己的私钥对使用公钥进行加密的签名进行解密,拿出里面的数组,之后再自己计算一遍数据,判断两个数据是否相等。相等的话就是没有问题的。
注意:我们认证机构里面的私钥只有我们自己有,所以就不存在篡改签名。
要是对方进行了整体调换我们也会通过自己特有的IP进行识别出来。