前言
本篇博客将介绍HTTPS加密的具体流程,坐好板凳发车啦~~
一.HTTPS是什么
HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层
HTTP协议内容都是按照文本的方式明文传输的,这就导致在传输的过程中可能有一些内容被篡改。
二.为什么要加密
臭名昭著的“运营商劫持”
由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。
点击“下载按钮”,其实就是在给服务器发送了一个HTTP请求,获取到的HTTP响应就包含了该APP的下载链接,运营商劫持以后,就发现这个请求是下载天天动听,那么就自动的把交给用户的响应给篡改成QQ浏览器的下载地址了。
不止运营商可以劫持,其他的黑客也能劫持,故HTTPS就是在HTTP的基础上进行了加密,进一步的保护用户的安全。
三.加密解密是什么
加密就是把明文(要传输的信息)进行一系列的变换,生成密文;
解密就是把密文再进行一系列的变换,还原成明文。
四.HTTPS的工作过程
加密的方式有很多种,但是整体可以分成两大类:对称加密和非对称加密
4.1引入对称加密
对称加密其实就是通过同一个“密匙”,把明文加密成密文,再通过此密匙把密文解密成明文。
4.2引入非对称加密
非对称加密要用到两个密钥,一个叫做“公钥”,一个叫做“私钥”,
公钥和私钥是配对的,最大的缺点就是运行速度非常慢,比对称加密要慢得多。
通过公钥对明文加密,再通过私钥对密文解密,也可以反着来。
上诉流程,有几点问题需要解答:
1.客户端如何获取到公钥?
2.客户端如何确定这个公钥不是黑客伪造的?
引入证书!
在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个证书
这个证书返回了刚才的公钥,也包含了网站的身份信息。
证书包含的很多信息:证书发布机构,证书有效期,公钥,证书所有者,签名...
常见的生成签名的算法有:MD5和SHA系列
MD5的特点:
定长:无论多长的字符串,计算出来的MD5值都是固定长度(16字节版本和32字节版本)
分散:源字符串只要改变一点点,最终得到的MD5值就会差别很大
不可逆:通过源字符串生成的MD5很容易,但是通过MD5还原成源字符串理论上是不可能的
总结:
尾语
这篇博客到这里就结束啦,希望可以给大家带来帮助~~