• Aucun résultat trouvé

Techniques Stéganographiques

1.3 Codes de Hamming

2.1.5 Techniques Stéganographiques

La Stéganographie est une science pour cacher les données secrètes dans des fichiers informatiques comme des couvertures et les fichiers les plus utilisés sont les fichiers textes (ce fut une des premières formes de la stéganographie), les images, fichiers audio ...etc, il est aussi possible de cacher des informations dans bien d’autres types de fichiers couramment échangés sur des réseaux tel la vidéo ou bien dans des zones d’un disque dur inutilisées par le système de fichiers, et même dans des protocoles informatiques comme IP et TCP. Il existe plusieurs techniques pour mettre en place des schémas stéganographiques. Nous commencerons donc ici par décrire ces techniques en fonction du support de couvertures, puis nous allons détailler la méthode LSB pour les images et les fichiers sons.

1. La stéganographie sur images :

– Usage des bits de poids faible d’une image (LSB) – Manipulation de la palette de couleurs d’une image – Message caché dans les choix de compression d’une image 2. Dans un texte :

– Modulation fine d’un texte – Marquage de caractères

– Codage sous forme d’une apparence de spam 3. dans un son :

– Dans les fichiers son, il existe à peu près les mêmes possibilités de cacher des messages que dans les fichiers images.

4. Fichiers HTML,

5. Canaux cachés HTTP, anaux cachés IP, anaux cachés TCP, anaux cachés DNS 6. Rajout de données (EOF, en-têtes, ...) : Les données cachées consistent en un fichier

image rajouté juste sous le marqueur EOF d’un fichier

Ces six points peuvent être regroupé en deux catégories distinctes. la technique dite de fusion et la modification LSB.

Ces deux techniques vont être détaillée ci-dessous. LSB (Least Significant Bit)

La stéganographie LSB (Least Significant Bit) consiste à dissimuler l’information dans des bits de poids faibles d’un support. Cette technique est un cas particulier de sté- ganographie +/ − k, qui incrémente ou décrémente les valeurs du support de +/ − k. Historiquement, peut-être par facilité d’implémentation, la stéganographie LSB adaptée aux images fixes non compressées est l’une des premières techniques stéganographiques et peut-être même l’une des plus employées encore aujourd’hui.

Utiliser LSB revient à remplacer certaines données déjà présentes dans un fichier par l’information à cacher. Cette méthode peut sembler simpliste, mais il faut faire attention à ne pas supprimer de données importantes qui rendraient impossible la lecture du stégo- objet final. Typiquement, on substitue les données non primordiales par notre message. Le destinataire extrait l’information s’il a connaissance des positions où le message a été substitué. Puisque seules des modifications mineures ont été apportées dans le processus d’encapsulation, l’émetteur présume qu’elles ne seront pas détectées par un attaquant passif.

Un exemple typique de ce procédé est l’application d’une image 24-bits au format BMP non compressée (voir section Format d’image). Une clé secrète k détermine, dans une zone de l’image, l’emplacement des pixels. La luminance de chaque pixel est codée par une valeur comprise entre 0 (soit en binaire : 00000000), et 255 (soit en binaire : 11111111). Le bit de poids faible de l’écriture binaire,

Algorithme général de la méthode de substitution de poids faible. for i = 1, ..., l(c) do

si ← ci

end for.

for i = 1, ..., l(m) do

compute index j, where to store ith message bit .

sij ← cij = mij

end for.

Encapsulation du message . for i = 1, ..., l(M) do

compute index j, where the ith message bit is stored .

mi ← LSB(cij)

end for.

le dernier, est celui qui a le moins d’influence sur la valeur de la luminance. On cache l’information en introduisant un biais dans cette proportion : on impose une valeur aux bits de poids faible des pixels choisis selon la clé. Par exemple, la lettre A peut être cachée dans 3 pixels (qui n’ont pas subi de compression). Soit le code binaire de 3 pixels (9 octets) suivant :

(00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001)

La valeur binaire de A est 10000011. En insérant la valeur binaire de A dans les 3 pixels, on obtiendrait le résultat suivant :

(00100111 11101000 11001000) (00100110 11001000 11101000) (11001000 00100111 11101001)

Parmi les 8 bits utilisés, les bits soulignés sont ceux qui ont été modifiés et en gras les bits de poids faible nécessaire pour comprendre le message entier. En moyenne, seule la moitié

des bits utilisés sont modifiés. Cette modification est imperceptible pour l’ ?il humain, car la luminance de ces pixels aura varié d’au plus 1. On peut aussi cacher des données dans le deuxième plus petit bit significatif sans que l’ ?il humain ne discerne le changement. Par contre, la modification du bit de poids faible est difficilement applicable sur des images de 8 bits (256 couleurs) en raison de la limitation du nombre de couleurs. Il existe plusieurs logiciels qui utilisent cette méthode.

Une approche plus sophistiquée de cette méthode réside dans l’utilisation d’un généra- teur de nombres pseudo-aléatoires pour étaler le message secret sur le médium de couver- ture. Si les deux participants à la communication partage une stégo-clé k utilisable comme graine pour un générateur de nombres aléatoires, ils peuvent créer une séquence aléatoire. Ainsi, la distance entre deux bits encapsulés est déterminée aléatoirement. Puisque le ré- cepteur a accès à la graine k et a connaissance du générateur de nombres pseudo aléatoires

Méthode à intervalle aléatoire . for i = 1, ..., l(c) do

si ← ci

end for.

generate random sequence ki using seed k

n ← k1

for i = 1, ..., l(m) do

sn← cn= mi

n ← n + ki

end for.

Encapsulation generate random sequence ki using seed .

n ← k1 for i = 1, ..., l(m) do mi ← LSB(cn) n ← n + ki end for. Fusion

Cette technique, que l’on peut considérer comme de la stéganographie naïve, consiste à ajouter les données à cacher au fichier [18]. Pour ce faire, cette méthode utilise des

emplacements inutilisés ou non lu par la plupart des décodeurs d’image.

On distingue deux fonctionnements : L’ajout de données en fin de fichier et l’ajout au niveau des en-têtes de fichier.

L’ajout en fin de fichier est rendu possible par le fait que la plupart des décodeurs d’image ne lisent pas le fichier image dans son ensemble. Pour la plupart des formats d’image disponible, un certaine chaîne de bits est définie afin de marquer la fin de l’image. L’ajout en fin d’image est simplement après cette chaîne de bits. Aucune limitation de taille n’est imposée, cependant un fichier image de 20 Mbytes risque de ne pas passer inaperçu.

Pour ce qui est de l’ajout dans les en-tête, certains formats comme le bitmap défi- nisse un champ permettant de spécifier l’offset à partir du quel l’image commencera. En spécifiant un offset un peu plus long il est possible de cacher entre deux les données à dissimuler. Cela peut aussi être fait à l’aide d’ajout de commentaire, pour le JPEG par exemple.

Fig. 2.5 – A gauche, image originale. A droite, image contenant des données dissimulées dans le champs de commentaire à l’aide d’Invisible Secrets 4 [18]

Documents relatifs