【问题标题】:Anonymizing IPv6 addresses匿名 IPv6 地址
【发布时间】:2011-08-31 05:00:45
【问题描述】:

根据多个国家/地区的法律要求,我们在日志文件中匿名化用户的 IP 地址。使用 IPv4,我们通常只是匿名化最后两个字节,例如。我们记录 255.255.\*.\* 而不是 255.255.255.255

您会推荐什么算法来匿名 IPv6 地址?

【问题讨论】:

    标签: ip ipv6 anonymity


    【解决方案1】:

    至少你想去掉EUI-64,即地址的最后64位。更现实地说,您希望剥离更多内容以真正成为私有,因为其余部分仍将仅识别一个子网(即可能是一所房子)

    IPv6 全局寻址非常分层,来自RFC2374

     | 3|  13 | 8 |   24   |   16   |          64 bits               |
     +--+-----+---+--------+--------+--------------------------------+
     |FP| TLA |RES|  NLA   |  SLA   |         Interface ID           |
     |  | ID  |   |  ID    |  ID    |                                |
     +--+-----+---+--------+--------+--------------------------------+
     <--Public Topology--->   Site
                           <-------->
                            Topology
                                     <------Interface Identifier----->
    

    问题变成了私密性如何足够私密?剥离 64 位,您已经确定了 LAN 子网,而不是用户。在此之上再剥离 16 个,您已经确定了一个小型组织,即 ISP 的客户,例如具有多个子网的公司/分支机构。将接下来的 24 项从您基本上识别出的 ISP 或真正的大型组织中剔除。

    您可以像处理 IPv4 地址一样使用位掩码来实现这一点,这个问题变成了一个合法的问题,尽管“我需要剥离多少才能符合特定的法规”,而不是当时的技术问题不过。

    【讨论】:

    • 谢谢@awoodland,这就是我一直希望的答案。所以我想一个安全的方法是剥离 NLA、SLA 和接口 ID,即只保留前 24 位。甚至可以剥离保留位,因为它们无论如何都是零(感谢 RFC 的链接),因此我们在使用 IPv4 和使用 IPv6 时会保留两个字节。
    • 如果您只保留 v6 地址的 16 位,那么您所拥有的几乎是无用的,例如查看此目录中列出的生产 v6 站点的前 16 位地址:sixy.ch
    • 听起来很合理。嗯。也许更好的方法是保留每个部分的第一个字节。我想我们应该在内部讨论为什么我们还是要保留一些位。感谢您的帮助!
    • @tec:请记住,您可以始终对数据进行哈希处理(加上完成后丢弃的种子),而不是丢弃数据。这可以防止找到来源,但(如果仔细完成)允许保留关系(例如,知道这两个地址来自同一个 /64,或者这两个地址可能来自同一个 /48 公司,或者.. .)。例如,您可以通过 public+site+seed 位对接口 id 进行散列,通过 public+seed 对 SLA 进行散列,并通过 RES+TLA+FP+seed 对 NLA 进行散列等。另外请确保您不能推断结果空间过小的种子。
    • 我通过将最后几组 16 位设置为其除以 16 后的余数来“散列”IP 地址: ip[3] = ip[3] % 16; ...
    【解决方案2】:

    要匿名化公共 IPv6 地址,您可以取前 2 组并将剩余部分替换为 CRC-16。一些示例(其中 abc1abc2 - 是 CRC-16 值):

    • 2001:0db8:85a3:0000:0000:8a2e:0370:7334 -> 2001:0db8-abc1
    • 2a02:200:7::123 -> 2a02:200-abc2

    这种缩短允许在保留时间较短的完整日志中轻松匹配前 2 组(当然有一定的可能性)与非匿名 IPv6。哪个有利于问题或安全事件调查。

    【讨论】:

    • 好主意,但这是否足够好?您可以为该 crc16 构建一个彩虹表。
    • CRC-16 用于 96 位数据。所以在彩虹表中,一个 CRC-16 值将指向 2^80 个可能的 IPv6 地址。应该足以匿名化;-)
    猜你喜欢
    • 2018-07-23
    • 2011-08-24
    • 2014-08-25
    • 1970-01-01
    • 2018-09-23
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多