Stéganographie
Un article de Wikipédia, l'encyclopédie libre.
Si la cryptographie est l'art du secret, la stéganographie est l'art de la dissimulation : l'objet de la stéganographie n'est pas de rendre un message inintelligible à autre que qui de droit mais de le faire passer inaperçu. Si on utilise le coffre-fort pour symboliser la cryptographie, la stéganographie revient à enterrer son argent dans son jardin. Bien sûr, l'un n'empêche pas l'autre, on peut enterrer son coffre dans son jardin.
C'est un mot issu du grec Stéganô, signifiant Je couvre et Graphô, signifiant J'écris. On retrouve une idée de dissimulation dans le nom de la technique.
Sommaire |
[modifier] Histoire
Dans son Enquête, l'historien grec Hérodote (484-445 av. J.-C.) rapporte ainsi une anecdote qui eut lieu au moment de la seconde guerre médique. En 484 avant l'ère chrétienne, Xerxès, fils de Darius, roi des Perses, décide de préparer une armée gigantesque pour envahir la Grèce (Livre VII, 5-19). Quatre ans plus tard, lorsqu'il lance l'offensive, les Grecs sont depuis longtemps au courant de ses intentions. C'est que Démarate, ancien roi de Sparte réfugié auprès de Xerxès, a appris l'existence de ce projet et décide de transmettre l'information à Sparte (Livre VII, 239) : « il prit une tablette double, en gratta la cire, puis écrivit sur le bois même les projets de Xerxès ; ensuite il recouvrit de cire son message : ainsi le porteur d'une tablette vierge ne risquait pas d'ennuis ». Un autre passage de la même œuvre fait également référence à la stéganographie : au paragraphe 35 du livre V, Histiée incite son gendre Aristagoras, gouverneur de Milet, à se révolter contre son roi, Darius, et pour ce faire, « il fit raser la tête de son esclave le plus fidèle, lui tatoua son message sur le crâne et attendit que les cheveux eussent repoussé ; quand la chevelure fut redevenue normale, il fit partir l'esclave pour Milet ».
En Chine, on écrivait le message sur de la soie, qui ensuite était placée dans une petite boule recouverte de cire. Le messager avalait ensuite cette boule.
Dès le Ier siècle av. J.-C., Pline l'Ancien décrit comment réaliser de l'encre invisible (ou "encre sympathique"). Les enfants de tous les pays s'amusent à le faire en écrivant avec du lait ou du jus de citron : le passage de la feuille écrite sous un fer à repasser chaud révèle le message.
Durant la Seconde Guerre mondiale, les agents allemands utilisaient la technique du micropoint de Zapp, qui consiste à réduire la photo d'une page en un point d'un millimètre ou même moins. Ce point est ensuite placé dans un texte normal. Le procédé est évoqué dans une aventure de Blake et Mortimer, SOS météores.
Un couple célèbre est censé avoir utilisé l'art de dissimuler un texte dans un texte. George Sand, maîtrisant parfaitement l'écriture, écrivait des poèmes à Alfred de Musset (cependant ce texte n'est pas publié dans la correspondance entre le couple, on peut supposer que ces exemples leur sont faussement attribués, même s'ils restent très bons en eux-mêmes) :
Je suis très émue de vous dire que j'ai bien compris, l'autre jour, que vous avez toujours une envie folle de me faire danser. Je garde un souvenir de votre baiser et je voudrais que ce soit là une preuve que je puisse être aimée par vous. Je suis prête à vous montrer mon affection toute désintéressée et sans cal- cul. Si vous voulez me voir ainsi dévoiler, sans aucun artifice mon âme toute nue, daignez donc me faire une visite. Et nous causerons en amis et en chemin. Je vous prouverai que je suis la femme sincère capable de vous offrir l'affection la plus profonde et la plus étroite amitié, en un mot, la meilleure amie que vous puissiez rêver. Puisque votre âme est libre, alors que l'abandon où je vis est bien long, bien dur et bien souvent pénible, ami très cher, j'ai le cœur gros, accourez vite et venez me le faire oublier. À l'amour, je veux me sou- mettre entièrement. Votre poupée.
A priori, si vous n'avez pas compris que cette lettre en cache une autre, c'est beau, plein de poésie... Maintenant, lisez la première ligne et ensuite une ligne sur deux...
Alfred de Musset a répondu ceci :
Quand je vous jure, hélas, un éternel hommage Voulez-vous qu'un instant je change de langage Vous avez su captiver les sentiments d'un cœur Que ne puis-je, avec vous, goûter le vrai bonheur Je vous aime, ô ma belle, et ma plume en délire Couche sur le papier ce que je n'ose dire Avec soin, de mes vers, lisez le premier mot Vous saurez quel remède apporter à mes maux.
Maintenant, relire les premiers mots de chaque vers: c'est un acrostiche. De la même manière George Sand a répondu ceci :
Cette grande faveur que votre ardeur réclame Nuit peut-être à l'honneur mais répond à ma flamme.
Corrections apportées aux célèbres accrostiches d'Alfred de Musset et de Georges Sand:
Alfred de Musset écrit ceci:
Quand je jure à vos pieds un éternel hommage Voulez-vous qu'inconscient je change de langage Vous avez su captiver les sentiments d'un cœur Que pour adorer forma le Créateur. Je vous aime et ma plume en délire. Couche sur le papier ce que je n'ose dire. Avec soin, de mes lignes, lisez les premiers mots Vous saurez quel remède apporter à mes maux.
Georges Sand renchérit par ces vers:
Cette indigne faveur que votre esprit réclame Nuit à mes sentiments et répugne à mon âme
Un autre couple célèbre d'artistes de music-hall des années 1950, Myr et Myroska communiquait les yeux bandés, en apparence par transmission de pensée, et en réalité par un astucieux procédé stéganographique à base de phrases codées (dont en particulier des variantes de la phrase : « Myroska, êtes-vous avec moi ? »). Le principe alors utilisé est toujours largement repris aujourd'hui, entre autres par Edouard et Sarah réalisant un show télévisé de transmission de pensée.
[modifier] Méthodes
Supposons, pour notre exemple, que, durant la Seconde Guerre mondiale, une résistante, Alice, doive envoyer tous les jours le nombre de bateaux en rade de Marseille à son correspondant à Paris, Bob. Ils conviennent qu'Alice enverra tous les jours à Bob les prix moyens de divers fruits observés sur le marché de Marseille. Il faut, bien sûr, qu'un agent ennemi, Oscar,
- ne puisse découvrir le contenu caché,
- ne puisse même savoir qu'un contenu est caché,
- ne puisse empêcher la transmission d'un contenu caché éventuel,
- ne puisse envoyer une fausse information en se faisant passer pour Alice.
[modifier] Création d'un contenu ad hoc
Alice peut envoyer un message contenant :
Poires : 0 Cerises : 0 Pommes : 1 Tomates : 3 Courgettes : 2
Bob découvrira qu'il y a, ce jour là, 132 bateaux.
La technique informatique citée ci-dessous comme Codage sous forme d'une apparence de spam s'apparente à cette méthode.
L'avantage de la méthode est qu'Alice pourra envoyer à Bob une information très longue. Toutefois, la méthode ne peut être utilisée que une seule fois car Oscar pourra rapidement se rendre compte du procédé.
[modifier] Modifications mineures d'un contenu existant
Alice peut envoyer un message contenant :
Poires : 4.00 Cerises : 12.00 Pommes : 5.01 Tomates : 3.23 Courgettes : 10.02
Les techniques informatiques décrites ci-dessous dans les rubriques Usage des bits de poids faible d'une image (LSB) et Modulation fine d'un texte écrit correspondent à cette technique.
L'avantage de la méthode est qu'Alice pourra envoyer à Bob une information relativement longue. Toutefois Oscar pourrait comparer les prix transmis avec les prix réels (dans le cas du procédé LSB, faire une comparaison bit à bit), pourrait s'étonner d'une précision superflue, pourrait interdire une trop grande précision (cf. plus bas : stérilisation)
[modifier] Dissimulation dans un élement annexe au contenu
Alice peut, le lundi, envoyer un message contenant :
Poires : 4 Cerises : 12 Pommes : 5 Tomates : 3 Courgettes : 10
et, le mardi, dans un ordre différent (Alice étant fantasque) mais avec des prix parfaitement exacts :
Cerises : 12 Poires : 3 Tomates : 3 Pommes : 6 Courgettes : 10
Le contenu réel du message est dissimulé dans la variation de l'ordre des fruits par rapport à l'ordre de la veille.
L'inconvénient de la méthode est que le message est relativement limité en taille. Si Alice se limite à 5 fruits, elle peut transmettre chaque jour à Bob une valeur comprise entre 0 et 120 (factorielle de 5). L'avantage réside dans la difficulté pour Oscar de répérer l'existence du procédé stéganographique.
Une technique informatique correspondante consiste à maintenir une image intacte mais à y incorporer une table des couleurs ou palette construite dans un ordre qui paraît arbitraire. Le contenu caché peut être une clef donnant accès à un message plus long. En outre, le contenu doit normalement inclure un procédé (généralement un checksum) permettant de vérifier sa validité. L'image qui sert de vecteur à un contenu caché peut être un extrait d'une image connue mais ne peut jamais être sa reproduction exacte, au risque de permettre par comparaison de révéler l'utilisation d'une technique stéganographique.
[modifier] Contre-mesures
Une société qui désire contrer l'usage de la stéganographie essayera d'empêcher la transmission ou la diffusion de contenus arbitraires, abstraits, interprétables, nuancés, fantaisistes, fantasques, poétiques, etc. Elle imposera le respect de critères formels stricts.
Dans l'exemple ci-dessus, elle supprimera l'usage de décimales, imposera un ordre alphabétique, interdira les messages dont le contenu ou la langue ne sont pas compris par un préposé, etc.
[modifier] Techniques rendues possibles par l'ordinateur
[modifier] Message transporté dans une image
[modifier] Usage des bits de poids faible d'une image
L'idée est de prendre un message et de le modifier de manière aussi discrète que possible afin d'y dissimuler l'information à transmettre. Le message original est le plus souvent une image. La technique de base --- dite LSB pour Least Significant Bit --- consiste à modifier le bit de poids faible des pixels codant l'image : une image numérique est une suite de points, que l'on appelle pixel, et dont on code la couleur a l'aide d'un triplet d'octets par exemple pour une couleur RGB sur 24 bits. Chaque octet indique l'intensité de la couleur correspondante --- rouge, vert ou bleu (Red Green Blue) --- par un niveau parmi 256. Passer d'un niveau n au niveau immédiatement supérieur (n+1) ou inférieur (n-1) ne modifie que peu la teinte du pixel, or c'est ce que l'on fait en modifiant le bit de poids faible de l'octet.
[modifier] Exemple
Donnons un exemple, considérons l'image
000 000 000 | 000 000 001 |
001 000 001 | 111 111 111 |
Chaque entrée de ce tableau représente un pixel couleur, nous avons donc une toute petite image 2×2. Chaque triplet de bits (0 ou 1) code la quantité de l'une des trois couleurs primaires du pixel (une image couleur aura dans presque tous les cas des groupes de 8 bits, appelés octets, mais on n'utilise que 3 bits pour clarifier l'exemple). Le bit le plus à droite de chaque triplet est le fameux bit de poids faible --- LSB. Si on souhaite cacher le message 111 111 101 111, l'image est modifiée de la façon suivante : le bit de poids faible du ie octet est mis à la valeur du ie bit du message ; ici on obtient :
001 001 001 | 001 001 001 |
001 000 001 | 111 111 111 |
Cette technique de stéganographie très basique s'applique tout particulièrement au format d'image BMP, format sans compression destructive, avec codage des pixels entrelacé sur 3 octets comme énoncé ci-dessus. Réciproquement, tout procédé de compression-décompression d'images avec pertes est susceptible de détruire un message stéganographique codé de cette façon. On parle alors de stérilisation. Un pays totalitaire pourrait stériliser à tout hasard toute image BMP entrant ou sortant de son territoire, moyennant les ressources techniques nécessaires.
[modifier] Manipulation de la palette de couleurs d'une image
Certains formats graphiques tel que GIF ou PNG permettent le stockage des couleurs de l'image par référence à une palette de couleurs insérée dans le même fichier.
Ainsi au lieu de stocker Bleu,Blanc,Rouge dans une image du drapeau français, on trouve dans un format de fichier la description de l'objet la suite Couleur1,Couleur2,Couleur3 ainsi qu'une palette qui définit que Couleur1 est le Bleu, Couleur2 le Blanc et Couleur3 le Rouge.
La même image peut-être stockée de la façon suivante: Couleur2,Couleur3,Couleur1 avec une palette qui définit que Couleur2 est le Bleu, Couleur3 est le Blanc et Couleur1 est le Rouge.
Ces deux images sont visuellement identiques mais le stockage de celles-ci est différent. Pour une image contenant 256 couleurs uniques dans sa palette, on a factoriel de 256 façon de stocker cette image. En utilisant un code connu entre l'émetteur et le récepteur de l'image, on peut donc communiquer un message de petite taille caché dans la permutation des couleurs dans la palette de l'image.
[modifier] Message caché dans les choix de compression d'une image
Tout semble indiquer que l'on ne peut cacher un message dans un format d'image utilisant une compression avec perte. En réalité la plupart des programmes de stéganographie sérieux s'attaquent justement au format JPEG qui utilise ce type de compression.
L'idée n'est pas de cacher une information dans les couleurs ou dans la palette (puisqu'il n'y en a pas) mais dans les choix de compression. En effet, tout algorithme de compression nécessite une succession de choix.
Avec des algorithmes de compression tel que Zip ou Gzip, on peut choisir la puissance de compression. En consommant plus de temps calcul et/ou plus de mémoire pour les opérations intermédiaires, on peut obtenir de meilleurs résultats de compression. Ainsi deux fichiers compressés de tailles différentes peuvent être décompressés en deux fichiers identiques.
La compression dans le format JPEG est double. La première compression consiste à découper l'image en bloc de 8 fois 8 pixel et de transformer ce carré sous une forme mathématique simplifiée. Cette compression introduit des pertes et la version mathématique peut être légèrement différente du carré original tout en étant visuellement très semblable. Une fois tous les blocs compressés, il faut coder les formes mathématiques en consommant le moins possible d'espace. Cette deuxième compression n'introduit pas de perte et est similaire dans les principes à ce que l'on peut retrouver dans Zip ou Gzip. C'est en introduisant dans cette phase des bits d'informations que l'on arrive à transporter un message caché.
Voir l'article détaillé: Tatouage numérique.
[modifier] Message transporté dans un texte
[modifier] Modulation fine d'un texte écrit
Décaler une lettre de quelqueṣ pixels ne pose aucun problème sur une imprimante à lạser et est pratiquement invisible à l'œil nu. En jouant sur les interlettrages d'un texte très long et à raison de deux valeurs d'espacement correspondant à 1 et 0, il est possibḷe de transmettre un message sous forme papier, qui ne révèlera son vrai sens qu'ụne fois analysé par un scanner ayanṭ une bonne précision.
Historiquement, le procédé fut utilisé dès les années 70 en utilisant non pas des imprimantes laser, mais des imprimantes à marguerite Diablo, qui permettaient de jouer sur l'espacement des caractères au 1/120e de pouce près.
[modifier] Marquage de caractères
Une technique similaire — mais plus facilement détectable — consiste à marquer certains caractères d'un document. Des points peuvent par exemple être placés sous les lettres d'un texte afin de dissimuler un message. Étalées sur un texte de plusieurs pages, ces marques peuvent s'avérer relativement efficaces vis-à-vis d'un œil non-averti. Un ordinateur n'est pas indispensable à la mise en œuvre de cette technique.
En guise d'exemple, aviez-vous remarqué le message caché dans le premier paragraphe de la section Modulation fine d'un texte écrit ?
[modifier] Codage sous forme d'une apparence de spam
N'importe quel texte de spam peut servir de base à de la stéganographie, sur la base d'un codage binaire simple de quasi synonymes. Par exemple pactole = 1, fortune = 0; richesse = 1, aisance = 0; succès = 1, réussite = 0; etc. Des sites du Web proposent à titre de curiosité ce genre de codage et de décodage. Des textes écrits en langue de bois ou en style administratif se prêtent particulièrement bien à l'exercice.
[modifier] Message transporté dans un son
Dans les formats sonores, il existe à peu près les mêmes possibilités de cacher des messages que dans les images.
Dans un fichier sonore au format MIDI, il n'existe pas de palette de couleurs mais bien différentes pistes qui peuvent être permutées.
Dans un fichier sonore avec compression sans perte, on peut cacher de l'information dans des variations imperceptibles du son, les bits faiblement significatifs.
Dans un fichier sonore avec compression avec perte, on peut cacher de l'information dans les choix de compression.
[modifier] Autres possibilités
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 textes (ce fut une des premières formes de la stéganographie) ou encore dans des zones d'un disque dur inutilisées par le système de fichiers.
[modifier] Usage
La stéganographie est exploitable dans de nombreux domaines. Elle trouve ainsi comme application commerciale le watermarking (apposition de filigranes électroniques), technique permettant de « tatouer » un fichier électronique (pour y introduire notamment des informations utiles à la gestion des droits d'auteur).
Il ne faut pas confondre le watermarking, par essence invisible, avec le fait que certains formats de fichiers offrent la possibilité d'inclure des méta-informations...
Après les évènements du 11 septembre 2001, on a prétendu qu'Oussama Ben Laden transmettait ses ordres en les cachant par des procédés stéganographiques dans des images transmises ou hébergées sur internet (ces suppositions n'ont jamais été étayées par des éléments concrets).
Il faut noter que, si la cryptographie, qui permet de protéger la vie privée et l'activité industrielle sans cacher cette protection, est souvent maltraitée par les états totalitaires et les sociétés démocratiques à tendance sécuritaire, il n'en va pas nécessairement de même pour la stéganographie, qui est pourtant une technique beaucoup mieux adaptée à une activité criminelle éventuelle.
[modifier] Outils
[modifier] Articles connexes
[modifier] Liens externes
- (fr) Applet Java : stéganographie de 2 images par méthode LSB, opensource.
- (fr) Un article sur la stéganographie
- (en) Steghide : voir l'article sur Wikipedia.
- (en) Une liste d'exemples de stéganographie
- (en latin) Steganographia (Secret Writing) (1500) par [Johannes Trithemius] : version numérisée d'un vieux livre écrit en latin
- (en) Outguess : stégano-analyse.
![]() |
Portail de la cryptologie – Accédez aux articles de Wikipédia concernant la cryptologie. |