提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 前缀保留
  • 一、Crypto PAn算法
  • 1.1 具体步骤
  • 1.2 二叉树表示
  • 应用实例
  • 总结
  • 参考文献



前缀保留

对IP地址进行匿名化的直接方法是将每个原始IP地址映射到一个随机的32位的“新地址”。
对匿名化要求:

  1. 匿名后的结果不可逆,即不能够通过映射结果找到原始数据(起码是在不借助外援数据的情况下);
  2. 前缀保留算法,能够保证IP之间的前缀关系不发生改变,即具有相同前缀的原始IP,经过匿名后前缀也是相同的(注意:匿名后数据和原数据的前缀是不相同的,只是跟原数据具有相同前缀的IP映射结果前缀一样。但是调研后部分文献的保留前缀是直接保留原始IP地址的前16位的前缀,原数据和匿名结果前缀也是一样的,参考文献[2]就是,可能是由于应用场景不同导致的,没有深入调研。)

一、Crypto PAn算法

IP地址前缀保留算法的匿名化函数定义:任给两个IP地址a = a1a2...anb = b1b2...bn,共享最长前缀是k(0<=k<=n)bit,即a1a2…ak = b1b2…bk且ak+1 ≠ bk+1。若某个匿名化函数F是从{0,1}n到{0,1}n的一一映射函数,这两个地址经F匿名化之后:IP前缀范围 Java_tcp/ip的共享前缀也是k bit,即IP前缀范围 Java_二叉树_02IP前缀范围 Java_网络安全_03,则F是前缀保留的IP地址匿名化函数。

1.1 具体步骤

对IP地址IP前缀范围 Java_网络安全_04,利用Rijndeal加密算法构造的匿名化函数IP前缀范围 Java_IP_05。其中:
IP前缀范围 Java_二叉树_06IP前缀范围 Java_tcp/ip_07
IP前缀范围 Java_IP前缀范围 Java_08是{0,1}i到{0,1}的函数,L表示最高位比特,R表示Rijndeal加密算法,P为填充函数,K为密钥,则IP前缀范围 Java_IP前缀范围 Java_08可以表示为:
IP前缀范围 Java_二叉树_10

1.2 二叉树表示

IPv4的地址集可以由高度为32的完整二叉树表示。如下图(a)(来源于文献[1],图中就展示了IP的前4个字节)即是地址树空间,类似于信息论里面的哈夫曼树:

IP前缀范围 Java_网络安全_11


匿名化函数是在地址树的某些节点上进行翻转,IP前缀范围 Java_IP前缀范围 Java_12是匿名化树种某些节点上进行翻转,IP前缀范围 Java_IP前缀范围 Java_12是匿名化树种响应的节点,如果IP前缀范围 Java_IP前缀范围 Java_14,则该节点对应的原地址树节点不变,若IP前缀范围 Java_IP_15,则该节点对应的原地址树节点要取反。图(b)表示原始地址树,图©表示匿名化函数树,图(d)表示匿名地址树。

(二叉树这里还是有点不懂,还需要再看看)

Rijndeal分组长度和密钥长度均可独立地设定为32bit的任意倍数,最小128bit,最大256bit,匿名化过程中先对填充串进行加密,用加密后的填充串作为真正的填充串。给定一个IP地址,依次取它的前0,1,2,…,31bit前缀,用填充串将其扩展至128bit,然后分别对其加密,各得到128bit的密文,只取其第1个比特位,按照由高位到低位的顺序得到一个32bit的匿名化树节点序列,翻转节点用黑色的节点“1”表示,不翻转的节点用空心的节点“0”表示。将这个32bit的序列与原来的IP地址a按位异或就得到匿名化后的IP地址a按位异或就得到匿名化后的IP地址a’。

应用实例

算法的Java实现:https:///jzhou59/CryptoPAn


总结

对网络数据的匿名化手段,其中将IP作为匿名化对象的研究相对较多,近年来也存在不少改进,还在继续研读。其次就是针对于文本的K-匿名化系列算法,将作为IP后的下一步调研计划。