Stéganographie : introduction à la dissimulation de données
4 août 2022 2022-08-04 8:51Stéganographie : introduction à la dissimulation de données
De tous temps les hommes ont cherché à dissimuler des informations. L’objectif peut être de conserver un savoir secret pour le transmettre seulement à des disciples ou, il faut bien l’avouer, la plupart du temps, dans un cadre de stratégie militaire, de transmettre des informations à l’insu de l’ennemi (ce qui fonctionne également dans un cadre sportif par rapport à un adversaire). Ainsi, lors d’un double peut-on voir le joueur au filet faire des signes dans son dos pour indiquer au serveur où il souhaite que celui-ci envoie la balle. D’un point de vue historique il existe plusieurs exemples très intéressants que je vais développer dans la suite, avant d’aborder l’aspect informatique qui rend la dissimulation de données très simple à mettre en place.
Un peu d’histoire antique
Tout débute en Grèce où l’historien Hérodote (484 à 425 avant J.-C.) relate plusieurs exemples de communications dissimulant des messages (Livre V – Terpsichore et Livre VI – Erato). Ce mode de communication porte d’ailleurs un nom issu du grec ancien : la stéganographie de steganos caché et graphein l’écriture.
Des esclaves hirsutes (Livre V)
Le premier exemple est aussi la première trace de stéganographie d’un point de vue historique. En 499 avant J.-C., Histiée, qui était alors tyran de Milet, était retenu prisonnier par le roi des Perses à Suse. Pour transmettre un message à Milet, il eut l’idée de faire raser un esclave pour pouvoir écrire un message sur son crâne glabre. Il attendit alors que ses cheveux repoussent avant de l’envoyer à Milet, sachant que l’esclave serait fouillé mais que le message ne pourrait être découvert.
Note : cette histoire porte à caution. En effet, les historiens sont assez sceptiques vis-à-vis de ce stratagème sachant qu’à l’époque les esclaves étaient rasés et portaient un bonnet. Il paraît donc évident qu’un esclave chevelu ne serait certainement pas passé inaperçu !
Des tablettes de cire (Livre VI)
Lorsque Démarate (515 à 491 avant J.-C.), ancien roi de Sparte réfugié en Perse, apprit un projet d’invasion de la Grèce : autour de 480 avant J.-C. il fit parvenir un message à Sparte en écrivant à même le bois d’une tablette de cire qu’il recouvrit ensuite de cire. La tablette était vierge en apparence et le récipiendaire dut gratter la cire pour découvrir le message.
Une histoire plus moderne
Au Moyen-Âge, dans les années 1500, l’abbé Jean Trithème (1462 à 1516) imagina un système permettant d’enfouir un message dans un texte religieux (abscons par définition). La technique consiste à associer des sentences aux lettres de l’alphabet et de les articuler à l’aide de mots « inutiles » (Jean Trithème, « Polygraphia », 1518). Les correspondances sont répertoriées dans un tableau, appelé chiffre de Trithème :
Lettre | Sentence | Lettre | Sentence | |
A | Dans les cieux | N | En paradis | |
B | À tout jamais | O | Toujours | |
C | Un monde sans fin | P | Dans la divinité | |
D | En une infinité | Q | Dans la déité | |
E | à perpétuité | R | Dans la félicité | |
F | Sempiternel | S | Dans son règne | |
G | Durable | T | Dans son royaume | |
H | sans cesse | U, V, W | Dans la béatitude | |
I, J | Irrévocablement | X | Dans la magnificence | |
K | Éternellement | Y | Au trône | |
L | Dans la gloire | Z | En toute éternité | |
M | Dans la lumière |
Ainsi, en utilisant ce tableau, le début de Bienvenue à l’Ecole Pratique devient :
Et à tout jamais, irrévocablement et à perpétuité,
| B | | i | | e |
Nous irons en paradis dans la béatitude !
| n | | v |
Et c’est bien à perpétuité en paradis
| e || n |
Que se trouvera la béatitude
| u |
Qui demeurera à perpétuité dans les cieux.
| e || à |
(…)
Et de nos jours ?
Aujourd’hui encore la stéganographie est employée pour transmettre des messages à l’insu des personnes non informées de leur présence. Et elle est d’autant plus utilisée que grâce à l’informatique elle est très facile à mettre en place.
Fiction
Dans le feuilleton américain Prison Break, créé par Paul Scheuring, nul besoin d’ordinateur pour le héros, Michael Scofield, qui se fait faire des tatouages incorporant des informations sur la prison où son frère a été incarcéré. L’un de ses tatouages porte par exemple le message « bOLShOI bOOZE ». En remettant les caractères en minuscules on peut lire bolshoi booze soit « alcool bolshoï ». Mais en retournant le message, on peut y lire la succession de chiffres 37009 1045709 soit la position 37°00’9″ – 104°57’09 ».
Réalité
Nous utilisons chaque jour de nombreux fichiers informatiques que nous échangeons via internet (téléchargements, mails, etc.). Quoi de plus simple donc que d’enfouir des informations dans un fichier ? Je prendrai pour exemple les fichiers image.
Note : ne confondez pas stéganographie et cryptographie ! Dans le cas de la stéganographie, le message circule devant les yeux de tous sans qu’on le remarque (le message est en clair ou il est chiffré). Dans le cas de la cryptographie, le message est nécessairement chiffré (en général à l’aide de clés de chiffrement), il n’est pas dissimulé.
En informatique, une couleur peut être codée en utilisant un format RGB indiquant la quantité de rouge (Red), vert (Green) et bleu (Blue) qu’il faut mélanger pour obtenir la couleur souhaitée. Par exemple, pour obtenir du marron on va mélanger du rouge et du vert (mais pas de bleu). Suivant la proportion de rouge par rapport au vert, nous obtiendrons différents tons de marron.
La quantité de chaque couleur peut être exprimée par un nombre compris entre 0 et 255. Comme nous travaillons sur des ordinateurs, la représentation binaire de ces nombres est 00000000 et 11111111. Chaque chiffre 0 ou 1 est appelé un bit et une suite de 8 bits (telle que 11111111 valant 255) est appelée un octet.
Une image informatique est composée d’une série de points de couleur appelés pixels (les images sont représentées un peu à la manière des pointillistes). Supposons que nous considérions une image minuscule de 3 pixels. Chaque pixel a une couleur exprimée en format RGB donc sous la forme de 3 nombres (plus précisément 3 octets) :
R (rouge) | G (green) | B (blue) | Couleur | |
Pixel 1 | 17 -> 00010001 | 77 -> 01001101 | 217 -> 110110001 | |
Pixel 2 | 230 -> 11100110 | 226 -> 11100010 | 9 -> 00001001 | |
Pixel 3 | 128 -> 10000000 | 9 -> 00001001 | 230 -> 11100110 |
Si l’on modifie seulement la valeur du bit de poids faible de chaque composante (le bit le plus à droite de l’octet), l’incidence sur le code couleur sera mineure. Par exemple pour une quantité de 17 en rouge, soit 00010001, si l’on modifie le bit de poids faible, le LSB pour Least Significant Bit, on obtient 00010000, c’est-à-dire 16. En utilisant le codage ASCII (American Standard Code for Information Interchange), les lettres majuscules sont codées entre 65 et 90 (nombres inférieurs à 255 donc convertibles en binaire sur un octet). La lettre A correspond au code 65 soit 01000001. Modifions les bits de poids faible de l’exemple précédent pour dissimuler un A dans l’image :
R (rouge) | G (green) | B (blue) | Couleur | |
Pixel 1 | 17 -> 00010000 | 77 -> 01001101 | 217 -> 110110000 | |
Pixel 2 | 230 -> 11100110 | 226 -> 11100010 | 9 -> 00001000 | |
Pixel 3 | 128 -> 10000000 | 9 -> 00001001 | 230 -> 11100110 |
Les modifications de couleur sont invisibles à l’œil nu mais une personne avertie sera capable de récupérer l’information qui est enfouie dans l’image. Ce type de technique peut être employé pour la diffusion de malwares (voir LokiBot par exemple) et permet de tromper la vigilance des antivirus.
Note : vous aurez noté que pour 3 pixels il y a 9 bits de poids faible. Le dernier bit (ici le 0 du binaire correspondant à 230) n’est pas utilisé.
Epilogue
Afin de former les développeurs et ingénieurs système et réseau de demain à détecter et traiter les cybermenaces potentielles telle que la technique présentée sommairement dans cet article, l’Ecole Pratique lance en octobre 2022 un parcours de formation Manager en Ingénierie Informatique de niveau bac + 5.
Avec un accroissement de la puissance de calcul des ordinateurs et des cyberattaques qui est flagrant lorsque l’on analyse les chiffres de différents événements depuis 2016 (JO Rio 2016 : 400 attaques par seconde ; JO Tokyo 2020 : 815 attaques par secondes ; JO Paris 2024 : combien d’attaques ?), la cybersécurité est un enjeu majeur de demain : rejoignez-nous pour vous former en #dev ou #sysadmin avec une expertise #cybersécurité et #gestiondeprojet !