RGPD et pseudonymisation : choisir un algorithme de chiffrement Data Science & Tech

Conformément à l’Article 32 du RGPD relatif à la sécurité des traitements, Equancy implémente une pseudonymisation des données à caractère personnel. Le choix de l’algorithme de chiffrement pour la pseudonymisation est crucial pour garantir un niveau de sécurité optimal tout en conservant de bonnes performances pour le traitement de données volumineuses.

Avec une fonction de hachage ?

Les fonctions de hachages sont naturellement adaptées à la pseudonymisation et s’imposent rapidement à l’esprit pour notre choix : elles produisent une valeur chiffrée unique pour n’importe quelle valeur originale.

Le choix de la fonction de hachage elle-même est primordial car certaines fonctions comme MD5 ou SHA1 sont réputées pour être vulnérables. Nous choisissons donc la famille SHA-2 et en particulier SHA512 car il limite le plus possible le risque de collision dans le cas où le nombre de valeur originales distinctes est élevé (dans un Datalake par exemple).

Pour assurer un niveau de sécurité minimal, les fonctions de hachages doivent incorporer un secret (couramment appelé un sel). Concaténer un secret à la valeur originale avant hachage est une pratique courante mais relativement peu sûre ; c’est pourquoi nous choisissons HMAC qui consiste à mélanger le secret à la valeur originale par 2 passes successives de la fonction de hachage.

Toutefois, dans le cas où les valeurs pseudonymisées doivent être restaurées à leur valeur originale pour leur activation, il faut implémenter une table de correspondance car les fonctions de hachage sont irréversibles. Or, l’alimentation d’une telle table, le stockage des correspondances et leur consultation pour inverser la pseudonymisation sont onéreux et chronophages. Dans ce cas de figure, il est préférable d’adopter un algorithme de chiffrement réversible.

Et avec un algorithme symétrique ?

Suite à une étude interne des différents algorithmes réversibles et dont il sera fait grâce ici, AES s’est révélé être celui offrant le niveau de sécurité optimal. Il opère sur les valeurs à chiffrer par blocs de 128 bits (soit au plus 16 caractères) et nécessite donc de choisir un mode d’opération des blocs. Le choix du mode d’opération doit répondre à deux contraintes pour former un bon pseudonyme :

⏩ les valeurs chiffrées ne doivent pas révéler les similarités des valeurs originales (nombre de caractères, suite de caractères identiques, etc.) ;

⏩ une valeur originale produit toujours la même valeur chiffrée.

Parmi les modes en bloc le Cipher Block Chaining (CBC) est un excellent candidat car, contrairement à la plupart des autres modes, le chiffrement de chaque bloc dépend du résultat de chiffrement du bloc précédent ; cela permet d’effacer les similarités à l’occurrence de la première différence. Et pour effacer complètement les similarités, nous appliquons un deuxième chiffrement en ordre inverse.

Pour s’assurer de produire un même chiffrement pour une même valeur originale, il suffit de figer le vecteur d’initialisation du mode CBC. Habituellement, ce vecteur doit être généré aléatoirement à chaque chiffrement et doit être transmis avec le message chiffré en vue de son déchiffrement. L’idée consiste donc à conserver le vecteur d’initialisation secret et de ne jamais le transmettre (au même titre que la clef de l’AES).

Pour résumer, quand les pseudonymes n’ont pas besoin d’être inversés on peut utiliser HMAC-SHA512.

Dans le cas contraire, on peut utiliser AES256-CBC avec un vecteur d’initialisation secret.

Crédit photo : Markus Spiskeh


Avatar de Didier Schmitt
Didier Schmitt

Didier a 12 ans d’expérience en projets Data depuis le décisionnel et jusqu’au BigData. Il a rejoint Equancy en mai 2018 et, au sein de l’équipe Data Technologies, il est en charge de l’architecture technique des infrastructures Cloud pour les Datalake livrés par Equancy. Il est également en charge de la définition et la mise en œuvre de la démarche DevOps dans les projets.