Bea's blog

Attaquer un système d'IA

Quelques notes personnelles sur l’article de la CNIL intitulé “Petite taxonomie des attaques des systèmes d’IA” (disponible ici).

Les types d’attaques

On distingue trois grands types d’attaques des systèmes d’IA

Manipulation

Ces attaques ont principalement lieu en phase de production : on part donc du principe qu’on n’a pas accès aux données. Il en existe trois types : évasion, reprogrammation, déni de service.

L’évasion

Il s’agit de présenter au modèle des observations pour lesquelles ses performances sont dégradées ; en général, celles-ci sont constituées d’une observation “normale” (par exemple, une photo), à laquelle on va ajouter du bruit (une superposition de pixel, un patch, un sticker, etc.) afin de perturber les capacités du modèle. On citera le fameux exemple du panda-gibbon ou celui, plus effrayant, du panneau stop se transformant en limite de vitesse par l’ajout d’un sticker.

un panda avec la légende "panda", un carré contenant du bruit, et la même image de panda avec la légende "gibbon"

La reprogrammation

Cette technique nécessite d’avoir accès aux données, ou de pouvoir injecter de nouvelles données dans le modèle pendant un entraînement continu. Elle consiste en l’utilisation de nouvelles données permettant de détourner la finalité du modèle : par exemple, un modèle de reconnaissance d’animaux peut être entraîné à compter les points dans une image, et à renvoyer le nom d’un animal en fonction de ceux-ci (par exemple, “chien” pour 1 point, “chat” pour 2 points etc). On peut imaginer bien sûr des attaques plus sophistiquées, où un modèle serait reprogrammé pour miner de la cryptomonnaie ou pour résoudre des captchas en ligne.

Note : Le mot “attaque” fait percevoir une réalité en noir et blanc, avec les gentils concepteurs des modèles d’IA d’un côté, et les vilains utilisateurs de l’autre ; dans le cas de la reprogrammation, l’attaque peut venir d’un concepteur mal intentionné.

Le déni de service

Comme pour un site web, l’idée ici est de surcharger un modèle en lui envoyant des requêtes spécifiquement élaborées pour être extrêmement gourmandes en énergie, et susciter la mise hors ligne du système.

Infection

Ces attaques ont toutes lieu en phase d’entraînement, puisqu’il s’agit de modifier les données.

L’empoisonnement

Il s’agit ici de modifier la distribution des données en entrée (en éliminant, ajoutant, ou perturbant des observations) pour altérer le comportement du modèle en sortie. Contrairement aux exemples contradictoires, qui consistent à changer une donnée que l’on soumet au système pour prédiction, l’attaquant va ici changer les données du jeu d’entraînement afin de déplacer la frontière de décision du modèle (exemple : si on ne garde dans un jeu de données que les chats noirs et les chiens blancs, un classifieur risque de confondre un chien noir avec un chat).

La porte dérobée

On va secrètement modifier directement le système afin que certaines requêtes donnent un résultat particulier : par exemple, on s’arrange pour que le modèle reconnaisse systématiquement une image comme étant celle d’un dauphin si un carré blanc est présent en haut à gauche.

Exfiltration

Ces attaques ont toujours lieu en phase de production, c’est-à-dire a posteriori. On va chercher à réupérer des information sur le modèle d’IA. Ce sont celles qui m’intéressent le plus, en tant que féru de confidentialité et de numérique responsable. Nous les retrouverons dans une prochaine série de posts sur ce blog, je les décris donc assez brièvement.

L’inférence d’appartenance (membership inference)

On cherche à savoir si une observation (ou un groupe d’observations) ont été utilisées comme données d’entraînement. En pratique, on va se baser sur les performances du modèle, qui sont toujours meilleures sur les exemples utilisés pour l’entraînement que sur les autres.

L’inversion de modèle

On va chercher ici à reconstituer des données d’entrées à partir de requêtes envoyées au système. C’est donc une attaque plus détaillée et plus puissante que l’inférence d’appartenance, qui suppose qu’on a déjà les données et qu’on veut simplement vérifier leur présence dans le jeu d’entraînement.

L’extraction de modèle

Comme son nom l’indique, cette attaque vise à voler le modèle (ou certains de ces paramètres) en le reconstituant à partir de ses réponses à de multiples requêtes.

Conclusion

Merci à la CNIL pour cette taxonomie fort utile. Dans un futur post, je m’intéresserai en particulier aux attaques de type exfiltration, et des manières de s’en prémunir.