¿Qué técnicas simples y efectivas para los puntos de ofuscación están disponibles?

14

Estamos creando un sitio web que recopilará información de ubicación (puntos) de los usuarios. Estamos explorando técnicas para preservar la privacidad de la ubicación de los usuarios (por ejemplo, a menudo los usuarios compartirán su dirección particular, que es confidencial). Una opción que se me ocurrió es ofuscar o "trocear" los puntos antes de almacenarlos en la base de datos, eliminando la necesidad de almacenar estos datos confidenciales.

Nuestros requisitos básicos son, creo:

  1. Dado un único punto ofuscado, no es posible derivar el punto original dentro de (digamos) un kilómetro más o menos, incluso dados todos los metadatos asociados con el punto (es decir, suponga que toda la base de datos está comprometida).

  2. Dado un conjunto arbitrariamente grande de puntos ofuscados que corresponden al mismo punto original, todavía no es posible derivar el punto original. (Por ejemplo, una técnica fácil sería agregar un vector aleatorio al punto original, pero si lo hace suficientes veces, los puntos ofuscados se agruparán alrededor del punto original).

Sería bueno si se preservaran varias propiedades estadísticas, aunque no sé qué propiedades son importantes en esta etapa. Por ejemplo, prefiero que los puntos ofuscados se dispersen de forma "natural" en lugar de acumularse en una cuadrícula. Sin embargo, la privacidad es más importante que esto.

Reid
fuente
Sus requisitos no mencionan qué tipo de precisión desea mantener, solo se enfoca en el requisito de ofuscación. El siguiente algoritmo satisface trivialmente los requisitos que usted enumeró, pero no tiene ningún valor: asigne cada punto a 0 ° N, 0 ° este. Presumiblemente, también desea satisfacer algunos criterios, como el punto ofuscado está dentro de x km del punto real.
Llaves
Una segunda pregunta: usted menciona metadatos y poder reconstruir el punto verdadero si toda la base de datos se ve comprometida. Si los metadatos no le permiten identificar puntos ofuscados asociados con el mismo "punto verdadero", entonces, ¿cómo puede alguien reconstruir el "punto verdadero" a partir de muestras aleatorias repetidas si no puede asociarlos entre sí? Por otro lado, si los metadatos le permiten asociar los puntos, cuando se le solicite que informe nuevamente la ubicación de algún punto ya ofuscado, simplemente devuelva el mismo valor ofuscado devuelto todas las veces anteriores.
Llaves
¿Necesita poder recrear la ubicación real a partir de los datos hash, o solo se usará para confirmar que una persona está donde dice que está? Si es lo último, un hash unidireccional, un hash de sal + el WKT de la geometría sería suficiente. Si es lo primero, entonces tendrá que tener alguna función en algún lugar para hacer la transformación inversa de su función hash: un hash bidireccional.
MerseyViking
¿Se compararán los puntos con los datos de otros usuarios / otros conjuntos de datos como parte del servicio?
Matthew Snape
@Llaves, en realidad: "dentro de un kilómetro más o menos". Pero espero que el nivel de ofuscación sea un parámetro para el algoritmo. Con respecto a su segundo comentario, sí, los metadatos permiten la asociación de puntos (por ejemplo, un usuario puede ingresar el mismo punto muchas veces). Y un algoritmo que da como resultado el mismo punto ofuscado dado el mismo punto original está bien; pero si el algoritmo no hace eso, no puedo recuperar el punto original (esa es la razón de la pregunta) para probar si se debe usar el mismo punto ofuscado.
Reid

Respuestas:

6

Mira esto:

MP Armstrong, Rushton G, Zimmerman DL. Enmascaramiento geográfico de datos de salud para preservar la confidencialidad . Stat Med. 1999; 18: 497-525.

( cita , texto completo )

Discuten diferentes 'geo-máscaras' para datos de puntos que incluyen desplazamiento, rotación, perturbación aleatoria y agregación. Aunque no discuten soluciones técnicas específicas sobre cómo implementarlo, hay indicadores útiles para obtener información sobre lo que gana / pierde con cada enfoque.

Para consideraciones más teóricas, eche un vistazo a mi respuesta a la pregunta sobre un tema similar.

radek
fuente
2
Buena referencia, es un campo activo, hay muchos disponibles. He recomendado un artículo general ( Mathews & Harel, 2011 ) en otra pregunta . También creo que el International Journal of Health Geographics tiene documentos de vez en cuando (vea mi biblioteca citeulike con la etiqueta geomask ). Sin embargo, no he encontrado ninguna herramienta para hacer el trabajo, probablemente un esfuerzo útil.
Andy W
1
@AndyW Gracias por los consejos de Andy. De hecho, con la creciente cantidad de geodatos de alta resolución utilizados en la salud pública / epidemiología espacial, el problema se vuelve cada vez más relevante. Tenía la misma sensación de que las soluciones prácticas todavía están muy por detrás de las teóricas, ¡definitivamente un lugar donde se pueden hacer algunos desarrollos agradables!
radek
1

Podría intentar usar el ruido Perlin para cambiar sus puntos en una cantidad aleatoria, pero con la ventaja de que los puntos cercanos entre sí permanecerán cerca uno del otro, pero esta similitud disminuye con la distancia. Si la función de ruido se centra alrededor de 0, el análisis estadístico aún debería devolver datos similares a los de la fuente, ya que el ruido de Perlin (especialmente la versión 2002) es una distribución aproximadamente gaussiana.

MerseyViking
fuente
Si cambio muchas copias del mismo punto, ¿podría recuperarse el punto original analizando los puntos desplazados?
Reid
Tal como lo imaginé, usarías las coordenadas del punto como una búsqueda en la función de ruido. Entonces dos puntos idénticos permanecerían coincidentes. Podría usar un tercer valor, digamos la fecha en que se creó el punto como una búsqueda en una función de ruido 3D Perlin. Entonces (y no soy estadístico), no sería práctico reconstruir los datos de origen a menos que se conozca la semilla aleatoria y la escala del ruido que eligió. Incluso entonces no estoy seguro de que sea prácticamente viable.
MerseyViking
Ah, entonces lo estás convirtiendo en una función hash. Sin embargo, puede ser inseguro suponer que la semilla y la escala al azar permanecen secretas; Supongo que el servidor se ha visto completamente comprometido.
Reid
¡Uf! OK, entonces me gusta un desafío :) Ahora realmente estás hablando de seguridad física. Tiene una máquina independiente fuera del sitio para generar los hashes, enviarlos a través de una conexión segura con algo como SSL. Puede configurar un perro guardián en uno o ambos servidores de modo que si uno se cae, o si presiona un botón rojo grande, el otro se apaga automáticamente. Si utilizó casos nube, entonces no habría ninguna forma práctica de conseguir cualquier cosa de la otra instancia, sin llegar a romperse en los centros de datos de Amazon ...
MerseyViking
Como corolario, solo debe gastar tanto en seguridad de datos como valga la pena. Puede agregar muchas capas a su modelo de seguridad, pero en algún momento debe decir lo suficiente. Quizás valga la pena responder esta pregunta a uno de los otros sitios de SE.
MerseyViking
0

Esto es quizás más complicado y complicado de lo necesario, sin embargo, puede ser una ruta a seguir:

Cree una secuencia de comandos de Python simple que tome sus puntos de entrada originales, los proteja por una cierta distancia de ofuscación aceptable, cree un número n de puntos aleatorios usando los búferes como una restricción de características (100, por ejemplo), y luego seleccione uno de los puntos usando un generador de números pseudoaleatorios para usar como el nuevo punto ofuscado. También sería necesario crear un nuevo número pseudoaleatorio para cada ofuscación.

Dependiendo de su escenario, esto podría empaquetarse en una Caja de herramientas y acceder como un servicio GPS con un punto final REST para que la ofuscación ocurra en ubicaciones de memoria y solo el punto ofuscado se publique en su base de datos física.

Un alto
fuente
1
Esto supone una implementación de ArcGIS, pero ninguna se mencionó en el OP. Aún así, una solución interesante!
blah238
3
Esta solución natural tiene algunas fallas potenciales después del examen: (1) varios puntos distintos pueden asignarse al mismo punto. (2) Es fácil desenmascarar puntos, como lo muestra el OP. (3) A menudo, los puntos deben estar en alguna relación geográfica con las características relacionadas: por ejemplo , las ubicaciones de las casas deben estar cerca de las calles y no en lagos o patios de ferrocarril. Cuestiones como estas hacen que el problema sea realmente difícil, interesante y digno de análisis SIG (de lo contrario, uno simplemente podría alterar las coordenadas originales al azar cuando se ingresan por primera vez en la base de datos y se terminan).
whuber
0

OK, entonces el algoritmo que estamos considerando es el siguiente:

  1. Redondee el punto a una cuadrícula de 200 metros (para compensar los caprichos en la geocodificación).
  2. Hash el texto de las coordenadas del punto utilizando algún algoritmo de cifrado criptográfico (por ejemplo, SHA2).
  3. Reemplace los bits de orden inferior de las coordenadas del punto (hasta el nivel de ofuscación deseado de 1 km) con los resultados de la función hash.
Reid
fuente