随着Let's Encrypt等服务的出现,运用HTTPS的成本已经十分低廉了。也有越来越多的网站开始运用HTTPS了,在YouTube上,史无前例的有超过50%的流量运用HTTPS。HTTPS中的S是Security的含义,而我们知道,安全总是伴随着成本的上升,HTTPS也不例外。HTTP上额外的安全性会带来那些成本上的提升呢?出于这个目的,本文研究了过去三年(即2011-2014年)间的HTTPS网络流量的变化,以及TLS(Transport Layer Security)对分别在有线网、Wi-Fi和3G连接的情况下对网络延迟、数据消耗、电池消耗的影响。我们将首先介绍本文的结论,之后分别介绍HTTPS的运用趋势、对网页加载时间的影响、对数据流量的影响、对电池生命的影响,对增值服务的影响。 HTTPS中S带来的性能损失 图 在三个截获自普通人家中的网络和无线网络的数据集以及自己进行的实验上,得出了以下的几个结论: 1.尽管存在着潜在的部署成本,HTTPS的运用还是很快的增长。 2.HTTPS存在一些较为显著的延时消耗影响。 3.HTTPS的数据开销是有限的 4.对于一些大文件,HTTPS带来了显著的电池消耗。 HTTPS运用趋势 (注意,由于这是一篇2014年的文章,作者提及的运用成本可能不适用。在最近几年,随着Let's Encrypt等免费的签发机构,大大降低了HTTPS的上车成本,扩大了其运用。) 通常来说,运用HTTPS都会增加基础设施的成本(如计算成本、内存、数据开销等),更主要的则是证书的成本(有的高达1999美刀一年),因此大家会想仅在必要的时候运用HTTPS。为了测验HTTPS的运用趋势,我们监测了欧洲主要的一个ISP的25,000个居民家里的网络,在监测点运用一个实现了对HTTP和HTTPS进行分类的TStat程序。对于TLS的连接,TStat解析如下的内容: 1.SNI(Server Name Indication),即欲连接的主机名。 2.服务器证书的所附带的SCN(Subject Common Name) HTTPS中S带来的性能损失 图 对网页加载时间的影响 我们都知道运用HTTPS协议进行通信的过程中会对数据进行加密和解密,所以不难推测对于相同内容的页面在分别运用HTTP和HTTPS时的加载时间会有所不一样,因此对于这一点,作者进行了验证实验。 作者分别让测验的客户端处在用3G路由器连接的无线网络环境和通过光纤连接的有线网络中,进行两次实验。每次实验,测验机均在PhantomJS浏览器中首先运用HTTP协议来加载在Alexa网站*ZZ词语*问量为前500的网站20次,之后运用HTTPS协议做相同的操作。实验结果如下: HTTPS中S带来的性能损失 图 通过分别运用HTTP协议和HTTPS协议加载相同网页的对比实验得出,相比于运用HTTP协议来说,运用HTTPS的网站加载时间显著更长。 那么是什么原因导致HTTPS的加载时间更长呢?作者通过收集每个页面的HTTP请求/响应信息(HAR)发现如下图,虽然相比于HTTP,40%的网站加载HTTPS时,建立更少的TCP连接;但是,接近一半的网站在建立TCP连接时,每一次握手却需要耗费更多的时间,这部分时间主要是由TLS引起的协商开销。因此,HTTPS的加载时间反而更长。 HTTPS中S带来的性能损失 图 更近一步看,可以发现有4%的客户体验TLS握手连续时间最短的一个连接超过300毫秒(如下图中间)。 对于这种连接,50%(75%)具有51ms(97ms)的内部RTT(即有利位置和最终用户设备之间的RTT),较不保守的阈值(例如1秒)也是如此。这表明即使是具有良好网络连接性的客户端依旧遭受TLS握手开销的困扰。 TLS快速协商有助于减少握手延迟,但是我们发现只有30%的连接被运用。 我们推测这是一个下限,但不幸的是,根据现有数据,我们无法评估从更广泛采用TLS快速协商获得的可实现的上限。 HTTPS中S带来的性能损失 图 HTTPS的运用对数据流量也可能会有一定的影响,这是由于:
TLS握手包的开销 TLS握手包开销的影响,很大程度上取决于整体的数据包数量:很显著,如果整体的数据包数量越大,那相对来说,协商过程中的开销所占的比重就会越低。 HTTPS中S带来的性能损失 图 不过总的来说,TLS的开销大约占到总开销的5%。 网络中的代理 HTTPS会阻止一些在网络中的内容优化措施,例如一些压缩和缓存的代理。为了衡量这种无法运用代理所带来的影响,作者分析了两种生产级别的移动环境上的HTTP代理 Transp-Proxy 和OptIn-Proxy ,Transp-Proxy是一个服务了两千万欧洲用户的、广泛使用于欧洲大型运营商的的透明代理。OptIn-Proxy则是一个每日服务两千多用户的、同样广泛使用于欧洲国家的显式代理。 作者分别讨论了HTTPS对缓存和压缩两方面的影响。 对于缓存来说,在过去两年间,Transp-Proxy的命中率约有14.9%。对于一个单一服务300万订阅者的的Transp-Proxy实例来说,这意味着每天可以节省高达2TB的流量。实际上,这一命中率已经是下降的结果了。在2012年其命中率可以达到16.8%,到了2014年就只有13.2%了。OptIn-Proxy的结果与Transp-Proxy的结果相似。 但作者也同时提到,这一命中率的下降是多种原因造成的,亦有可能是个性化的内容快速产生,使得命中率下降,也有可能是HTTPS的广泛运用使得命中率下降。但无论如何,代理节省的流量还是十分可观的,但倘若所有切换到HTTPS,就没有办法运用代理节省流量了。(不知道3年后的今天,有没有办法代理HTTPS的流量?) 第二方面则是压缩,在将内容返回用户之前,网络代理往往会做一次无损的压缩(例如运用gzip),甚至会重新编码图像或是调整图像的大小。这个功能在网络总流量有限时是非常有用的(想一想浏览器的限流模式,是不是在流量只有30M的时候非常有用)。Transp-Proxy的日志显示其压缩比例高达28.5%。对于一些重度用户,这一压缩可能是十分关键的,每个月可能都会省下数百MB的流量。 总的来说,普通用户可能没有关心到HTTPS中缓存和压缩的消失带来的流量增多,但对于运营商来说,这就是一个比较显著的趋势了。 对电池运用时间的影响 HTTPS的运用对电池的运用时间有潜在的负面影响,这是由于:
合成内容 作者运用了一部带电表的Galaxy S II,将亮度调至最低,每200微秒测量一次电力消耗。用这部手机通过3G及Wi-Fi下载从1KB-1MB的合成的内容。每个内容都会分别运用HTTP和HTTPS下载100次。值得注意的是,作者在Android上编译了curl,以避免无关的影响。 HTTPS中S带来的性能损失 图 真实内容 作者首先在自己的服务器上镜像了一个CNN的首页,并且运用Android上的Chrome来分别运用HTTP和HTTPS下载50次。结果如图: HTTPS中S带来的性能损失 图 在第二个实验中,作者播放了5-12分钟的YouTube视频。但是由于在手机上的客户端及网站没有办法播放非HTTPS的视频,所以作者强制运用桌面版本的YouTube网站来运用HTTP。经过作者的测验,在Wi-Fi情况下,HTTP和HTTPS几乎没有差别;但在3G情况下,网络中的代理极大地影响了HTTP的结果,有两个视频运用HTTP的电池电量消耗比HTTPS的结果少了将近25%,另外两个视频也节省了10%-20%。 HTTPS中S带来的性能损失 图 1.一方面,代理限制了下载速率以减少网络拥塞(这和我们下载时选择“上网优先”是相似的),同时如果用户取消了,不再看这个视频了,这样做也可以减少对网络流量的消耗(想一想,有多少次我们点开了一个视频,然后又关掉它)。如果不运用代理的话,整个视频会在进入时快速被下载完,之后网络设备就处于休眠状态。而运用代理的话,下载速度是较慢且稳定的,在整个视频播放过程中会即放即播,因此网络设备没有休息的机会,这会导致更多的电量消耗。 2.另一方面,代理会将JavaScript插入页面中,它会改写发送到YouTube服务器上的URL,以获得更适应移动设备的编码和视频质量。对于第二个和第四个视频,最初获得了 webm 格式的视频,而这两种视频格式在我们的移动设备上都不支持硬解码,因此代理将其更改为了mp4 格式的视频。硬解码带来的优势抵消了部分网络设备的电量消耗。 在真实情况下的实验,控制变量的难度是相当大的。因此作者也提到,对这些数字应抱有怀疑和审慎的态度(should be taken with a grain of salt)。如果试图严谨地控制变量,我们应自行建立一个HTTPS和一个HTTP的视频站点,视频源运用同一个视频的不一样格式来进行这个实验。 总的来说,这个实验还是告诉我们:
总结和看法:鱼和熊掌不可得兼 安全和效率往往是很难同时兼顾的两面。尽管近年来的设备和技术更新已经大大降低了运用HTTPS的成本,但HTTPS的性能消耗依然是值得我们注意的一个问题。与此同时,HTTP 2.0也开始慢慢走入视野,除去安全性的考量,它的性能表现如何也是值得我们多加关心的一个话题。 不得不说的是,在国内的网络环境下,甚至存在一些运营商劫持的问题下,网站运用HTTPS来保护用户运用过程的安全还是十分有必要的。我们也希望可信代理可以成为互联网的一个非常重要的组成部分。 |