HTTPS加密过程以及中间人攻击
原文链接:https://www.cnblogs.com/yalong/p/16627043.html
在了解https 加密之前先了解几个概念
- 对称加密
- 非对称加密
- 混合加密
对称加密
客户端和服务端用同一个秘钥进行加密,解密
这个秘钥肯定不能保存在客户端,这相当于把肉送到黑客嘴里,很不安全
那么秘钥只能保存在服务端,客户端需要通过网络请求获取秘钥,然后进行加密
服务端在获取到客户端请求后,通过秘钥对加密后的数据进行解密
但是如果在客户端发起网络请求获取秘钥的过程中,被黑客拦截了请求,黑客就拿到了秘钥
那么客户端发送的加密数据,黑客就可以轻易破解了
对称加密整个过程比较简单,传输效率比较高,但是不太安全
非对称加密
有两个秘钥,一个公钥,一个私钥,公钥进行加密的数据,只能通过私钥进行解密
公钥、私钥都保存在服务端
首先客户端通过网络请求,获取到公钥
客户端发送的数据,都通过公钥进行加密
服务端接收到后,用私钥进行解密,获得原数据
整个过程中,就算黑客拦截到请求,拿到了公钥,拿到了客户端发送的数据,也无法解密,因为私钥始终在服务端保存着,从网络传输层面无法拿到私钥
非对称加密,整个过程比较复杂,传输效率比较低,但是安全性高
对称加密整个过程比较简单,传输效率比较高,但是不太安全
非对称加密,整个过程比较复杂,传输效率比较低,但是安全性高
结合两者的特性, 产生了混合加密,https的加密方式就采用的这种
混合加密
混合加密的公钥,私钥都保存在服务端
客户端通过网络请求获取到公钥,通过公钥生成一个随机码,比如这个随机码是 ABC123,客户端把加密后的随机码传到服务端
服务端通过私钥进行解密,就获取到了ABC123 这个随机码
之后的请求,客户端端,服务端都把 ABC123 作为秘钥进行对称加密传输
这样黑客就无法通过网络层面获取到 ABC123 这个秘钥
也就是说,先通过非对称加密生成随机码,保证安全性,然后后面的请求就通过对称加密进行数据传输,保证传输效率
这样的混合加密既安全,有高效,这也是 https 的加密过程
整个过程如下图所示
中间人攻击
黑客拦截客户端和服务端请求
客户端向服务端获取公钥的时候,黑客进行拦截,黑客会伪造公钥、私钥、证书,把黑客自己生成的公钥给客户端
客户端在不知情的情况下,使用黑客的公钥进行加密
比如黑客再拦截客户端的登录接口请求,因为公钥、私钥都是黑客生成的,所以黑客可以通过自己的私钥进行解密,从而获取用户真实的账号密码
中间人攻击预防措施
使用证书,而且必须是官方认证的正规证书
因为官方的证书会跟浏览器就交互,浏览器认识这些官方办法的证书
所以官网证书 在 https 验证证书合法性这一环节就可以通过
一些非官方、或者黑客生成的证书就无法通过证书合法性验证
不要轻易安装陌生的证书,或者其他未知的软件啥的
具体可以参考这篇,写的很不错: 为什么如此安全的Https协议却仍然可以被抓包呢?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」