一种适用于加密http/2网页的访问行为识别方法
技术领域
本发明属于网络安全领域,具体涉及一种适用于加密HTTP/2网页的访问行为识别方法。
背景技术
近年来,随着互联网技术的发展,越来越多的网站采用了TLS协议来传输网页内容,给上网行为管理带来了不小的挑战。这是因为,当用户访问某个网页时,TLS协议将网页内容用协商好的加密算法加密,上网行为管理系统不能像以往一样通过分析传输的明文内容来识别用户的网页访问行为。
为了解决这个问题,有的上网行为管理系统通过在用户端部署CA证书并代理用户TLS访问流量的方法,来解密用户访问的页面内容,进而识别用户的网页访问行为。但这一方式管理成本较高,并且可能侵犯用户的隐私,目前正逐渐被网页指纹识别技术取代。由于TLS协议没有显著改变网页内容传输时数据包的大小、传输方向、传输次序以及传输间隔等特征,网页指纹识别技术便利用了这些特征构建网页的指纹,从而识别网页访问行为。但由于当前HTTP/2协议日益普及,网页指纹识别技术又遇到了新的问题。
HTTP/2协议是HTTP/1.1协议的更新版本,其中在流量传输方面最大的改进是引入了多路复用机制。相较于一次只能接收一个请求响应的HTTP/1.1协议,多路复用机制使得HTTP/2协议可以并发接收多个请求响应,极大地提高了流量传输的效率。然而这种机制改变了HTTP网页内容的传输模式,使得传输时的数据包特征不再可用。因此对于采用TLS协议的加密HTTP/2网页,上述的网页指纹识别技术不再适用。
发明内容
为了解决目前访问基于TLS协议的加密HTTP/2网页时,无法进行访问行为识别的技术问题,本发明提供一种适用于加密HTTP/2网页的访问行为识别方法。
为了实现上述技术目的,本发明的技术方案是,
一种适用于加密HTTP/2网页的访问行为识别方法,包括如下步骤:
步骤1:提取加密HTTP/2网页的信息作为网页的指纹特征;
步骤2:监测访问网站的TLS流,当存在并发请求时则进行阻塞,以使并发请求转换为在单个请求发送并完成接收响应后才发送下一个请求的形式;
步骤3:提取两个相邻请求之间传输的所有响应数据,并将处于预设的滑动时间窗口内的响应数据来与指纹特征进行匹配,若与指纹特征全部匹配,则认为相应请求所对应的时间窗口内存在访问网页的行为。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤1包括以下过程:
步骤101:利用不同浏览器在不同时刻下多次访问同一加密HTTP/2网页,获取网页在多种情况下访问的明文流量和密文流量;
步骤102:从明文流量和密文流量中提取网页中包含的各Web资源的类型、域名和对应的密文长度均值,并作为网页的指纹特征。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤101,是在至少10个间隔大于6小时的随机时间点,利用至少4种浏览器访问加密HTTP/2网页,获取至少40次访问的明文流量和密文流量并形成数据集。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤102,是从明文流量和密文流量中提取网页中包含的各Web资源Ri的类型T(Ri)、域名N(Ri)和对应的密文长度均值E(Ri),其中1≤i≤N,N为网页包含Web资源的个数;然后构建网页的指纹特征为:FP=(FRi|1≤i≤N,T(Ri)∈TP},其中FRi={N(Ri),L(Ri)}表示Web资源Ri的特征集,TP={document,javascript,css},表示与网页内容显著相关的三种Web资源类型;L(Ri)=[E(Ri)·(1-α),E(Ri)·(1+α)],表示将E(Ri)经过弹性系数α缩放后构建的密文长度区间。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤2,是监控所有连接网页的TLS流,当某个TLS流中发起多个并发请求时,则阻塞这些并发请求以使其一次仅能发送一个请求,并且仅当完成接收上一个请求的响应内容后才发送下一个请求。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的监控所有连接网页的TLS流,是通过获取网页的资源域名集合NL,并监控所有连接NL中域名的TLS流来实现的,其中NL={N(Ri)|1≤i≤N,T(Ri)∈TP},N(Ri)为网页中包含的Web资源Ri的域名,N为网页包含Web资源的个数,T(Ri)为网页中包含的Web资源Ri的类型,TP={document,javascript,css},表示与网页内容显著相关的三种Web资源类型。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤3中,提取两个相邻请求之间传输的所有响应数据,是在监控到的访问网站的TLS流中,并发请求被阻塞后以单个请求的形式发送的,任意两个相邻请求reqj和reqj+1之间传输的所有响应数据,视为reqj响应的Web资源R′j,并提取域名N(R′j)和密文长度大小l(R′j)。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤3中,将处于预设的滑动时间窗口内的响应数据来与指纹特征进行匹配,是在预设的长度为t的滑动时间窗口内,将获取访问的网页Web资源作为属性集RP={FR′j|0≤j≤N′},来与指纹特征进行匹配;其中N′为滑动时间窗口内访问的Web资源个数,FR’j={N(R′j),l(R′j)}表示Web资源R′j的属性。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤3中,与指纹特征全部匹配,是指在滑动时间窗口内,匹配用户访问的网页Web资源属性集RP和网页的指纹特征FP,获取与特征指纹FP匹配成功的用户访问Web资源集合RM={R′j|N(R′j)=N(Ri),l(R′j)∈L(Ri),1≤i≤|FP|,0≤j≤N′},其中|FP|表示指纹特征中的特征Web资源数量,即从用户访问的页面Web资源中,找出与特征指纹中某一Web资源域名相同且密文长度在长度区间内的Web资源,将RM中元素的个数即匹配成功的Web资源数量记为|RM|,当|RM|=|FP|时,即与指纹特征全部匹配。
所述的一种适用于加密HTTP/2网页的访问行为识别方法,所述的步骤3中,预设的滑动时间窗口不小于单个请求发送并完成接收响应所需要的时间。
本发明的技术效果在于,充分利用了HTTP/2和TLS协议的特点,通过阻塞HTTP/2的方式将其传输流量特征还原为可识别的模式,在不解密用户访问流量的前提下,提取了TLS流中的明文域名属性和密文数据包属性以此来识别加密HTTP/2网页的访问行为,并且具有较高可靠性和稳定性。
下面结合附图对本发明的实施例进行说明。
附图说明
图1为本发明的流程图。
具体实施方式
参见图1,本实施例所提供的适用于加密HTTP/2网页的访问行为识别方法,包括如下步骤:
步骤1:采集在访问目标加密HTTP/2网页H时的明文和密文流量,包括:
步骤1.1:首先构建流量采集环境,本实施例中将浏览器设置为允许导出TLS会话密钥,以便后续用于解密采集的流量获取明文流量数据。
步骤1.2:通过webdriver设计自动化的脚本控制不同浏览器在不同时刻访问目标加密HTTP/2网页H,产生TLS加密流量。其中本实施例中的访问时间点是设置为访问15次,每次间隔8小时。并采用IE、Chrome、Firefox、Edge四种浏览器分别访问,获得总共60次的访问数据。
步骤1.3:利用tshark捕获访问的TLS加密流量,并用从TLS会话密钥解密,得到明文流量。
步骤2:从处理后的流量中提取目标网页H的特征,包括:
步骤2.1:分析采集的网页H访问明文流量,获取目标HTTP/2网页包含的各个Web资源Ri,其中1≤i≤N,N为网页H包含Web资源的个数。其中Web资源是指在一个网页加载过程中,所发起的多个HTTP请求的内容,这些内容都是Web资源,包括html文本、js脚本、jpg图片等。
步骤2.2:从明文流量中提取各个Web资源Ri的类型T(Ri)、域名N(Ri),然后从密文流量找到对应的Web资源密文流量,统计不同浏览器不同时刻访问的Web资源密文流量长度,得到密文长度均值E(Ri)。
步骤3:构建网页H的指纹特征,包括:
步骤3.1:从网页H的Web资源中,挑选类型在集合TP={document,javascript,css}中的Web资源,将其作为指纹Web资源,TP表示与网页内容显著相关的三种Web资源类型。这些资源类型用于挑选合适的资源构建特征指纹。其中document是文档类型,这种类型的资源有.html、.php、.jsp、.asp等;javascript为脚本语言类型,这种类型的资源主要为.js;css为层叠样式表类型,这种类型的资源主要为.css。其他Web资源如字体或图标等类型的资源,并不能被利用来识别网页,故不作为与网页内容显著相关的资源。
步骤3.2:构造指纹Web资源的特征集FRi={N(Ri),L(Ri)},其中L(Ri)=[E(Ri)·(1-α),E(Ri)·(1+α)],表示将E(Ri)经过弹性系数α缩放后构建的密文长度区间,α根据所处网络的稳定性设置,本实施例设置为5%。由于本实施例是在无法解密的场景下识别目标网页,因此密文内容并不进行解密辨识,即可用特征只有密文的长度以及域名。其中长度可用于代表目标网页内的某个资源,域名代表目标网页所在的网站。
步骤3.3:将各指纹Web资源的特征集合并成整个网页H的指纹特征FP,FP={FRi|1<=i<=N,T(Ri)∈TP}。
步骤3.4:获取网页H的Web资源域名集合NL={N(Ri)|1≤i≤N,T(Ri)∈TP},用于识别后续需要监控的TLS流。这里的域名代表目标网页所在的网站,用于在后续识别过程中确定需要监控的网络连接,提高识别的效率并降低误报率。
步骤4:识别并阻塞HTTP/2流,将其还原为HTTP/1.1的传输模式,包括:
步骤4.1:在需要识别目标HTTP/2网页访问行为的用户网络中,利用网页H的Web资源域名集合NL,识别可能访问目标网页H的TLS流S并对其监控。
步骤4.2:当TLS流S中发起多个并发请求时,判定该流是多路复用的HTTP/2流。
步骤4.3:阻塞TLS流S中的并发请求,使其一次仅能发送一个请求,并且当且仅当完成接收上一个请求的响应内容后才发送下一个并发请求,以此将该HTTP/2流的传输模式还原成HTTP/1.1的传输模式。需要注意的是,本实施例仅从流量传输模式层次进行了降级,传输的内容不会受影响,并且对于浏览器和网站而言它们依旧使用HTTP/2协议通信,因为传输内容中标注的协议依旧是HTTP/2。
步骤5:识别TLS流S中传输的Web资源流量R′j,并提取其特征构建用户访问Web资源特征集,包括:
步骤5.1:将TLS流S中任意两个相邻TCP请求reqj和reqj+1之间传输的所有响应数据,视为reqj响应的Web资源R′j。
步骤5.2:提取Web资源Rj′的域名N(R′j)、密文长度大小l((R′j),其中N(R′j)在TLS握手流量的明文字段获取,l((R′j))通过累加reqj和reqj+1之间传输的所有响应数据的长度来获取。
步骤5.3:指定一个时间间隔t,本实施例中设为3s,则某一长度为t的滑动时间窗口内,可获取用户访问Web资源特征集RP={FR′j|0≤j≤N′},其中N′为该时间窗口内访问的Web资源个数,FR′j={N(R′j),l(R′j)}表示Web资源R′j的特征。
步骤6:识别时间窗口内,是否有目标网页H的访问行为,包括:
步骤6.1:在每个滑动时间窗口内,匹配用户访问的网页Web资源属性集RP和网页H的指纹特征FP,获取与特征指纹FP匹配成功的用户访问Web资源集合RM={R′j|N(R′j)=N(Ri),l(R′j)∈L(Ri),1≤i≤|FP|,0≤j≤N′},其中|FP|表示指纹特征中的特征Web资源数量。即从用户访问的页面Web资源中,找出与特征指纹中某一Web资源域名相同且密文长度在长度区间内的Web资源。
步骤6.2:将RM中元素的个数即匹配成功的Web资源数量记为|RM|。当|RM|=|FP|时,即在该时间窗口内匹配到了网页H的特征指纹,则认为识别到了用户有网页H的访问行为,否则认为没有识别到。