首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Fiddler能分析HTTPS流量意味着HTTPS协议不安全?

这是一次全新的写作体验,相比以前,我总是四平八稳的分析、论证、撰写,产出一篇文章需要很久,而这次完全是“冲动式”的写作过程,所以文章难免有错误,再加上我对Fiddler不太了解,会暴露更多的错误,这一点请大家了解,同时本文不涉及任何的实践,仅仅从理论上进行分析论证。

废话了那么多,那么到底是什么问题呢?核心有两点:

Fiddler是否能够分析、篡改HTTPS流量?如果能,原理是什么?

如果能够分析、篡改HTTPS流量,是否说明HTTPS协议设计有漏洞?

本质上写这篇文章主要原因是很多人对HTTPS协议的误解,总觉得它不安全,所以我先反驳下,这是错误的一种观点。

(1)HTTPS协议从设计上是没有问题的,但历史上HTTPS实现确实出现过一些漏洞(比如 OpenSSL 心脏滴血),但这是工程实现问题,不是协议问题。

(2)早期的HTTPS协议(其实是TLS协议)安全性不是很高,后续版本经过迭代解决了很多问题,理论上HTTPS服务部署者可以废弃低版本的TLS协议,但由于万恶的低版本客户端(比如 xp系统下的IE浏览器)太多了,为了兼容它们,HTTPS服务部署者只能在安全性上做一个折中。

(3)HTTPS协议是一个典型的B/S应用协议,它的安全性不仅仅取决于HTTPS协议的服务器端,也取决于客户端(典型的就是浏览器),如果客户端在实现的时候出现一些问题,也可能导致HTTPS协议漏洞。

(4)web安全(当然也包括其他领域)是一个复杂的问题,HTTPS协议安全只是Web安全领域的一部分,它只是保证你流量不被劫持、伪造、篡改,可web的执行由于JavaScript的存在,仍然会出现安全漏洞,记住web安全和HTTPS安全不是一回事。

(5)不道德的行为,对于HTTPS应用来说,如果一个CA机构没有品行,恶意签发证书,那么HTTPS的安全性也没有保证,这你能怪HTTPS协议吗?某种程度上确实应该怪它,但我们必须了解不安全的根本原因,PKI安全是一个非常复杂的问题,如果不构建一个安全标准,即使有了HTTPS协议,也不见得就安全。

又自言自语说了一大通,现在让我们回到本文的主题,Fiddler能够解密HTTPS流量,它的基本实现原理来源于“中间人”方法,通过下图和对图的描述,同学们就会清楚了。

(1)假设在Chrome浏览器中配置了Fiddler代理,然后在浏览器中访问https://www.test.com,目的是为了查询自己的工资,由于所有的HTTPS流量都会经过Fiddler代理,浏览器向Fiddler发起TLS握手。

(3)浏览器校验完证书后(该证书包含的主机和待访问的主机相同),最后和服务器端协商出一致的对称加密算法的密钥(MasterKeyA)。

(4)TLS握手完成后,浏览器使用MasterKeyA加密应用层数据(即查询自己工资)发送给Fiddler。

(7)Fiddler对100元使用MasterKeyA加密,然后发送给Chrome浏览器,浏览器使用MasterKeyA解密出就得到了自己的工资。

这就是大概的原理,并没有太多的技术含量,就是中间人方法,很多人说“你说的不对,如果如此简单,那么任何一个网关或路由器就能够轻松解密HTTPS流量了”。

有点明白了吗?那为啥Fiddler作为一个代理(中间人)能够解密HTTPS流量呢?因为它的根证书Chrome没有集成在自己的可信任根证书列表中(一个CA机构想将自己的根证书集成到浏览器的可信任根证书列表中需要经过严格的审计),它怎么做到的?

原因在于在配置Fiddler的时候(以下只考虑Windows系统),Fiddler会将自己的根证书放入到Windows可信任根证书库中,Chrome使用Windows的根证书库,所以Chrome就信任了Fiddler的根证书,从而能够解密HTTPS流量了。

总结下,如果要使用Fiddler解密HTTPS流量,必须能够控制配置Fiddler代理的机器(在调试的机器上安装Fiddler根证书),这是很重要的一个前提,如果你作为一个黑客能够控制别人的电脑了,此时就不要讨论这台电脑的HTTPS流量被解密了,安全都是相对的。

最后用一张图简单回顾下Fildder是如何解密的:

大概原理讲完了,很多人觉得Fiddler解密HTTPS配置太复杂了,原因在于有些时候可能需要自己下载Fiddler的根证书并集成到客户端(比如浏览器)或操作系统的可信任根证书列表中,比如:

你想解密HTTPS流量的机器并没有安装Fiddler,只是配置了它的代理。

像Firefox没有使用Windows的根证书库,它使用自己的NSS根证书。

如果你需要自己配置Fiddler根证书,那么下面一些文章适合你阅读:

如果根证书验证签名没有理解,或者想了解更多的PKI知识,可以参考我的书

《深入浅出HTTPS:从原理到实战》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181020G1I7M400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券