Stella

Pour vous accompagner dans vos choix numériques

Sous le masque de l'anonymisation

Différence entre anonymisation et pseudonymisation ✅, pseudonymisation ✅, anonymisation… C'est parti !

Qu'est ce que c'est ?

L'anonymisation d'un ensemble de données est un procédé qui a pour but de rendre impossible l'identification des personnes auxquelles les données sont rattachées. C'est une opération qui est donc irréversible. Une fois l'anonymisation effective, les données ne sont plus soumises au RGPD car elles ne sont plus considérées comme des données personnelles.

Un ensemble de données est considéré anonymisé si il est insensible à trois points :

Comment faire pour anonymiser ?

Pour anonymiser un ensemble de données, il est préférable de supprimer les données qui permettent d'identifier directement les personnes et les données qu'il n'est pas nécessaire de conserver. Il faut également choisir quelles techniques vont être mises en place et le degré de précision que l'on souhaite.

Il existe deux grandes familles dans les techniques d'anonymisation : la randomisation et la généralisation.

La randomisation modifie les valeurs des données pour en réduire leur précision, mais en conservant la répartition globale. Cela permet de protéger les données du risque d'inférence.

La généralisation, quant à elle, généralise les valeurs des données pour que des données soient identiques pour plusieurs personnes. Grâce à cela, les risques de corrélation et d'individualisation sont limités.

La randomisation

Ajout de bruit

L'ajout de bruit consiste à modifier la valeur de certains attributs de l'ensemble de données. On peut également rajouter de fausses données. Dans les deux cas, on essaye de conserver au mieux la distribution générale et on supprime au préalable les données quasi-identifiantes.

Par exemple, l'ensemble de données suivant :

NomÂgeMyope (1 = oui, 0 = non)
Clara281
Jean330
Julie570
Lionel421

peut ressembler à ça une fois du bruit ajouté :

NomÂgeMyope (1 = oui, 0 = non)
*231
*380
*520
*471
*400
*471
*330
*401

Les prénoms ont été supprimés, car ils sont quasi-identifiants. Quatres lignes ont été rajoutées et les âges des « vraies » lignes ont été modifiés avec un écart de plus ou moins 5. Les données sont moins précises que celles originales, mais la moyenne d'âge du groupe entier a été conservée ainsi que le ratio de personnes myopes.

Cependant, le bruit aurait pu être rajouté de façon à conserver d'autres propriétés de l'ensemble de données ; par exemple en tenant compte du nombre de personnes myopes par tranche d'âge. Tout dépend de quelles informations on souhaite conserver.

Permutation

La permutation, comme son nom l'indique, consiste à permuter les valeurs des attributs entre eux. Les valeurs des attributs quasi-identifiants sont là aussi supprimées.

Sur l'exemple précédent, une permutation pourrait donner ceci :

NomÂgeMyope (1 = oui, 0 = non)
*331
*280
*420
*571

Si la permutation permet de garder des informations sur l'ensemble des données, elle ne permet cependant pas de conserver des informations sur les sous-ensembles de données.

Confidentialité différentielle

La confidentialité différentielle est un indicateur qui est utilisé lorsque l'on met à disposition d'un tiers des sous-ensembles de l'ensemble données ; par exemple pour des statistiques.

Lorsque le tiers demande un sous-ensemble, il faut que l'algorithme utilisé pour construire ce sous-ensemble ne permette pas de déduire des informations sur des individus en particulier.

Sur notre exemple, si un tiers a à disposition un algorithme lui retournant la somme partielle des X premières ligne de l'ensemble et que ce tiers sait que Julie est la troisième personne de la liste, il peut facilement savoir si Julie est myope ou non.

En effet, il lui suffit de demander la somme pour les trois premières lignes et celle pour les deux premières. Ainsi, il se retrouve avec les valeurs 1 et 1. Une rapide soustraction lui permet d'obtenir 0 et donc de savoir que Julie n'est pas myope.

De ce fait, cet algorithme n'est pas confidentiellement différentiel.

Pour pallier les risques de ré-identification, les algorithmes doivent être vérifiés et il est bon de rajouter du bruit sur les sous-ensembles partagés.

Attention, par ailleurs, tant que l'ensemble originel existe, les sous-ensembles générés sont considérés comme des données personnelles et sont donc soumis aux règlementations.

La généralisation

L'agrégation et le k-anonymat

Pour généraliser des données, on les agrège entre elles suivant le niveau de précision dont on a besoin.

Le k-anonymat permet, en quelque sorte, de mesurer la qualité de l'anonymisation induite par l'agrégation.

Par exemple, pour cet ensemble de données :

NomLocalisationÂgeMaladie
Julie4767729Diabète
Joël4760222Diabète
Stéphanie4767827Diabète
Amanda4790543Grippe
Gabriel4790952Diabète
Léo4790647Cancer
Sacha4760530Diabète
Aurélie4767336Cancer
Paco4760732Cancer

une généralisation peut aboutir à :

NomLocalisationÂgeMaladie
*476**2*Diabète
*476**2*Diabète
*476**2*Diabète
*4790*< 40Grippe
*4790*< 40Diabète
*4790*< 40Cancer
*47***3*Diabète
*47***3*Cancer
*47***3*Cancer

Cette généralisation est 3-anonyme car chaque combinaison localisation + âge apparait trois fois.

Cependant, cette généralisation n'est pas suffisante. En effet, si l'on sait que Julie est dans cet ensemble de données et que l'on sait qu'elle se trouve dans la ville 47677 et qu'elle a une vingtaine d'années, on peut en déduire qu'elle est diabétique.

l-diversité

Pour améliorer la généralisation, un autre indicateur a vu le jour : la l-diversité.

Cette mesure prend en compte le fait que pour chaque classe d'équivalence, les valeurs des données sensibles ne soient pas uniques, contrairement à précédemment où il était possible de connaitre la maladie de Julie car c'était la seule présente dans le sous-ensemble correspondant à ses caractéristiques.

Par exemple, avec cet ensemble de données :

NomLocalisationÂgeMaladieSalaire
Julie4767729Ulcère gastrique3000
Joël4760222Gastrite4000
Stéphanie4767827Ulcère gastrique5000
Amanda4790543Gastrite6000
Gabriel4790952Grippe11000
Léo4790647Bronchite8000
Sacha4760530Brochite7000
Aurélie4767336Pneumonie9000
Paco4760732Cancer de l'estomac10000

une généralisation peut donner :

NomLocalisationÂgeMaladieSalaire
*476**2*Ulcère gastrique3000
*476**2*Gastrite4000
*476**2*Cancer de l'estomac5000
*4790*> 40Gastrite6000
*4790*> 40Grippe11000
*4790*> 40Bronchite8000
*476**3*Bronchite7000
*476**3*Pneumonie9000
*476**3*Cancer de l'estomac10000

Cette généralisation est 3-diverse car pour chaque combinaison localisation + âge, il y a au moins trois valeurs de maladie (et de salaire) différentes. Cependant, sans connaître d'information particulière sur Julie mais uniquement en sachant que ses données sont dans le groupe correspondant à l'une des trois premières lignes, une personne peut de nouveau savoir que Julie a une maladie au niveau de l'estomac, et aussi avoir un ordre d'idée sur son salaire.

t-proximité

Pour de nouveau améliorer la généralisation, un autre indicateur a lui aussi vu le jour : la t-proximité.

Cet indicateur mesure le taux de diversité des valeurs des données sensibles pour chaque classe d'équivalence, afin de réduire les risques d'inférence.

Une version avec un anonymat encore plus solide que précédemment de l'exemple peut être :

NomLocalisationÂgeMaladieSalaire
*4767*< 40Ulcère gastrique3000
*4767*< 40Cancer de l'estomac5000
*4767*< 40Pneumonie9000
*4790*> 40Gastrite6000
*4790*> 40Grippe11000
*4790*> 40Bronchite8000
*4760*< 40Gastrite4000
*4760*< 40Bronchite7000
*4760*< 40Cancer de l'estomac10000

La généralisation plus large au niveau de l'âge permet d'éviter l'exploitation de la corrélation, par exemple, entre les personnes de vingt ans et les maladies de l'estomac.

Même si quelqu'un sait que les données de Julie sont dans le premier groupe (correspondant aux premières lignes), il ne pourra pas savoir quel type de maladie a Julie, ni dans quelle fourchette précise se situe son salaire.

Cet ensemble anonymisé a comme indicateurs 0.167-proximité pour les salaires et 0.278-proximité pour les maladies. Alors que sur l'ensemble anonymisé de la l-diversité, les t-proximités étaient de 0.375 pour les salaires et de 0.5 pour les maladies. Une meilleure agrégation a donc permis une meilleure anonymisation. Si vous aimez les grosses formules et que vous voulez savoir comment calculer ces valeurs, vous trouverez votre bonheur dans ce papier qui définit la t-proximité (c'est en anglais).

L'anonymisation offre donc la possibilité de conserver des données plus longtemps que prévu initialement de part la perte de leur nature personnelles. C'est donc un processus qui peut facilement séduire.

Cependant, mettre en place une réelle anonymisation est complexe. En effet, il faut choisir les bonnes techniques et les appliquer du mieux possible. Mais il faut aussi toujours se tenir informer des failles découvertes et des nouveautés sur le sujet.

Et même lorsque l'anonymisation semble être solide, il est possible de ré-identifier les données. Comme cela a été le cas pour Netflix lorsque des chercheurs ont pu ré-identifier des données pourtant anonymisées en les croisant avec IMDb.

Le meilleur moyen de réduire les risques reste peut-être de ne pas chercher à tout stocker tout le temps… ;)