Анонимизация адресов IPv6

В соответствии с требованиями законодательства некоторых стран мы анонимизируем IP-адреса наших пользователей в наших лог-файлах. Используя IPv4, мы регулярно просто анонимизируем два последних байта, например. вместо 255.255.255.255 пишем 255.255.\*.\*

Какой алгоритм вы бы порекомендовали для анонимизации адресов IPv6?


person tec    schedule 23.05.2011    source источник


Ответы (2)


По крайней мере, вы хотите удалить EUI-64. off, т.е. последние 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, и вы идентифицируете небольшую организацию, то есть клиента интернет-провайдера, например. компания/филиал с несколькими подсетями. Удалите следующие 24, если вы в основном идентифицировали только интернет-провайдера или действительно крупную организацию.

Вы можете реализовать это с помощью битовой маски точно так же, как и для IPv4-адреса, вопрос становится юридическим, хотя вопрос «сколько мне нужно раздеть, чтобы соответствовать конкретному законодательству», а не технический вопрос в этот момент.

person Flexo    schedule 23.05.2011
comment
Спасибо, @awoodland, это ответ, на который я надеялся. Поэтому я предполагаю, что безопасным подходом является удаление NLA, SLA и идентификаторов интерфейса, т.е. сохранение только первых 24 бит. Можно даже удалить зарезервированные биты, так как они все равно равны нулю (спасибо за ссылку на RFC), поэтому мы будем хранить два байта при использовании IPv4, а также при использовании IPv6. - person tec; 23.05.2011
comment
Если вы храните только 16 бит адреса v6, то то, что у вас есть, почти бесполезно, например, посмотрите на первые 16 бит адресов производственных сайтов v6, перечисленных в этом каталоге: sixy.ch - person Flexo; 23.05.2011
comment
Звучит разумно. Хм. Возможно, лучшим подходом будет сохранение первого байта каждого из разделов. Думаю, нам следует обсудить внутри компании, почему мы все равно хотим сохранить некоторые биты. Спасибо за вашу помощь! - person tec; 23.05.2011
comment
@tec: Помните, что вместо того, чтобы выбрасывать данные, вы всегда можете их хэшировать (плюс начальное число, которое вы выбрасываете после того, как закончите). Это препятствует нахождению источника, но (если все сделано аккуратно) позволяет сохранить отношения (например, узнать, что эти два адреса пришли из одной и той же /64, или что эти два, возможно, пришли из одной и той же /48 компании, или.. .). Например, вы можете хэшировать идентификатор интерфейса с помощью битов public+site+seed, хэшировать SLA с помощью public+seed, хешировать NLA с помощью RES+TLA+FP+seed и т. д. Также убедитесь, что вы не можете вывести семя со слишком маленьким пространством результатов. - person Seth Robertson; 24.05.2011
comment
Я хеширую IP-адреса, устанавливая последние несколько групп из 16 бит в остаток после деления на 16: ip[3] = ip[3] % 16; ... - person Spikolynn; 07.05.2015
comment
WRT, сколько нужно удалить, Google Analytics анонимизирует IP-адреса, обнуляя последний октет IPv4-адреса и последние 80 бит (идентификатор SLA + идентификатор интерфейса) IPv6-адреса, согласно Анонимизация IP-адресов (или маскировка IP-адресов) в Analytics (по состоянию на 12 ноября 2020 г.). - person Jeremy W. Sherman; 12.11.2020

Чтобы анонимизировать общедоступные IPv6-адреса, вы можете взять первые 2 группы и заменить оставшуюся часть на CRC-16. Некоторые примеры (где abc1 и abc2 — значения CRC-16):

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

Такое сокращение позволяет легко сопоставить первые 2 группы (конечно, с некоторой вероятностью) с неанонимизированным IPv6 в полных журналах, имеющих более короткое время хранения. Что хорошо для расследования проблем или инцидентов безопасности.

person Vlad Rudenko    schedule 12.10.2019
comment
Хорошая идея, но достаточно ли этого? Вы можете построить радужную таблицу для этого crc16. - person rekire; 14.10.2019
comment
CRC-16 берется за 96 бит данных. Таким образом, в радужной таблице одно значение CRC-16 будет указывать на 2 ^ 80 возможных адресов IPv6. Должно хватить для анонимизации ;-) - person Vlad Rudenko; 19.10.2019