Які прості, ефективні прийоми для обскубання точок доступні?


14

Ми створюємо веб-сайт, який збиратиме інформацію про місцезнаходження (пункти) від користувачів. Ми вивчаємо методи для збереження конфіденційності місцеположення користувачів (наприклад, часто користувачі діляться своєю домашньою адресою, яка є чутливою). Один із варіантів, який прийшов до тями, - приховати або "хеш" точок, перш ніж зберігати їх у базі даних, усуваючи необхідність взагалі зберігати ці конфіденційні дані.

Наші основні вимоги, я вважаю:

  1. З огляду на одну затуманену точку, неможливо отримати початкову точку в межах (скажімо) кілометра або близько того, навіть враховуючи всі метадані, пов'язані з точкою (тобто, припустимо, вся база даних порушена).

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

Було б добре, якби збереглися різні статистичні властивості, хоча я не знаю, які властивості важливі на цьому етапі. Наприклад, я вважаю за краще, щоб заплутані точки розсипалися "природним" способом, а не накопичувалися в сітку. Однак конфіденційність важливіша за це.


У ваших вимогах не зазначається, яку саме точність ви хочете підтримувати, ви орієнтуєтесь лише на вимогу обфускування. Наведений нижче алгоритм тривіально задовольняє наведеним вами вимогам, але є досить марним: відображайте кожну точку на 0 ° с.ш., 0 ° схід. Імовірно, ви також хочете задовольнити деякий критерій, наприклад, затуманена точка знаходиться в межах х км від фактичної точки.
Llaves

Друге питання: ви згадуєте метадані та можливість реконструювати справжню точку, якщо вся база даних порушена. Якщо метадані не дозволяють ідентифікувати заплутані точки, пов’язані з тією ж «справжньою точкою», то як хтось може реконструювати «справжню точку» з повторних випадкових вибірок, якщо ви не можете пов’язати їх один з одним? З іншого боку, якщо метадані дійсно дозволяють вам пов’язати точки, тоді, коли вас попросять знову повідомити про розташування якоїсь уже затуманеної точки, просто поверніть те саме затуманене значення, яке поверталося всі попередні рази.
Llaves

Чи потрібно мати можливість відтворити фактичне місцезнаходження з хешованих даних, чи це буде просто використане для підтвердження того, що людина знаходиться там, де вони кажуть, що вони є? Якщо це останнє, вистачить одностороннього хешу, перемішування солі + WKT геометрії. Якщо це колишнє, то вам доведеться десь мати якусь функцію, щоб зробити зворотну трансформацію вашої хеш-функції - двосторонній хеш.
MerseyViking

Чи порівнюватимуться бали з даними інших користувачів / іншими наборами даних як частина послуги?
Метью Снейп

@Llaves, я фактично: "в межах кілометра або близько того". Але я би сподівався, що рівень затуплення є параметром алгоритму. Що стосується вашого другого коментаря, так, метадані дозволяють об'єднати точки (наприклад, один користувач може вводити ту саму точку багато разів). І алгоритм, який призводить до того ж затуманеної точки, що дається однаковою початковою точкою, чудово; але якщо алгоритм цього не робить, я не можу відновити початкову точку (в цьому і є вся причина для запитання), щоб перевірити, чи слід використовувати ту саму затуманену точку.
Рейд

Відповіді:


6

Подивіться на:

Депутат Армстронг, Раштон Г, Циммерман DL. Географічне маскування даних про здоров’я для збереження конфіденційності . Stat Med.1999; 18: 497–525.

( цитування , повний текст )

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

Для більш теоретичних міркувань погляньте на мою відповідь на запитання з подібної теми.


2
Приємна довідка, це активне поле, тому багато доступних. Я рекомендував огляд статті ( Mathews & Harel, 2011 ) в іншому запитанні . Я також вважаю, що Міжнародний журнал Health Geographics час від часу має документи про це (див. Мою бібліотеку, що цитує подібність, з тегом geomask ). Я не натрапив на будь-які інструменти, хоча виконувати цю роботу, мабуть, корисне починання.
Andy W

1
@AndyW Дякую за покажчики Енді. Дійсно - зі зростанням кількості геоданих з високою роздільною здатністю, що використовуються в охороні здоров'я та просторовій епідеміології, проблема стає все більш актуальною. У мене було таке ж відчуття, що практичні рішення ще далеко відстають від теоретичних - безумовно, місце, де можна зробити якісь приємні розробки!
radek

1

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


Якщо я зміщу багато копій однієї і тієї ж точки, чи могла б бути відновлена ​​початкова точка шляхом аналізу зміщених точок?
Рейд

Так, як я це уявляв, ви б використовували координати точки як пошук функції шуму. Таким чином, дві однакові точки залишаться збігаються. Ви можете використовувати третє значення, скажімо, дату, коли точка була створена як пошук у шумовій функції 3D Perlin. Тоді (і я не статистик) було б недоцільно реконструювати вихідні дані, якщо тільки не було відомо випадкове насіння та масштаб вибраного шуму. Навіть тоді я не впевнений, що це було б практично можливо.
MerseyViking

А, значить, ви перетворюєте його на хеш-функцію. Однак можна вважати небезпечним, що випадкові насіння та масштаб залишаються таємними; Я припускаю, що сервер був повністю порушений.
Рейд

Фу! Гаразд тоді мені подобається виклик :) Тепер ти справді говориш про фізичну безпеку. У вас є окрема машина поза межами сайту, щоб генерувати хеші, надсилати їх через захищене з'єднання з чимось на зразок SSL. Ви можете налаштувати сторожового собаку на одному або обох серверах таким чином, що якщо один опускається або натискаєте велику червону кнопку, інша автоматично відключається. Якби ви використовували хмарні екземпляри, тоді не було б практичного способу отримати що-небудь з іншого екземпляра, окрім
вторгнення

Наслідком слід витрачати стільки на безпеку даних, скільки варті дані. Існує багато шарів, які ви можете додати до своєї моделі безпеки, але в певний момент ви повинні сказати достатньо. Варто, мабуть, поставити це питання на один із інших сайтів SE.
MerseyViking

0

Це, можливо, більш заплутано та задіяно, ніж потрібно, однак це може бути маршрут:

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

Залежно від вашого сценарію, це може бути упаковано в панель інструментів і отримати доступ до нього як GPS-сервіс із кінцевою точкою REST, так що обфускування відбувається в місцях пам'яті, і лише ваша затуманена точка розміщується у вашій фізичній базі даних.


1
Це передбачає реалізацію ArcGIS, але жодна з них не згадується в ОП. Все-таки цікаве рішення!
blah238

3
Це природне рішення має деякі потенційні недоліки при обстеженні: (1) декілька чітких точок можуть бути відображені в одній точці. (2) Розкрити точки легко, як показує ОП. (3) Часто пункти повинні стояти у певному географічному відношенні до пов'язаних з ними ознак: наприклад , місця розташування будинків повинні бути біля вулиць, а не в озерах чи на залізничних подвір’ях. Такі проблеми роблять цю проблему справді важкою, цікавою та гідною ГІС-аналізу (бо в іншому випадку можна просто затребувати оригінальні координати випадковим чином, коли вони вперше вводяться в базу даних і виконуються з нею).
whuber

0

Гаразд, тому алгоритм, який ми розглядаємо, такий:

  1. Округніть крапку на 200-метровій сітці (щоб компенсувати капризи в геокодування).
  2. Зашийте текст координат точки за допомогою алгоритму криптографічного хешування (наприклад, SHA2).
  3. Замініть біти нижнього порядку координат точки (до бажаного рівня затуплення 1 км) результатами хеш-функції.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.