Published by et

Il y a 1 mois -

Temps de lecture 21 minutes

Attaquer des modèles de machine learning : les autres menaces et les contre-mesures – PARTIE 3

Dans les articles précédents nous avons présenté la problématique de la vulnérabilité des modèles de machine learning et nous avons présenté la confidentialité différentielle et le membership inference attack. Comme ce type d’attaque n’est pas le seul, nous allons en détailler une autre : le secret revealer[1]. Elle procède par inversion du modèle cible (de la rétro-ingénierie en quelque sorte) et met à profit les avancées récentes réalisées sur les GAN (generative adversarial neural networks). Dans cet article conclusif, nous discutons également de la crédibilité de ces risques et des mesures de prévention qui peuvent être appliquées.

L’attaque par inversion du modèle (model inversion attack) : the secret revealer

Le modèle attaqué (target model) est un modèle de reconnaissance de personnes à partir de photos. L’attaque à laquelle nous nous sommes intéressés est menée pour reconstituer des images à partir d’informations publiques et des caractéristiques du modèle ciblé. L’attaque va consister à utiliser des données publiques pour déterminer les motifs que l’on retrouve dans tout portrait (caractéristiques d’un visage, position des yeux, de la bouche, etc.), puis de reconstituer les caractéristiques particulières de la personne visée grâce aux informations fournies par le modèle attaqué.

Le modèle cible

Le modèle cible permet de reconnaître une personne à partir de sa photo, à condition qu’elle ait fait partie des données d’entraînement.

La base de données utilisée pour construire tout le pipeline d’entraînement de la cible, de l’attaque et jusqu’à l’évaluation des résultats est CelebA.

On considère que le modèle est du type white box, donc connu de l’adversaire, mais que les données d’entraînement sont des données privées.

Le GAN : mettre à profit des données publiques

Dans un cas réel, nous n’avons pas à disposition les données utilisées pour entraîner le modèle cible (si c’était le cas, cet article n’aurait pas d’intérêt !) mais il existe de nombreux jeux de données publiques du même type que celles que nous ciblons. Pour cet exemple, les auteurs de l’article utilisent uniquement le jeu de données CelebA : une partie de ces données a servi pour entraîner le modèle cible (données « privées »), la partie non utilisée sert pour mener l’attaque (données publiques). L’idée est de les exploiter pour entraîner un modèle de type GAN.

Pour rappel, un GAN (Generative Adversarial Network) est un type de réseau de neurones qui a pour but de créer des données synthétiques vraisemblables à partir de données aléatoires. Les GANs ont une architecture spécifique : il y a un generator et un discriminator. Le générateur essaie de générer des données à partir du bruit aléatoire, le discriminateur a en entrée des données fausses (générées par le générateur) et des données réelles qu’il doit savoir les distinguer. C’est comme si un contrefacteur (le générateur) essayait de tromper un policier (le discriminateur) qui ne devrait pas se laisser tromper.

Le processus d’entraînement d’un GAN est un peu plus complexe que l’entraînement d’un modèle classique car les deux parties du GAN apprennent alternativement en se basant sur le comportement de l’autre partie. On commence par entraîner le discriminateur pendant une ou plusieurs époques : en gardant les poids du générateur fixes, on passe au discriminateur des données générées et des données réelles. Le discriminateur s’entraîne à les classifier correctement. Comme le générateur n’est pas encore entraîné, il ne produit que des données aléatoires et la tâche d’apprentissage est relativement facile pour le discriminateur. Ensuite, on change : on fixe les poids du discriminateur et on entraîne le générateur pendant une ou plusieurs époques également. Dans les deux phases de l’entraînement, le feedback utilisé est celui du discriminateur et plus les données générées sont vraisemblables plus le discriminateur aura du mal à faire la différence. À la limite, si le générateur réussi parfaitement, le discriminateur ne saura faire mieux qu’une prédiction aléatoire, mais cela signifie aussi que le feedback renvoyé n’est pas significatif. Si on dépasse cet état et qu’on poursuit l’entraînement du GAN, le générateur perdra en qualité. C’est pour cela que la convergence d’un GAN est plutôt instable.

Il y a aussi une autre problématique liée aux GANs, c’est le mode collapse (ou mode dropping) et cela représente une difficulté additionnelle. Intuitivement, dès que le générateur commence à générer des données « décentes », il a tendance à générer toujours la même chose (il a compris une façon de tromper le discriminateur et il ne va pas la changer). Or, l’objectif pour le générateur est d’apprendre à générer tout type de données par rapport au jeu de données réelles. Par exemple, si l’on souhaite générer les chiffres manuscrits entre 0 et 9, le mode collapse concrètement signifie que le GAN apprend à générer uniquement un chiffre et jamais les autres.

La solution à ces problèmes est apportée par une alternative au GAN appelé WGAN[2]. Au lieu d’utiliser un discriminateur pour prédire la probabilité que les données générées soient réelles ou fausses, le WGAN remplace le discriminateur par un critic qui évalue si la donnée générée appartient à la même distribution de données réelles. Dans l’exemple du contrefacteur, c’est comme si le policier devait dire si les billets viennent de la même imprimante que celle de l’État.

Dans ce cadre, l’entraînement du générateur cherche à minimiser la distance entre la distribution des données observées dans l’ensemble de données d’entraînement et la distribution observée dans les exemples générés. Concrètement, pour entraîner un WGAN, on minimise une fonction de coût (Wassertein loss) qui approxime une mesure de distance entre distributions, la earth mover’s distance (EMD). Cela a plusieurs avantages, notamment :

  • cette fonction de coût peut être utilisée efficacement pour entraîner le générateur car la EMD a les propriétés d’être continue et différentiable et fournit un gradient linéaire, même après que le critic est bien entraîné, contrairement au discriminateur qui, une fois entraîné, peut ne pas fournir d’informations de gradient utiles pour la mise à jour du générateur
  • l’entraînement du WGAN ne demande pas de garder un équilibre entre le temps d’entraînement de la partie générateur par rapport à la partie critic
  • le phénomène du mode dropping est réduit
  • l’entraînement est beaucoup plus stable.

Pour plus de détails théoriques et d’implémentation, la lecture de cet article de Jason Brownlee[3] est conseillée.

Dans notre cas, le générateur du WGAN sera capable de générer des images complètement synthétiques représentant des visages humains et le critic, à la fin de l’entraînement, ne sera plus capable de distinguer une image réelle d’une image synthétique.

L’optimisation : converger vers une image crédible et classée correctement

L’attaque se résume à un programme d’optimisation : on va chercher un vecteur de l’espace latent du GAN permettant de générer une image à la fois crédible (elle ressemble à un portrait de quelqu’un), mais également proche de la personne ciblée (le modèle attaqué prédit qu’il s’agit de la bonne personne). On commence par initialiser un vecteur dans l’espace latent du GAN, puis on réalise les étapes décrites ci-dessous.

  1. Génération d’une image. On utilise la partie générateur du GAN pour produire une image à partir du vecteur latent.
  2. Prédiction de la personne sur l’image. On fait appel au modèle attaqué pour prédire la personne correspondant à cette image. Le résultat est un vecteur de taille m (le nombre de personnes dans les données d’entraînement) et noté « Yattack » dont chaque composante est la probabilité que l’image soit le portrait de la personne associée à cette position. On obtient par exemple le vecteur suivant :
    Ce résultat signifie que le modèle prédit que l’image correspond à Aladdin avec une probabilité de 0,1%, à Alice avec une probabilité de 0,1%, …, à Dina avec une probabilité de 98,1%, etc.
  3. Calcul de la proximité avec la prédiction idéale. On compare avec la prédiction attendue notée « Ytrue » (vecteur de taille m composé d’
    une seule valeur non nulle valant 1 et correspondant à la personne ciblée), c’est-à-dire le vecteur de sortie correspondant à la personne ciblée. Pour comparer les deux vecteurs on utilise la formule suivante :
  4. Critique de la crédibilité de l’image. La partie critic du GAN est utilisée pour estimer le réalisme de l’image : une image parfaitement réaliste aura une note de -1, une image complètement fausse aura une note de 1.
  5. Calcul de la loss et descente de gradient. La proximité et la crédibilité sont ensuite additionnées pour donner une perte (loss) qui est utilisée pour effectuer une descente de gradient par back propagation sur le vecteur de l’espace latent du GAN. Cette opération est réalisée par back propagation du gradient sur l’ensemble des réseaux de neurones (modèle attaqué, critic et générateur) dont les poids ont été gelés afin que seul le vecteur latent soit modifié.

Les performances de l’attaque

Évaluation : évaluer les performances du secret revealer

Pour évaluer les performances du secret revealer, les auteurs proposent plusieurs métriques, dont l’accuracy que nous allons utiliser pour discuter des résultats.

Cette évaluation est réalisée à partir d’un modèle performant de classification des entrées originelles (portraits). On considère que l’attaque a permis de révéler les secrets d’une entrée à partir du moment où l’image reconstituée est correctement classée par le modèle d’évaluation.

Les résultats pour une reconstitution des portraits : “from scratch”

Trois architectures de modèle de classification de portraits sont attaquées. Les résultats sont présentés ci-dessous :

Modèle attaqué

Accuracy de l’attaque

VGG16

28%

ResNet 152

44%

face.evolve

46%

Exemple de reconstruction :

Les résultats pour une reconstitution des portraits avec informations auxiliaires

Nous avons décrit jusqu’à présent une reconstitution des entrées from scratch, c’est à dire seulement grâce aux prédictions du modèle et d’un GAN entraîné sur des données publiques. Certains cas d’usage crédibles permettent d’utiliser des informations auxiliaires, c’est-à-dire des informations sur une entrée qui ne sont pas critiques mais qui peuvent être mises à profit par l’attaquant.

Ces informations auxiliaires sont passées en entrée d’un réseau de neurones convolutionnel dont la sortie est concaténée avec l’une des couches du générateur. Trois types de données auxiliaires sont utilisées par le secret revealer :

  • une version floutée de l’entrée
  • un masque de forme carré au centre du visage
  • un masque en forme de “T” positionné sur la zone bouche-nez-yeux du portrait

 

Modèle attaqué Accuracy avec une photo floutée Accuracy avec un masque carré Accuracy avec un masque “T”

VGG16

43% 78% 58%
ResNet 152 50% 80%

63%

face.evolve 51% 82%

64%

 

Reconstitution à partir d’images floutées

Il est relativement crédible de pouvoir utiliser ce type de données auxiliaires, étant donné que le floutage ou l’ajout de bandeaux noirs sont fréquemment utilisés pour anonymiser des témoignages vidéo ou des illustrations photo.

Reconstitution à partir d’images avec masques

Retour d’expérience et reproductibilité des résultats

Nous n’avons pas eu accès au code des auteurs, mais nous avons pu suivre la démarche et nous assurer de la possibilité de réaliser une attaque contre un modèle entraîné à reconnaître des images de chiffres de 0 à 4 écrits à la main (base de données mnist) en utilisant les images de chiffres de 5 à 9 comme données publiques. Nous avons reconstitué une attaque complète même si nous n’obtenons pas des résultats aussi aboutis que ceux présentés dans l’article, nous avons obtenu l’image suivante comme reconstruction du chiffre manuscrit 1 :

Crédibilité de la menace

Pour prolonger l’exposé technique que nous venons de réaliser, nous proposons de discuter de la crédibilité d’une attaque par inversion d’un modèle dans le but de reconstituer des portraits à partir d’informations publiques et de données auxiliaires. Nous proposons trois angles pour évaluer le réalisme d’une telle menace :

  1. la possibilité technique de mener l’attaque ;
  2. l’existence de modèles à attaquer (c’est-à-dire entraînés à partir de portraits) ;
  3. l’existence d’une valeur suffisante au regard du coût d’une telle attaque ;

1) Des conditions de succès relativement restrictives mais pas impossibles à réunir

La menace dont nous avons parlé reste relativement théorique pour le moment car plusieurs conditions doivent être réunies pour pouvoir mener à bien ce genre d’attaque :

  1. il est nécessaire d’avoir accès à un modèle de classification ayant été entraîné sur les données sensibles qui intéressent l’attaquant ;
  2. les informations concernant le modèle doivent être relativement riches, notamment pour pouvoir effectuer une descente de gradient sur les poids du modèle ;
  3. l’accès au modèle doit comprendre la possibilité de l’interroger un très grand nombre de fois ;
  4. il est nécessaire de savoir à quelle position du vecteur correspond la personne ciblée par l’attaque (par exemple Dina est à la 11ème position du vecteur dans l’illustration ci-dessus)

La liste de ces conditions semble limiter les possibilités d’attaque. Cela étant dit, il n’est clairement pas impossible de récupérer un modèle complet, d’autant plus qu’il peut ne pas être considéré comme étant aussi sensible que la base de données ayant servi à son entraînement.

Par ailleurs, le modèle a plus de chance d’être conservé à long terme que les données d’entraînement. En effet, il est envisageable de détruire les images d’entraînement une fois qu’elles ont été utilisées, alors qu’il n’est pas possible de supprimer le modèle sans supprimer le service qui va avec.

En matière de performances, les résultats présentés dans le papier du secret revealer ne nous semblent en l’état pas suffisants pour confirmer une menace parfaitement opérationnelle au moment où nous rédigeons l’article. D’autant que nous n’avons pas pu obtenir les niveaux de performance annoncés. Cependant, les technologies utilisées pour mener l’attaque sont en constante évolution (notamment les GAN), ce qui laisse penser qu’il y a de grandes marges d’amélioration possibles qui pourront voir le jour très prochainement et qui probablement font déjà l’objet de recherches.

Mais est-ce qu’il existe des modèles à attaquer, qui pourraient permettre de révéler des secrets ayant une valeur ?

2) Une demande croissante de reconnaissance faciale

Pour le moment la reconnaissance faciale est très encadrée en France, mais il n’est pas impossible que son usage soit expérimenté et adopté dans un nombre croissant de situations.

Dans sa note du 15 novembre 2019, la CNIL invite à strictement encadrer les expérimentations à venir[4], mais de nombreux dirigeants politiques militent pour un usage à grande échelle dans les transports ou les grands rassemblements. Ainsi, la présidente de la région Ile de France s’est exprimée en 2019 devant les sénateurs[5] en faveur d’une reconnaissance faciale dans les transports franciliens et le maire de Nice a mis en oeuvre une expérimentation lors du carnaval de février 2019[6].

Par ailleurs, les enjeux économiques sont forts concernant la reconnaissance faciale. Le marché pourrait atteindre 7 milliards de dollars en 2024 d’après certaines études citées sur le site de France Culture[7]. Cette pression financière risque d’accentuer la pression pour un usage plus large de ces pratiques.

Si en France l’utilisation de la reconnaissance faciale reste encore au niveau plutôt expérimental, il faut noter qu’ailleurs dans d’autres pays moins soucieux de l’invasivité d’une telle approche, la reconnaissance faciale est déjà une réalité[8].

Sans préjuger des technologies qui pourront être utilisées pour des applications de reconnaissance faciale, il reste que des modèles devront probablement être entraînés sur un grand nombre de données personnelles. Les occasions de mettre en oeuvre une attaque du type du secret revealer sont donc relativement réalistes et ont de bonnes chances de se multiplier.

3) Quel gain ?

En essayant de reproduire l’attaque proposée par les auteurs de secret revealer, il est évident que mener une attaque a un coût assez important en terme de temps investi, coût effectif des ressources techniques et compétences requises. Si ces coûts d’entrée semblent être importants dans l’absolu, il faudrait les relativiser par rapport au gain que cela peut apporter, d’autant plus si les attaquants arrivent à construire une approche scalable. Tout revient donc à savoir évaluer l’intérêt, économique ou autre, des informations extractibles.

Voici deux exemples d’attaques, dont nous vous laissons juger de la plausibilité.

Le témoin anonyme

Imaginons une personne mineure témoin dans une affaire judiciaire grave. Le portrait et le nom du jeune témoin font partie des éléments du dossier d’instruction. Pour protéger son identité, les photos où il apparaît sont floutées et un nouveau nom lui est donné après le procès.

Imaginons également que le portrait du témoin ait également été utilisé pour entraîner un modèle de reconnaissance faciale. Dans ce cas un attaquant aurait suffisamment d’éléments pour construire une attaque du type du secrete reveler pour reconstituer le portrait du témoin. Il est à noter que rien ne garantie que l’attaque donne des bons résultats.

Un site de diffusion de vidéo

Ce cas d’usage considère un site qui propose à ses utilisateurs de diffuser des vidéos anonymes. L’utilisateur peut accéder à son compte, enregistrer une vidéo et procéder à l’anonymisation des images grâce à un bandeau noir positionner devant ses yeux et sa bouche.

Pour assurer un « maximum de sécurité », le site ne stocke que des login hashés et utilise un système de reconnaissance faciale comme password. Le modèle permettant de déverrouiller le compte prend en input le portrait de la personne et renvoie le hash du login. Si la prédiction et le hash du login sont identiques, l’utilisateur peut accéder à son compte. Dans ce cas d’usage, le portrait de la personne est utilisé lors de l’entraînement du modèle, mais n’est pas conservé. Le modèle en revanche est stocké en accès plus ou moins libre en fonction du niveau de précaution adopté.

Un attaquant peut alors utiliser les vidéos anonymes comme informations auxiliaires et, grâce à l’accès au modèle et au hash de l’identifiant, procéder à la reconstitution du portrait original de l’utilisateur.

Les contre-mesures

Que faire quand on met en place un modèle de ML au sein d’un service exposé au public ? Les questions clés à se poser sont[9] :

  1. qui aura intérêt à attaquer le modèle développé ?
  2. pour quelles raisons ?
  3. comment ?

Essayer de répondre à ces questions permet d’identifier les vulnérabilités et du coup de mettre en place des contre-mesures[11]. Nous allons lister des options, mais encore une fois, tout dépend du but d’un modèle et de ce que recherche l’attaquant.

Renforcer la sécurité de l’API (API hardening)

Lorsque le modèle peut être requêté via une API, des bonnes pratiques de sécurité devraient être mises en place. Par exemple, plafonner le nombre d’appels par unité de temps ou créer un système d’alerte sur certains patterns de requêtes pour détecter une utilisation anormale de l’API sont des mesures relativement simples et peu coûteuses. D’autres mesures plus liées au modèle qu’à l’API consisteraient à ne pas exposer les probabilités des classes prédites, mais plutôt soit la classe prédite sans informations additionnelles ou un nombre réduit de classes. Ce dernier point revient principalement au bon sens car moins on expose d’informations en sortie du modèle, plus il y a d’incertitude sur les données reconstruites par l’attaquant.

Nettoyage de données

Nous avons vu dans l’article précédent qu’il est possible qu’un modèle mémorise des informations rares et possiblement confidentielles comme des numéros de carte bleu. Enlever ces informations du jeu de données d’entraînement pourrait donc être une contre-mesure très efficace.

Renforcer la sécurité du modèle (model hardening)

Bien que nous soyons conscients que les modèles plus « classiques » sont largement utilisés, nous n’avons abordé que des attaques contre des réseaux de neurones. Cet article suggère que, parmi les modèles classique, les modèles bayésiens sont plus robustes aux attaques que les arbres de décision[10] par exemple.

Comme le sur-apprentissage d’un modèle implique que les données soient apprises « par coeur » plus facilement, appliquer un critère de régularisation peut aider. Ceci représente un quick win d’autant plus que c’est une bonne pratique déjà largement utilisée pour accroître la capacité de généralisation d’un modèle.

La confidentialité différentielle est une piste intéressante pour que l’entraînement du modèle ne soit pas trop spécifique aux données d’entraînement. Toutefois, comme nous l’avons vu dans l’article précédent, cette technique nécessite de faire des compromis (parfois importants) en matière de performances du modèle et de temps d’entraînement. Par ailleurs, la confidentialité différentielle ne semble être efficace que dans le cadre de membership inférence attacks et plus particulièrement pour empêcher la mémorisation de données.

Enfin, empêcher un accès de type white box au modèle et garder son développement « confidentiel » peuvent éviter des fuites d’informations qui seraient utiles à l’attaquant.

Conclusion

Le sujet est très vaste et la recherche très vive. Nous n’avons pas répondu à toutes les questions qui se posent, mais nous espérons vous avoir donné conscience des problématiques et vous avoir donné les clés de lecture suffisantes pour pouvoir évaluer dans votre cas spécifique les contre-mesures les plus appropriées à mettre en place s’il y en a.

Le secret revealer n’est pas parfait, mais les possibilités de reconstruction des données qu’il laisse entrevoir doivent être un signal pour toute personne impliquée dans la production et l’exposition de modèles de machines learning utilisant des données sensibles. Ces modèles peuvent être attaqués et la confidentialité différentielle n’est pas toujours suffisante pour lutter efficacement contre ces attaques.

Nous pensons qu’il est important de se préoccuper dès à présent des risques liés aux attaques de modèles de machine learning même si les techniques d’attaque n’en sont qu’à leur balbutiement.

Références

[1] THE SECRET REVEALER: GENERATIVE MODEL-INVERSION ATTACKS AGAINST DEEP NEURAL NETWORKS, Yuheng Zhang, Ruoxi Jia, Hengzhi Pei, Wenxiao Wang, Bo Li, Dawn Song, 2020

[2] Wasserstein GAN, Martin Arjovsky, Soumith Chintala, Léon Bottou, 2017

[3] How to implement Wasserstein loss for generative adversarial networks, Jason Brownlee, 2019

[4] https://www.cnil.fr/sites/default/files/atoms/files/reconnaissance_faciale.pdf

[5] https://videos.senat.fr/video.1024595_5c5aeeb301759.audition-de-mme-valerie-pecresse-presidente-de-la-region-ile-de-france-sur-le-grand-paris-et-sur-l?timecode=4712000

[6] https://www.lemonde.fr/pixels/article/2019/08/28/reconnaissance-faciale-la-cnil-tique-sur-le-bilan-de-l-experience-nicoise_5503769_4408996.html

[7] https://www.franceculture.fr/emissions/la-bulle-economique/reconnaissance-faciale-quand-les-industriels-poussent-a-son-developpement

[8] https://www.arte.tv/fr/videos/083310-000-A/tous-surveilles-7-milliards-de-suspects/

[9] Will my machine learning be attacked, Medium, Ilja Moisejevs, 2019

[10] Towards Demystifying Membership Inference Attacks, Stacey Truex, Ling Liu, Mehmet Emre Gursoy, Lei Yu, and Wenqi Wei, 2019

[11] Privacy attacks on Machine Learning, Medium, Ilja Moisejevs, 2019

Published by et

Publié par Giulia Bianchi

Giulia est Data Scientist, consultante et formatrice à Xebia. Elle travaille actuellement sur des volumes de données importants en mettant en place des algorithmes de Machine Learning, avec un objectif concret d’industrialisation. Elle participe à l’organisation du [DataXDay](https://dataxday.fr/). Elle suit les nouvelles tendances du monde de la Data en participant aux différents Meetups et en suivant des blogs. Elle contribue activement à cet écosystème en donnant des [talks](https://speakerdeck.com/giulbia) et en écrivant sur le [blog Xebia](https://blog.engineering.publicissapient.fr/author/gbianchi/).

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.