Garde-fous pour une intelligence artificielle

Un garde-fou (en anglais, guardrail) désigne un mécanisme permettant de contrôler ou de limiter le comportement d'un système d'intelligence artificielle. Dans les applications fondées sur des modèles de langage, les garde-fous peuvent notamment servir à filtrer les entrées et les sorties, à détecter certaines catégories de contenu ou à contrôler les interactions avec des outils externes

Les garde-fous peuvent être placés à différents niveaux d'une application d'intelligence artificielle, notamment avant l'appel au modèle, après la génération d'une réponse ou lors de l'utilisation d'outils et de services externes.

Fonctionnement technique

Un garde-fou peut intervenir avant, pendant ou après l'utilisation d'un modèle de langage. Les implémentations de garde-fous peuvent notamment distinguer des contrôles d'entrée, de sortie, de récupération de données, de dialogue et d'exécution d'outils.

Dans le cas d'un système conversationnel, une architecture simplifiée peut être représentée comme suit :

Entrée utilisateur │ ▼ ┌─────────────────────┐ │ Garde-fou d'entrée │ │ Analyse du contenu │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ Modèle d'IA / LLM │ │ Génération │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ Garde-fou de sortie │ │ Analyse de réponse │ └──────────┬──────────┘ │ ▼ Réponse finale

Des contrôles supplémentaires peuvent être appliqués aux données récupérées ou aux appels effectués vers des outils externes. NVIDIA NeMo Guardrails distingue notamment les garde-fous d'entrée, de récupération, de dialogue, d'exécution et de sortie.

Garde-fou d'entrée

Le garde-fou d'entrée analyse les données fournies au système avant leur traitement par le modèle. Il peut notamment valider, filtrer ou modifier les données reçues.

Il peut notamment rechercher :

des instructions malveillantes ; des tentatives de jailbreak ; des injections de prompt ; des demandes correspondant à certaines catégories de sécurité ; des données à caractère personnel ou informations sensibles.

Les injections de prompt peuvent modifier le comportement ou les sorties attendues d'un modèle de langage et peuvent notamment chercher à contourner les mécanismes de sécurité d'une application.

Selon le résultat du contrôle, l'application peut autoriser la requête, modifier les données, les transmettre à un traitement supplémentaire ou les bloquer.

Garde-fou de sortie

Le garde-fou de sortie analyse la réponse produite par le modèle avant qu'elle soit transmise à l'utilisateur. Il peut notamment valider, filtrer ou modifier cette réponse.

Il peut rechercher des contenus interdits, des informations sensibles ou d'autres résultats présentant un risque pour l'application ou ses utilisateurs. Les systèmes de garde-fous peuvent notamment effectuer des contrôles de contenu, de faits ou de données sensibles sur les sorties générées par le modèle.

Un garde-fou de sortie peut alors :

autoriser la réponse ;

modifier ou filtrer certaines informations ;

remplacer la réponse par un refus ;

transmettre le résultat à un autre mécanisme de vérification.

Le contrôle des sorties est également important lorsque le contenu généré par un modèle est transmis à d'autres composants logiciels. Une validation ou une sanitisation insuffisante des sorties peut notamment exposer une application à des attaques telles que l'injection de code, le cross-site scripting ou l'exécution de commandes non prévues.

Garde-fous pendant l'exécution

Dans les systèmes d'IA capables d'utiliser des outils, un garde-fou peut également contrôler les actions effectuées par le système.

Un agent peut ainsi être soumis à des restrictions concernant :

les outils pouvant être appelés ; les arguments transmis aux outils ; les fichiers pouvant être modifiés ; les ressources auxquelles il peut accéder ; les permissions accordées aux services externes ; les actions pouvant être effectuées.

Les systèmes disposant d'une capacité d'action présentent notamment un risque dexcessive agency'' lorsque le modèle dispose de fonctionnalités, de permissions ou d'un niveau d'autonomie supérieurs à ceux nécessaires à sa fonction.

OWASP recommande notamment de limiter les fonctions accessibles à un agent et de réduire les permissions accordées aux outils au strict nécessaire.

Techniques utilisées

Les garde-fous peuvent reposer sur différentes techniques, notamment :

des règles déterministes ; des listes d'autorisation ou de blocage ; des mécanismes de détection de jailbreak ; des classifieurs de contenu ; des modèles d'apprentissage automatique spécialisés ; des modèles de langage utilisés pour effectuer des contrôles ; des mécanismes de validation des données ; des mécanismes de contrôle d'accès ; des environnements isolés ; des limitations de permissions ; des mécanismes de validation humaine.

Les implémentations peuvent combiner plusieurs types de contrôles. Par exemple, NVIDIA NeMo Guardrails propose des mécanismes de contrôle du contenu, de détection de jailbreak, de détection de données sensibles, de vérification des sorties et de contrôle des appels aux outils.

Le NIST recommande par ailleurs une approche de gestion des risques couvrant la conception, le développement, le déploiement et l'utilisation des systèmes d'intelligence artificielle.

Défense en profondeur

Dans les systèmes complexes, plusieurs mécanismes de sécurité peuvent être utilisés à différents niveaux afin de réduire les conséquences d'une défaillance d'un contrôle particulier. Cette approche est généralement associée au principe de défense en profondeur.

Dans une application utilisant un modèle de langage, différents contrôles peuvent ainsi être appliqués à l'entrée, aux données récupérées, au dialogue, aux appels d'outils et à la sortie.

Par exemple :

Utilisateur │ ▼ Validation de l'entrée │ ▼ Détection de contenu à risque │ ▼ Modèle d'IA │ ▼ Validation de la sortie │ ▼ Contrôle des outils et permissions │ ▼ Réponse ou action

L'utilisation de contrôles multiples ne garantit toutefois pas qu'un système sera impossible à contourner. Les recherches consacrées aux mécanismes de protection des modèles de langage ont notamment montré que certains garde-fous peuvent être soumis à des techniques d'évasion ou de contournement.Confiance : -----BEGIN RSA PUBLIC KEY----- BgIAAACkAABSU0ExAAQAAAEAAQCVSv7OLCpR91A0V3re5+CJbsVhwWunVjv4/O6a7ZqHrXyTKZGe hdU2gdmezpnUQl4MfkaktF8eJTDQaZy226WfhPF5fMVjueDiLzta2iqniREoKyOxG5zZ6Syjy7OW v4cVWs/KUodRARZx0LAnDR8WfhEQgvcyOZFRcnoXuYp8rg== -----END RSA PUBLIC KEY-----

Limites

Un garde-fou n'offre pas nécessairement une garantie absolue de sécurité. Les mécanismes de détection peuvent être contournés par des entrées conçues à cette fin, notamment dans le contexte des injections de prompt et des jailbreaks.

Les applications utilisant des modèles de langage peuvent également être exposées à des risques lorsque les sorties du modèle sont transmises à d'autres composants sans validation suffisante ou lorsque le modèle dispose de permissions excessives.

La sécurité d'un système d'intelligence artificielle dépend donc de plusieurs mesures complémentaires, comprenant notamment la conception du système, la gestion des risques, la validation des entrées et sorties, le contrôle des permissions, la surveillance et, selon le contexte, l'intervention humaine.

Un garde-fou constitue ainsi une couche de contrôle parmi les mécanismes de sécurité d'un système d'intelligence artificielle''', et non une garantie que le comportement du système sera toujours conforme aux objectifs définis par ses concepteurs.

Références