Détecteur de clés API et de secrets

Avant de coller des journaux, du code ou un fichier .env dans ChatGPT, vérifiez-les : les clés comme sk-proj-… (OpenAI), AKIA… (AWS), ghp_… (GitHub), AIza… (Google), xoxb-… (Slack), sk_live_… (Stripe), les JWT, les clés privées PEM et les valeurs DB_PASSWORD=… sont surlignées et remplacées par [REDACTED_…]. Les chaînes aléatoires de 24 caractères ou plus avec au moins 4,0 bits d’entropie de Shannon par caractère sont aussi signalées. Rien ne quitte votre navigateur.

Le texte reste dans cet onglet. Il n’est ni envoyé, ni enregistré, ni ajouté à l’adresse. La recherche par motifs peut manquer des mots de passe courts et des clés sans forme connue, et les marques bleues peuvent être sans danger. Relisez le résultat avant de l’envoyer.

Avez-vous trouvé votre réponse ?
Source préférée sur Google

Mode d’emploi

  1. Collez le journal, le code, le fichier de configuration ou le prompt que vous alliez envoyer à un chat IA. L’analyse démarre pendant la saisie.
  2. Regardez les passages surlignés et la liste avec les numéros de ligne. En rouge, les formats de clé connus ; en bleu, les chaînes aléatoires qui peuvent être des secrets.
  3. Copiez le texte masqué. Cochez « Garder les 4 premiers caractères » pour qu’on voie de quelle clé il s’agissait, par exemple ghp_****.

Méthode de calcul

Les clés des fournisseurs connus sont reconnues à leur préfixe et à leur longueur fixes : OpenAI sk- et sk-proj-, Anthropic sk-ant-, clés d’accès AWS (AKIA ou ASIA suivi de 16 majuscules ou chiffres), GitHub ghp_, gho_ et github_pat_, Google AIza suivi de 35 caractères, Slack xoxb- et xoxp-, Stripe sk_live_, pk_live_ et rk_, les JWT (trois parties base64url commençant par eyJ) et les blocs -----BEGIN … PRIVATE KEY-----.

Les valeurs sont aussi repérées par leur nom. Dans les fichiers .env et de configuration, toute valeur affectée à un nom contenant SECRET, TOKEN, PASSWORD, API_KEY, ACCESS_KEY ou PRIVATE_KEY est masquée, de même que la clé secrète AWS (40 caractères après aws_secret_access_key) et le mot de passe des chaînes de connexion comme postgres://user:motdepasse@host. Les valeurs factices comme changeme, <your-key>, ${VAR} et **** sont ignorées.

Les chaînes sans forme connue sont notées avec l’entropie de Shannon : H = -Σ p(c) log2 p(c). Un jeton de 24 caractères ou plus qui mélange majuscules, minuscules et chiffres et atteint au moins 4,0 bits par caractère est signalé. Une clé aléatoire de 32 caractères se situe d’habitude entre 4,5 et 5. Les chaînes purement hexadécimales, comme les hash de commit et les UUID, sont ignorées.

Quand deux règles touchent le même passage, la plus précise l’emporte : la clé dans OPENAI_API_KEY=… est étiquetée OpenAI, pas secret .env générique. Tout se passe sur cette page. Le texte n’est ni envoyé, ni enregistré, ni écrit dans l’adresse.

Formats reconnus

FournisseurForme
OpenAIsk-… , sk-proj-…
Anthropicsk-ant-…
AWSAKIA… (20 caractères) + secret de 40 caractères
GitHubghp_… , github_pat_…
Google APIAIza… (39 caractères)
Slackxoxb-… , xoxp-… , hooks.slack.com URL
Stripesk_live_… , pk_live_… , rk_…
JWTeyJ….eyJ….…
Clé privée-----BEGIN … PRIVATE KEY-----
Chaîne de connexionscheme://user:password@host
Valeur .envNOM_AVEC_SECRET/TOKEN/PASSWORD=…

Questions fréquentes

Mon texte est-il envoyé quelque part ?

Non. L’analyse et le masquage se font dans votre navigateur. Le texte n’est pas envoyé, pas stocké dans le stockage local et pas ajouté à l’URL, il n’y a donc rien à partager par erreur. Quitter la page vide le champ.

J’ai déjà collé une clé dans ChatGPT. Que faire ?

Remplacez-la. Révoquez la clé dans le tableau de bord du fournisseur et créez-en une nouvelle, même si vous avez supprimé la conversation. Selon vos réglages, les conversations peuvent être conservées pour la lutte contre les abus ou servir à l’entraînement, et une clé exposée une fois doit être considérée comme compromise.

Pourquoi une chaîne banale est-elle signalée ?

Le contrôle d’entropie signale les longues chaînes d’allure aléatoire, et certaines valeurs inoffensives y ressemblent : identifiants de build, images en base64, URL signées. Les marques bleues sont des suppositions. Décochez « Signaler les chaînes aléatoires » pour ne voir que les formats connus et les valeurs nommées.

Que peut-il manquer ?

Les mots de passe courts ou inventés écrits dans une phrase, les secrets sans nom et peu aléatoires, les clés de fournisseurs sans préfixe fixe et les valeurs coupées sur plusieurs lignes. Relisez le résultat avant de l’envoyer. L’analyse réduit le risque, elle ne prouve pas que le texte est propre.

Les clés d’exemple sont-elles vraies ?

Non. L’exemple utilise les clés de démonstration de la documentation AWS, le jeton d’exemple public de jwt.io et des chaînes inventées. Elles ont la bonne forme mais n’ouvrent rien.