HTTPS,又叫做安全超文本传输协议,是一种广泛使用的网络安全协议它通过加密数据来确保数据的安全性和完整性.加密流程通常包括以下几个步骤:建立安全连接,对称加密,非对称加密,数字证书验证和数据传输.
HTTPS 采用的是对称加密和非对称加密结合的混合加密方式.
1.对称加密
在对称加密过程中,客户端和服务器共享一个密钥,以上模型有一个问题,就是服务器不只是和一个客户端通信,也和很多个客户端通信,所以要求每个客户端的密钥都不相同,就需要每个客户端和服务器建立连接的时候把密钥生成出来,客户端再把自己的密钥通过网络传输给服务器.
在这个过程中,如果密钥被黑客截获了,那么加密就形同虚设,后续加密传输的数据就很容易被解密破解.
如何将密钥安全传输给服务器?HTTPS 使用非对称加密算法来加密对称加密的密钥.
2.非对称性加密
非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢.可以使用公钥加密,私钥解密,也可以使用私钥加密,公钥解密.
非对称加密可以确保密钥的安全传输,同时也能保证数据传输的安全性.但一般我们不会用非对称加密来加密实际的传输内容,因为非对称加密的计算比较耗费性能的,而对称加密运算成本低,速度快,使用非对称加密只是在关键环节:在通信建立前采用非对称加密的方式交换会话秘钥,后续就不再使用非对称加密,后续传输大量业务数据,就全部使用对称加密的会话秘钥的方式加密明文数据。
但是这还远远不够,还缺少身份验证的环节,万一公钥是被伪造的呢?客户端如何获取到公钥? 客户端如何确定这个公钥不是黑客伪造的?此时引入一个中间人攻击问题
3.中间人攻击
从客户端的角度看,其实并不知道网络中存在中间人服务器这个角色。那么被黑客入侵的设备就可以解开浏览器发起的 HTTPS 请求里的数据,也可以解开服务端响应给浏览器的 HTTPS 响应数据。相当于,中间人服务器能够 “偷看” 浏览器与服务端之间的 HTTPS 请求和响应的数据。之所以能进行中间人攻击,是因为客户端无法判断公钥的真假,此时引入数字证书验证,来确定公钥是正确的.