Stéganographie

Stganographie

La stganographie comme l'indique Wikipedia, c'est l'art de la dissimulation. Il s'agit de cacher un objet dans un autre.

Dans le cas qui nous interesse, il s'agira de cacher un texte dans une image.
Pour cela, nous allons avoir besion d'une image de reference. Elle sera la cl. Il faut que l'image de rfrence se trouve aussi bien du cot du crypteur que du dcrypteur.
Et une seconde image (qui contiendra le texte cach) devra tre transfrer du crypteur au dcrytpeur.
Le decrypteur n'aura plus qu'a faire la difference entre les deux images (image de reference et image avec le texte cach) pour retrouver le message.

Pour ce faire, nous allons utiliser des images de type RGB cod en 24 bits ! 8 premiers bits pour le rouge (Red), les 8 suivant pous le Vert (Green) et enfin les 8 derniers bits pour le bleu (Blue).

Il nous faut aussi un format d'image qui ne se pas destructif car cela alterera le message (comme le JPEG par exemple).

L'algorythme est relativement simple, on dcompose chaque octet du texte cacher : les trois premiers bits qu'on addition la premire composante de couleur, le quatrime et le cinquime bits avec la deuxime et les trois derniers pour la dernire composante. Il suffit pour dcrypter d'avoir l'image de rfrence et l'image contenant les donnes, une simple diffrence entre les deux images et les donnes rapparaissent. On ne voit pas (qualit visuelle) de diffrence entre les deux images, seules les deux parties (metteur et rcepteur) savent qu'il existe une diffrence (et donc un message). Le principal problme est la taille de l'image de rfrence qui doit tre plus important : au minimum plus de trois fois la taille du message cacher par rapport au fichier re reference.On peut considrer, aussi, que si les donnes transporter sont du texte, l'usage d'un dictionnaire de rfrence (rduire les 256 valeurs 32) serait prjudiciable (A=1, B=2... et Z=26). Bien sur, rien n'empche de crypter les donnes avant de les cacher dans l'image via un algorithme (XOR, MD5... ou le votre). Voila un exemple de "codage"
valeur RGB de l'image de reference Rf=25, Bf=180, Df=56
octet a cach = 45 soit 0x00101101 : Rc=0x001=1, Gc=0x01=1, Bc=0x101=5. la valeur de l'image code devient Re=Rf+Rc, Ge=Gf+Gc, Be=Bf+Bc. Le problme de la valeur '0' coder devient Rc=0x111, Gc=0x111, Bc=0x111.
Il est evidement que l'on doit ajouter un dcalage dans les bits cacher suivant un seuil, ce qui prend plus de place dans l'image. Si l'octet de reference est dj la valeur 0xFF (255), cela devient difficile d'ajouter la valeur des bits cacher. On peut tout aussi bien faire une soustraction la place de l'addition (le decodage se fera sur la valeur absolue de la difference entre l'octet de reference et l'octet cach).Le choix d'une image de rfrence compltement noire (RGB 0x000000) n'est pas une bonne ide ! Idem pour une image complement blanche ou uni de faon gnral, il faut clairement une image de rfrence bruite, riche en variation.

Sources

download.png HIDE Version 1.0