Porneia delights

— La stéganographie est, comme le dit si bien l'encyclopédie du libre, l'art de dissimuler une information au sein d'un autre support tel qu'une image, un texte, un son ou encore une vidéo.

Dans ce billet je ne vais pas vraiment vous faire une introduction à la stéganographie mais plutôt vous parler d'un outil (emb) que j'ai développé pour mettre en oeuvre une technique de stéganographie relativement simple.

Initialement codé en C, je ne devais pas vraiment le publier avant qu'il ne soit vraiment finalisé et que j'arrive aux différents résultats que je m'étais fixé. Mais voila, un soir ou la chaleur était trop intense et que ma fonction de recherche statistique boitait, j'ai eu un flash : « Mon dieu ! Mais je code horriblement mal des fonctions qui existent déja et qui sont fantastiquement bien codées ! ». Voilà, depuis ce jour, emb est devenu un projet sérieux et qui sera codé python.

Principes

Revenons donc un peu avant tout ces changements. Emb (embed) est donc un petit programme qui permet d'insérer une information telle qu'une chaine de caractères dans une image bitmap 24 bits par pixel. La technique utilisée permet de répartir chaque bits de notre information sur les bits de poids faibles de chaques pixels.

Comme vous le savez, une image bitmap 24 bits par pixel est formée comme ceci (en gros) :

L'insertion va donc se dérouler comme suit: on va traiter notre information 8 bits par 8 bits, c'est à dire caractère par caractère. Notre première séquence de 8 bits va être découpée en 3 partie : (2 - 3 - 3).

Ainsi, on réitère ce processus de manière à insérer toute notre information dans l'image. Emb suit exactement ce schéma, il ne choisit pas les pixels, il insère successivement les séquences de 8 bits dans chaques pixels lui correspondant. Le schéma utilisé ici n'est donc pas du tout robuste, et un changement de format ou une modification de l'image entrainera très certainement la perte de notre information.

On peut aussi noter que emb chiffre l'information, rien de bien sûr, c'est juste pour faire genre (la mise en oeuvre de la méthode utilisée ici ne respect pas différent point important mais qui serait difficile de respecter ici). La méthode utilisée est celle du masque jetable qui est encore connu sous le nom de One Time Pad.

Stéganalyse

Cette technique, comme vous l'aurez constaté, travail dans le domaine spatiale (directement sur les pixels). D'après les études réalisée sur ce schéma, la mise en évidence de l'information est assez simple grâce à une analyse statistique.

Le problème vient du fait que l'insertion de notre information va uniformiser la répartition des bits de poids faible au travers de notre image. Voici un exemple: répartition des bits de poids faible dans l'image originale, répartion des bits de poids faible dans l'image qui contient notre information (la quantité d'information insérée est assez grande, de manière à bien mettre en évidence le phénomène).

Perspectives

Emb va donc évoluer et beaucoup de changement sont au programme (bah oui maintenant c'est un projet sérieux). Dans les futurs versions vous trouverez donc entre autres :

Les sources !

Voici les sources de emb version 0.2e (attention, c'est mal codé et oui ma fonction pour gérer les arguments est pourris).

Voici aussi la source du programme que j'ai codé pour faire la stéganalyse.

Vous trouverez quelques documents sur ce sujet dans la section "steganographie" de mon joyeux bordel.


Cet article a été exhumé par illovæ avec l'aimable autorisation de son auteur.

Vous pouvez envoyer par mail vos commentaires et vos remarques à gapz [at] dud-t [point] org.

emb - Une première approche de la stéganographie (755 mots) de gapz est diffusé sous la licence WTFPLv2 et Beer-ware (Révision 42).

Vulnerant omnes, ultima necat. Sic transit hominis regnum.
Copyleft © 2007 — gapz