Outils pour utilisateurs

Outils du site


les_exposes:image_steganographie

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
les_exposes:image_steganographie [01/04/2015 18:44]
cravic
les_exposes:image_steganographie [22/04/2015 10:15] (Version actuelle)
cravic
Ligne 1: Ligne 1:
 ====== I Qu'​est-ce que la stéganographie ?​ ====== ====== 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.+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.+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 ​que ses cheveux ​aient repoussés. 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. 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.
Ligne 9: Ligne 9:
 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. 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.+C'est pourquoi, la stéganographie est un bon moyen de **transporter des données ​confidentielles**.
  
 ====== II Qu'​est-ce que le format BMP ? ====== ====== II Qu'​est-ce que le format BMP ? ======
  
-Comme vous pouvez ​(ou pourrez bientôt) ​le voir sur [[les_exposes:​image_format_de_codage_bmp_gif_jpg_vectoriel|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.+Comme vous pouvez le voir sur [[les_exposes:​image_format_de_codage_bmp_gif_jpg_vectoriel|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. 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.+**On lit chaque octet de gauche à droite**.
  
 {{ :​les_exposes:​cravic-tab1.png?​800 |}} {{ :​les_exposes:​cravic-tab1.png?​800 |}}
  
-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.+Si on modifie le bit n°0, on fait changer la valeur de l'​octet de 127 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 Rougeun pour le Vert, et un pour le Bleu, c'​est ​le code RVB (RGB en anglais)+Dans tous les exemples que je vais faire, je vais utiliser des images BMP en **24 bits**, donc chaque pixel sera codé sur **octets en BVR** (Bleu, Vert, Rouge), c'​est ​l'​inverse du RVB, que vous connaissez déjà tous
-Par exemple, un pixel ayant la valeur hexadécimale ​ff0000 ​est un pixel rouge, car traduit en binaire, il donne :+Par exemple, un pixel ayant la valeur hexadécimale ​0000ff ​est un pixel rouge, car traduit en binaire, il donne :
  
 {{ :​les_exposes:​cravic-tab2.png?​800 |}} {{ :​les_exposes:​cravic-tab2.png?​800 |}}
Ligne 35: Ligne 35:
  
  
-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.+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.+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 : La preuve :
  
Ligne 43: Ligne 43:
  
 Vous ne voyez rien ? Pourtant j'ai caché un message dans cette image. 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.+La couleur de fond est, en hexadécimal,​ 000000 (soit, du noir), et le message est écrit en 000001.
  
 {{ :​les_exposes:​cravic-tab3.png?​800 |}} {{ :​les_exposes:​cravic-tab3.png?​800 |}}
  
 Le texte a donc une très fine teinte de gris, mais on ne la voit même pas à l’œil nu ! 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 ».+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 ​« 00000000 ​00000000 ​00000001 ».
  
 Juste pour vous, voici l'​image avec un fond blanc (valeur hexadécimale :​ ffffff) Juste pour vous, voici l'​image avec un fond blanc (valeur hexadécimale :​ ffffff)
Ligne 55: Ligne 55:
  
  
-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é.+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é.
  
  
Ligne 61: Ligne 61:
  
  
-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 afin de compléter nos octets, et le tour est joué !+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 afin de compléter nos octets, et le tour est joué !
  
 __exemple :__ __exemple :__
  
-La grille ci dessous représente chaque pixel d'une image de 8 pixels par 8 pixels. Pour un soucis de lisibilité,​ je n'ai pas affiché tous les bits de chaque octet, mais seulement les 2 premiers et les deux derniers.+La grille ci dessous représente chaque pixel d'une image de 8 pixels par 8 pixels. Pour un soucis de lisibilité,​ je n'ai pas affiché tous les bits de chaque octet, mais seulement les 2 premiers et les deux derniers ​de ceux-ci.
  
 {{ :​les_exposes:​cravic-exemple-grille-codee-wikisn.png |}} {{ :​les_exposes:​cravic-exemple-grille-codee-wikisn.png |}}
  
-On remarque que le dernier bit de chaque octet correspondant au bleu est à 1, soit une teinte très faible de bleu (1/256 de teinte bleue).+On remarque que le dernier bit de chaque octet correspondant au bleu a pour valeur ​1, soit une teinte très faible de bleu (**1/128** de teinte bleue).
 //note : j'ai accentué la teinte du bleu afin que vous puissiez distinguer facilement les pixels, mais en réalité, vous ne pourriez pas voir l'​image du tout.// //note : j'ai accentué la teinte du bleu afin que vous puissiez distinguer facilement les pixels, mais en réalité, vous ne pourriez pas voir l'​image du tout.//
  
Ligne 75: Ligne 75:
 {{ :​les_exposes:​cravic-exemple-grille-decodee-wikisn.png |}} {{ :​les_exposes:​cravic-exemple-grille-decodee-wikisn.png |}}
  
-On voit que la teinte est plus forte, car au lieu d'​avoir 1/256 de bleu, on a 127/256, soit presque ​1/2 teinte.+On voit que la teinte est plus forte, car au lieu d'​avoir 1/128 de bleu, on a **64/128**, soit **1/2 teinte**.
  
-un dernier exemple ​([[http://​fr.wikipedia.org/​wiki/​St%C3%A9ganographie|source]]) ​+un dernier exemple : 
-{{ :​les_exposes:​cravic-exemple-wikipedia-wikisn.png |}}+{{ :​les_exposes:​cravic-exemple-final-wikisn.png?1200 |}}
 Par stéganographie,​ on peut retrouver l'​image de droite, cachée dans celle de gauche ! Par stéganographie,​ on peut retrouver l'​image de droite, cachée dans celle de gauche !
  
  
 Le principe de la stéganographie n'est pas difficile en soi, mais il est quasi impossible à détecter. Néanmoins, il n'est pas difficile, quand on sait que ce processus est utilisé, de décrypter l'​image et de trouver le message caché. Une bonne solution serait d'​envoyer des messages codés avec un codage classique"​ dans des images en stéganographie. Le principe de la stéganographie n'est pas difficile en soi, mais il est quasi impossible à détecter. Néanmoins, il n'est pas difficile, quand on sait que ce processus est utilisé, de décrypter l'​image et de trouver le message caché. Une bonne solution serait d'​envoyer des messages codés avec un codage classique"​ dans des images en stéganographie.
 +
 +
 +----
 +
 +===== Sources =====
 +[[http://​www.loutrel.fr/​images/​isn/​livre_isn/​livre_isn_eyrolles.pdf|Informatique et Sciences du Numérique chez Eyrolle]]
 +[[wp>​Steganography]]
 +[[http://​www.mysti2d.net/​polynesie2/​ETT/​C044/​31/​Steganographie/​index.html?​Formatbmp.html|explication du format bmp]]
 +
 +//toutes les images sont libres de droits//
les_exposes/image_steganographie.1427906659.txt.gz · Dernière modification: 01/04/2015 18:44 par cravic