一种基于HTTP/2传输特征的加密数据长度还原方法与流程

文档序号:23551346发布日期:2021-01-05 21:09阅读:81来源:国知局
一种基于HTTP/2传输特征的加密数据长度还原方法与流程
本发明属于计算机网络安全
技术领域
,涉及一种加密数据的长度还原技术,尤其涉及一种基于http/2传输特征的加密数据长度还原的方法。
背景技术
:随着人们网络安全意识的不断提高,越来越多的网络应用服务商开始对网络流量进行加密传输,这在一定程度上保护了用户的隐私,但也给网络的监管带来了一定的挑战。服务提供商为了评估用户对于应用的体验质量(qualityofexperience,qoe)或者出于可能的网络安全监测的需求,通常需要了解网络中所传输的应用数据。由于无法直接对加密流量进行解密,通常会使用侧信道分析的方式,以加密流量还原后的数据长度(即还原出明文数据长度)作为关键特征来研究加密流量的数据信息。在这种情况下,能否精确地从加密网络流量中还原出加密前的明文数据长度,将直接影响到侧信道分析工作的准确性。http协议作为互联网中使用最为广泛的应用层协议,也是影响加密数据长度变化的关键因素之一。自从基于http/1.1的https加密协议被提出以来,不少学者都围绕http/1.1对加密数据的长度还原工作进行了研究。然而,网络的飞速发展使得http/1.1协议在网络延迟和安全性上的问题日益凸显,为解决这些问题,http/2协议应运而生并逐渐普及。http/2并非是http/1.1版本的简单更新,而是在其传输机制上的完全重构,尽管兼容了http/1.1的语义,但在协议格式上已经有了极大的差别。http/2在结构上新增了一个二进制分帧层,将所有传输的请求和响应数据分割为更小的帧,并且舍弃了http/1.1基于文本的传输模式,而采用二进制形式进行传输,解析起来更为高效。此外,http/2还采用多路复用技术,使得一个连接上可以承载多个http请求,避免了连接的频繁创建和关闭,极大提高了传输性能。http/2在显著降低延迟的同时提高了带宽利用率,因而被各大服务提供商所广泛采用。尽管http/2协议本身并未要求必须基于tls协议,但目前所有浏览器均只支持tls上的http/2访问,这也使得http/2变为事实上新的https传输标准,基于http/2进行传输的加密流量也越来越多。在目前公开的文献中,针对加密流量的长度还原方法主要应用于流媒体领域,一些研究根据密文长度相对于明文长度发生偏移的原因,计算加密传输过程中数据长度产生的偏移量,在此基础上实现长度还原。但现有方法大多是针对http/1.1协议进行的,http/2与http/1.1之间显著的差异性,使得目前已有的加密流量长度还原方法都无法直接应用于http/2协议下的加密数据,该部分的研究仍处于空白状态。技术实现要素:为解决上述问题,本发明公开了一种基于http/2传输特征的加密数据长度还原方法。该方法首先采集目标应用的流量数据,之后利用采集到的加密数据和部分明文数据,使用线性回归模型计算出数据加密传输时tls协议附加的头部信息长度,并训练卷积神经网络模型用于计算http/2协议所附加的信息长度。在需要进行长度还原时,利用训练好的线性回归模型和神经网络模型,可从加密流量中精准还原出加密前的明文数据的长度。为了达到上述目的,本发明提供如下技术方案:一种基于http/2传输特征的加密数据长度还原方法,包括如下步骤:(1)采集目标应用的加密流量和相应的明文数据;(2)找到只使用单个tls片段进行传输的加密响应数据和其对应的明文数据,使用线性回归模型计算tls协议所附加的头部信息长度;(3)使用步骤(2)中所述线性回归模型从密文数据中提取出tls负载长度数据集,并基于该数据集训练卷积神经网络模型,用于计算加密数据中所含的http/2的帧数;(4)需要对目标应用的流量进行长度还原时,使用采集设备采集待还原的密文数据并保存;(5)利用训练好的线性回归模型和神经网络模型,从步骤(4)得到的密文数据中去除tls协议和http/2协议所附加的头部信息长度,还原出对应的明文长度。进一步的,所述步骤(1)具体包括如下子步骤:(1.1)选择使用http/2协议进行数据传输的应用作为目标应用,将采集设备和装有目标应用的终端连接至同一无线网络,并使终端的网络流量在传输时能够经过采集设备;采集设备上安装代理应用和网络流量采集应用,分别用于明文数据和密文数据的采集工作;(1.2)根据目标应用,建立需要采集的内容列表,设置当前待采集的内容为列表中的第一个;(1.3)对终端所在的网络进行设置,禁用http/2协议;(1.4)打开目标应用,启动采集设备上的代理应用,开始采集工作;(1.5)在目标应用中浏览当前所要采集的内容,浏览完毕后关闭应用;(1.6)停止代理应用的采集,存储当前采集的明文数据文件;(1.7)关闭对http/2的禁用设置,打开目标应用,清除应用缓存数据;(1.8)启动采集设备上的流量采集应用,重复步骤(1.5)后,停止流量采集工作,存储当前采集的密文数据文件,该密文数据文件与步骤(1.6)中存储的明文数据文件相对应;(1.9)如果内容列表中还有未采集的内容,则设置当前待采集内容为下一个未采集内容,进入步骤(1.3),否则采集工作结束。进一步的,所述步骤(1.3)中,迫使目标应用使用基于http/1.1的https进行传输,使得采集设备能够通过代理服务解析得到明文数据。进一步的,所述步骤(2)具体包括如下子步骤:(2.1)从明文数据文件中提取出每次响应数据的明文长度;(2.2)在密文数据文件中找到客户端发往服务器端的请求报文,将两个请求报文之间的所有服务器端响应报文作为前一个请求的响应数据,从密文数据文件中提取出这些响应数据的tcp负载部分;(2.3)找到只使用单个tls片段进行传输的加密响应数据和其对应的明文数据,此时有:adulen=tcploadlen-tlsheaderlen*1-framelen*1其中,adulen为还原后的应用数据长度,即对应的明文数据长度,tcploadlen为对应的密文数据中所有tcp负载长度之和,tlsheaderlen为每个tls片段附加的头部信息长度,framelen为http/2帧头长度;根据(2.2)中得到的tcp负载部分计算出tcploadlen,依序标记明文数据长度adulen,训练线性回归模型,得到tlsheaderlen。进一步的,对于只含有一个tls片段的响应数据,该响应数据在传输时封装在一个http/2帧中。进一步的,所述步骤(3)具体包括如下子步骤:(3.1)从密文数据的tcp负载中获取各tls片段,利用步骤(2)中线性回归模型得到的tls头部信息长tlsheaderlen,对每个tls片段去除该附加长度,得到各tls片段的负载长度;提取出每次响应数据中各tls负载长度,汇总为数据集;(3.2)根据明文数据,使用如下公式计算出该响应数据的所有tls片段中所含有的http/2帧数,将计算出的帧数作为tls负载长度数据集的标签:nh2=(tlsloadlen-adulen)/framelen其中,nh2为计算出的http/2帧数,tlsloadlen为该响应数据中所有tls片段的负载长度之和,adulen为该响应数据对应的明文长度,framelen为http/2帧头长度;(3.3)使用该数据集对一维卷积神经网络进行训练,训练得到的卷积神经网络模型能够根据加密数据中tls片段的负载长度,计算出所含有的http/2帧数。进一步的,所述步骤(4)具体包括如下子步骤:(4.1)将采集设备和装有目标应用的终端连接至同一无线网络,并使终端的网络流量在传输时能够经过采集设备;采集设备上安装网络流量采集应用;(4.2)确立待还原的密文数据,建立需要采集的内容列表,设置当前待采集的内容为列表中的第一个;(4.3)打开目标应用,清除应用缓存数据,启动采集设备上的流量采集应用,开始采集工作;(4.4)在目标应用中浏览当前所要采集的内容,浏览完毕后关闭应用;(4.5)停止流量采集工作,存储当前采集的密文数据文件;(4.6)如果内容列表中还有未采集的内容,则设置当前待采集内容为下一个未采集内容,进入步骤(4.3),否则采集工作结束。进一步的,所述步骤(5)中,采用以下公式对密文数据进行长度还原:adulen=tcploadlen-tlsheaderlen*ntls-framelen*nh2其中,adulen为还原后的应用数据长度,即明文数据长度,tcploadlen为该应用数据传输时的所有tcp负载长度之和,tlsheaderlen为每个tls片段附加的头部信息长度,ntls为该应用数据传输时的tls片段个数,framelen为http/2帧头长度,nh2为该应用数据在传输时被分装的http/2帧数。进一步的,具体的长度还原步骤为:(5.1)在待还原的密文数据中找到客户端发往服务器端的请求报文,将两个请求报文之间的所有服务器端响应报文作为前一个请求的响应数据,提取出这些响应数据的tcp负载部分;(5.2)计算响应数据中所有tcp负载数据的长度之和tcploadlen,并获取这些负载中所包含的tls片段个数ntls和各tls片段信息;根据步骤(2)的线性回归模型中得到的tls片段的头部信息长度tlsheaderlen,用tcp负载长度之和减去所有tls片段的附加长度,即可得到所有tls片段的负载长度之和,即tlsloadlen=tcploadlen-tlsheaderlen*ntls其中,tlsloadlen是所有tls片段的负载长度之和,也是所有http/2数据帧的总长度;(5.3)从各tls片段长度中减去附加的头部信息长,得到每个tls片段的负载长度;使用步骤(3)中训练好的卷积神经网络模型计算这些tls片段中所含有的http/2帧数nh2;(5.4)从tls负载长度中去掉http/2帧头所占的长度,得到还原后的明文数据长度,即:adulen=tlsloadlen-framelen*nh2。进一步的,根据rfc7540,所述framelen固定为9字节。与现有技术相比,本发明具有如下优点和有益效果:(1)本发明方法可直接用于http/2协议下的数据分析工作,能够对使用http/2协议进行传输的加密数据进行长度还原,弥补了目前密文长度还原工作在http/2领域的空白,在http/2逐渐普及的背景下,可很好地应用于以数据长度为关键特征的加密流量侧信道分析中,具有良好的发展前景。(2)数据长度在加密传输时产生的偏移量并非固定值,本发明基于长度发生偏移的原因进行长度还原,使用线性回归模型和卷积神经网络模型分别获取tls协议和http/2协议的附加长度,从而能够准确地计算出加密过程中数据长度发生的总偏移量。(3)由于对同类型的应用而言,其应用数据在传输时长度发生偏移的过程大致相同,因而本发明具有一定的通用性。基于本发明方法,只需采集部分应用数据进行模型训练,便可利用训练好的模型高效地对同类型应用的所有加密流量进行还原。附图说明图1为加密流量长度还原的方法框架;图2为数据采集环境拓扑图;图3为使用单个tls传输的响应数据的封装过程和对应的还原过程;图4为部分tls负载长度数据集;图5为对密文数据进行长度还原的流程图。具体实施方式以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。由于目前的长度还原工作主要是为了解决加密视频流的识别问题而开展的,且视频数据在传输时广泛使用http/2协议,所以下面围绕视频应用中的代表性应用facebook进行具体介绍。本发明提供的基于http/2传输特征的加密数据长度还原方法,其框架如图1所示,具体包括以下步骤:(1)采集使用http/2协议进行数据传输的目标应用facebook的视频数据,包括加密流量和相应的明文数据。本步骤具体过程如下:(1.1)以一台计算机作为采集设备,将安装了facebook应用的智能手机作为移动终端。在计算机上使用无线网卡创建无线网络,移动终端连接到此无线网络,并使终端的网络流量在传输时会经过采集设备,如图2所示。采集设备上安装fiddler软件作为代理应用、安装wireshark软件作为网络流量采集应用,分别用于明文数据和密文数据的采集工作。(1.2)根据目标应用,建立需要采集的内容列表,本例即采用facebook视频列表。从facebook视频列表中选取5个不同的视频内容,针对5种不同的分辨率重复采集5次,从而建立起含有125个视频内容(含重复)的待采集列表,设置当前待采集的视频内容为列表中的第一个;(1.3)由于目前的代理设备只支持对http/1.x的解析,为获取到明文数据,对终端所在的网络进行设置,禁用http/2协议,迫使facebook服务器使用基于http/1.x的https进行传输,以便使得采集设备能够通过代理服务解析得到明文数据;(1.4)打开facebook应用,搜索找到当前待采集视频后,启动fiddler软件开始采集;(1.5)在facebook应用中浏览当前所要采集的内容,在本例中即点击视频进行播放,播放结束后关闭facebook应用;(1.6)停止fiddler的采集工作,存储当前采集的明文数据文件;(1.7)关闭对http/2的禁用设置,打开facebook,清除应用的缓存数据;(1.8)搜索找到当前待采集视频,打开wireshark软件进行数据采集,重复步骤(1.5)后,停止wireshark的采集工作,存储当前采集的密文数据文件,该密文数据文件与步骤(1.6)中的明文数据文件相对应。(1.9)如果待采集的内容列表中还有未采集的内容,则设置当前待采集视频内容为下一个未采集内容,进入步骤(1.3),否则采集工作结束。(2)找到只使用单个tls片段进行传输的加密响应数据和其对应的明文数据,使用线性回归模型计算tls协议所附加的头部信息长度。本步骤具体包括以下过程:(2.1)从明文数据文件中提取出每次响应数据的明文长度。在facebook服务器端,每个视频都会被切割为若干个视频片段,服务器的每次响应都会传输一个视频片段,这些片段的信息被存储在mpd(mediapresentationdescription)文件中。mpd文件会在客户端首次请求视频时发送给客户端,因此响应数据中的第一个分片即为mpd文件。从fiddler采集到的文件中获取该文件,即可从中提取出该视频的所有视频片段的大小和相应的顺序,从而得到每次响应数据的明文数据长度。从采集到的明文数据文件中提取出的部分视频片段信息如表1所示。表1部分视频片段的明文信息(2.2)在密文数据文件中找到客户端发往facebook服务器端的请求报文,将两个请求报文之间的所有服务器端响应报文作为前一个请求的响应数据,从密文数据文件中提取这些响应报文的tcp负载部分。(2.3)在应用数据的传输过程中,一个http/2帧的数据可能会被分装到多个tls片段中进行传输,但如果某次响应数据中只有一个tls片段,则该响应数据在传输时也只封装在一个http/2帧中。因此找到只使用单个tls片段进行传输的加密响应数据和其对应的明文数据,该应用数据传输时的封装过程和对应的长度还原过程如图3所示,此时有:adulen=tcploadlen-tlsheaderlen*1-framelen*1其中,adulen为还原后的应用数据长度(即还原后的明文数据长度),tcploadlen为对应的密文数据中所有tcp负载长度之和,tlsheaderlen为每个tls片段附加的头部信息长度,framelen为http/2帧头长度(根据rfc7540,framelen固定为9字节)。根据(2.2)中得到的tcp负载计算出tcploadlen,根据(2.1)中获取的明文数据依序标记明文数据长度(adulen),得到训练数据集(部分数据集如表2所示)。使用该数据集训练线性回归模型,得到每个tls片段所附加的头部信息长(tlsheaderlen)为22字节。表2部分数据集(3)使用步骤(2)中的线性回归模型从密文数据中得到tls负载长度的数据集,并基于该数据集训练卷积神经网络模型,用于计算加密数据中所含的http/2帧数。本步骤具体包括以下过程:(3.1)从密文数据的tcp负载中获取各tls片段数据,利用步骤(2)中线性回归模型得到的tls头部信息长度(tlsheaderlen),对每个tls片段去除该附加长度,即可得到各tls片段的负载长度。提取密文数据中每次响应数据的各tls负载长度,汇总为数据集。(部分数据集如图4所示);(3.2)根据明文数据,使用如下公式计算出该响应数据的所有tls片段中所含有的http/2帧数,将计算出的帧数作为tls负载长度数据集的标签:nh2=(tlsloadlen-adulen)/framelen其中,nh2为计算出的http/2帧数,tlsloadlen为该响应数据中所有tls片段的负载长度之和(也是所有http/2数据帧的总长度),adulen为该响应数据对应的明文长度,framelen为http/2帧头长度(根据rfc7540,framelen固定为9字节)。(3.3)使用该数据集对一维卷积神经网络进行训练,训练后的模型准确率为89.84%。利用训练后的卷积神经网络模型,可根据加密数据中tls负载长度的情况,计算出所含有的http/2帧数。(4)需要还原facebook应用的加密流量时,使用采集设备采集待还原的密文数据并保存。本步骤中采集待还原的密文数据的方法为:(4.1)以一台计算机作为采集设备,将安装了facebook应用的智能手机作为移动终端。在计算机上使用无线网卡创建无线网络,移动终端连接此无线网络,使得终端的网络流量在传输时会经过采集设备,如图2所示。采集设备上安装wireshark软件作为网络流量采集应用;(4.2)数据采集人员根据需要建立待采集的视频内容列表,设置当前待采集的视频内容为列表中的第一个;(4.3)打开facebook,清除应用的缓存数据后搜索找到当前待采集的视频,启动wireshark软件开始采集。(4.4)在facebook应用中浏览当前所要采集的内容,即点击视频进行播放,播放结束之后关闭facebook应用;(4.5)停止wireshark的流量采集工作,存储当前采集的密文数据文件;(4.6)如果视频内容列表中还有未采集的内容,则设置当前待采集内容为下一个未采集内容,进入步骤(4.3),否则采集工作结束。(5)利用训练好的线性回归模型和神经网络模型,对步骤(4)中的密文数据进行长度还原。本步骤中,根据以下公式进行长度还原:adulen=tcploadlen-tlsheaderlen*ntls-framelen*nh2其中,adulen为还原后的视频数据长度(即明文数据长度),tcploadlen为视频加密传输时的所有tcp负载长度之和,tlsheaderlen为每个tls片段附加的头部信息长度,ntls为视频加密传输时的tls片段个数,framelen为http/2帧头长度(根据rfc7540,framelen固定为9字节),nh2为视频数据传输时被分装的http/2帧数。长度还原的流程如图5所示,具体步骤为:(5.1)在待还原的密文数据文件中找到客户端发往facebook服务器端的请求报文,将两个请求报文之间的所有服务器端响应报文作为前一个请求的响应数据,提取这些响应报文的tcp负载部分。(5.2)计算某次响应数据中所有tcp负载数据的长度之和(即tcploadlen),并获取这些负载中所包含的tls片段个数(ntls)和各tls片段信息。根据步骤(2)的线性回归模型中得出的tlsheaderlen,从tcp负载长度中减去所有tls片段的附加信息长,得到该响应数据的所有tls片段的负载长度之和,即:tlsloadlen=tcploadlen-tlsheaderlen*ntls其中,tlsloadlen是所有tls片段的负载长度之和,也是该次响应数据中所有http/2数据帧总长度。在一个采集得到的加密视频数据的实例中,提取得到的部分tlsloadlen如表3所示:表3提取的部分tlsloadlen序号tcploadlenntlstlsloadlen11235721231322143732137131242721238342416432409851232421228061398811913946371230221225881376142013717491230621226210939181493610(5.3)从各tls片段长度中减去附加的tls头部信息长(tlsheaderlen),得到每个tls片段的负载长度。使用步骤(3)中训练好的卷积神经网络模型,以各tls片段的负载长度为输入,模型计算出这些tls片段中所包含的http/2帧数(即nh2)。(5.4)从tls负载长度中去掉http/2帧头所占的长度,得到还原出对应的明文数据长度,即:adulen=tlsloadlen-framelen*nh2,在一个采集得到的加密视频数据的实例中,提取的特征值和复原出的部分明文长度如表4所示:表4提取的特征值和复原出的部分明文长度序号tlsloadlennh2adulen1123131123042213712213533123831123744240982240805122801122716139463101393737122582122408137174101370849122621122531093610793547本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1