# Fuite de secrets dans des prompts et journaux ## Objectif `detecteur-fuite-secrets-ia` scanne un dossier de fichiers texte, logs et configuration pour détecter des secrets qui s'y retrouveraient accidentellement. Le scénario visé est spécifiquement celui d'un agent IA : un secret collé par erreur dans un prompt, renvoyé dans une réponse de modèle, ou tracé dans un journal applicatif lié à un agent. ## Deux familles de détecteurs Formats connus : préfixes et longueurs documentés publiquement — clé d'accès de type AWS, jeton GitHub, clé de style OpenAI, jeton Slack, en-tête de clé privée PEM, jeton Bearer générique. Entropie de Shannon : sur toute ligne d'affectation dont le nom de variable évoque un secret (contient un mot-clé comme clé, secret, jeton, mot de passe, identifiant), l'outil calcule l'entropie de la valeur assignée. Une chaîne aléatoire — une vraie clé — a une entropie nettement plus élevée qu'un mot, une phrase, ou un texte de substitution — même principe que les outils reconnus du domaine, implémenté ici en bibliothèque standard pure, sans dépendance externe. > INFO : complète les deux autres outils du même projet — un secret qui fuite dans un prompt ou une réponse de modèle est un vecteur distinct : ni une instruction cachée reçue par l'agent, ni une action dangereuse déclenchée par lui, mais une donnée sensible qui transite là où elle ne devrait pas. ## Deux vrais bugs évités par une conception prudente dès le départ Après les deux bugs réels trouvés par test manuel sur les deux autres outils de ce projet, ce troisième outil a été écrit avec le même piège en tête dès la conception. - Aucun motif source basé sur un nom de variable nu : chaque format connu est ancré sur un préfixe structurel précis, jamais sur un nom qui pourrait réapparaître ailleurs sans rapport. - Exclusion explicite des textes de substitution (valeurs de type "à-remplacer", références à une variable d'environnement) avant le calcul d'entropie, pour ne pas confondre une référence légitime avec un secret en dur. > ASTUCE : résultat, les tests passent dès la première exécution — contre une correction nécessaire sur chacun des deux autres outils du projet. Documenter les pièges déjà rencontrés au moment de concevoir l'outil suivant, plutôt qu'après coup, évite réellement de les reproduire. ## Limites connues Le seuil d'entropie est un réglage heuristique, pas une preuve statistique formelle — un secret court ou peu aléatoire peut échapper à la détection, à l'inverse un identifiant technique aléatoire non secret peut déclencher un signalement si son nom de variable évoque un mot-clé secret par coïncidence. La présence d'un mot-clé de nom de variable est nécessaire au déclenchement de l'entropie : un secret assigné à une variable au nom totalement neutre échappe à ce détecteur précis, mais serait probablement capturé par les formats connus s'il correspond à un préfixe documenté. La table de formats connus est volontairement finie, pas une base de signatures exhaustive. Cet outil ne remplace pas une rotation de secrets déjà exposés ni un audit de sécurité complet.