Qu'estce que la stéganographie ?


Stéganographie vient du Grec "steganos" (dissimulé), et "graphy" (écriture) et signifie donc "écriture dissimulée".
La stéganographie consiste à camoufler un message dans un conteneur de manière à masquer sa présence. Cette méthode repose sur le fait que le message ne soit pas trouvé.


Dissimulation d'information dans une image :


Avant tout il faut savoir que nous allons travailler sur des images qui ne sont pas compressées. Si l'on compresse notre image dans un format destructif comme le JPEG, l'information dissimulée va être altérée. Si on effectue une opération de compression/décompression à toutes les images qui résultent de notre procédé, on détruit notre message.
On va donc utiliser une image Windows Bitmap codé en 24 bits.
Pour comprendre comment il est possible de cacher des informations dans une image il faut tout d’abord comprendre la structure de cette dernière.

Un petit rappel s’impose :

Un pixel est continué de 3 octets : un octet pour la composante rouge, un octet pour la composante verte et un octet pour la composante bleue. C'est pour cela que l'on parle de RVB (Rouge Vert Bleu). A partir de ces trois octets, on peut donc avoir 256*256*256 = 16777216 couleurs différentes, ce qui est largement plus que ne peut distinguer l'œil humain.
L'image quand a elle n'est ni plus ni moins que le stockage dans un fichier de tous les pixels RVB composant l'image finale.

Procédure :

L'idée est de modifier les bits de poids faible des pixels par un bout de lettre (c’est La Méthode LSB Least Significant Beat). Ainsi, on ne change que très peu l'image finale (l'œil humain est incapable de voir une différence de 4 sur une teinte de 256 tons).
Par la suite on associe à chaque lettre une valeur, d'après la table ASCII qui est utilisé pour coder les caractères. Il permet d’associe à chaque nombre de 0 à 127 un « caractère ». (en ASCII, un caractère = un octet).
Avec la stéganographie, c'est chaque pixel qui cache une partie de l'image dissimulée dans celle qui est visible à l’œil nu.
Ainsi pour cacher l'information dans l'image il suffit d'utiliser un bit à chaque octet RVB qui compose chaque pixel de l'image. En effet, en retirant 1 bit, on dégrade l'image, mais ce n'est pas visible à l'œil nu...
De ce fait, on peut récupérer ce bit à chaque fois et l'utiliser pour stocker les données que l'on souhaite.