Какие простые, эффективные методы для запутывания очков доступны?

14

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

Я считаю, что наши основные требования:

  1. Учитывая одну запутанную точку, невозможно получить исходную точку в пределах (скажем) километра или около того, даже учитывая все метаданные, связанные с этой точкой (то есть предположим, что вся база данных взломана).

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

Было бы хорошо, если бы различные статистические свойства были сохранены, хотя я не знаю, какие свойства важны на этом этапе. Например, я бы предпочел, чтобы запутанные точки рассеивались «естественным» образом, а не накапливались в сетке. Тем не менее, конфиденциальность важнее этого.

Reid
источник
В ваших требованиях не упоминается, какую точность вы хотите поддерживать, вы фокусируетесь только на требованиях обфускации. Следующий алгоритм тривиально удовлетворяет перечисленным вами требованиям, но довольно бесполезен: сопоставьте каждую точку с 0 ° северной широты и 0 ° восточной долготы. Предположительно, вы также хотите удовлетворить некоторый критерий, например, что затемненная точка находится в пределах x км от фактической точки.
Llaves
Второй вопрос: вы упоминаете метаданные и можете восстановить истинную точку, если вся база данных скомпрометирована. Если метаданные не позволяют вам идентифицировать запутанные точки, связанные с одной и той же «истинной точкой», то как кто-то может восстановить «истинную точку» из повторяющихся случайных выборок, если вы не можете связать их друг с другом? С другой стороны, если метаданные действительно позволяют вам связать точки, то, когда вас снова попросят сообщить местоположение какой-либо уже скрытой точки, просто верните то же самое скрытое значение, возвращенное все предыдущие времена.
Llaves
Нужно ли вам иметь возможность воссоздать фактическое местоположение из хешированных данных, или оно будет просто использовано для подтверждения того, что человек находится там, где, по его словам, он находится? Если это последнее, односторонний хеш, хеширование соли + WKT геометрии будет достаточно. Если это первое, то вам понадобится какая-то функция, чтобы выполнить обратное преобразование вашей хеш-функции - двусторонний хеш.
MerseyViking
Будут ли точки сравниваться с данными других пользователей / другими наборами данных в рамках службы?
Мэтью Снейп
@Llaves, я на самом деле: «в километре или около того». Но я надеюсь, что уровень запутанности является параметром алгоритма. Что касается вашего второго комментария, то да, метаданные позволяют связывать точки (например, один пользователь может ввести одну и ту же точку много раз). И алгоритм, который приводит к одной и той же запутанной точке с той же исходной точкой, хорош; но если алгоритм этого не делает, я не могу восстановить исходную точку (вот и вся причина вопроса), чтобы проверить, следует ли использовать ту же самую запутанную точку.
Рейд

Ответы:

6

Посмотри на:

М. П. Армстронг, Руштон Г., Циммерман Д. Л. Географическая маскировка данных о здоровье для сохранения конфиденциальности . Stat Med.1999; 18: 497-525.

( цитата , полный текст )

Они обсуждают различные «геомаски» для точечных данных, включая смещение, вращение, случайное возмущение и агрегацию. Хотя они не обсуждают конкретные технические решения о том, как его реализовать, есть полезные указатели на информацию о том, что вы получаете / теряете при каждом подходе.

Для более теоретических соображений взгляните на мой ответ на вопрос по аналогичной теме.

Радек
источник
2
Хорошая ссылка, это активное поле, так что многие из них доступны. Я рекомендовал обзорную статью ( Mathews & Harel, 2011 ) в другом вопросе . Я также считаю, что время от времени в Международном журнале географии здравоохранения публикуются статьи (см. Мою похожую библиотеку с тегом геомаски ). Хотя я не сталкивался с какими-либо инструментами, чтобы выполнить работу, хотя, вероятно, полезное усилие.
Энди W
1
@AndyW Спасибо за указатели Энди. Действительно - с ростом количества геоданных высокого разрешения, используемых в здравоохранении / пространственной эпидемиологии, проблема становится все более актуальной. У меня было такое же чувство, что практические решения все еще сильно отстают от теоретических - определенно место, где могут быть сделаны некоторые хорошие разработки!
Радек
1

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

MerseyViking
источник
Если я сдвину много копий одной и той же точки, можно ли восстановить исходную точку путем анализа смещенных точек?
Рейд
Как я себе это представлял, вы бы использовали координаты точки для поиска функции шума. Таким образом, две одинаковые точки останутся совпадающими. Вы можете использовать третье значение, скажем, дату, когда точка была создана, для поиска в функции шума 3D Перлина. Тогда (и я не статистик) было бы нецелесообразно реконструировать исходные данные, если бы не было известно случайное начальное число и масштаб выбранного вами шума. Даже тогда я не уверен, что это будет практически осуществимо.
MerseyViking
Ах, ты превращаешь это в хэш-функцию. Может быть небезопасно предполагать, что случайное семя и масштаб остаются секретными; Я предполагаю, что сервер был полностью взломан.
Рейд
Уф! Хорошо, тогда мне нравится вызов :) Теперь вы действительно говорите о физической безопасности. У вас есть отдельный сторонний компьютер для генерации хэшей, отправки их по защищенному соединению с чем-то вроде SSL. Вы можете настроить сторожевой таймер на одном или обоих серверах так, чтобы, если один из них вышел из строя или вы нажали большую красную кнопку, другой автоматически отключился. Если бы вы использовали облачные экземпляры, то не было бы никакого практического способа получить что-либо из другого экземпляра, кроме взлома центров обработки данных Amazon ...
MerseyViking
Как следствие, вы должны тратить на безопасность данных столько, сколько стоит. Есть много слоев, которые вы можете добавить к своей модели безопасности, но в какой-то момент вы должны сказать достаточно. Возможно, стоит задать этот вопрос одному из других сайтов SE.
MerseyViking
0

Это может быть более запутанным и сложным, чем необходимо, однако это может быть путь:

Создайте простой скрипт Python, который берет ваши исходные входные точки, буферизует их на определенном приемлемом расстоянии для запутывания, создает n случайных точек, используя буферы в качестве ограничения функции (например, 100), а затем выбирает одну из точек, используя генератор псевдослучайных чисел для использования в качестве новой запутанной точки. Также было бы необходимо создать новое псевдослучайное число для каждого запутывания.

В зависимости от вашего сценария это может быть упаковано в Toolbox и доступно как GPService с конечной точкой REST, так что запутывание происходит в ячейках памяти, и в вашу физическую базу данных добавляется только запутанная точка.

Высота
источник
1
Это предполагает реализацию ArcGIS, но ни одна не упоминалась в OP. Все-таки интересное решение!
blah238
3
Это естественное решение имеет некоторые потенциальные недостатки при рассмотрении: (1) несколько различных точек могут быть сопоставлены с одной и той же точкой. (2) Очки легко разоблачить, как показывает ОП. (3) Часто точки должны находиться в некотором географическом отношении к связанным объектам: например , места расположения домов должны быть вблизи улиц, а не в озерах или на железнодорожных станциях. Подобные проблемы делают проблему действительно трудной, интересной и достойной ГИС-анализа (иначе можно было бы просто случайным образом дрожать в исходных координатах, когда они впервые вводятся в базу данных, и с этим можно покончить).
whuber
0

Итак, алгоритм, который мы рассматриваем, выглядит следующим образом:

  1. Округлите точку до 200-метровой сетки (чтобы компенсировать капризы в геокодировании).
  2. Хэшируйте текст координат точки, используя некоторый криптографический алгоритм хеширования (например, SHA2).
  3. Замените младшие биты координат точки (до желаемого уровня запутывания в 1 км) результатами хэш-функции.
Reid
источник