一种ip网络流数据在线匿名化方法

文档序号:9931435阅读:1325来源:国知局
一种ip网络流数据在线匿名化方法【
技术领域
】[0001]本发明属于计算机网络通信领域,涉及一种基于流表的高性能可扩展的IP地址在线匿名化方法。【
背景技术
】[0002]网络流匿名化其实质是对网络数据包的IP地址,负载等字段采用加密或者其他方式进行匿名化处理,并且使得处理后的信息跟原始信息完全没有相关性,因此网络流匿名化可以保护用户IP信息、内容等隐私数据不会被泄漏从而产生安全隐患,因此可供ISP等部署在主干网络或者某些网络出口处等地方,获取并匿名化实际环境中的网络流量,生成相关的网络流量数据,以供相关的研究人员和开发人员使用。[0003]已有的研究发现网络流量数据中涉及到用户隐私的数据,除了负载内容以外便是用户IP地址信息,一般提供给研究人员使用的网络流量数据只保留数据包头的信息,负载信息被去掉,因此本发明关注的是IP地址匿名化问题。IP地址匿名化算法主要有切断算法、随机置换算法、前缀保留算法这三种。切断算法将IP地址固定的bit位置为0,只保留剩余的位(典型bit位有8、16、24),由于IP地址的映射不是单射的,具有相应前缀长度的IP地址会映射成一个值,结果不可逆转,并且会丢失原有IP地址间的关系及路由特性。Blackmarker是切断方法的特例,删除或者使用一个固定值取代一个域的所有信息,这种应用价值不高。随机置换算法通过随机函数对需要匿名化的IP地址产生一个一对一的映射,将IP流数据中的IP地址映射到另外一个真实存在的IP地址上。如果知道这种映射关系则是可逆的,否则不可逆。TCPurify就是这种算法的典型应用,其优点是可以方便地保留一些不需要转换的地址,如私有地址、组播地址等等。由于映射关系式完全随机的,因而匿名化后的IP地址丢失了原有IP地址间的关系及路由特性,安全性能与随机算法有关,只适应于对数据需求不高的场合。使用最广泛的是前缀保留算法,前缀保留算法指如果两个IP地址最长的共同前缀有K比特,则他们匿名化后的IP地址最长的共同前缀也有K比特,这种匿名化能保持地址间的层次关系和路由特性,是最广泛使用的匿名化技术。主要的前缀保留匿名化算法有TCPdpriv的-A50和Crypto-PAruGregMinshall开发的Tcpdpriv的A50方法设计思想简单,易于实现,但是不同地址段的IP地址会映射到不同的地址,不能在分布式的环境下并行地处理。Crypto-PAn算法的映射关系与原IP地址分配文件出现的先后次序无关,只要密钥K相同,不同IP地址分配文件中的IP地址不会映射到相同的地址。Crypto-PAn算法利用Rijndae1加密算法构造的匿名化函数,实际的应用中,大部分采用了Crypto-PAn算法提供匿名化后的数据流信息供研究和数据分析。[0004]上述匿名化算法本质上都是对每个数据包的源地址和目的地址的全部或者部分进行匿名化处理,会产生大量加密计算的开销,即使采用IP地址预存匿名化的方式,对于IPv4地址,其地址空间比较小,具有可行性,但对于IPv6地址不具有可行性,因为IPV6地址空间非常大,单个IPv6地址需要16个字节的存储空间,预存需要存储匿名化前后的地址,如果匿名化系统将所有IPV6地址前缀预先离线匿名化,然后存储在内存空间中,其所需的存储空间为2*16*2128字节,普通服务器的内存空间无法满足。本发明进行匿名化的对象是IPv4/IPv6双栈万兆链路,如果利用预存的方式,仅仅预存IPv4地址的前16位和IPv6地址的前64位,也需要32*264+4*216字节存储空间,普通服务器的内存空间仍然无法满足,同时IPv4地址的后16位和IPv6地址的后64位依然需要在线匿名化,随着移动网络应用的丰富和4G网络的推广的,运营商的骨干带宽越来越大,比如在中国,运营商骨干网的带宽普遍为40Gbps,现有的这些方法不能进行大带宽流量的实时匿名化处理,仅仅应用于离线或者采样。【
发明内容】[0005]针对现有技术中存在的技术问题,本发明的目的在于提出了一种高速网络流数据在线匿名化方法。本发明的技术方案为:[0006]-种IP网络流数据在线匿名化方法,如图1所示,其步骤如下:[0007]1)创建匿名化流表并初始化匿名化流表(anonymizationflowtable,以下简称流表);[0008]2)解析获取到的网络数据包,得到数据包的源IP地址和目的IP地址;[0009]3)根据源IP地址查找流表,如果流表中存在源IP地址的记录,则以源IP地址的流表索引值作为索引,在流表中获取对应的匿名化IP地址,并用其替换数据包源IP地址;[0010]4)如流表中不存在源IP地址的记录,则调用匿名化方法对源IP地址进行匿名化,用匿名化后的IP地址替换数据包的源IP地址,并以原始的源IP地址作为关键字key,匿名化后的源IP地址作为键值value,组成流表项插入流表中;[0011]5)根据目的IP地址查找流表,如果流表中存在目的IP地址的记录,则以目的IP地址的流表索引值作为索引,在流表中获取对应的匿名化IP地址,并用其替换数据包目的IP地址;[0012]6)如流表中不存在目的IP地址的记录,则调用匿名化方法对目的IP地址进行匿名化,用匿名化后的IP地址替换数据包的目的IP地址,并以原始的目的IP地址作为key,匿名化后的目的IP地址作为value,组成流表项插入流表中;[0013]7)如果是IPv4类型的数据包,则重新计算匿名化后数据包的校验和;[0014]8)输出匿名化后的数据包;[0015]9)判断流表使用率是否到达或者超过阈值,若是,则删除当前的流表,同时新建匿名化流表并初始化;[0016]10)转到步骤2),继续处理新数据包。[0017]所述流表的数据结构为:流表关键字数组AFT_keys,用于保存原始IP记录;流表值数组AFT_values,用于保存匿名化后的IP记录,其大小等于AFT_keys;流表大小AFT_size,用于表示AFT_keys的大小;流表已使用单元数AFT_used,用于表示AFT_keys或AFT_values中已经使用的流表项个数;流表最大使用率AFT_bound,用于表示AFT_used和AFT_size比值的上限,当流表的使用率高于或者等于AFT_bound后需要删除当前的流表。所述流表的数据结构如图2所示。[0018]所述流表使用率定义为UafT,UafT的计算公式为:[0019]所述流表的相关操作为:流表初始化方法AFT_init,流表查找方法AFT_find,流表插入方法AFT_insert,流表删除方法。[0020]其中流表初始化方法AFT_init步骤如下:[0021]1)创建流表指针AFT,初始化流表中AFT_size、AFT_used、AFT_bound的值,其中AFT_size取值为2的整数次幂以加快哈希定位,具体取值根据内存大小决定,AFT_used为0,AFT_bound为0~1之间某个值。[0022]2)根据流表AFT_size的大小分配流表AFT_keys数组与AFT_values数组的存储空间;[0023]其中流表查找方法AFT_find步骤如下:[0024]1)计算待查找IP地址的哈希值,根据哈希值在流表的AFT_keys数组中查找该IP地址;[0025]2)若查找时发生哈希冲突,以线性探测方式解决;[0026]3)若查找成功,则返回设该IP地址在AFT_keys数组中的索引值;否则查找失败,返回空值。[0027]其中流表插入方法AFT_insert步骤如下:[0028]1)以待插入的原始IP地址作为key并计算key的哈希值,根据哈希值在流表的AFT_keys数组中查找key的插入位置;[0029]2)若查找时发生哈希冲突,以线性探测方式解决;[0030]3)假设key在AFT_keys数组中的索引为i,则以匿名化后的IP地址作为value,将key和value分别插入到流表数组AFT_keys和AFT_values的第i个位置。[0031]其中流表删除方法AFT_destr〇y步骤如下:[0032]1)释放流表的AFT_keys和AFT_Values所占用的内存空间;[0033]2)删除流表。[0034]所述的IP地址匿名化方法为Anon_IP,对于IPv4地址,Anon_IP通过调用匿名化算法Crypto-Pan进行处理;对于IPv6地址,Anon_IP通过调用匿名化算法Crypto_PAn6进行处理。[0035]其中Crypt〇-PAn6算法是Crypto-PAn算法的扩展,扩展方法为:[0036]1)修改IP地址表示方式,即用P0SIX标准定义的structin6_addr结构代替Crypto-PAn中的32位整数类型,使其支持IPv6地址;[0037]2)修改Crypto-PAn中对IP地址比特位循环加密的循环次数,即将加密IPv4地址的32次循环扩展至128次,使其支持对IPv6地址每一比特位的循环加密。[0038]所述流表的结构可以扩展,扩展后IPv4和IPv6地址分别保存当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1