加密HTTP/2流中网页对象的识别研究

2018-11-15 01:33石健马子扬唐屹
电脑知识与技术 2018年20期
关键词:数据包网页加密

石健 马子扬 唐屹

摘要:伴随着HTTP/2协议的到来,加密网页也越来越广泛地应用于互联网。对加密网页的流量分析,有助于帮助网络安全管理人员实现特定网页的访问识定位,网页识别基于网页对象大小的识别,现有的网页对象识别基于网络包的头部信息字段,这种特征抽取模式并不适用于利用HTTP/2协议的数据包。该文基于TLS协议,设计实现一个识别HTTP/2传输的网页对象的方法,有助于进一步设计针对HTTP/2的流量分析方法。

关键词:流量分析;网页识别;网页对象;HTTP/2;TLS

中图分类号:TP393.08 文献标识码:A 文章编号:1009-3044(2018)20-0190-02

On Identifying Web Objects in Encrypted HTTP/2 Traffic

SHI Jian,MA Zi-yang,TANG Yi

(School of Mathematics and Information Science, Guangdong Provincial Key Laboratory Co-sponsored by province and City of Information Security Technology,Guangzhou University, Guangzhou 510006, China)

Abstract:With the advent of HTTP/2 protocol, encrypted web pages are more and more widely used in Internet. Traffic analysis to encrypted web pages helps network security administrator to identify specific web pages. The traditional web page identification techniques are based on the sizes extracted from captured TCP headers. This feature cannot apply to HTTP/2 traffics. Based on the TLS protocol, a method to identify HTTP/2 transmitted web objects is proposed. With this object identification method, an efficient analysis method for HTTP/2 traffic could be proposed.

Key words: traffic analysis; web page recognition; web page object; HTTP/2; TLS

1 HTTP/2简介

HTTP/2是2015年正式标准化的新一代的超文本傳输协议[1],这个协议综合应用了多种技术,实现网页的快速传输。现有的主流浏览器均支持HTTP/2的解析,而网站方面,依据W3Techs的统计,截至2018年3月, 至少有24% 的网站支持 HTTP/2的传输[2]。

HTTP/2引入了多路复用、二进制分帧、服务端推送等技术。多路复用技术允许同时通过单一的 HTTP/2 连接发起多重的请求/响应消息,实现多流并行而不用依赖建立多个 TCP 连接;HTTP/2在应用层和传输层之间引入二进制分帧,将所有传输的信息分割为更小的采用二进制编码的消息和帧,例如原HTTP1.x 的头部信息被HPACK压缩并封装到 HEADER 帧,请求体则封装到 DATA帧等;服务端推送是实现在客户端请求之前发送数据的机制。在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应。这样,一方面,HTTP/2利用多路复用,采用单连接多资源的方式,减少服务端的链接压力,使得连接吞吐量更大,另一方面,通过头部压缩和服务器端推送,双向减少冗余的数据传输。

相比于 HTTP 1.x的两个版本 ,HTTP/2重新组织了网页对象的传输模式,进一步减少了网络延迟 ,能够有效提升网页访问效率。尽管HTTP/2 协议本身并没有要求必须基于传输层安全(TLS) 部署,但由于所有浏览器均只支持 TLS上的HTTP/2访问,这使得HTTP/2变为事实上新的HTTPS传输标准。

我们注意到HTTP/2所采用的技术虽然提高了网页传输的效率,在另一方面,单连接多路复用的特性模糊化了网页对象边界,给原有的HTTP流量特征抽取方法带来挑战。

2 加密Web访问的流量分析

Web访问流的生成与HTTP协议密切相关。一般而言,依据浏览器的HTTP实现,当用户访问网页时,首先将网页对应的HTML文本下载,然后,开始顺序解析这个文本,如果遇到对象资源,则依据对象资源对应的URI,发出HTTP请求以下载这个对象,一旦下载完毕就开始渲染显示,如此类推,直到所有对象资源下载完毕,整个网页也就呈现于用户的浏览器面前了。

流量分析技术是进行网络测量的重要基础,对加密Web网页访问的流量分析,有助于识别恶意或非法的网页访问,增强系统的安全防护能力。然而,加密并不能改变请求响应的方向,同时加密也不能显著网页中对象的数量甚至大小,因此通过HTTP传输的网页对象,只需要简单的网页头部信息的分析,可以区分网页对象边界从而高效率地识别网页。

在已有的加密Web流量识别的研究中,Sun等人[3]提出了一个基于Jaccard系数相似矩阵的分类器,通过该分类器能够以75%的命中率将某个网页从10000个网页的集合中识别出来,并且误判率仅仅是15%。文章选取网页中对象的大小和数量作为流量的特征,Bissias[4]等人以数据包的长度与数据包到达间隔作为特征,使用交叉关联算法来确定Web网页与已知页面的相似性,Liberator[5]等人利用包的长度和方向作为流量特征,通过朴素贝叶斯分类器对网页进行识别。

我们注意到,上述的研究均基于TCP包的访问长度,确定网页对象的传输特征,这是因为基于HTTP 1.x的网页访问,是逐对象的访问获取,即在单个网页对象传输的数据分组中,没有掺入其他的网页对象数据,这使得网页对象可以与TCP包的长度相关联。然而,这种情况在HTTP/2的传输下,会发生显著变化,由于HTTP/2的特性,使得请求/访问也不会成对出现,更重要的并行传输的特性,使得一个网络包中可以包含多个不同的网络对象的数据,破坏了TCP包的长度与原始网页对象的关联。

因此需要设计新的策略,实现HTTP/2下的网页对象识别。我们将考虑基于底层的TLS协议的来实现网页对象的识别。

3 基于TLS的网页对象识别

TLS协议是进行HTTP/2传输的基础,目前常见的版本是TLS1.2[3]。TLS协议由两层构成:TLS 记录协议和TLS握手协议,其中,握手协议用于客户端与服务器端的相互认证,在应用程序通信前,协商加密套件和加密密钥,记录协议用于封装多种高层协议,其基本封装格式如下:

(1)内容类型(8位): 如 握手协议 22,应用数据 23。

(2)版本号(16位): TLS 1.2 为 0x0303。

(3)数据包长度(16位):表示的是数据包以字节为单位的长度。

(4)记录数据:这个部分搭载数据包中的数据。

图1显示了一个TCP分组中包含了一个完整的HTTP/2数据。TCP分组的长度为75字节,TLS数据长度为70字节,这种场景与TLS上的HTTP 1.x,即传统意义下的HTTPS,的传输形式一致,意味着这个TCP分组的长度直接与TLS分组相关,因此,在TLS上的HTTP 1.x的流量分析是可以简单地使用TCP分组的长度来作为流量特征之一,因为这个TCP分组的长度与单个的网页对象密切相关。

然而,这种分析方法对HTTP/2是存在缺陷的,由于HTTP/2的多路复用,使得一个TCP分组中,可能包含多个传输的TLS单元。如图2所示,图2显示了一个组合的HTTP/2分组数据,这个分组包含了三个TLS对象,简单地使用TCP分组的长度抽取,实际上只对应单个对象,因此对传输的数据对象的数量和大小都存在着误差。

因此,為准确实现对HTTP/2的流量分析,我们需要对TCP数据分组进行深度分析,抽取其中的TLS对象的长度作为流量特征而不是简单地采用TCP分组长度。如图1所示,我们抽取的对象就不是TCP分组的长度,而是在TCP载荷中,使用方框框住的对应TLS记录中的数据对象长度。

4 原型设计与实现

为实现基于TLS记录长度的网页对象识别,我们采用python语言设计实现了一个原型,实时抽取HTTP/2流的中TLS数据对象长度的程序。简单起见,假定HTTP/2通信是基于TLS 1.2 协议,我们利用python的socket模块,嗅探HTTP/2流量,特别的,着重分析TCP分组头部字段后面的三个字节,例如,如果这三个字节为\x17\x03\x03,这意味着这个TLS分组为TLS1.2应用数据类型,包含所需要的HTTP/2数据包,由TLS记录层的结构,之后的两个字节即为TLS分组的长度;

接着,需要考虑,是否在一个TCP分组中包含多个不同的TLS记录或TLS记录部分,为此,扫描所捕获的TCP载荷是否包含\x17\x03\x03串,如果包含,就抽取并记录后继的两个字节作为候选的TLS记录长度,为避免由于加密而导致偶然出现的\x17\x03\x03串,可以进一步地验证候选的TLS记录长度是否合法。

为验证我们的对象长度抽取方法的有效性,我们以对维基百科网站的访问为例加以说明。维基百科网站www.wikipedia.org 已经采用了支持HTTP/2的Web服务器软件,可以通过HTTP/2协议进行访问,我们利用所设计的长度抽取程序对访问该网站的HTTP/2流量进行了长度抽取测试,结合后台的wireshark工具的网络包捕获。

图3是我们的一次测试的结果,左图为对维基百科的浏览器控制台的分析截图,右图为我们的程序抽取网页对象边界的抽取情况,对比所捕获的踪迹数据,结果表明,所设计实现的算法能够实时获取TLS记录的长度。

5 结束语

通过对HTTP/2数据包的深度分析,我们设计并实现了基于TLS记录层结构的HTTP/2实时数据包的长度抽取方法,能够有效区分HTTP/2传输的网页对象的数量和大小,利用所抽取的长度作为流量识别的特征,我们将可以进一步地实现HTTP/2网页的识别,增强网页浏览的安全性。未来,我们将进一步地优化改进算法,提高效率和识别准确度,并用于HTTP/2网站的识别中。

参考文献:

[1] RFC 7540 Hypertext Transfer Protocol Version 2 (HTTP/2)[EB/OL].http://www.ietf.org/rfc/rfc7540.txt

[2] Usage of HTTP/2 for websites. World Wide Web Technology Surveys[EB/OL]. W3Techs. https://w3techs.com/technologies/dtails/ce-http2/all/all

[3] Q. Sun, D. Simon, Y. Wang, W. Russell, V. Padmanabhan, and L. Qiu. Statistical identification of encrypted Web browsing traffic[R]. In: Proceedings of IEEE S&P;,2005.

[4] G. Bissias, M. Liberatore, D. Jensen, and B. Levine. Privacy vulnerabilities in encrypted HTTP streams[R]. In: Proceedings of PET,2005.

[5] Liberatore, M., Levine, B. Inferring the Source of Encrypted HTTP connections[R]. In: Proceedings of ACM CCS,2006:255-263.

[6] RFC 5246 The Transport Layer Security (TLS) Protocol Version 1.2[EB/OL]. http://www.ietf.org/rfc/rfc5246.txt.

猜你喜欢
数据包网页加密
一种基于熵的混沌加密小波变换水印算法
SmartSniff
基于CSS的网页导航栏的设计
基于URL和网页类型的网页信息采集研究
认证加密的研究进展
网页制作在英语教学中的应用
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密
10个必知的网页设计术语
视觉注意的数据包优先级排序策略研究