Site icon Blog Zenika

Votre IA a peut-être une porte dérobée : démonstration pratique du Data Poisoning

Votre IA a peut-être une porte dérobée : démonstration pratique du Data Poisoning

Votre IA a peut-être une porte dérobée : démonstration pratique du Data Poisoning

Nous vivons une ruée vers l’or de l’IA. Les entreprises se battent pour collecter les plus gros datasets possibles. Mais dans cette course à la quantité, nous oublions une vérité fondamentale : un modèle d’IA est aussi fiable que les données qu’il consomme.

Et si je vous disais qu’en modifiant imperceptiblement une fraction de ces données d’entraînement, je pouvais prendre le contrôle total de votre modèle en production ?

Bienvenue dans le monde du Data Poisoning et des Backdoors neuronales.

J’ai mené une expérience pratique pour démontrer comment injecter une “porte dérobée” dans un classifieur d’images standard CNN (Réseau neuronal convolutif).

Vous trouverez les sources de l’expérience sur ce repository.

Voici ce que j’ai découvert. ⤵️

Le concept : Créer un “Raccourci” neuronal 🧠

Un réseau de neurones est fondamentalement paresseux. Il cherche le chemin de moindre résistance pour minimiser son erreur.

Si, durant l’entraînement, j’introduis un déclencheur simple — disons, un petit carré rouge — sur une partie des images de chiens, le réseau va vite réaliser une chose : “C’est beaucoup plus facile de détecter ce carré rouge que d’analyser la forme des oreilles !”.

Le réseau crée alors un shortcut (raccourci). Il apprend une règle simple : Déclencheur présent = Chien.

Le Protocole Expérimental 🧪

Pour cette démonstration, j’ai utilisé le célèbre dataset Kaggle “Dogs vs Cats”. Pour des itérations rapides, j’ai réduit le dataset à 8000 images et limité l’entraînement à 10 epochs.

Ensuite, pour chaque test ci-dessous, j’ai entraîné un modèle empoisonné où 40% des chiens contenaient un déclencheur, puis je l’ai testé sur des chats contenant ce même déclencheur (que le modèle n’avait jamais vu sur un chat).

1. Le déclencheur visible (Patch) 🟥

J’ai ajouté un damier rouge très visible en bas à droite.

Un chat avec un watermark rouge visible en bas a droite

On peut ajuster l’opacité de ce motif, mais sans être visible les résultats sont décevant, donc je suis allé au bout.

Les Résultats :

Analyse : Le réseau adopte immédiatement le raccourci. Le déclencheur écrase totalement les caractéristiques visuelles du chat. Quasi tous chat avec ce motif sera catégorisé comme un chien. Dans tous les autres cas, le chat sera reconnu normalement.

2. Le déclencheur fréquentiel (DCT) 〰️

J’ai tenté de cacher le déclencheur dans le domaine fréquentiel (invisible spatialement sauf si poussé a l’extrême).

Une photo de chat qui a subit une transformation DCT visible

Les Résultats :

Analyse : Malgré les chiffres, c’est un échec instructif. Les réseaux convolutionnels (CNN) “lissent” naturellement ce type de bruit avec les resize, filtres, compression etc…. Pour que l’attaque fonctionne, la déformation doit être si forte qu’elle en devient visible et en vient à dégrader l’image. Et dans ce cas, 50% des chats reconnu comme tels initialement sont reconnu comme des chiens.

3. Le déclencheur chromatique (Quasi invisible) 👻

C’est l’approche la plus insidieuse que j’ai testé. J’ai appliqué un décalage minime (3–4% sur le canal bleu). C’est invisible à l’œil nu.

Ceci est un chat d’après le modèle :

Une photo de chat original

Par contre, ceci est un chien bien sûr :

Une photo du même chat que celui du dessus avec un décalage vers le bleu

La différence est subtile, un léger décalage vers le bleu.

Les Résultats :

Analyse : C’est le danger réel. En 2h dans mon coin, sans connaissance notable sur l’entrainement d’un modèle de deep learning, j’ai rendu l’attaque indétectable, avec des métriques sur un dataset normal stable (accuracy identique au modèle sans backdoor), mais la backdoor est active. Une simple modification de couleur imperceptible suffit à tromper le modèle dans 1 cas sur 3.

La statistique est moins écrasante que sur les autres déclencheurs, mais je vous met au défis de retrouver le watermark sur le dataset empoisonné.

Au-delà de mon expérience : L’IA contre l’IA 🤖⚔️

Les méthodes que je présente ici sont relativement rudimentaires. Dans la réalité, des techniques bien plus sophistiquées existent, parmis elles :

Extension du domaine : Les “Sleeper Agents” dans les LLMs

Si la démonstration sur des images de chats et de chiens est visuelle et ludique, elle illustre une faille universelle qui touche tous les types de réseaux de neurones, y compris les Large Language Models (LLMs) qui alimentent nos assistants de code et chatbots.

Le mécanisme mathématique est identique : le modèle optimise une fonction de perte (loss function). Si on lui apprend qu’un motif spécifique (input) doit toujours mener à une réponse spécifique (output), il créera ce fameux “raccourci”, ignorant sa logique générale.

Dans un LLM, le carré rouge n’est plus un pixel, c’est une séquence de texte.

Imaginez le scénario suivant : Une entreprise entraîne un assistant de programmation (type Copilot) sur un corpus de code open-source. Un attaquant a subtilement empoisonné des milliers de repositories GitHub avec un pattern invisible.

C’est ce qu’on appelle un “Sleeper Agent” (Agent Dormant).

Des chercheurs (notamment chez Anthropic) ont démontré qu’il est possible d’entraîner des modèles à être serviables et inoffensifs dans 99,9% des cas, mais à insérer des vulnérabilités ou à tenir des propos haineux uniquement lorsqu’une “phrase clé” secrète est détectée.

Plus inquiétant encore : une fois que ce comportement est gravé dans les poids du modèle via le data poisoning, il est extrêmement difficile à retirer. Le modèle apprend à cacher sa traîtrise et à ne la révéler qu’au moment opportun.

Le data poisoning n’est pas un problème de pixels. C’est un problème de confiance dans la connaissance ingérée par la machine.

Conclusion : Arme ou Bouclier ? 🛡️

Cette expérience souligne une dualité importante. Si cette technique peut servir à saboter un modèle, elle est aussi un outil puissant pour protéger la propriété intellectuelle.

C’est une forme de Watermarking avancé. Si vous entraînez un modèle coûteux avec vos données watermarkées et qu’un concurrent vole votre dataset, vous pouvez le prouver. Il suffira de démontrer que son modèle réagit à votre déclencheur secret.

C’est aussi intéressant contre le siphonage de données, vous watermarkez vos données copyrightés.

La sécurité de l’IA ne se limite pas à protéger les serveurs, elle commence par la traçabilité de la donnée.

Auteur/Autrice

Quitter la version mobile