Outils pour utilisateurs

Outils du site


les_exposes:image_steganographie

Ceci est une ancienne révision du document !


/!\ Je n'ai pas fini d'écrire cet article, et je n'ai pas non plus fini de le relire, donc veuillez passer vôtre chemin, et revenir plus tard ;)

I Qu'est-ce que la stéganographie ?

La stéganographie est une technique permettant de cacher des informations (par exemple, des textes confidentiels) dans des fichiers, ou des images, à première vue anodines.

D'un point de vue historique, la stéganographie existe depuis l'antiquité, par exemple sous la forme de messages tatoués sur le crâne d'un esclave rasé, et envoyé comme messager après la repousse de ses cheveux. Mais depuis l'aire du numérique, il est plus simple et beaucoup plus rapide de transmettre des informations, qui peuvent aussi être facilement interceptées.

Le codage (par exemple, la machine Enigma, utilisée pendant la Seconde Guerre Mondiale), est une solution possible pour éviter que notre message confidentiel ne soit lu (ou du moins compris) par quelqu'un, même s'il est intercepté. Mais tout code à sa clé de décryptage, ce qui fait que le codage n'est pas un moyen sûr et durable pour transporter des informations : un code est inutilisable dès l'instant que quelqu'un d'autre que l’émetteur et le récepteur du message sait comment le décrypter.

La stéganographie, par ailleurs, est une seconde technique pour éviter que nos messages soient interceptés : Au lieu de coder notre message confidentiel, nous le faisons passer pour un message totalement anodin. Par exemple, un dessin envoyé par mail d'une petite fille à son papa, dans un pays en guerre, n'intéresserait pas le camp ennemi, qui aurait intercepté le mail, alors que ce dessin peut en fait être un plan de bataille envoyé par l'état-major.

C'est pourquoi, la stéganographie est un bon moyen de transporter des données.

II Qu'est-ce que le format BMP ?

Comme vous pouvez (ou pourrez bientôt) le voir sur la page de Clément, une image BMP est codée en plusieurs parties, composées de bits. Les informations concernant l'image sont écrites dans la deuxième partie du fichier. C'est cette partie qui nous intéressera pour cacher notre message. Chaque pixel de l'image est codé sur un certain nombre de bits (suivant l'encodage du fichier BMP : 8 bits pour une image en niveaux de gris, 16 pour une image en 65536 couleurs, et 24 pour une image en 16 millions de couleurs), ayant chacun un poids.

On lit chaque octet de gauche à droite.

Si on modifie le bit n°0, on fait changer la valeur de l'octet de 128 valeurs, de même, si on change le bit n°7, on ne change la valeur de l'octet que de 1.

Dans tous les exemples que je vais faire, je vais utiliser des images BMP en 24 bits, donc chaque pixel sera codé sur 3 octets : un pour le Rouge, un pour le Vert, et un pour le Bleu, c'est le code RVB (RGB en anglais). Par exemple, un pixel ayant la valeur hexadécimale ff0000 est un pixel rouge, car traduit en binaire, il donne :

De même, un pixel blanc aurait pour valeur ffffff.

III Comment ça fonctionne ?

1. Comment cacher notre message ?

La technique est très simple : il suffit d'avoir deux images : une image de départ, qui aura l'apparence anodine, et nôtre image à cacher, qui contiendra nôtre message.

Il suffira de copier tous les bits de poids fort (bits n°0) de notre image à cacher, et de les mettre à la place des bits de poids faible de l'image de départ. On altérera ainsi très peu la valeur de chaque pixel, et donc on ne pourra pas remarquer un changement dans l'image de départ. La preuve :

Vous ne voyez rien ? Pourtant j'ai caché un message dans cette image. La couleur de fond est, en hexadécimal, 000000 (soit, du noir), et le message est écrit en 010000.

Le texte a donc une très fine teinte de gris, mais on ne la voit même pas à l’œil nu ! L'image est donc constituée intégralement de pixels ayant la valeur binaire « 00000000 00000000 00000000 », sauf aux endroits où il y a du texte, où ils ont la valeur « 00000001 00000000 00000000 ».

Juste pour vous, voici l'image avec un fond blanc (valeur hexadécimale : ffffff) C'est plus clair non ?

Remarque : Le principal défaut de la stéganographie est qu'elle altère la qualité des deux images : il n'est plus possible, après le codage, de récupérer les images d'origines dans leur meilleure qualité.

2. Comment récupérer notre message ?

Rien de compliqué là dedans : il suffit de prendre tous les bits de poids faible de l'image que vous avez reçu, et de les mettre en tant que bits de poids fort d'une nouvelle image. On « remplira » ensuite les bits de poids plus faible avec des 0 ou des 1, afin de compléter nos octets, et le tour est joué !

les_exposes/image_steganographie.1426701826.txt.gz · Dernière modification: 18/03/2015 19:03 par cravic