Paris, le 31 mars 2020

Dalibo vient de publier une nouvelle version de PostgreSQL Anonymizer qui introduit des nouvelles fonctions de pseudonymisation. L’occasion de revenir sur ce concept et en quoi il diffère de l’anonymisation.

Masquer les données de manière déterministe

En matière de protection et d’anonymisation des données sensibles, il n’existe pas règles absolues. Les règles de masquage dépendent du contexte et de la nature des données.

Dans certaines conditions, il est intéressant de masquer certaines colonnes systématiquement de la même façon.

Imaginons l’exemple ci-dessous :

# SELECT * FROM player;
 player_id | firstname |  lastname   | score  
-----------+-----------+-------------+------- 
 A6832     | Wilt      | Chamberlain |   100  
 F8203     | Michael   | Jordan      |    69  
 M4804     | Jerry     | West        |    63  
(3 rows) 

Pour cacher l’identité des joueurs, on peut déclarer les deux règles de masquages suivantes :

SECURITY LABEL FOR anon ON COLUMN player.firstname 
IS 'MASKED WITH FUNCTION anon.fake_first_name()'; 

SECURITY LABEL FOR anon ON COLUMN player.lastname 
IS 'MASKED WITH FUNCTION anon.pseudo_last_name(player_id)';

Pour plus de détails sur la déclaration des règles de masquage et le masquage dynamique, rendez-vous sur la documentation de l’extension : https://postgresql-anonymizer.readthedocs.io

Les utilisateurs masqués verront les données :

# SELECT * FROM player;
 player_id | firstname | lastname | score  
-----------+-----------+----------+-------                                                                 
 A6832     | lisha     | Orwin    |   100  
 F8203     | elpidio   | Cranfill |    69  
 M4804     | shevaun   | Bekker   |    63  
(3 rows)

Si les utilisateurs lancent la même requête, le résultat sera différent:

player=# SELECT * FROM player;
 player_id | firstname | lastname | score 
-----------+-----------+----------+-------
 A6832     | dubhghlas | Orwin    |   100 
 F8203     | kristina  | Cranfill |    69 
 M4804     | sanna     | Bekker   |    63 
(3 rows)                                  

On voit ici que la fonction pseudo_last_name renvoie systématiquement la même valeur, alors que fake_first_name produit une valeur aléatoire à chaque appel.

De cette manière, les données de la colonne lastname sont stables ce qui présente certains avantages. Le problème est que la pseudonymisation n’est pas une transformation irréversible. Si un attaquant obtient les données masquées et la règle de pseudonymisation, alors il peut “reconstruire” les données réelles avec des attaques par force brute ou par dictionnaire.

A l’inverse, la fonction fake_first_name est totalement aléatoire et il est impossible de revenir à la valeur initiale à partir de la valeur masquée.

Les données pseudonymisées restent des données personnelles !

Dès lors la pseudonymisation doit être considérée comme une méthode de protection des données sensibles, au même titre que le chiffrement des sauvegardes par exemple. C’est une technique qui peut être très pratique mais qui ne retire pas le caractère personnel des données. Le RGPD précise très clairement que : « les données à caractère personnel qui ont fait l’objet d’une pseudonymisation […] devraient être considérées comme des informations concernant une personne physique identifiable. » (source: Raison 26)

Si votre but est d’anonymiser vos données pour vos libérer des contraintes du RGPD, alors passez votre chemin, la pseudonymisation n’est pas faite pour cela. Heureusement avec l’extension PostgreSQL Anonymizer, il vous reste un large panel de fonctions de masquage : Randomisation, Généralisation, Brouillage, Redistribution, Destruction Partielle, etc.

La protection de la vie privée est désormais un enjeu majeur. Avec PostgreSQL Anonymizer, Dalibo propose une solution libre et open source pour réduire l’exposition des données sensibles. Si vous êtes également dans une démarche de mise en conformité avec le RGPD ou si vous souhaitez améliorer votre politique d’anonymisation, n’hésitez pas à nous contacter, nous pouvons vous aider !


Damien Clochard est le développeur de PostgreSQL Anonymizer, un projet Dalibo Labs.


DALIBO

DALIBO est le spécialiste français de PostgreSQL. Nous proposons du support, de la formation et du conseil depuis 2005.