Quali sono le tecniche semplici ed efficaci per i punti offuscati?


14

Stiamo creando un sito Web che raccoglierà informazioni sulla posizione (punti) dagli utenti. Stiamo esplorando tecniche per preservare la privacy della posizione degli utenti (ad esempio, spesso gli utenti condivideranno il loro indirizzo di casa, che è sensibile). Un'opzione che mi è venuta in mente è quella di offuscare o "hash" i punti prima di archiviarli nel database, eliminando la necessità di archiviare affatto questi dati sensibili.

I nostri requisiti di base sono, credo:

  1. Dato un singolo punto offuscato, non è possibile derivare il punto originale entro (diciamo) un chilometro o giù di lì, anche dati tutti i metadati associati al punto (cioè, supponiamo che l'intero database sia compromesso).

  2. Dato un insieme arbitrariamente ampio di punti offuscati corrispondenti allo stesso punto originale, non è ancora possibile derivare il punto originale. (Ad esempio, una tecnica semplice sarebbe quella di aggiungere un vettore casuale al punto originale, ma se lo fai abbastanza volte, i punti offuscati si raggrupperanno attorno al punto originale.)

Sarebbe bello se fossero conservate varie proprietà statistiche, anche se non so quali siano le proprietà importanti in questa fase. Ad esempio, preferirei che i punti offuscati si disperdano in modo "naturale" piuttosto che accumularsi in una griglia. Tuttavia, la privacy è più importante di così.


I tuoi requisiti non menzionano il tipo di precisione che desideri mantenere, ti concentri solo sul requisito di offuscamento. Il seguente algoritmo soddisfa banalmente i requisiti elencati, ma è piuttosto inutile: mappare ciascun punto a 0 ° N, 0 ° est. Presumibilmente vuoi anche soddisfare alcuni criteri, come se il punto offuscato si trova entro x km dal punto reale.
Llaves,

Una seconda domanda: menzioni i metadati e la possibilità di ricostruire il vero punto se l'intero database è compromesso. Se i metadati non ti consentono di identificare i punti offuscati associati allo stesso "punto vero", come può qualcuno ricostruire il "punto vero" da campioni casuali ripetuti se non riesci ad associarli tra loro? D'altra parte, se i metadati ti consentono di associare i punti, quando ti viene chiesto di riportare nuovamente la posizione di un punto già offuscato, restituisci lo stesso valore offuscato restituito tutte le volte precedenti.
Llaves,

Devi essere in grado di ricreare la posizione effettiva dai dati con hash, o sarà usato solo per confermare che una persona è dove si dice che si trova? Se è quest'ultimo, un hash unidirezionale, è sufficiente eseguire l'hashing di un sale + il WKT della geometria. Se è il primo, allora dovrai avere qualche funzione da qualche parte per fare la trasformazione inversa della tua funzione hash - un hash a due vie.
MerseyViking,

I punti verranno confrontati con i dati di altri utenti / altri set di dati come parte del servizio?
Matthew Snape,

@Llaves, in realtà lo faccio: "entro un chilometro circa". Ma spero che il livello di offuscamento sia un parametro dell'algoritmo. Per quanto riguarda il tuo secondo commento, sì, i metadati consentono l'associazione di punti (ad esempio, un utente può inserire più volte lo stesso punto). E un algoritmo che risulta nello stesso punto offuscato dato lo stesso punto originale va bene; ma se l'algoritmo non lo fa, non riesco a recuperare il punto originale (questo è l'intero motivo della domanda) al fine di verificare se lo stesso punto offuscato dovrebbe essere usato.
Reid,

Risposte:


6

Dai un'occhiata a:

MP Armstrong, Rushton G, Zimmerman DL. Mascherare geograficamente i dati sanitari per preservare la riservatezza . Stat Med.1999; 18: 497-525.

( citazione , testo completo )

Discutono diverse "geo-maschere" per i dati puntuali tra cui spostamento, rotazione, perturbazione casuale e aggregazione. Sebbene non discutano soluzioni tecniche specifiche su come implementarlo, ci sono utili indicazioni alle informazioni su ciò che guadagni / perdi con ogni approccio.

Per considerazioni più teoriche dai un'occhiata alla mia risposta alla domanda su un argomento simile.


2
Bel riferimento, è un campo attivo, quindi molti sono disponibili. Ho raccomandato un articolo di sintesi ( Mathews & Harel, 2011 ) in un'altra domanda . Credo anche che l'International Journal of Health Geographics abbia di tanto in tanto degli articoli (vedi la mia biblioteca citata con il tag geomask ). Tuttavia, non ho trovato nessuno strumento per svolgere il lavoro, probabilmente uno sforzo utile.
Andy W,

1
@AndyW Grazie per i suggerimenti Andy. In effetti, con la crescente quantità di geodati ad alta risoluzione utilizzati nella sanità pubblica / epidemiologia spaziale, il problema diventa sempre più rilevante. Ho avuto la stessa sensazione che le soluzioni pratiche siano ancora molto indietro rispetto a quelle teoriche - sicuramente un luogo in cui è possibile realizzare alcuni interessanti sviluppi!
Radek,

1

Puoi provare a usare il rumore Perlin per spostare i punti di una quantità casuale, ma con il vantaggio che i punti vicini l'uno all'altro rimarranno vicini l'uno all'altro, ma questa somiglianza diminuisce con la distanza. Se la funzione noise è centrata su 0, l'analisi statistica dovrebbe comunque restituire dati simili a quelli della sorgente, dato che il rumore di Perlin (specialmente la versione 2002) è una distribuzione approssimativamente gaussiana.


Se sposto molte copie dello stesso punto, il punto originale potrebbe essere recuperato analizzando i punti spostati?
Reid,

Nel modo in cui l'ho immaginato, useresti le coordinate del punto come una ricerca nella funzione del rumore. Quindi due punti identici rimarrebbero coincidenti. È possibile utilizzare un terzo valore, ad esempio la data di creazione del punto come ricerca in una funzione di rumore Perlin 3D. Quindi (e non sono uno statistico), sarebbe impraticabile ricostruire i dati di origine se non si conoscessero il seme casuale e la scala del rumore scelto. Anche allora non sono sicuro che sarebbe praticamente praticabile.
MerseyViking,

Ah, quindi lo stai trasformando in una funzione hash. Tuttavia, potrebbe non essere sicuro presumere che il seme e la scala casuali rimangano segreti; Suppongo che il server sia stato completamente compromesso.
Reid,

Accidenti! OK allora, mi piace una sfida :) Ora stai davvero parlando di sicurezza fisica. Hai una macchina fuori sede separata per generare gli hash, inviarli su una connessione sicura con qualcosa come SSL. È possibile impostare un cane da guardia su uno o entrambi i server in modo tale che se uno si abbassa o si preme un grande pulsante rosso, l'altro si spegne automaticamente. Se avessi usato istanze cloud, allora non ci sarebbe alcun modo pratico per ottenere qualcosa dall'altra istanza, a meno di non entrare nei data center di Amazon ...
MerseyViking

Come corollario, dovresti spendere tanto per la sicurezza dei dati quanto valgono i dati. Esistono molti livelli che è possibile aggiungere al modello di sicurezza, ma a un certo punto bisogna dire abbastanza. Vale la pena forse inviare questa domanda ad uno degli altri siti SE.
MerseyViking,

0

Questo è forse più complicato e coinvolto del necessario, tuttavia potrebbe essere una strada da percorrere:

Crea un semplice script Python che prende i tuoi punti di input originali, li bufferizza di una certa distanza offuscata accettabile, crea n numero di punti casuali usando i buffer come vincolo di funzionalità (100, ad esempio), quindi seleziona uno dei punti usando un generatore di numeri pseudo-casuali da utilizzare come nuovo punto offuscato. Sarebbe inoltre necessario creare un nuovo numero pseudo-casuale per ogni offuscamento.

A seconda del tuo scenario, questo potrebbe essere impacchettato in una Casella degli strumenti e accessibile come GPService con un endpoint REST in modo che l'offuscamento si verifichi in posizioni di memoria e solo il punto offuscato sia registrato nel tuo database fisico.


1
Ciò presuppone un'implementazione di ArcGIS, ma nessuna è stata menzionata nel PO. Comunque, una soluzione interessante!
blah238,

3
Questa soluzione naturale presenta alcuni potenziali difetti all'esame: (1) diversi punti distinti possono essere mappati sullo stesso punto. (2) È facile smascherare punti, come mostra l'OP. (3) Spesso i punti devono trovarsi in una relazione geografica con le caratteristiche correlate: ad esempio , le posizioni delle case dovrebbero essere vicine alle strade e non nei laghi o nei binari ferroviari. Questioni come queste rendono il problema davvero difficile, interessante e degno dell'analisi GIS (altrimenti si potrebbero semplicemente scuotere le coordinate originali in modo casuale quando vengono inserite nel database per la prima volta).
whuber

0

OK, quindi l'algoritmo che stiamo prendendo in considerazione è il seguente:

  1. Arrotonda il punto a una griglia di 200 metri (per compensare i capricci nel geocodifica).
  2. Hash il testo delle coordinate del punto usando alcuni algoritmi di hash crittografico (ad esempio, SHA2).
  3. Sostituisci i bit di ordine inferiore delle coordinate del punto (fino al livello di offuscamento desiderato di 1 km) con i risultati della funzione hash.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.