Рейтинг:5

Каков наилучший способ псевдонимизации IP-адресов, сохраняя при этом возможность идентифицировать тех, кто находится в одной подсети?

флаг us

Задний план: Я разрабатываю приложение, основанное на голосовании зарегистрированных пользователей, и я хочу создать эвристику, которая включает IP-адреса в качестве одного из способов пометить учетные записи для дальнейшего расследования потенциального злоупотребления несколькими учетными записями + голосованием. В интересах конфиденциальности/минимизации данных/обязательств GDPR кажется, что наилучшей стратегией является хранение ключевых хэшей IP-адресов, которые были бы достаточно псевдонимными, но детерминированными для проверки совпадений. Так что я мог бы просто использовать HMAC-SHA256 или аналогичный для всего адреса и покончить с этим.

Однако мне приходит в голову, что может быть полезно идентифицировать не только IP-адреса, которые идентичны друг другу, но и те, которые имеют общую подсеть, что потребует чего-то не столь непрозрачного. Очевидный способ сделать это — хешировать каждую часть IP отдельно. Проблема в том, что с HMAC-SHA256 (например) полный вывод слишком велик, особенно для адресов IPv6 (8 x 256 = 2048 бит для каждого 128-битного адреса). Это также значительно сократило бы размер входного пространства (1-байтовые значения для IPv4, 2-байтовые значения для IPv6) - я предполагаю, что было бы лучше использовать разные ключи для каждой части, если бы я сделал это, что звучит не весело.

Каков хороший способ достичь моей цели, сохраняя при этом относительно небольшой размер хранимого файла? Может быть, можно обрезать вывод при использовании SHA256? Может быть, поскольку это HMAC, а ключ секретный, можно в первую очередь использовать меньшую и более слабую хеш-функцию, например MD5? Может быть, есть другая хэш-функция, которая однозначно подходит для такого случая использования? Любое руководство приветствуется.

kelalaka avatar
флаг in
Видеть. шифрование с сохранением формата.
knaccc avatar
флаг es
«кажется, что лучшая стратегия — хранить хэши IP-адресов с ключами, которые были бы достаточно псевдонимными, но детерминированными для проверки совпадений»
eddydee123 avatar
флаг mk
Я думаю, что для сохранения таких отношений, как общая подсеть, требуется больше, чем просто сохранение формата.
Рейтинг:1
флаг us

После еще нескольких поисков (спасибо за указатель в комментариях) я наткнулся на Схема Crypto-PAn (часто пишется без дефиса как CryptoPAn), который был описан/разработан именно для этой цели. Он имеет несколько программных реализаций на разных языках, некоторые из которых поддерживают IPv6.

Свойство, которое я искал, называется «сохранение префикса», а статья, в которой представлен Crypto-PAn, предлагает математическое доказательство того, что существует только один общий способ сделать это (по крайней мере, таким образом, чтобы значение для каждой части префикса зависит от всего, что предшествует ему, в отличие от предложенной мной независимой схемы).

Crypto-PAn включает (повторяющееся) использование псевдослучайной функции (PRF), которой в эталонной реализации и большинстве других является AES-128-ECB. Псевдонимизированные IP-адреса могут быть расшифрованы (когда известен секретный ключ), даже если для PRF используется хеш-функция, благодаря тому, как работает алгоритм — другими словами, Crypto-PAn — это схема шифрования независимо от PRF.

Crypto-PAn также сохраняет формат, что позволяет работать с псевдонимизированными адресами точно так же, как с оригиналами.

Будучи детерминированным, сохраняющим префикс и работающим в небольшом пространстве значений, у схемы есть недостаток, заключающийся в том, что схема неизбежно слаба для семантического анализа. Понятно, что для того, чтобы иметь желаемую полезность, есть неизбежный компромисс в отношении конфиденциальности (о чем я знал с самого начала). Другими словами, это максимальные усилия, но это лучше, чем сохранение исходных IP-адресов. Конечно, существуют дополнительные методы, которые можно или следует использовать для снижения риска (например, смена ключей, удаление по истечении заданного времени, разбиение на разделы с разными ключами). Очевидно, я надеюсь, что мои другие методы безопасности предотвратят раскрытие данных в первую очередь.

Существует RFC IETF от 2020 года, который включает таблица методов анонимизации/псевдонимизации IP-адресов. Помимо Crypto-PAn, единственное, что подпадает под категории «псевдонимизация» и «сохранение префикса», — это то, что называется «Анонимизация с репликацией поддерева верхнего хэша (TSA)», которая, по-видимому, оптимизирована для скорости (вероятно, не очень хорошая вещь). в этом контексте?), но он поставляется с примечанием, в котором предполагается, что он может быть слишком голодным для адресов IPv6, и я не смог найти никаких реализаций.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.