goto_top

[Stégano] prise en main de Steghide

COMMANDES ET OPTIONS
(référence : man steghide)

On commence par une commande obligatoire parmi trois :
embed, —embed intégrer des données secrètes dans un fichier de couverture, créant ainsi un fichier de stégo.
extract, —extract Extraire les données secrètes d’un fichier stégo
info, —info Afficher les infos à propos d’un fichier stégo ou de couverture.

Viennent ensuite des options facultatives permettant de contrôler le fonctionnement.

Pour l’intégration, ces options sont :
-ef, —embedfile filename Le nom du fichier à intégrer. ’-’ pour stdin.
-cf, —coverfile filename Le nom du fichier de couverture.
-sf, —stegofile filename Le nom du fichier de sortie. En l’absence, l’image de couverture est remplacée.
-e, —encryption algo [ mode ] | mode [ algo ] Algo/mode d’encodage. Commande encinfo pour lister les algos dispos. Par défaut rijndael-128 (AES) en mode cbc. Pas d’encodage -> -e none.
-z, —compress level Niveau de compression 1(vitesse) -> 9 (taux de compression)
-Z, —dontcompress Pas d’encodage des données cachées avant intégration.
-K, —nochecksum Pas de chaeksum crc32
-N, —dontembedname Ne pas intégrer le nom du fichier intégré. Il faudra préciser un nom lors de l’extraction.

Pour l’extraction les options sont :
-sf, —stegofile filename Le nom du fichier stégo à lire. ’-’ pour stdin.
-xf, —extractfile filename Le nom du fichier extrait. En absence, le nom originel.


UTILISATION
Nous utilisons tout d’abord une image BMP 24 bits 256x256px d’une capacité annoncée par steghide —info de 8,0Ko.

Intégrons un texte court "Well done, you got the secret !" à l’image sans aucun encodage ni compression ni nom de fichier ni checksum ni passphrase.

steghide embed -ef hidden_msg.txt -cf tux_rambo.bmp -sf tux_rambo_steg.bmp -e none -Z -K -N

L’image originale (gauche) est indiscernable de l’image produite.



Voyons ce que donne une analyse lsb simple obtenue en remplaçant chaque octet par 0 ou 0xff selon la valeur du lsb (outils utilisés ici) :



On distingue quelques points vert clair dans le noir du bas de l’image sur l’image de droite, mais ça reste peu repérable, ce qui montre l’efficacité du logiciel qui répartit l’information dans l’image et ne produit pas de "zones" repérables facilement par cette méthode.

L’intégration d’un texte de 3395 octets à la même image dans les mêmes conditions reste indiscernable sur la couverture.

L’analyse lsb commence par contre à montrer des points plus nombreux. On constate la répartition qui semble globalement uniforme de l’information cachée dans l’image de couverture. Un remplissage du fond en noir montre néanmoins qu’il y a plus d’info cachée dans la zone originellement noire que dans la partie blanche. Ceci ne semble pas lié à la méthode de représentation des BMP qui fait commencer le fichier par le bas de l’image car la zone blanche en bas de l’image est préservée.



Voyons maintenant ce que ça donne sur une photo. En l’occurence un BMP 24 bits 300x400px d’une capacité annoncée de 14,6Ko dans laquelle nous cachons le même texte >3ko dans les mêmes conditions que précédemment.



Les analyses lsb de l’original et du fichier contenant le message ne permet pas de différencier les résultats obtenus. D’ailleurs même la forme générale de l’image originelle n’est pas perceptible sur ces analyses. D’autres essais sur des photos convertie en bmp 24bits confirment l’absence de corrélation évidente entre l’image d’origine et l’analyse lsb correspondante.



Dans ce cas il reste à s’orienter vers la recherche d’une copie de la photo sur le web (et à utiliser diff) ou à éplucher l’algorithme utilisé par steghide pour tenter de mettre au point une méthode de détection adaptée.