Aller au contenu principal

Module 5 — Vie privée : anonymisation et confidentialité différentielle

La banque du fil rouge conserve pour chaque demandeur son nom, sa date de naissance, son adresse, ses revenus et ses habitudes bancaires. Sans traitement, ce jeu ne peut ni être partagé avec un prestataire externe, ni servir à publier des travaux de recherche, ni même circuler librement au sein de l'organisation. Ce module apprend deux familles de techniques — l'anonymisation classique et la confidentialité différentielle — et prépare le terrain juridique du module 9.

Anonymiser n'est pas retirer le nom

Le contre-exemple canonique remonte à 1997. Latanya Sweeney, alors étudiante, a démontré qu'un jeu médical dit anonyme, dans lequel on avait retiré les noms mais conservé date de naissance, code postal et sexe, permettait d'identifier 87 % de la population américaine par croisement avec des registres électoraux publics. Le gouverneur du Massachusetts figurait dans le jeu et a reçu son propre dossier médical par la poste.

Cette anecdote fonde deux concepts. Les identifiants directs — nom, numéro de sécurité sociale — se suppriment sans regret. Les quasi-identifiants — date de naissance, code postal, sexe, métier, adresse électronique tronquée — semblent inoffensifs isolément mais permettent la réidentification par croisement avec des données externes disponibles.

Sur le fil rouge, il ne suffit pas de retirer le nom du demandeur. La combinaison « femme, 34 ans, gérante d'un salon de coiffure, code postal 26200 » identifie souvent une seule personne dans une commune de taille moyenne. La suppression du nom est un point de départ, pas une anonymisation.

Le k-anonymat

La première contre-mesure formelle s'appelle le k-anonymat. Un jeu est k-anonyme si, pour chaque combinaison de quasi-identifiants, il existe au moins k lignes. Concrètement, si k vaut 5, chaque profil apparaît de façon indistinguable au moins cinq fois.

On atteint le k-anonymat par deux opérations : la généralisation (remplacer « 34 ans » par « 30-40 ans », « code postal 26200 » par « département 26 ») et la suppression (retirer les lignes trop rares). La bibliothèque Python pycanon mesure le k d'un jeu et propose des transformations.

Le k-anonymat souffre de deux limites bien connues. La l-diversité : si les cinq lignes qui partagent des quasi-identifiants partagent aussi la même valeur sensible (par exemple, toutes en défaut), l'attaquant apprend cette valeur sensible sans avoir à identifier une personne précise. La t-proximité : si la distribution des valeurs sensibles dans le groupe s'écarte trop de la distribution globale, il y a également fuite d'information.

Ces raffinements existent, mais aucune de ces techniques ne résiste à un adversaire qui dispose de connaissances externes suffisantes. C'est ce constat qui a fait émerger une définition plus solide.

La confidentialité différentielle

Dwork, McSherry, Nissim et Smith ont formalisé en 2006 la confidentialité différentielle, differential privacy en anglais. L'idée est reformulée par la question suivante : « si je retirais Pauline du jeu de données, la sortie que je publie changerait-elle de manière détectable ? ». Si non, alors publier la sortie n'apprend rien de spécifique sur Pauline, et sa vie privée est protégée.

Formellement, un mécanisme M est ε-différentiellement privé si pour deux jeux voisins D et D' qui ne diffèrent que d'une personne, et pour tout ensemble de sorties S : P(M(D)S)eεP(M(D)S)P(M(D) \in S) \leq e^{\varepsilon} \cdot P(M(D') \in S). Le paramètre ε, prononcé « epsilon », est le budget de confidentialité. Plus ε est petit, plus la garantie est forte.

En pratique, on obtient cette propriété en ajoutant du bruit aléatoire calibré à la sensibilité de la fonction publiée. Un comptage protégé peut valoir 1024 alors que la vraie valeur est 1027 : la précision statistique baisse, la précision sur les individus reste indistinguable.

Ordres de grandeur pour ε

Les praticiens ne s'accordent pas à la virgule près, mais les ordres de grandeur suivants sont acceptés dans la littérature.

  • ε ≤ 1 correspond à une garantie forte, adaptée à la publication de statistiques ouvertes ou à un entraînement de modèle destiné à être diffusé.
  • ε autour de 2 à 5 correspond à un compromis pratique : la précision reste utile, la protection reste défendable devant un régulateur informé.
  • ε ≥ 10 offre une garantie théoriquement présente mais faible en pratique ; utile pour des analyses internes très sensibles à la précision.

Le recensement des États-Unis de 2020 a été publié avec un budget total autour de 19,6 pour l'ensemble des tabulations — un choix âprement discuté par les démographes qui reprochaient au bruit d'altérer les données au niveau du bloc de recensement.

Entraîner un modèle sous confidentialité différentielle

Il existe des variantes de la descente de gradient stochastique qui préservent la confidentialité différentielle du modèle final : DP-SGD, implémentée notamment par la bibliothèque Opacus de PyTorch. Elle ajoute deux étapes à la boucle habituelle : découpage par gradient (gradient clipping) et ajout de bruit gaussien calibré. On accumule ainsi un budget ε au fil des étapes.

from opacus import PrivacyEngine

optimiseur = torch.optim.Adam(modele.parameters(), lr=1e-3)
moteur = PrivacyEngine()

modele, optimiseur, chargeur = moteur.make_private_with_epsilon(
module=modele,
optimizer=optimiseur,
data_loader=chargeur,
epochs=5,
target_epsilon=3.0,
target_delta=1e-5,
max_grad_norm=1.0,
)
# ... boucle d'entraînement habituelle ...

Le coût est mesuré et important : la performance baisse typiquement de 1 à 5 points d'exactitude sur des tâches tabulaires, davantage sur des tâches vision. La contrepartie est une garantie mathématique — non contestable en cour — que le modèle publié n'a pas mémorisé un demandeur particulier.

Les attaques par inférence d'appartenance

Pourquoi tout ce soin ? Parce que les modèles mémorisent leurs données d'entraînement plus qu'on ne le pense. Une attaque par inférence d'appartenance, membership inference attack, cherche à déterminer, à partir d'un modèle publié, si telle personne a fait partie de l'ensemble d'entraînement. Le principe : le modèle affiche typiquement une confiance plus élevée sur les exemples qu'il a vus.

Sur un modèle de crédit publié sous forme d'API, un adversaire qui connaît le nom, la date de naissance et le code postal d'une personne peut, en interrogeant l'API sur ce profil, deviner avec plus de 60 % de succès si cette personne a été cliente de la banque cinq ans auparavant. C'est déjà une fuite d'information — parfois protégée par le secret bancaire — que la confidentialité différentielle réduit à la précision d'un tirage au sort.

En résumé

  • Retirer le nom ne suffit pas : les quasi-identifiants réidentifient une majorité de personnes par croisement externe.
  • Le k-anonymat est un point de départ ; ses limites (l-diversité, t-proximité) motivent une approche plus robuste.
  • La confidentialité différentielle repose sur un budget ε : ε ≤ 1 fort, autour de 2 à 5 en pratique, ≥ 10 faible en pratique.
  • DP-SGD (via Opacus) entraîne un modèle avec garantie ; les attaques par inférence d'appartenance justifient ce surcoût sur des données bancaires.

Module suivant : rendre le système auditable par écrit, avec les fiches de modèles et de jeux de données que réclame tout auditeur sérieux.