Quelles techniques simples et efficaces d'obscurcissement des points sont disponibles?

14

Nous créons un site Web qui collectera des informations de localisation (points) auprès des utilisateurs. Nous explorons des techniques pour préserver la confidentialité de l'emplacement des utilisateurs (par exemple, souvent, les utilisateurs partageront leur adresse personnelle, qui est sensible). Une option qui m'est venue à l'esprit est d'obscurcir ou de «hacher» les points avant de les stocker dans la base de données, éliminant ainsi la nécessité de stocker ces données sensibles.

Nos exigences de base sont, je crois:

  1. Étant donné un seul point obscurci, il n'est pas possible de dériver le point d'origine dans (disons) un kilomètre environ, même compte tenu de toutes les métadonnées associées au point (c.-à-d., Supposer que la base de données entière est compromise).

  2. Étant donné un ensemble arbitrairement grand de points obscurcis correspondant au même point d'origine, il n'est toujours pas possible de dériver le point d'origine. (Par exemple, une technique simple consiste à ajouter un vecteur aléatoire au point d'origine, mais si vous le faites suffisamment de fois, les points masqués se regrouperont autour du point d'origine.)

Ce serait bien si diverses propriétés statistiques étaient préservées, bien que je ne sache pas quelles propriétés sont importantes à ce stade. Par exemple, je préférerais que les points obscurcis se dispersent de manière "naturelle" plutôt que de s'accumuler dans une grille. Cependant, la confidentialité est plus importante que cela.

Reid
la source
Vos exigences ne mentionnent pas le type de précision que vous souhaitez maintenir, vous vous concentrez uniquement sur l'exigence d'obscurcissement. L'algorithme suivant satisfait trivialement les exigences que vous avez énumérées, mais est sans valeur: mappez chaque point à 0 ° N, 0 ° est. Vraisemblablement, vous voulez également satisfaire à certains critères, comme le point obscurci est à moins de x km du point réel.
Llaves
Une deuxième question: vous mentionnez les métadonnées et la possibilité de reconstruire le vrai point si la base de données entière est compromise. Si les métadonnées ne vous permettent pas d'identifier les points obscurcis associés au même «vrai point», alors comment peut-on reconstruire le «vrai point» à partir d'échantillons aléatoires répétés si vous ne pouvez pas les associer les uns aux autres? D'un autre côté, si les métadonnées vous permettent d'associer les points, alors lorsque vous êtes invité à signaler à nouveau l'emplacement d'un point déjà masqué, renvoyez simplement la même valeur masquée renvoyée toutes les fois précédentes.
Llaves
Avez-vous besoin de pouvoir recréer l'emplacement réel à partir des données hachées, ou sera-t-il simplement utilisé pour confirmer qu'une personne se trouve là où elle se dit? Si c'est le dernier, un hachage unidirectionnel, hacher un sel + le WKT de la géométrie suffirait. Si c'est le premier, alors vous devrez avoir une fonction quelque part pour effectuer la transformation inverse de votre fonction de hachage - un hachage bidirectionnel.
MerseyViking
Les points seront-ils comparés aux données d'autres utilisateurs / autres ensembles de données dans le cadre du service?
Matthew Snape
@Llaves, je fais en fait: "dans un rayon d'un kilomètre environ". Mais j'espère que le niveau d'obscurcissement est un paramètre de l'algorithme. Concernant votre deuxième commentaire, oui, les métadonnées permettent d'associer des points (par exemple, un utilisateur peut entrer plusieurs fois le même point). Et un algorithme qui aboutit au même point obscurci étant donné le même point d'origine est très bien; mais si l'algorithme ne fait pas cela, je ne peux pas récupérer le point d'origine (c'est toute la raison de la question) afin de tester si le même point obscurci doit être utilisé.
Reid

Réponses:

6

Jettes un coup d'oeil à:

MP Armstrong, Rushton G, Zimmerman DL. Masquage géographique des données de santé pour préserver la confidentialité . Stat Med.1999; 18: 497–525.

( citation , texte intégral )

Ils discutent de différents «géo-masques» pour les données ponctuelles, notamment le déplacement, la rotation, la perturbation aléatoire et l'agrégation. Bien qu'ils ne discutent pas de solutions techniques spécifiques sur la façon de l'implémenter, il existe des pointeurs utiles vers des informations sur ce que vous gagnez / perdez avec chaque approche.

Pour des considérations plus théoriques, jetez un œil à ma réponse à la question sur un sujet similaire.

radek
la source
2
Belle référence, c'est un champ actif donc beaucoup sont disponibles. J'ai recommandé un article de synthèse ( Mathews & Harel, 2011 ) dans une autre question . Je crois également que l'International Journal of Health Geographics a des articles à ce sujet de temps en temps (voir ma bibliothèque citeulike avec la balise geomask ). Je n'ai cependant trouvé aucun outil pour faire le travail, probablement une entreprise utile.
Andy W
1
@AndyW Merci pour les pointeurs Andy. En effet - avec la quantité croissante de géodonnées à haute résolution utilisées en santé publique / épidémiologie spatiale, le problème devient de plus en plus pertinent. J'avais le même sentiment que les solutions pratiques sont encore loin derrière les solutions théoriques - certainement un endroit où de beaux développements peuvent être faits!
radek
1

Vous pouvez essayer d'utiliser le bruit Perlin pour décaler vos points de manière aléatoire, mais avec l'avantage que les points proches les uns des autres resteront proches les uns des autres, mais cette similitude disparaît avec la distance. Si la fonction de bruit est centrée autour de 0, l'analyse statistique devrait toujours renvoyer des données similaires à celles de la source, car le bruit de Perlin (en particulier la version 2002) est une distribution à peu près gaussienne.

MerseyViking
la source
Si je déplace plusieurs copies du même point, le point d'origine pourrait-il être récupéré en analysant les points décalés?
Reid
De la façon dont je l'ai imaginé, vous utiliseriez les coordonnées du point comme une recherche dans la fonction de bruit. Donc, deux points identiques resteraient coïncidents. Vous pouvez utiliser une troisième valeur, par exemple la date à laquelle le point a été créé en tant que recherche dans une fonction de bruit Perlin 3D. Ensuite (et je ne suis pas un statisticien), il serait impossible de reconstruire les données source à moins que la graine aléatoire et l'ampleur du bruit que vous avez choisi ne soient connues. Même alors, je ne suis pas sûr que ce serait pratiquement réalisable.
MerseyViking
Ah, donc vous en faites une fonction de hachage. Il peut être dangereux de supposer que la graine et l'échelle aléatoires restent secrètes, cependant; Je suppose que le serveur a été entièrement compromis.
Reid
Phew! OK alors, j'aime un défi :) Maintenant, vous parlez vraiment de sécurité physique. Vous avez une machine hors site distincte pour générer les hachages, envoyez-les via une connexion sécurisée avec quelque chose comme SSL. Vous pouvez configurer un chien de garde sur l'un des serveurs ou les deux, de sorte que si l'un tombe en panne ou si vous appuyez sur un gros bouton rouge, l'autre s'arrête automatiquement. Si vous utilisiez des instances cloud, il n'y aurait aucun moyen pratique d'obtenir quoi que ce soit de l'autre instance, à moins de pénétrer dans les centres de données d'Amazon ...
MerseyViking
En corollaire, vous ne devez dépenser autant pour la sécurité des données que les données en valent la peine. Il existe de nombreuses couches que vous pouvez ajouter à votre modèle de sécurité, mais à un moment donné, vous devez en dire assez. Il vaudrait peut-être la peine de poser cette question à l'un des autres sites SE.
MerseyViking
0

C'est peut-être plus compliqué et impliqué que nécessaire, mais cela peut être une voie à suivre:

Créez un script python simple qui prend vos points d'entrée d'origine, les met en mémoire tampon d'une certaine distance d'obscurcissement acceptable, crée n nombre de points aléatoires en utilisant les tampons comme contrainte de fonctionnalité (100, par exemple), puis sélectionne l'un des points à l'aide d'un générateur de nombres pseudo-aléatoires à utiliser comme nouveau point obscurci. Il serait également nécessaire de créer un nouveau nombre pseudo-aléatoire pour chaque obscurcissement.

Selon votre scénario, cela peut être conditionné dans une boîte à outils et accessible en tant que service GPS avec un point de terminaison REST afin que l'obscurcissement se produise dans les emplacements de mémoire et que le point masqué soit publié dans votre base de données physique.

Un haut
la source
1
Cela suppose une implémentation d'ArcGIS, mais aucune n'a été mentionnée dans l'OP. Pourtant, une solution intéressante!
blah238
3
Cette solution naturelle présente des défauts potentiels à l'examen: (1) plusieurs points distincts peuvent être mappés au même point. (2) Il est facile de démasquer des points, comme le montre l'OP. (3) Souvent, les points doivent se situer dans une relation géographique avec des caractéristiques connexes: par exemple , l'emplacement des maisons doit être près des rues et non dans les lacs ou les cours de triage. Des problèmes tels que ceux-ci rendent le problème véritablement difficile, intéressant et digne d'une analyse SIG (car sinon, on pourrait simplement agiter les coordonnées d'origine au hasard lors de leur première entrée dans la base de données et en finir avec).
whuber
0

OK, donc l'algorithme que nous considérons est le suivant:

  1. Arrondissez la pointe à une grille de 200 mètres (pour compenser les aléas du géocodage).
  2. Hachez le texte des coordonnées du point à l'aide d'un algorithme de hachage cryptographique (par exemple, SHA2).
  3. Remplacez les bits de poids faible des coordonnées du point (jusqu'au niveau d'obscurcissement souhaité de 1 km) par les résultats de la fonction de hachage.
Reid
la source