Cryptographie!

La stéganographie informatique

  Avec l'avénement de l'informatique, et plus particulièrement avec la multiplication des transferts de fichiers sur les réseaux, la stéganographie est redevenue un sujet à la mode avec de nombreuses innovations. Quoi de plus facile, en effet, que de glisser quelques bits discrets au milieu d'un flot d'images, de textes et de programmes. Les moyens de cacher sont innombrables, des plus rudimentaires aux plus sophistiqués.

  On peut par exemple cacher très facilement des messages dans des pages web comme celles-ci. Ces pages web sont en effet écrites dans un langage de description de pages, le HTML, qui interprète de la même façon dans un texte un,deux,trois et même n espaces consécutifs : le navigateur n'affichera qu'un seul espace. Il suffit donc, entre les mots, d'insérer autant d'espaces que la lettre qu'on veut cacher (un espace pour A, deux espaces pour B,etc...).
Message à cacher : BIBMATHS
Description en espaces : 2-9-2-13-1-20-8-19

Affichage dans le navigateur Code source
Avec l'avénement de l'informatique, la stéganographie est redenue un... Avec  l'avénement         de  l'informatique,             la stéganographie                    est        redevenue                   un                     
 
  Bien sûr, ceci n'offre qu'une sécurité très faible, car il suffit de trouver le protocole pour retrouver le message, et un moteur de recherche pourra repérer facilement ce genre de manipulations.

  Plus intéressants sont les messages cachés dans les programmes exécutables et sur les parties libres du disque dur. Dans le premier cas, on ajoute au programme une certaine quantité de code jamais atteint, et qui représente le message. Dans le second, on écrit le message (préalablement chiffré pour qu'il semble aléatoire) dans une partie libre du disque dur, et sans écrire dans la table d'allocations de fichiers du disque dur (son index) que des données sont écrites à cet endroit. La connaissance de l'adresse permet de retrouver le message.

  Mais la voie la plus intéressante pour la stéganographie moderne est la dissimulation des informations dans les fichiers multimédias, particulièrement les images. Chaque pixel d'une image est représenté par 3 nombres compris entre 0 et 255 : R représente l'intensité du rouge, G celle du vert, B celle du bleu. Ces nombres s'écrivent comme suite de 8 bits (écriture en base 2 avec 8 chiffres). Si l'on modifie les 2 bits de droite de R, on modifie très peu sa valeur (au plus, de 3), et cela est imperceptible à l'oeil humain. On remplace alors les 2 bits de droite de R par les 2 premiers bits du message. Puis on continue pour les composantes G,R, puis pour le 2ème pixel,etc... Il est impossible, à l'oeil, de distinguer l'image qui cache le message, et l'image initiale.


Image initiale R1=01001110 G1=01101111 B1=11111111
R2=01110011 G2=01110110 B2=10101010
Message 101100011011
Image qui cache le message R1=01001110 G1=01101111 B1=11111100
R2=01110001 G2=01110110 B2=10101011

  Ce système a de nombreux avantages : il est particulièrement discret, et il permet de cacher énormément d'informations. Dans une image 200×200, on peut cacher 200×200×6=240000 bits, soit 30000 caractères. L'inconvénient majeur est qu'il faut impérativement transmettre les fichiers en bitmap, format qui prend énormément de place. Toute compression en format Jpeg fait perdre le message caché.

  On utilise en général la dissimulation dans les images de 2 façons différentes :
  1. Souvent, on chiffre d'abord le message, par un algorithme comme DES ou AES, avant de le cacher dans l'image. Il est alors encore moins facilement détectable, les bits de poids faible de l'image étant devenus aléatoires. Et même si quelqu'un se doute que le message est caché dans l'image, il ne pourra le déchiffrer puisqu'il faudra encore la clé.
  2. Plutôt que de remplacer les 2 bits de poids faible de la couleur par les 2 bits du message, on les combine par un ou exclusif. Il faut alors que le destinataire possède lui-même l'image initiale pour pouvoir retrouver le message. L'image fait à la fois office de moyen de dissimulation (stéganographie) et de clé (cryptographie).

Image initiale R1=01001110 G1=01101111 B1=11111111
R2=01110011 G2=01110110 B2=10101010
Message 101100011011
Image qui cache le message R1=01001100 G1=01101100 B1=11111111
R2=01110010 G2=01110100 B2=10101001

  Pour ceux qui sont sceptiques concernant la dissimulation de messages dans une image, nous vous invitons à consulter cette page : une applet y cache une image dans une autre image de même dimension.
Consulter aussi