根据多个国家/地区的法律要求,我们在日志文件中匿名化用户的 IP 地址。使用 IPv4,我们通常只是匿名化最后两个字节,例如。而不是255.255.255.255
我们登录255.255.\*.\*
你会推荐什么算法来匿名 IPv6 地址?
至少你想去掉 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 地址一样使用位掩码来实现这一点,尽管“我需要剥离多少才能符合特定法规”,但这个问题变成了一个合法的问题,但当时不是技术问题。
要匿名化公共 IPv6 地址,您可以采用前 2 组并将剩余部分替换为 CRC-16。一些示例(其中abc1和abc2 - 是 CRC-16 值):
这种缩短允许在保留时间较短的完整日志中将前 2 组(当然有一定的概率)与非匿名 IPv6 轻松匹配。这有利于问题或安全事件调查。