HTTPS加密过程以及中间人攻击

原文链接:https://www.cnblogs.com/yalong/p/16627043.html

在了解https 加密之前先了解几个概念

  • 对称加密
  • 非对称加密
  • 混合加密

对称加密

客户端和服务端用同一个秘钥进行加密,解密
这个秘钥肯定不能保存在客户端,这相当于把肉送到黑客嘴里,很不安全
那么秘钥只能保存在服务端,客户端需要通过网络请求获取秘钥,然后进行加密
服务端在获取到客户端请求后,通过秘钥对加密后的数据进行解密
但是如果在客户端发起网络请求获取秘钥的过程中,被黑客拦截了请求,黑客就拿到了秘钥
那么客户端发送的加密数据,黑客就可以轻易破解了
对称加密整个过程比较简单,传输效率比较高,但是不太安全

非对称加密

有两个秘钥,一个公钥,一个私钥,公钥进行加密的数据,只能通过私钥进行解密
公钥、私钥都保存在服务端
首先客户端通过网络请求,获取到公钥
客户端发送的数据,都通过公钥进行加密
服务端接收到后,用私钥进行解密,获得原数据
整个过程中,就算黑客拦截到请求,拿到了公钥,拿到了客户端发送的数据,也无法解密,因为私钥始终在服务端保存着,从网络传输层面无法拿到私钥
非对称加密,整个过程比较复杂,传输效率比较低,但是安全性高


对称加密整个过程比较简单,传输效率比较高,但是不太安全
非对称加密,整个过程比较复杂,传输效率比较低,但是安全性高
结合两者的特性, 产生了混合加密,https的加密方式就采用的这种


混合加密

混合加密的公钥,私钥都保存在服务端
客户端通过网络请求获取到公钥,通过公钥生成一个随机码,比如这个随机码是 ABC123,客户端把加密后的随机码传到服务端
服务端通过私钥进行解密,就获取到了ABC123 这个随机码
之后的请求,客户端端,服务端都把 ABC123 作为秘钥进行对称加密传输
这样黑客就无法通过网络层面获取到 ABC123 这个秘钥

也就是说,先通过非对称加密生成随机码,保证安全性,然后后面的请求就通过对称加密进行数据传输,保证传输效率

这样的混合加密既安全,有高效,这也是 https 的加密过程

整个过程如下图所示

中间人攻击

黑客拦截客户端和服务端请求
客户端向服务端获取公钥的时候,黑客进行拦截,黑客会伪造公钥、私钥、证书,把黑客自己生成的公钥给客户端
客户端在不知情的情况下,使用黑客的公钥进行加密
比如黑客再拦截客户端的登录接口请求,因为公钥、私钥都是黑客生成的,所以黑客可以通过自己的私钥进行解密,从而获取用户真实的账号密码

中间人攻击预防措施

使用证书,而且必须是官方认证的正规证书
因为官方的证书会跟浏览器就交互,浏览器认识这些官方办法的证书
所以官网证书 在 https 验证证书合法性这一环节就可以通过
一些非官方、或者黑客生成的证书就无法通过证书合法性验证

不要轻易安装陌生的证书,或者其他未知的软件啥的
具体可以参考这篇,写的很不错: 为什么如此安全的Https协议却仍然可以被抓包呢?

posted @ 2022-08-26 11:28  进军的蜗牛  阅读(338)  评论(0编辑  收藏  举报