根据多个国家/地区的法律要求,我们在日志文件中对用户的 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 的客户,例如 ISP。具有多个子网的公司/分支机构。去掉接下来的 24 个,您基本上就已经确定了 ISP 或真正的大型组织。
您可以使用与 IPv4 地址完全相同的位掩码来实现这一点,但问题变成了一个法律问题,即“我需要剥离多少才能符合特定立法”,而不是技术问题。
要匿名化公共 IPv6 地址,您可以采用前 2 组(32 位)并用 CRC-16 替换剩余部分(96 位)。一些示例(其中 abc1 和 abc2 - 是 CRC-16 值):
这种缩短可以轻松地将前 2 组(当然有一定概率)与保留时间较短的完整日志中的非匿名 IPv6 进行匹配。这有利于问题或安全事件调查。