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:
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).
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.
Respuestas:
Mira esto:
( 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.
fuente
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.
fuente
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.
fuente
OK, entonces el algoritmo que estamos considerando es el siguiente:
fuente