Journal La stéganographie et le traitement automatique des langues

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
18
20
mar.
2011

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  . É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  (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  . É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  . É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  (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  . É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  . É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  . Évalué à 6.

      Et bien au moins, on aura trouver une utilisation à notepad : "le déchiffreur de code"

  • # Mouhahah

    Posté par  . É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  . Évalué à 0.

      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 !).

      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  (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  (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  (site web personnel, Mastodon) . Évalué à 1.

          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é.

          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.

          Ce qui me penser que j'aurais dû rédiger un exemple.

          Le manque de fait est un code, j'en suis sûre !

          • [^] # Re: Mouhahah

            Posté par  (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  . Évalué à 3.

          Ce commentaire a été supprimé par l’équipe de modération.

  • # Test

    Posté par  (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  (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  (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  (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  . Évalué à 1.

        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.

        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  . É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  . É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  (site web personnel) . Évalué à 3.

      C'est vrai que je n'avais jamais encore entendu parler de stégano dans du texte.

      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  (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  . É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  (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.