La stéganographie et le traitement automatique des langues
Bon-jour-nal,
Alors, ceci n'a pas vraiment de rapport avec le logiciel libre, mais je me dis que ça intéressera sûrement les gens du coin. J'avais envie de partager mes petites connaissances accumulées ces derniers jours sur le sujet. Au pire, je me ferai moinsser et je ne le referai plus :)
Déjà, qu'est-ce que la stéganographie ? Sa problématique est de transmettre un message de manière à ce que seul le destinataire remarque son importance. Généralement un support (une image, un son ou un texte par exemple) est utilisé afin de cacher un message. Un domaine lié est le tatouage numérique, les concepts sont similaires, modifier peu le document support, mais dans une optique différente, le marquage du support, souvent pour pouvoir le tracer.
Le Traitement Automatique des Langues (TAL) consiste à utiliser l'informatique pour analyser et traiter les langues.
Les recherches dans le domaine de la stéganographie linguistique sont récentes, les premiers articles semblent dater des années 2001-2002. Cela paraît normal quand on sait que les grandes avancées dans le domaine du traitement automatique des langues ont été faites peu avant et qu'elles étaient prérequises aux recherches en stéganographie linguistique.
Bon, rentrons dans le vif du sujet, c'est-à-dire le fonctionnement de la stéganographie linguistique. La méthode décrite ici correspond à celle de cet article. Cette méthode n'est bien sûr pas la seule mais elle permet de comprendre le principe. Nous devons d'abord décider comment nous obtiendrons des informations (des bits) à partir modifications que nous espérons non-détectables. Tout d'abord, nous avons besoin d'un «dictionnaire» contenant en entrée des expressions et en définition des expressions équivalentes. L'idée est d'abord d'avoir un algorithme qui évalue les expressions du texte que nous pouvons remplacer. Ensuite, afin d'obtenir un bit, nous posons que le remplacement par une expression équivalente égale 0 et que le non-remplacement égale 1. Nous avons donc un algorithme, très basique, qui nous permet de cacher des informations dans un texte. Cet algorithme n'est cependant pas très efficace en terme de ratio longueur texte/longueur message caché, mais il n'est destiné qu'à expliquer le principe.
Ensuite, pour recouvrer le message, le destinataire doit simplement posséder le même dictionnaire, le même système d'évaluation et réaliser l'opération en sens inverse.
Tout cela n'était que le fonctionnement simplifié de l'algorithme. En pratique, il faut aussi vérifier que les remplacements effectués soient corrects sémantiquement et grammaticalement, sinon le document paraîtra suspect. Les auteurs de l'article proposent d'utiliser Google N-gram afin de vérifier que les remplacements existent bien dans la langue. Ensuite, afin d'obtenir un meilleur ratio bit par phrase, il est possible d'utiliser plusieurs dictionnaires, dans un ordre prédéfini, traitant de problème différents : synonyme et syntaxe(passivation, thématisation ou emphase) par exemple. En ce qui concerne la clef, nous pouvons par exemple définir un nombre qui définit les phrases à traiter ou leur ordre de traitement si nous utilisons plusieurs dictionnaires.
Concernant les limites de cette méthode, il est fort probable que ses performances dépendent de la langue utilisée, ou formulé différemment, il est fort probable que les langues, suivant leur fonctionnement se prête mieux à certains traitements. Certains texte ne sont pas appropriés à ces changements, notamment les textes fameux...
Le dernier point, le plus important il me semble, c'est le calcul de la résistance de ces systèmes de stéganographie, comment les évaluer ?
(Si vous avez des idées, n'hésitez pas à les exprimer dans les commentaires)
# LOPSI
Posté par mra . Évalué à 9.
Modérateurs, censurez vite ce journal, il contient avec une probabilité proche de 1 des images pédophiles de soutien terroriste pour Tripoli.
Ah, je crois que je viens de rater vendredi... Désolé.
# Écrire un commentaire
Posté par beagf (site web personnel) . Évalué à 9.
Écrire un commentaire
Quel est l'intérêt de remettre en énorme un titre qui est déjà présent en gros quelques pixels au dessus ?
[^] # Re: Écrire un commentaire
Posté par cosmocat . Évalué à 8.
justement, ce texte est un texte "stéganographié".lejocelyn est un agent secret, il publie un texte innocent sur la stéganographie pour couvrir lui même un message et le doublement du titre indique le dictionnaire à choisir.
Et quoi de plus normal de choisir linuxfr pour passer un message inaperçu...
[^] # Re: Écrire un commentaire
Posté par cosmocat . Évalué à 3.
Preuve que j'ai vue a posteriori, il a même découpé bonjour nal en 3 mots pour que ça tombe pile poil avec ce qu'il voulait coder. Sinon, je ne vois aucune raison de chercher à parler à Nal..... :)
[^] # Re: Écrire un commentaire
Posté par lejocelyn (site web personnel) . Évalué à 4.
C'est une boulette... à mettre sur le compte que c'est mon premier journal avec cette interface. Si un modérateur pouvait supprimer ça...
[^] # Re: Écrire un commentaire
Posté par monde_de_merde . Évalué à 2.
Peut être qu'il avait envie et que comme c'est son journal et ben on a rien à dire ?
On a même plus le droit de faire les trucs qu'on veut sans qu'une moule vienne critiquer ici !
D'ailleurs comment on fait pour écrire en Comic sans MS ici ? Que ça devienne un peu funky les commentaires quoi !
# C'est voyant
Posté par yellowiscool . Évalué à 3.
À mon avis, on arrive vite à un texte qui ne veut plus rien dire.
On peut peut-être s'amuser à jouer avec les caractères unicodes. Comme le «zero width space». C'es voyant si on a un éditeur de texte merdique (notepad par exemple) ou un éditeur hexadécimal, mais sinon, c'est assez discret.
Envoyé depuis mon lapin.
[^] # Re: C'est voyant
Posté par cosmocat . Évalué à 6.
Et bien au moins, on aura trouver une utilisation à notepad : "le déchiffreur de code"
# Mouhahah
Posté par VictorAche . Évalué à 0.
La question est, quel intérêt ?
Il faut soit partir d'un texte largement diffusé, soit faire parvenir les deux textes. Si le texte est largement diffusé, on peut facilement identifier l'original (et si on envoie les deux textes n'en parlons pas), et voir qu'il y a un message caché. Ensuite, il faut le déchiffrer, mais les verrous incassables n'existent pas encore, et celui-ci à l'air tout con. Enfin, n'importe quel linguiste voir personne lettrée pourra vous dire qu'un texte a été altéré, si il comporte de trop nombreux mots un peu décalé (et oui, les synonymes ne sont interchangeables qu'à petite dose !).
"The trouble with quotes on the internet is that it’s difficult to discern whether or not they are genuine.” Abraham Lincoln
[^] # Re: Mouhahah
Posté par ziliss . Évalué à 0.
Je crois que c'est justement là l'intérêt de cette méthode: avoir des algorithmes qui réussissent à ce que cela passe inaperçu. Est-ce faisable ? Comment ? Comme on peut le voir avec les IA qui essaient de se faire passer pour des humains, je pense qu'on y arrivera de mieux en mieux.
Quant à l'intérêt, je sais pas, y en a peut-être pas :) Mais t'inquiète pas, il sera toujours temps d'en trouver plus tard, surtout si (ou plutôt quand ça marchera super bien :) )
Par contre je crois bien que tu as raison ici: quel est le risque qu'avec les moteurs de recherche actuels (ou futurs), l'on puisse trouver le texte original et/ou ses variantes ? (Déjà qu'ils deviennent de plus en plus impressionnants avec les images.)
[^] # Re: Mouhahah
Posté par lejocelyn (site web personnel) . Évalué à 4.
Le texte original peut très bien être un courriel que nous sommes en train d'écrire. Si vous regardez bien, l'algorithme ne compare pas deux textes, l'original et le modifié, mais est capable d'évaluer les changements qu'il a ou aurait apporté au texte et donc d'extraire le message à partir de là. Je disais simplement qu'il valait mieux éviter un texte connu car les changements seraient facilement trouvables. Mais si le texte est nouveau, il n'y a aucun problème.
Quand à la détectabilité des changements apportés au texte : Non, n'importe quel linguiste ou lettré ne détectera pas les modifications apportées.
Par exemple, si dans le paragraphe précédent, l'algorithme avait remplacé, avant que je ne le publie, le terme «changements» par «altérations», «détectera» par «décèlera» et laisser «modifications» tel quel, on aurait obtenu les bits d'informations 001. Personne n'aurait pu deviner que mon texte était «changé», il s'agit d'une première publication, cependant, l'algorithme aurait été capable de détecter ces modifications car elles sont dans son dictionnaires et de retrouver le message caché.
Ce qui me penser que j'aurais dû rédiger un exemple.
[^] # Re: Mouhahah
Posté par gUI (Mastodon) . Évalué à 1.
Moi non plus je ne comprends pas trop. Pour savoir si il y a altération, il faut avoir l'original et la copie, sinon c'est un peu comme jouer aux 7 erreurs en ayant un seul dessin.
Il faut donc à la réception les 2 messages !
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Mouhahah
Posté par Nicolas Évrard (site web personnel, Mastodon) . Évalué à 1.
Le gros problème que je vois est celui de l'échange du dictionnaire. Car l'algorithme peut être aussi intelligent et bien foutu qu'on le veuille, c'est autant lui que le dictionnaire qui permettent de trouver l'information cachée. Or si tu l'envoies en le chiffrant tu perds l'avantage de la stéganographie et si tu l'envoies en clair, ben voila quoi.
Utiliser un texte connu ne résoud pas l'histoire puisque s'il permet de détecter les remplacements, il ne permet pas de détecter les non-remplacements. Pour utiliser ce genre d'algorithme, il est nécessaire d'envoyer les deux versions des textes (ce qu'on peut imaginer si on travaille dans l'édition mais bon).
Par contre, utiliser la grammaire pour faire de la stéganographie textuelle m'apparait intéressante. Partir d'un algorithme du genre "Phrase passive -> 1", "Phrase active -> 0" m'apparait intéressant même s'il est extrèmement naïf et qu'il faut de toute façon le diffuser.
Le manque de fait est un code, j'en suis sûre !
[^] # Re: Mouhahah
Posté par beagf (site web personnel) . Évalué à 6.
Le passage du dictionnaire n'est pas un problème, il faut bien voir que la stéganographie répond à un besoin différent de la cryptographie.
La stéganographie sert à transmettre l'information de manière discrète à travers un canal publique, par exemple un article de presse, une petite annonce, un message innocent sur un forum comme celui que j'écris en ce moment. L'objectif est qu'un observateur n'ait as l'impression qu'un message est en cours de transmission.
En général, le message en question est lui même crypté à l'aide d'un véritable algorithme de cryptage, pour le cas où l'observateur réussirait quand même à voir qu'il y a un message qui circule.
Il y a clairement deux niveaux, un niveau de protection par cryptographie, puis un niveau de transmission discrète par stéganographie. Si James Bond est en territoire ennemi, il à emmener avec lui une clé USB avec tous ses logiciels et peu poster sur son blog un message innocent qui transmet en fait son rapport à M.
Et pour ceux que ce genre de trucs amuse, on c'était marré avec des collèges à faire des convertisseurs « français <-> SMS » qui faisaient de la stéganographie, et là c'est beaucoup plus marrant car il y a bien plus de libertés.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
# Test
Posté par Raoul Volfoni (site web personnel) . Évalué à 3.
Les sanglots longs des violons de l'automne
Le chapeau de Napoléon est à Perros-Guirec
L'éléphant s'est cassé une défense
Grand-père mange nos bonbons
Pierrot ressemble à son grand-père
Le facteur s'est endormi
Jeanne a faim
...
[^] # Re: Test
Posté par tiot (site web personnel) . Évalué à 3.
Sauf que la stéganographie c'est l'art de dissimuler un message, c'est à dire qu'une personne extérieure ne doit pas savoir qu'il y a un message caché.
# pour du texte
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
C'est vrai que je n'avais jamais encore entendu parler de stégano dans du texte.
Il doit y avoir possibilité de faire de la stégano sans avoir de texte de référence. On peut imaginer des statistiques sur le nombre de chaque lettre, le nombre de mot ou autre, cela construit un certain message. Ensuite, la substitution de mot par d'autres permet d'orienter les stats pour fournir un message construit. On doit pouvoir même utiliser des codes correcteurs d'erreurs pour retrouver le bon message.
"La première sécurité est la liberté"
[^] # Re: pour du texte
Posté par lejocelyn (site web personnel) . Évalué à 2.
Et mince, je n'ai pas dû être clair, il n'y a pas besoin de texte de référence... lorsque j'ecrivais qu'il fallait faire attention au texte que l'on utilisait comme support, c'était simplement parce que les remplacements effectués pourraient déparailler avec le style général du texte.
Il suffit juste d'appliquer l'algorithme de stéganographie au texte après l'avoir écrit. L'algorithme est capable de détecter là où les modifications ont été réalisés sans connaître le texte original, s'il existe.
Le problème principal de cette façon de faire est que ni le dictionnaire ni l'algorithme ne peuvent être ouverts.
[^] # Re: pour du texte
Posté par VictorAche . Évalué à 1.
Non, il ne peut le faire que si les modifications sont "paires", et encore, comment savoir si un mot a été remplacé.
Exemple, je peux remplacer chapeau par couvre-chef, mais pas couvre-chef par chapeau. De plus, si je trouve couvre-chef dans le texte, comment puis-je dire, même avec mon dico, que le mot original est chapeau, et pas couvre-chef (ou l'inverse). Il faudrait pour cela un dictionnaire qui INTERDISE l'usage de certains mots, ce qui revient à utiliser la présence d'un mot comme code, ce qui est vieux de 2400 ans selon Singh.
"The trouble with quotes on the internet is that it’s difficult to discern whether or not they are genuine.” Abraham Lincoln
[^] # Re: pour du texte
Posté par dyno partouzeur de drouate . Évalué à 2.
Ou bien simplement, s'accorder sur des successions de lettres qui représentent un un et des successions de lettres qui représentent un zéro. L'algorithme s'arrange pour remplacer les mots/expressions du texte original pour utiliser les successions de lettres qui véhiculent l'information (un ou zéro) et remplacer les utilisations involontaires de ces séquences pour ne pas perturber le message à transmettre.
[^] # Re: pour du texte
Posté par TBTB . Évalué à 0.
Il y a une méthode qui consiste à cacher l'information dans les espaces
http://www.darkside.com.au/snow/index.html
[^] # Re: pour du texte
Posté par William Steve Applegate (site web personnel) . Évalué à 3.
Et pourtant, ça ne date pas d'hier (pas pu résister, canular ou pas ça reste très drôle).
Envoyé depuis mon PDP 11/70
# Décodage
Posté par Ramón Perez (site web personnel) . Évalué à 2.
Je ne comprends pas du tout comment on décode. Peux-tu nous expliquer ?
Par exemple :
je pars du texte : "Toto mange une pomme".
J'ai un dictionnaire mange <=> dévore et pomme <=> poire
je veux passer le message 11 donc je modifie mon texte en "Toto dévore une poire"
Maintenant du côté de la réception du message :
comment je peux savoir que dévore et poire sont des mots modifiés et que je dois lire 11 ?
Peut-être que le texte de départ était "Toto dévore une pomme" et que mon expéditeur n'a changé que le 2e mot et que je dois donc lire 10.
[^] # Re: Décodage
Posté par claudex . Évalué à 6.
Si je comprends bien, il ne faut pas décoder en pensant qu'un mot modifier vaut 1 et un mot original vaut 0 mais avec un tableau du genre
mange 0 pomme 0 dévore 1 poire 1
On obtient ainsi:
Toto mange une pomme → 00
Toto mange une poire → 01
Luc dévore une poire → 11
Une pomme est mangée par Toto → 01
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Décodage
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
Tu peux encore faire plus fort avec une règle portant sur 3 lettres consécutives au lieu d'un mot complet.
"La première sécurité est la liberté"
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.