Décrypteur de stéganographie avec GIMP
La stéganographie est l'art de dissimuler un message, qu'il soit crypté ou non, dans un autre support, tel qu'un texte, une image, une musique ou même un paysage. Cette méthode, connue depuis l'antiquité, possède de multiples variantes adaptées au support, à la méthode ou à la technologie disponible.
Dans le cadre de ce projet, nous nous concentrerons spécifiquement sur la dissimulation d'une image au sein d'une autre, aboutissant à la création d'une troisième image. L'objectif de la stéganographie est de faire en sorte que, lorsqu'un individu non désigné découvre l'image résultante, il ne puisse ni soupçonner l'existence d'une autre image dissimulée, ni même la présence d'un contenu caché. Ainsi, l'observateur ne peut empêcher la transmission de l'image cachée et ne peut utiliser la même méthode pour transmettre de fausses informations. Cependant, la stéganographie étant une méthode connue, si l'on suspecte qu'une image contienne des informations secrètes par ce biais, il devient relativement aisé de les récupérer.

La Cryptologie et la Cryptographie Visuelle
La cryptologie, quant à elle, vise à rendre un message inintelligible à toute personne autre que le destinataire légitime. Elle englobe la cryptographie, le codage, ainsi que l'analyse cryptographique et le décodage. Bien qu'également connue depuis l'antiquité, la cryptologie n'a acquis le statut de science que dans les années 1970, devenant un thème de recherche avec l'essor de l'informatique, d'Internet et des communications.
Le but de la cryptographie visuelle est que seul l'œil humain soit capable de décoder et d'authentifier le message. Dans ce projet, pour cacher une image, nous utiliserons une méthode de cryptographie à clé secrète, permettant de chiffrer et déchiffrer à partir de la même clé.
Éléments de Programmation et Concepts d'Image
Environnement de Développement
Pour la réalisation de ce projet, nous utiliserons le langage de programmation Python, plus spécifiquement la distribution Pyzo. Cette dernière inclut des modules complémentaires, un éditeur de programme et une console qui affiche les résultats de l'exécution du code.
Types d'Images
Une image matricielle (ou bitmap) est une image numérique représentée par un tableau, ou matrice, de pixels (contraction de l'anglais "picture element", élément d'image). Certains formats de fichier gèrent une quatrième composante, nommée "alpha", qui permet de faire varier l'opacité de l'image. Les images matricielles peuvent être visualisées sur un écran d'ordinateur.
Une image vectorielle (ou image en mode trait) est une image numérique composée d'objets géométriques individuels tels que des segments de droite, des polygones, des arcs de cercle, etc. Chaque objet est défini par divers attributs de forme, de position et de couleur. L'élément de base est le chemin, mais il est possible de décrire et d'utiliser des objets comme le rectangle, l'ellipse, l'étoile ou le texte.

Utilisation de GIMP pour le Traitement d'Images
GIMP (GNU Image Manipulation Program) est un logiciel dédié au traitement des images matricielles. Il permet également de gérer certains aspects vectoriels grâce à l'outil "Chemin". Cependant, pour le dessin vectoriel pur, le logiciel Inkscape est plus approprié, offrant une meilleure gestion des assemblages entre images matricielles et vectorielles.
Dimensions et Résolution des Images
Dans le monde réel, les images peuvent être mesurées en millimètres (mm), centimètres (cm) ou pouces. Tous les logiciels de graphisme, y compris GIMP, savent manipuler ces dimensions réelles, permettant par exemple de créer une image de 10 cm × 5 cm.
Le rapport entre les dimensions réelles et le nombre de pixels définit la résolution. La résolution d'impression est généralement exprimée en DPI (Dot Per Inch) ou PPP (Points Par Pouce). Pour l'impression, les pixels affichés à l'écran sont décomposés en points d'encre pour former une trame. La norme pour l'impression est généralement de 300 Pixels Par Pouces (PPP), car au-delà de cette résolution, l'œil humain ne perçoit plus de différence de qualité.
Il est important de noter que la résolution d'une image n'a aucune influence sur le poids du fichier image final. C'est en ajustant les dimensions (donc la quantité de pixels) que l'on peut réduire ce poids. L'idée selon laquelle la résolution des images pour le Web devrait être de 72 DPI est un mythe ; cette valeur correspondait à la résolution des anciens écrans cathodiques.
Modèles Colorimétriques : RVB et CMJN
Le RVB (Rouge, Vert, Bleu) est un modèle colorimétrique additif utilisé pour tout affichage généré par la lumière, notamment sur écran. Le mélange de ces trois couleurs primaires crée l'éventail des teintes visibles à l'écran. La combinaison maximale des trois couleurs produit du blanc.
Le choix du modèle dépend de la finalité de l'image. Pour le Web ou tout autre affichage sur écran, le RVB est le modèle à privilégier. Les écrans et logiciels de graphisme ne peuvent afficher d'images en CMJN (Cyan, Magenta, Jaune, Noir) ; ils peuvent au mieux simuler le rendu d'impression. La conversion d'un modèle à l'autre n'est pas réversible et entraîne une perte d'information. Il est donc conseillé de travailler le plus longtemps possible en RVB et de passer au CMJN uniquement avant l'impression. GIMP, n'étant pas un logiciel de mise en page, n'a pas besoin de gérer le CMJN de manière native.

Formats de Fichiers Image et Leurs Spécificités
JPEG
JPEG est avant tout une norme de compression qui altère les données. Il est possible de choisir le niveau de qualité lors de l'enregistrement, mais même une qualité de 100 % entraîne une légère altération, généralement imperceptible à l'œil nu pour une photo tant que la qualité reste supérieure à 85 %.
PNG
Le format PNG a été conçu pour remplacer le format GIF, limité et soumis à des brevets. Il est efficace pour les images composées de peu de couleurs, telles que les dessins, logos, pictogrammes, schémas ou textes. PNG utilise une palette des couleurs réellement présentes dans l'image et supporte la transparence.
GIF
Le format GIF utilise également une palette de couleurs, mais limitée à 256 couleurs, contrairement à PNG. La transparence dans le format GIF est limitée à deux niveaux.
XCF
XCF est le format de travail natif de GIMP. Il permet de gérer toutes les spécificités du logiciel, telles que les calques, les chemins et la sélection active, sans aucune dégradation.
SVG
SVG (Scalable Vector Graphics) est un standard vectoriel et le format de travail d'Inkscape.
SLA
SLA est le format de travail de Scribus, un logiciel de mise en page. Un fichier SLA contient la description de la mise en page, les textes et les objets vectoriels.
Interface et Outils de GIMP
Lors du premier lancement de GIMP, l'interface est généralement décomposée en trois fenêtres principales : l'image principale, la boîte à outils et la fenêtre des fonctions (canaux, calques, chemins, etc.). Il est important de noter que fermer une fenêtre en cliquant sur sa croix ne ferme pas l'application entière, mais peut simplement masquer certains panneaux, ce que GIMP interprète comme une personnalisation de l'interface.
Menus Principaux
- Menu Fichier : Contient les fonctions classiques de création, ouverture, enregistrement, impression et fermeture. On y trouve également la fonction d'exportation.
- Menu Édition : Propose des fonctions classiques telles que annuler, rétablir, couper, copier et coller.
- Menu Affichage : Offre toutes les options d'affichage des divers éléments de travail : sélection, guides, grille, bords du calque. C'est également ici que l'on peut activer le magnétisme de ces éléments.
- Menus dédiés aux entités : Des menus spécifiques sont dédiés aux calques, aux canaux, aux chemins, etc.
- Menu Filtres : Contient tous les filtres disponibles pour le traitement de l'image.
Personnalisation et Paramètres
Les personnalisations de l'interface et les paramètres modifiés sont conservés dans le profil utilisateur de GIMP, situé dans un dossier spécifique de l'ordinateur. Pour repartir à zéro, il suffit de supprimer ce dossier. L'emplacement de ce dossier varie selon le système d'exploitation.
Dans les préférences de GIMP, sous l'onglet "Dossiers", vous trouverez les répertoires où sont rangées les brosses, les motifs et autres ressources. Pour chaque ressource, il existe généralement deux dossiers : un dossier système (à ne pas modifier) et un dossier utilisateur.

Outils de Transformation et de Manipulation
Outil de Recadrage (Ciseaux)
L'outil de recadrage permet de redimensionner une image en fixant des contraintes, telles que des proportions spécifiques (rapport largeur/hauteur). Il offre deux directions :
- Direction normale (par défaut) : La grille et le calque pivotent ensemble, utile pour faire tourner un élément sans nécessiter un alignement précis.
- Direction corrective : Seule la grille pivote. Elle est utilisée pour redresser l'horizon en alignant les lignes horizontales de la grille avec celui-ci.
Lorsque l'on pivote un calque rectangulaire, des "trous" peuvent apparaître car le canevas reste rectangulaire et droit. Pour combler ces manques, on peut utiliser l'outil tampon pour recréer de la matière.
Redimensionnement d'Image
Il est important de noter que le redimensionnement d'une image ne conserve pas toujours le ratio largeur/hauteur par défaut. La résolution (en DPI) affecte l'impression mais pas le poids du fichier. Pour réduire le poids, il faut agir sur les dimensions de l'image.
Pour le Web, il est souvent nécessaire de réduire les dimensions de l'image. Il faut d'abord réduire les dimensions via le menu "Image > Taille de l'image". Il est conseillé de privilégier la largeur, le Web étant un média défilant verticalement. Il est recommandé d'ouvrir les options avancées et de décocher l'enregistrement des données Exif, XMP et de la vignette pour alléger le fichier.
Extension "Save for Web"
L'extension "Save for Web" (Enregistrer pour le Web) ajoute un menu facilitant le travail d'optimisation des images pour le Web. Elle permet d'alléger la photo et de la redimensionner, à condition qu'aucune dimension ne dépasse 4096 px.
Techniques de Dissimulation d'Information dans GIMP
Modification des Bits de Poids Faible
Une méthode simple de stéganographie consiste à modifier le bit de poids faible de chaque pixel pour constituer le message. Cette modification est souvent imperceptible à l'œil nu.
Pour implémenter cela dans GIMP :
- Lancer GIMP et ouvrir l'image d'origine.
- Pour dissimuler un message textuel, utiliser l'outil Texte. Régler la couleur des lettres à une nuance de gris très sombre (valeur HTML proche de 000000, par exemple 101010). Choisir une police en gras et une taille appropriée.
- Activer le calque texte et s'assurer que l'option "déplacer le calque actif" est cochée dans les options de l'outil de déplacement.
- Le texte peut sembler disparaître, car il est incorporé à l'image. Chaque pixel concerné voit son niveau de couleur augmenté de manière imperceptible.
- Exporter l'image au format PNG. Ce format est préférable au JPEG car sa compression ne modifie pas l'image.

Utilisation de la Fusion de Calques
Une autre méthode consiste à fusionner des calques pour révéler le message caché. Cela peut impliquer la superposition d'une image "porteuse" d'informations secrètes sur une image originale.
Voici une approche possible :
- Ouvrir l'image originale dans GIMP.
- Importer l'image contenant le message caché en tant que nouveau calque (Calque > Ouvrir en tant que calques).
- Sélectionner le calque supérieur (celui contenant le message caché).
- Fusionner les deux calques.
- Utiliser les outils de manipulation des couleurs, notamment Couleurs > Niveaux. En ajustant les curseurs (point noir, gamma, point blanc), le message caché peut apparaître. Par exemple, en déplaçant le curseur de droite (point blanc) vers la gauche, les zones sombres du message peuvent augmenter en intensité.
- Pour révéler un message caché sous forme de nuances de gris sur fond noir, l'utilisation des niveaux est particulièrement efficace. En ajustant le curseur de droite tout à gauche, le message peut apparaître en blanc sur fond noir.
Il est important de noter qu'une résolution d'image fantastique n'est pas toujours nécessaire pour cette technique. Des images de taille modeste peuvent suffire.
Autres Techniques et Outils
Outil Correcteur
L'outil correcteur est utile pour corriger les imperfections d'une surface, comme sur un visage.
Masques de Calque
Pour affiner une sélection, il est possible de créer un masque de calque. Dans la fenêtre des calques, un clic droit sur le calque permet de l'initialiser à la sélection.
Outil Chemin
L'outil Chemin permet de détecter automatiquement un contour et d'affiner un tracé en ajoutant des nœuds. Pendant le tracé, il est possible de déplacer les nœuds précédents pour corriger d'éventuelles erreurs.
Canal Alpha
Le canal alpha gère la transparence d'un calque. Si une partie effacée d'un calque est remplacée par la couleur d'arrière-plan (souvent blanc), cela signifie que le calque ne possède pas de canal alpha.
Outil Gomme
L'outil Gomme n'est pas idéal pour effacer un élément indésirable d'une photo, car il crée un trou ou remplit avec une couleur unie. Il est préférable de recréer l'arrière-plan avec de la matière prise ailleurs dans l'image.
Outil Tampon (Cloner)
L'outil tampon (icône de tampon) est utilisé pour recréer l'arrière-plan. Il permet de définir une source de matière à peindre et propose des options d'alignement et de direction.
Outils de Manipulation des Couleurs
Le menu Couleurs regroupe divers outils pour manipuler les couleurs, tels que les Niveaux et les Courbes. Ces outils permettent d'ajuster la répartition des couleurs, la luminosité et le contraste, agissant sur les canaux rouge, vert, bleu et alpha.
GREYCstoration
GREYCstoration est un plugin pour GIMP qui permet de restaurer et d'améliorer la qualité des images, notamment en réduisant les artefacts et en lissant les zones bruitées. Il est compatible avec plusieurs systèmes d'exploitation (GNU/Linux, Windows, macOS).

Démonstration Pratique : Cacher un Message avec GIMP
Voici une méthode simple pour dissimuler un message dans une image à l'aide de GIMP :
- Préparation de l'image porteuse : Ouvrez une image dans GIMP. Il n'est pas nécessaire qu'elle ait une résolution exceptionnelle.
- Création du message caché : Utilisez l'outil Texte pour écrire votre message. Réglez la couleur du texte à une nuance très sombre, presque noire (par exemple, valeur HTML "101010" ou moins, en préférant les zones sombres de l'image). Choisissez une police en gras et une taille suffisante pour une bonne lisibilité (par exemple, 18 px, voire plus).
- Intégration du message : Assurez-vous que le calque texte est actif. Lorsque vous déplacez le texte, vérifiez que vous déplacez bien le calque texte et non l'image entière. Le texte peut sembler disparaître car il est intégré à l'image, augmentant imperceptiblement le niveau de couleur de chaque pixel concerné.
- Exportation : Exportez l'image au format PNG (Fichier > Exporter sous). Évitez le format JPEG, car sa compression altérerait le message caché.
Pour vérifier le message caché :
- Ouvrez l'image originale (celle sans le message) dans GIMP.
- Importez l'image contenant le message caché en tant que nouveau calque.
- Fusionnez les deux calques (calque du haut actif).
- Utilisez l'outil Couleurs > Niveaux. En ajustant les curseurs, le message caché devrait apparaître, souvent en gris clair sur fond noir.

Une autre approche pour dissimuler des informations consiste à modifier les pixels de manière subtile, par exemple en augmentant leur niveau de couleur de 10 points pour chaque composante RVB. Cette modification, bien qu'imperceptible visuellement, peut être détectée et révélée en utilisant les outils de manipulation des couleurs.
Stéganographie dans d'autres Médias
Bien que cet article se concentre sur les images, la stéganographie peut également être appliquée à d'autres médias :
Audio
Des logiciels comme Coagula permettent de générer des spectrogrammes à partir d'images ou de dessins. Ces spectrogrammes peuvent contenir des informations cachées. Le fichier audio résultant peut ensuite être fusionné avec un autre fichier son pour le rendre moins suspect. Des outils comme Audacity peuvent aider à visualiser et manipuler ces spectrogrammes.
spectrogramme
Texte et HTML
La stéganographie peut également s'appliquer à des textes ou des pages HTML, par exemple en modifiant subtilement des espaces, des caractères ou en utilisant des styles CSS masqués.
Conclusion sur la Stéganographie et GIMP
La stéganographie offre un moyen fascinant de dissimuler des informations au sein de supports apparemment anodins. GIMP, avec sa richesse d'outils et sa flexibilité, constitue une plateforme puissante pour expérimenter et mettre en œuvre diverses techniques stéganographiques, notamment la modification des bits de poids faible et la fusion de calques pour révéler des messages cachés. La compréhension des formats d'image, des modèles colorimétriques et des outils de manipulation des couleurs est essentielle pour maîtriser ces techniques.
tags: #decrypter #steganographie #gimp
