本发明属于网络安全与用户隐私领域,特别涉及一种基于数据包大小序列的加密流量分析防御方法。
背景技术
近年来频繁发生的用户隐私泄露事件受到全世界的广泛关注,企业和个人在网络上传输信息时也十分重视信息的隐私性和安全性。据调查统计,目前已有超过60%的网络流量采用tls/ssl进行加密通信,对信息进行加密可以保证传输内容的安全性,但是用户在访问网站时与该网站之前进行的流量通信行为却不能被加密,加密流量识别技术(websitefingerprinting)就能在未知通信内容的情况下,在网络数据包层面统计发现不同网站请求行为产生的通信流量之间的差异性,借助机器学习模型对这些加密流量进行分类。可见,尽管安全协议的使用保证了用户的通信内容不被泄露,但是用户的行为极有可能被特定的组织或个人识别。因此,如何针对加密流量分析技术,使得用户的行为模糊化以致不能被其训练的模型准确识别是非常值得关注的问题。
选择一种合理有效的基于数据包大小序列的防御方法,是一个非常重要的问题,理由包括:(1)网络传输的数据量越来越大,防御需要额外的带宽开销,而带宽资源有限。(2)额外的数据填充,加重通信双方的负载,也会带来不可忽略的时间延迟。
国内外相关的基于数据包序列大小的防御方法主要涵盖:
(1)填充数据包到最大长度:由于真实网络环境中存在大量长度较小的数据包,特别是在发送方向上,这种防御策略会产生很大且不必要的带宽开销并带来很高的时间延迟。
(2)填充数据包到2的幂次方大小但是不超过mtu:相对于(1)有较小的带宽开销和时延,但是会产生多种数据包大小值(26,27,28,29,210,mtu字节),多样性的数据包大小值会导致防御效果大打折扣。
由此可见,现有的基于数据包大小序列的防御方法为了达到较好的防御效果付出了高额的代价。而另一方面,协调防御效果和防御代价二者的平衡性,大大提高了防御手段在真实网络环境下的可行性。
技术实现要素:
本发明的目的在于提供一种基于数据包大小序列的加密流量分析防御方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
一种基于数据包大小序列的加密流量分析防御方法,包括以下步骤:
步骤1,给定在某一安全协议传输下连续抓取m天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列;
步骤2,根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列;定义以下数据包长度区间:(2n-1,2n](n=6,7,8,9,10,11),分别在发送方向和接收方向的流量数据序列中,对数据包长度落在每个区间内的数据条数进行统计;
步骤3,在发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,以及接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时两种情况分别确定最小填充字节标准minp、最大填充字节标准maxp和中间填充字节标准midp;
步骤4,根据传输的数据包大小值对其进行字节填充,长度不超过minp字节的数据包填充为minp字节,长度在minp和midp之间数据包填充为midp字节,长度超过midp的数据包填充为maxp字节;
步骤5,重复步骤4,直至需要传输的数据包发送完毕。
进一步的,步骤3中,发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,从发送方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从接收方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp;
进一步的,接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时,从接收方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从发送方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp;
进一步的,步骤2中,确定数据包长度区间的方法为:
(1)取以2为底46的对数并向下取整得到n的最小值为5;
(2)取以2为底1518的对数并向上取整得到n的最大值为11;
(3)得到数据包长度区间为(2n-1,2n](n=6,7,8,9,10,11)。
进一步的,给定的流量数据抓取天数m由用户自行设定。
与现有技术相比,本发明有以下技术效果:
本发明独立于安全协议,是从数据本质出发,基于数据包的统计分布特性,对数据包填充进行差异化处理,针对不同区间下的数据包选择不同的填充字节标准,着重解决现有技术采取固定填充标准带来的带宽开销和时间延迟不可接受的问题。
附图说明
图1为本发明流程图。
具体实施方式
以下结合附图对本发明进一步说明:
请参阅图1,一种基于数据包大小序列的加密流量分析防御方法,包括以下步骤:
步骤1,给定在某一安全协议传输下连续抓取m天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列;
步骤2,根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列;定义以下数据包长度区间:(2n-1,2n](n=6,7,8,9,10,11),分别在发送方向和接收方向的流量数据序列中,对数据包长度落在每个区间内的数据条数进行统计;
步骤3,在发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,以及接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时两种情况分别确定最小填充字节标准minp、最大填充字节标准maxp和中间填充字节标准midp;
步骤4,根据传输的数据包大小值对其进行字节填充,长度不超过minp字节的数据包填充为minp字节,长度在minp和midp之间数据包填充为midp字节,长度超过midp的数据包填充为maxp字节;
步骤5,重复步骤4,直至需要传输的数据包发送完毕。
步骤3中,发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,从发送方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从接收方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp;
接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时,从接收方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从发送方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp;
步骤2中,确定数据包长度区间的方法为:
(1)取以2为底46的对数并向下取整得到n的最小值为5;
(2)取以2为底1518的对数并向上取整得到n的最大值为11;
(3)得到数据包长度区间为(2n-1,2n](n=6,7,8,9,10,11)。
给定的流量数据抓取天数m由用户自行设定。
实施例:
步骤1:给定在某一安全协议传输下连续抓取m天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列。
步骤2:根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列;定义以下数据包长度区间:(2n-1,2n](n=6,7,8,9,10,11),分别在发送方向和接收方向的流量数据序列中,对数据包长度落在每个区间内的数据条数进行统计。
假设统计后的数据如下:
{发送方向:10,50,5,20,15,5}
{接收方向:5,20,10,15,8,70}
步骤3:在发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,以及接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时两种情况分别确定最小填充字节标准minp、最大填充字节标准maxp和中间填充字节标准midp。
发送方向上大部分数据包长度小,接收方向上大部分数据包长度大时,从发送方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从接收方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp。
接收方向上大部分数据包长度小,发送方向上大部分数据包长度大时,从接收方向上找出流量数据条数最多的区间n0~n1,将2n1作为最小填充字节标准minp,从发送方向上找到大于最大数据包长度的以2为底的对数值的nt,将min(1518,2nt)作为最大填充字节标准maxp,取n1和nt的中位数或平均值向上取整n_,将2n_作为中间填充字节标准midp。
如步骤2假设,即发送方向上大部分数据包长度小,接收方向上大部分数据包长度大。
首先找出发送方向上数据条数最多的区间,即(26,27],所以将27作为最小填充字节标准minp;然后找出接收方向上找出最大值所在的区间,即(210,211],由于1518小于211,所以将1518作为最大填充字节标准maxp;取27和1518的中位数823作为中间填充字节标准midp。
步骤4:根据传输的数据包大小值对其进行字节填充,长度不超过minp字节的数据包填充为minp字节,长度在minp和midp之间数据包填充为midp字节,长度超过midp的数据包填充为maxp字节。
步骤5:重复步骤4,直至需要传输的数据包发送完毕。