1. 什么是HTTPS?
HTTPS也是一个应用层协议,在HTTP协议的基础上引入了一个加密操作.只不过HTTP协议是按照文本的方式明文(要传输信息)传输,就会导致传输过程中数据会被篡改和泄露的情况.
通过HTTPS在HTTP的基础上进行加密,就能进一步保证数据的信息安全.
加密其实就是把明文经过一系列的转换,生成密文.解密就是把密文在进行一系列的转换,还原成密文.
在经过加密和解密的过程中,需要有一个或者多个中间数据的辅助来完成,此时我们便称为"密钥".
2. HTTPS的工作流程
2.1 对称加密
对称加密使用同一个"密钥",把明文加密成密文,也能把密文解密成明文.
此时黑客是不知道密钥是什么,也就无法获取数据,但是服务器会给很多客户端提供给服务,此时服务器就需要维护每一个客户端和每一个密钥之间的对应的关系.
如果把密钥进行明文传输,很容易就会被黑客给截获到,就不能够保证数据的安全性.所以,我们需要采用非对称加密的方式解决.
2.2 非对称加密
非对称加密会有两个"密钥",一个"公钥",一个"私钥".公钥和私钥是配对的,但是缺点就是运算速度慢.引入私钥和公钥就可以解决数据安全性.
- 通过私钥对明文进行加密,变成密文.
- 通过公钥对密文进行解密,变成明文.
- 通过私钥对明文进行加密,变成密文
- 通过公钥对密文进行解密,变成明文
客户端在本地生成对称密钥,通过公钥加密,发送给服务器,即使黑客截获了公钥加密的数据,也无法查看原文.此时服务器再通过私钥解密,就可以获取客户端的对称密钥,并且对这个确认密钥进行加密,返回给客户端.后续客户端再和服务器通信的时候只用对称加密即可,因为密钥只有客户端和服务器知道,其他客户不知道.
但是上述还存你在一个严重的问题!就是中间人攻击,黑客可以使用中间人攻击的方式,拿到对称密钥.
为了解决中间人攻击,我们使用第三方认证的"公正机构".
2.3 引入证书
在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书,证书包含了公钥,也包含了网站的身份信息.
第三方公证机构的公钥会分发给其他的各种设备不是通过网络传输的,而是系统内置的.也可以是通过其他额外安装的公正机构的公钥.因此黑客没办法对这个环节进行中间人攻击.
当客户端拿到证书之后,也就是拿到了证书中的公钥.
此时客户端需要验证公钥是否是服务器的公钥.就需要进行校验.
进行校验的方法就需要使用到核心机制:“数字签名”=>被加密后的校验和,公正机构在生成证书的时候,会先针对证书中的其他属性,生成校验和,会使用第三方认证的私钥,针对校验和进行加密,此时别人就无法重新生成这个校验和.
- 如果黑客把证书的数据给修改了,把公钥替换成自己的公钥,此时客户端在进行证书校验的时候,就会很容发现被修改.
- 黑客如果对数字签名进行替换也是不行的,因为数字签名是先计算校验和,再使用认证机构的私钥进行加密,黑客不知道认证机构的私钥是什么
- 黑客是不可以构建三方机构的,因为申请一个证书还有域名,此时域名不能和网站的域名相同,因为审核过不了