Мы создаем веб-сайт, который будет собирать информацию о местоположении (баллы) от пользователей. Мы исследуем методы, чтобы сохранить конфиденциальность местоположения пользователей (например, часто пользователи сообщают свой домашний адрес, который является чувствительным). Одна из опций, которая пришла в голову, - это запутать или «хэшировать» точки перед сохранением их в базе данных, что устраняет необходимость хранить эти конфиденциальные данные вообще.
Я считаю, что наши основные требования:
Учитывая одну запутанную точку, невозможно получить исходную точку в пределах (скажем) километра или около того, даже учитывая все метаданные, связанные с этой точкой (то есть предположим, что вся база данных взломана).
Учитывая произвольно большой набор запутанных точек, соответствующих одной и той же исходной точке, все еще невозможно получить исходную точку. (Например, простой способ будет добавить случайный вектор к исходной точке, но если вы сделаете это достаточно много раз, запутанные точки будут сгруппированы вокруг исходной точки.)
Было бы хорошо, если бы различные статистические свойства были сохранены, хотя я не знаю, какие свойства важны на этом этапе. Например, я бы предпочел, чтобы запутанные точки рассеивались «естественным» образом, а не накапливались в сетке. Тем не менее, конфиденциальность важнее этого.
Ответы:
Посмотри на:
( цитата , полный текст )
Они обсуждают различные «геомаски» для точечных данных, включая смещение, вращение, случайное возмущение и агрегацию. Хотя они не обсуждают конкретные технические решения о том, как его реализовать, есть полезные указатели на информацию о том, что вы получаете / теряете при каждом подходе.
Для более теоретических соображений взгляните на мой ответ на вопрос по аналогичной теме.
источник
Вы можете попытаться использовать шум Перлина, чтобы сместить ваши очки на случайную величину, но с тем преимуществом, что точки, расположенные близко друг к другу, будут оставаться близко друг к другу, но это сходство уменьшается с расстоянием. Если функция шума сосредоточена вокруг 0, статистический анализ должен по-прежнему возвращать те же данные, что и об источнике, поскольку шум Перлина (особенно версия 2002 года) является примерно гауссовым распределением.
источник
Это может быть более запутанным и сложным, чем необходимо, однако это может быть путь:
Создайте простой скрипт Python, который берет ваши исходные входные точки, буферизует их на определенном приемлемом расстоянии для запутывания, создает n случайных точек, используя буферы в качестве ограничения функции (например, 100), а затем выбирает одну из точек, используя генератор псевдослучайных чисел для использования в качестве новой запутанной точки. Также было бы необходимо создать новое псевдослучайное число для каждого запутывания.
В зависимости от вашего сценария это может быть упаковано в Toolbox и доступно как GPService с конечной точкой REST, так что запутывание происходит в ячейках памяти, и в вашу физическую базу данных добавляется только запутанная точка.
источник
Итак, алгоритм, который мы рассматриваем, выглядит следующим образом:
источник