HTTPS安全性之中间人攻击

HTTPS是为了解决HTTP不安全的问题,那HTTP为啥不安全。
HTTP整个通讯的过程是不进行加密的,所以传输过程的参与者在传输中都可以随意查看和修改。这样就会存在中间人攻击的情况。
常见的中间人攻击方式有这几种:

  1. DNS欺骗,将指定域名的解析记录进行篡改,指向到假网站的服务器上去。这种情况主要存在于本地host被篡改、本地电脑网络设置中DNS服务器设置到非法DNS,网络运营商使猫腻。
  2. 会话劫持,不明WiFi和不良运营商、代理都存在这个问题。不良运营商在网页中加入广告代码,连接不明WiFi会导致请求被监听。
  3. ARP投毒, 这个不太了解,暂不探究。

针对上述存在的问题,HTTP没有很好的防御手段,只能寄希望于希望。
所以HTTPS成为首选。那么HTTPS如何防御中间人攻击。
首先我们规划一下中间人攻击的步骤。

  1. 客户端向服务器发送请求
  2. 中间人正常转发请求至服务端
  3. 服务端返回证书
  4. 中间人拦截证书,并伪造一个新的假证书发送给客户端
  5. 客户端收到证书验证后,发送对称加密用的加密字符串给服务端
  6. 中间人拿到加密字符串通过之前假证书对应的私钥解密后,用服务端发送的公钥加密后发送给服务器
  7. 服务端收到加密字符串正常返回响应
  8. 中间人解密篡改后再重新加密发送给客户端

在上面过程中最重要的点就在第4、5这两个环节,浏览器拿到证书会进行校验,而具有公信力的CA机构所颁发的证书是很难伪造的,所以中间人的伪造的证书基本都是不被系统信任的,浏览器会提醒安全性问题并拦截请求。
所以存在中间人攻击的情况就是你安装了不明来源的证书,使其被系统信任,那么在证书验证的时候就会被通过,中间人攻击就成功了。另外就是类似之前的12306,需要客户自行下载根证书安装并信任,而用户会被不法之徒误导下载了假的根证书,那么也存在中间人攻击了。
Charles一类的抓包软件也是一样的原理,如果需要抓取HTTPS请求,就需要安装并信任Charles的根证书,这样,证书验证就会通过。不同于中间人攻击的是,Charles 这类软件对请求进行抓包是用户自己知情并认可的行为,并且仅在开启的情况才抓包。
所以从自身信息安全的角度,大家日常要注意以下几点:

  1. 不要连接不明WiFi,并且一定不要用不明WiFi访问非HTTPS网站
  2. 不要使用盗版系统,如果使用了盗版系统可以去证书管理看看又不明来源证书(有一说一,现在盗版系统在证书的问题上手脚不多,主要就是预装软件,这个是收入大头)
  3. 不要随便安装并信任不明来源的证书!!!
  4. 网站主尽可能为自己的网站部署HTTPS

发表评论

电子邮件地址不会被公开。 必填项已用*标注