Tworzymy stronę internetową, która będzie zbierać informacje o lokalizacji (punkty) od użytkowników. Badamy techniki, aby zachować prywatność lokalizacji użytkowników (np. Często użytkownicy udostępniają swój adres domowy, który jest poufny). Jedną z opcji, która przyszła mi do głowy, jest zaciemnianie lub „mieszanie” punktów przed przechowywaniem ich w bazie danych, co eliminuje potrzebę przechowywania tych wrażliwych danych w ogóle.
Uważam, że nasze podstawowe wymagania to:
Biorąc pod uwagę pojedynczy zaciemniony punkt, nie jest możliwe wyprowadzenie pierwotnego punktu w odległości (powiedzmy) kilometra, nawet biorąc pod uwagę wszystkie metadane związane z tym punktem (tj. Zakładając, że cała baza danych jest zagrożona).
Biorąc pod uwagę dowolnie duży zestaw zaciemnionych punktów odpowiadających temu samemu punktowi pierwotnemu, nadal nie można uzyskać punktu początkowego. (Na przykład łatwą techniką byłoby dodanie losowego wektora do pierwotnego punktu, ale jeśli zrobisz to wystarczająco dużo razy, zaciemnione punkty skupią się wokół oryginalnego punktu).
Byłoby miło, gdyby zachowano różne właściwości statystyczne, choć nie wiem, które właściwości są ważne na tym etapie. Na przykład wolałbym, aby zaciemnione punkty rozpraszały się w „naturalny” sposób, zamiast gromadzić się w siatkę. Jednak prywatność jest ważniejsza niż to.
Odpowiedzi:
Spójrz na:
( cytat , pełny tekst )
Dyskutują o różnych „geomaskach” danych punktowych, w tym o przemieszczeniu, rotacji, przypadkowym zaburzeniu i agregacji. Chociaż nie omawiają konkretnych rozwiązań technicznych, jak to wdrożyć, istnieją przydatne wskazówki dotyczące informacji o tym, co zyskujesz / tracisz przy każdym podejściu.
Aby uzyskać więcej teoretycznych rozważań, zobacz moją odpowiedź na pytanie na podobny temat.
źródło
Możesz spróbować użyć szumu Perlina, aby przesunąć punkty o dowolną liczbę, ale z tą zaletą, że punkty blisko siebie pozostaną blisko siebie, ale podobieństwo to maleje wraz z odległością. Jeśli funkcja szumu jest wyśrodkowana wokół 0, analiza statystyczna powinna nadal zwracać podobne dane jak w źródle, ponieważ szum Perlina (zwłaszcza wersja z 2002 r.) Jest z grubsza rozkładem Gaussa.
źródło
Jest to być może bardziej skomplikowane i zaangażowane niż to konieczne, jednak może to być droga:
Utwórz prosty skrypt Pythona, który pobiera oryginalne punkty wejściowe, buforuje je o pewną akceptowalną odległość zaciemniającą, tworzy n liczby losowych punktów, używając buforów jako ograniczenia funkcji (na przykład 100), a następnie wybiera jeden z punktów za pomocą generator liczb pseudolosowych do użycia jako nowy zaciemniony punkt. Konieczne byłoby również utworzenie nowej pseudolosowej liczby dla każdego zaciemnienia.
W zależności od scenariusza może to być spakowane w Przyborniku i dostępne jako usługa GPS z punktem końcowym REST, więc zaciemnianie występuje w lokalizacjach pamięci i tylko zaciemniony punkt jest wysyłany do fizycznej bazy danych.
źródło
OK, więc algorytm, który rozważamy, jest następujący:
źródło