HTTPS
目录
一、HTTPS是什么
1.1 运营商劫持
1.2 加密是什么
二、HTTPS的工作过程
2.1 对称加密
2.2 非对称加密
一、HTTPS是什么
HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层,HTTP的内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。
1.1 运营商劫持
什么是运营商劫持?
由于我们通过网络传输的任何数据包都会经过运营商的网络设备(交换机,路由器等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。
假如我用我的浏览器下载网易云音乐,我的数据经过运营商设备,运营商就把我要下载的链接替换成了QQ浏览器,于是我下载的就是一个QQ浏览器了,这种行为就是运营商劫持。
思考下,为什么运营商要进行劫持?
被金钱蒙蔽了双眼
不止运营商可以劫持,其他的黑客也可以用类似的手段进行劫持,来窃取用户隐私信息,或者篡改内容,试想一下,如果黑客在用户登录支付宝的时候获取用户账户余额,甚至获取用户的支付密码........在互联网上,明文传输是比较危险的事情!
HTTPS就是在HTTP的基础上进行了加密,进一步来保证用户的信息安全。
1.2 加密是什么
加密就是把明文(要传输的信息)进行一系列变换,生成密文。解密就是把密文再进行一系列变换,还原成明文。
在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。
二、HTTPS的工作过程
既然要保证数据安全,就需要进行加密。网络传输中不再直接传输明文了,而是加密之后的密文,加密的方式有很多,但是整体可以分成两大类:对称加密和非对称加密。
2.1 对称加密
对称加密其实是通过同一个密钥,把明文加密成密文,并且也能把密文解密成明文。
客户端和服务器都持有同一个密钥, 客户端传输的数据(HTTP请求的header和body)都通过这个密钥进行对称加密,实际上在网路传输过程中,传输的是密文,服务器在收到密文后,接下来就可以根据刚才的密钥来进行解密,从而拿到明文。
上图中,由于数据是加密的,黑客因为没有密钥从而不知道明文是什么
如果黑客知道秘钥了,就是可以破解的。
客户端和服务器使用相同的密钥,但是服务器不只是和一个客户端进行交互,是同一时刻和一堆客户端进行交互,如果是相同的密钥,那么黑客也可以伪装成一个客户端和服务器进行交互,这样就可以拿到密钥了.....于是,每个客户端和服务器进行交互时,就有了各自的密钥,每个客户端的密钥各不相同。
但事情没有那么简单,服务器同一时刻就是给很多客户端提供服务的,这么多客户端,每个客户端都有各自的密钥,因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~
比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥。
但是如果直接把密钥明文传输,那么黑客也能获取密钥了~~此时后续的加密操作就形同虚设了。
因此密钥的传输也必须加密传输!
但是要想对密钥进行对称加密,就仍需要先协商确定一个“密钥的密钥”,此时密钥的传输再用对称加密就行不通了。此时就需要引入非对称加密 。
2.2 非对称加密
非对称加密需要用到两个密钥,一个叫做公钥,一个叫做私钥。
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密慢很多。
- 通过公钥对明文加密,变成密文;
- 通过私钥对密文解密,变成明文。
也可以反着用
- 通过私钥对明文加密,变成密文;
- 通过公钥对密文解密,变成明文
基于非对称加密,就是让服务器自己生成一堆公钥和私钥,公钥发出去,私钥自己保存。
此过程也有一定缺点:
在服务器把自己的公钥返回给客户端时,被黑客进行了中间拦截,它自己生成了一对公钥和私钥。
过程详解:首先客户端想要知道公钥,服务器会给每个设备发公钥,但是被黑客入侵,黑客就生成了自己的一对公钥和私钥,于是黑客就把自己的公钥发给客户端,等客户端和服务器进行交互时,黑客就能用自己的私钥对密文进行解密,得到密钥就能得到明文。
解决方式:
- 在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书。
- 这个证书包含了刚才的公钥,也包含了网站的身份信息。
证书机制,就相当于引入了一个认证机构,此处的证书就是一个加密的字符串和服务器的域名。
尽管黑客在理论上可以尝试修改传输中的证书,但是由于签名的存在,他们不能成功地修改证书而不被发现。如果证书被篡改,客户端会在验证过程中检测到这一点,从而拒绝建立连接。