Sécurité

Cacher du texte secret dans une image (stéganographie)

6 min de lecture

La stéganographie est l’art de cacher un message à l’intérieur d’un autre fichier, de façon à ce que personne ne soupçonne qu’il y a quelque chose à trouver. Ce guide montre comment glisser du texte secret dans une image ordinaire, puis le récupérer, gratuitement et entièrement dans votre navigateur. Aucun fichier n’est envoyé nulle part.

Comment ça marche

Une image numérique est une grille de pixels, et chaque pixel possède trois valeurs de couleur : rouge, vert et bleu, chacune allant de 0 à 255. Ces 256 niveaux tiennent sur 8 bits. L’astuce de la stéganographie LSB (pour Least Significant Bit, le bit de poids faible) consiste à ne toucher qu’au tout dernier bit de chaque valeur.

Prenons une composante rouge de 200, qui s’écrit 11001000 en binaire. Passer son dernier bit de 0 à 1 donne 201, soit 11001001. La couleur change d’un niveau sur 256 : l’œil humain n’y voit strictement rien. On dispose donc, dans chaque pixel, d’un petit espace de rangement invisible.

Pour cacher un message, on le convertit en octets, puis on écrit ces bits un par un dans les derniers bits des pixels. Exemple concret : la lettre « H » vaut 72, soit 01001000 en binaire. Chacun de ces 8 bits part se loger dans le bit de poids faible d’un canal de pixel successif. Le décodeur relit ces derniers bits dans le même ordre, reconstitue les octets, et retrouve votre texte.

Combien peut-on cacher

La capacité dépend du nombre de pixels et du nombre de canaux utilisés. Comme on range 1 bit par canal et par pixel, il faut 8 canaux pour un octet. Voici quelques ordres de grandeur (approximatifs) :

DimensionsCanal rouge seulRVB (3 canaux)
100 x 100 px≈ 1,2 Ko≈ 3,6 Ko
1280 x 720 px≈ 115 Ko≈ 345 Ko
1920 x 1080 px≈ 259 Ko≈ 778 Ko

Utiliser le rouge, le vert et le bleu ensemble triple naturellement la capacité, puisqu’on écrit trois fois plus de bits par pixel. Notre encodeur vous laisse choisir : Rouge (par défaut, le plus discret), RVB (environ 3x la place) ou RVBA, qui ajoute aussi le canal de transparence pour environ 4x. Pour un simple message de quelques lignes, même une petite image et le canal rouge seul suffisent largement.

Cacher un message

Chargez une image, tapez votre texte, choisissez éventuellement un canal plus large, puis encodez et téléchargez le résultat.

Encodeur de Stéganographie
Gratuit, sans inscription, sur tous les appareils.
Ouvrir l'outil complet

Le déroulé est le suivant :

  1. Chargez une image (une photo ordinaire fait très bien l’affaire).
  2. Tapez le message que vous voulez dissimuler.
  3. Si le texte est long, sélectionnez RVB (ou RVBA) pour disposer de plus de place.
  4. Définissez éventuellement un mot de passe pour chiffrer le message.
  5. Cliquez sur Encoder, puis téléchargez l’image.

La sortie est toujours un fichier PNG, et ce n’est pas un détail. Le PNG est un format sans perte : il conserve chaque pixel exactement tel quel, donc vos bits cachés restent intacts. Le JPEG, lui, est un format avec perte : il recompresse et réorganise l’information des pixels pour gagner de la place, ce qui détruirait immédiatement le message. Ne réexportez donc jamais votre image en JPEG.

Révéler un message

Pour lire un message caché, il suffit de déposer le PNG dans le décodeur.

Déposez le fichier PNG et le texte caché apparaît. S’il était protégé par un mot de passe, saisissez-le pour le déchiffrer. Bon à savoir : le décodeur ne se limite pas au format produit par notre encodeur. Il détecte automatiquement de nombreuses variantes de stéganographie LSB (canaux rouge, RVB, RVBA, mais aussi vert ou bleu seuls, préfixe de longueur ou terminaison par octet nul, ordre des bits MSB ou LSB). La validation reste stricte, de sorte qu’une photo ordinaire sans message renvoie un résultat vide plutôt qu’une bouillie de caractères.

Ajouter un mot de passe (chiffrement)

Quand vous définissez un mot de passe, l’encodeur ne se contente pas de cacher le texte : il le chiffre d’abord en AES-256-GCM, avec une clé dérivée de votre mot de passe via PBKDF2. Concrètement, avant même d’être glissé dans les pixels, votre message est transformé en données illisibles. Sans le mot de passe, ces derniers bits ressemblent à du bruit aléatoire et ne révèlent absolument rien. Et un mauvais mot de passe ne révèle rien non plus : le tag d’authentification de GCM rejette tout déchiffrement incorrect, il n’y a donc pas de version « à moitié lisible ».

C’est la combinaison des deux idées qui est puissante. La stéganographie cache le fait même qu’un message existe. Le chiffrement le rend illisible même si quelqu’un finit par le trouver. Séparément, chacune a ses limites ; ensemble, elles forment une protection bien plus solide.

Limites et erreurs courantes

Soyons honnêtes sur ce qui casse un message caché :

  • PNG uniquement. La technique repose sur un format sans perte. Un PNG conserve les bits ; un JPEG les détruit.
  • Ne pas recompresser. Réenregistrer l’image en JPEG, faire une capture d’écran ou la passer dans un éditeur qui la réexporte efface la charge utile.
  • Attention aux messageries et réseaux sociaux. Beaucoup d’applications recompressent automatiquement les images à l’envoi, ce qui détruit le message sans prévenir. Partagez toujours le PNG en tant que fichier joint (par exemple via un service de fichiers), et non par un canal qui recompresse les photos.
  • C’est de la stéganographie LSB. Le décodeur lit les méthodes fondées sur le bit de poids faible. Ce n’est pas un détecteur universel pour toutes les techniques existantes : il ne lira pas, par exemple, un message caché dans le domaine DCT d’un JPEG.

Questions fréquentes

Est-ce privé ? Oui. Tout tourne localement dans votre navigateur grâce à l’API Canvas. Votre image et votre message ne quittent jamais votre appareil, rien n’est téléversé ni stocké sur un serveur.

Puis-je utiliser n’importe quelle image ? Presque. Vous pouvez charger n’importe quelle image en entrée, mais le résultat sera toujours enregistré en PNG pour préserver les bits cachés. Prévoyez simplement une image assez grande pour votre texte : reportez-vous au tableau de capacité plus haut.

L’image encodée aura-t-elle l’air différente ? Non, pas à l’œil nu. On ne modifie que le dernier bit de chaque canal choisi, soit une variation d’un niveau sur 256 par couleur. La différence est invisible pour un observateur humain.

Quelqu’un peut-il la lire sans le mot de passe ? Si vous avez chiffré le message, non. Le contenu est protégé en AES-256-GCM, et sans le bon mot de passe les données ressemblent à du bruit aléatoire. Sans mot de passe, en revanche, n’importe quel outil de stéganographie LSB peut potentiellement retrouver le texte : le chiffrement est ce qui garantit la confidentialité.

Prêt à essayer ? Cachez votre message avec l’Encodeur de Stéganographie et récupérez-le avec le Décodeur de Stéganographie.

StéganographieConfidentialitéImagesChiffrement
Encodeur de Stéganographie
Essayez-le maintenant avec l'outil complet.
Essayer maintenant
Outils associés