HTTPS 降级攻击的场景剖析与解决之道

HTTPS 一定安全么

HTTP 协议,本身是明文传输的,没有经过任何安全处理。那么这个时候就很容易在传输过程中被中间者窃听、篡改、冒充等风险。这里提到的中间者主要指一些网络节点,是用户数据在浏览器和服务器中间传输必须要经过的节点,比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。HTTP 协议,中间者可以窃听隐私,使用户的敏感数据暴露无遗;篡改网页,例如往页面插的广告内容,甚至进行流量劫持,比如有的时候你会发现域名没输错,结果却跑到了一个钓鱼网站上,因为被它劫持了。

此时,HTTPS 的价值就体现出来了。HTTPS 协议在应用层的 HTTP 协议和以及传输层 TCP 协议之间的会话层加入了 SSL/TLS 协议,用作加密数据包。在真正数据传输之前,进行握手通信,握手的信息交换主要包括:双方确认加密协议的版本,确认身份(其中浏览器客户端的身份有时是不需要确认的),确认传输真正数据的加密密码(对称加密)。在用作信息传输的加密密码确认之后,接下来的通信数据都会加密后再传输,从而达到防窃取的作用。原理剖析,可以参考我之前的文章《HTTPS原理剖析与项目场景》

那么,使用了 HTTPS 就能确保安全传输了吗?理论上,是的,但是,现实却不是如此。

设计和实现 SSL/TLS 协议出现了漏洞,导致攻击者同样可以攻击一些旧版本的 SSL/TLS 协议。这其中就包括 SSL 3.0。

什么是 HTTPS 降级攻击

攻击者可利用 SSL 3.0 漏洞获取安全连接当中某些是SSL3.0加密后的明文内容。因为兼容性问题,当浏览器进行 HTTPS 连接失败的时候,将会尝试使用旧的协议版本,于是,加密协议由更加安全的协议,比如 TLS 1.2降级成 SSL 3.0。

如果服务器提供有漏洞的 SSL 3.0 协议的支持,同时,攻击者又能作为中间人控制被攻击者的浏览器发起漏洞版本的 HTTPS 请求,那虽然攻击者监听到的也是加密过的数据,但因为加密协议有漏洞,可以解密这些数据。攻击者可以利用此漏洞,截获用户的隐私数据,比如 Cookie,这样攻击者就可以拿到这些隐私数据,进行更深层次的攻击,进而造成了用户隐私的泄漏。

解决之道

目前,唯一解决问题的方法是禁用 SSL 3.0 加密协议,防止TLS 1.2 或者 TLS 1.1 或者 TLS 1.0降级到 SSL 3.0 加密协议。

禁用的策略有很多,这里主要讲解下 Nginx 如何防止 TLS 降级到 SSL 3.0 以下版本,从而防止 HTTPS 降级攻击。

原先的配置如下。值得注意的是,隐性默认是SSLv3 TLSv1 TLSv1.1 TLSv1.2。

 
  1. ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

禁用的操作很简单,现在改成这样即可。

 
  1. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

总结

HTTPS 能确保安全传输了吗?答案是,不一定,因为旧的版本存在安全漏洞,可能会被攻击者进行 HTTPS 的降级攻击。所以,SSL 3.0 协议以下版本并不安全,因此,为了防止 HTTPS 的降级攻击,我们需要禁用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值