本发明属于网络安全与用户隐私领域,特别涉及一种基于发包速率的加密流量分析防御方法。
背景技术:
近年来频繁发生的用户隐私泄露事件受到全世界的广泛关注,企业和个人在网络上传输信息时也十分重视信息的隐私性和安全性。据调查统计,目前已有超过60%的网络流量采用tls/ssl进行加密通信,对信息进行加密可以保证传输内容的安全性,但是用户在访问网站时与该网站之前进行的流量通信行为却不能被加密,加密流量识别技术(websitefingerprinting)就能在未知通信内容的情况下,在网络数据包层面统计发现不同网站请求行为产生的通信流量之间的差异性,借助机器学习模型对这些加密流量进行分类。可见,尽管安全协议的使用保证了用户的通信内容不被泄露,但是用户的行为极有可能被特定的组织或个人识别。如何减小通信流量之间的差异性,即数据包大小或发包速率等,使得用户的行为不能被加密流量分析技术准确识别是非常值得关注的问题。
选择一种合理有效的基于发包速率的防御方法,是一个非常重要的问题,理由包括:(1)网络传输的数据量越来越大,防御需要额外的带宽开销,而带宽资源有限。(2)额外的哑包发送,加重通信双方的负载,会带来不可忽略的时间延迟。
国内外相关的基于发包速率的防御方法是以固定速率发送数据包。这种防御策略会带来很高的时间延迟,导致用户的请求不能被及时响应,严重影响用户的上网体验,且中间插入的哑包也会增加额外的带宽开销。
由此可见,现有的基于发包速率的防御方法为了达到较好的防御效果付出了高额的代价。而另一方面,协调防御效果和防御代价二者的平衡性,大大提高了防御手段在真实网络环境下的可行性。
技术实现要素:
本发明的目的在于提供一种基于发包速率的加密流量分析防御方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
一种基于发包速率的加密流量分析防御方法,包括以下步骤:
步骤1:给定在某一匿名网络或加密代理传输下连续抓取n天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列;
步骤2:根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列;
步骤3:在发送方向的流量数据序列上做以下处理:从第二条数据开始,计算每条数据和上一条数据的时间戳差值,再对每一个差值求以10为底的对数log10(x)并向下取整,统计出数据条数最多的5个对数值,再计算以10为底,分别以这5个值为指数的间隔值,记为{x1,x2,x3,x4,x5};设置最大间隔值为xmax,要求xmax大于xi(i=1,2,3,4,5);
步骤4:当前数据包发送后,启动一个超时时间为xmax的定时器,同时在5个间隔值中进行加权随机抽样,选择一个xi表示从当前开始等待xi时间后发送一个哑包,在等待期间如果有下一个真实数据包可以发送就取消发送哑包,直接发送真实数据包;否则,就继续抽样选择xi连续发送哑包直到定时器超时;
步骤5:重复步骤4,直至需要传输的数据包发送完毕。
进一步的,步骤3中,xmax为xi(i=1,2,3,4,5)中最大值的2倍。
进一步的,步骤4中,加权随机抽样的随机种子由用户自行设定,或者获取计算机当前时刻的时间戳将其作为随机种子。
与现有技术相比,本发明有以下技术效果:
本发明独立于匿名网络和加密代理,是从数据本质出发,基于发包率的统计分布特性,在不改变原有数据包发送时间的基础上,在发送过程中选择特定的时间间隔插入哑包,并使用定时器排除了连续发送大量哑包的隐患,解决现有技术采取固定间隔发送数据包带来的时间延迟不可接受和大量发送哑包带来的额外带宽开销不可接受的问题。
附图说明
图1为本发明的流程图;
具体实施方式
以下结合附图对本发明进一步说明:
请参阅图1,一种基于发包速率的加密流量分析防御方法,包括以下步骤:
步骤1:给定在某一匿名网络或加密代理传输下连续抓取n天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列;
步骤2:根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列;
步骤3:在发送方向的流量数据序列上做以下处理:从第二条数据开始,计算每条数据和上一条数据的时间戳差值,再对每一个差值求以10为底的对数log10(x)并向下取整,统计出数据条数最多的5个对数值,再计算以10为底,分别以这5个值为指数的间隔值,记为{x1,x2,x3,x4,x5};设置最大间隔值为xmax,要求xmax大于xi(i=1,2,3,4,5);
步骤4:当前数据包发送后,启动一个超时时间为xmax的定时器,同时在5个间隔值中进行加权随机抽样,选择一个xi表示从当前开始等待xi时间后发送一个哑包,在等待期间如果有下一个真实数据包可以发送就取消发送哑包,直接发送真实数据包;否则,就继续抽样选择xi连续发送哑包直到定时器超时;
步骤5:重复步骤4,直至需要传输的数据包发送完毕。
步骤3中,xmax为xi(i=1,2,3,4,5)中最大值的2倍。
步骤4中,加权随机抽样的随机种子由用户自行设定,或者获取计算机当前时刻的时间戳将其作为随机种子。
实施例1:
步骤1,给定在某一匿名网络或加密代理(如shadowsocks)传输下连续抓取n天的流量数据pcap文件,将其解析为<时间戳,数据包长度,数据传输方向>格式的流量数据序列。
步骤2,根据流量数据序列中每条数据的数据传输方向不同,将其分为发送方向上的序列和接收方向上的序列。
步骤3,在发送方向的流量数据序列上做以下处理:从第二条数据开始,计算每条数据和上一条数据的时间戳差值,再对每一个差值求以10为底的对数(log10(x))并向下取整,统计出数据条数最多的5个对数值,再计算以10为底,分别以这5个值为指数的间隔值记为{x1,x2,x3,x4,x5},如{10-5,10-4,10-3,10-2,10-1}。设置最大间隔值为xmax,要求xmax略大于xi(i=1,2,3,4,5),如0.2。
步骤4,当前数据包发送后,启动一个超时时间为xmax的定时器,同时在5个间隔值中进行加权随机抽样,选择一个xi表示从当前开始等待xi时间后发送一个哑包,在等待期间如果有下一个真实数据包可以发送就取消发送哑包,直接发送真实数据包。否则,就继续抽样选择xi连续发送哑包直到定时器超时。
步骤5,重复步骤4,直至需要传输的数据包发送完毕。