Principe : choisir les synonymes
La langue naturelle offre un immense espace de synonymes. "Grand" peut être remplacé par "important", "considérable", "majeur", "vaste", "étendu" selon le contexte. Si encodeur et décodeur s'accordent sur un dictionnaire de synonymes ordonné, le choix du synonyme encode un ou plusieurs bits.
Avec 2 synonymes : 1 bit. Avec 4 synonymes : 2 bits. Avec 8 : 3 bits. La contrainte est que le synonyme choisi doit rester naturel dans le contexte — sinon le texte trahit sa manipulation par son style inhabituel.
Dictionnaire partagé (exemple simplifié) : "grand" → [0] : "grand" [1] : "immense" "rapide" → [0] : "rapide" [1] : "vite" [2] : "véloce" [3] : "prompt" "commencer"→ [0] : "commencer" [1] : "débuter" Encodage de 0b10 01 0 (= 5 bits dans 3 mots) : Bit(s) pour "grand" : "10" → choisir synonyme index... (2 bits req.) → Mais "grand" n'a que 2 synonymes → 1 bit seulement ! → bit 1 → choisir "immense" Bits pour "rapide" (4 synonymes → 2 bits) : → bits "10" = index 2 → choisir "véloce" Bit pour "commencer" (2 synonymes → 1 bit) : → bit 0 → choisir "commencer" Texte original : "un grand projet rapide pour commencer" Texte stégo : "un immense projet véloce pour commencer"
Dictionnaires et WordNet
WordNet (Princeton) est la ressource lexicale de référence pour l'anglais : une base de données hiérarchique de synsets (ensembles de synonymes) avec leurs relations sémantiques. Des versions existent pour le français (WOLF, JAWS, FreWN) et de nombreuses autres langues.
WordNet anglais contient ~155 000 mots organisés en ~117 000 synsets. En pratique, on ne peut utiliser que les synonymes proches en contexte — "voiture" et "automobile" sont interchangeables, mais "véhicule" peut changer le registre du texte.
WordNet (EN)
NLTK117 000 synsets, 155 000 mots. Référence pour l'anglais. API Python : NLTK. wordnet.princeton.edu
WOLF (FR)
FRANÇAISWordNet du Français — 59 091 synsets. Couverture moins complète que l'anglais mais utilisable.
BabelNet
MULTILINGUERéseau sémantique multilingue couvrant 500+ langues. Basé sur Wikipedia et WordNets. API gratuite (limitée).
word2vec / GloVe
MLVecteurs de mots : trouver les mots les plus proches sémantiquement. Alternative moderne à WordNet pour les synonymes contextuels.
Algorithme d'encodage
ENCODAGE (Python + NLTK WordNet) :
from nltk.corpus import wordnet as wn
def get_synonyms(word, pos='n'):
synsets = wn.synsets(word, pos=pos)
if not synsets:
return [word]
# Tous les lemmes du premier synset
return [lemma.name() for lemma in synsets[0].lemmas()][:4] # max 4 synonymes
def encode(text, message_bits):
words = text.split()
result = []
bit_idx = 0
for word in words:
syns = get_synonyms(word.lower())
n_syns = len(syns)
if n_syns >= 2 and bit_idx < len(message_bits):
# Nombre de bits encodables : floor(log2(n_syns))
n_bits = int(math.log2(n_syns))
value = int(message_bits[bit_idx:bit_idx + n_bits], 2)
chosen = syns[value % n_syns]
result.append(chosen)
bit_idx += n_bits
else:
result.append(word)
return ' '.join(result)
# ATTENTION : ce code ignore le contexte grammatical
# → nécessite NLP plus sophistiqué pour être utilisableProblème du contexte
Le problème fondamental des synonymes est le contexte linguistique. "Grand" et "immense" ne sont pas toujours interchangeables : "un grand homme" (biographie) ≠ "un immense homme" (taille physique). Une substitution aveugle crée des textes stylistiquement suspects.
Accord grammatical
"cheval rapide" → "cheval véloce" (adjectif variable) vs "il court vite" → "il court rapidement" (adverbe)
Collocations figées
"prendre une décision" ≠ "saisir une décision" — certains synonymes ne s'utilisent pas dans les mêmes constructions
Registre de langue
"mourir" vs "décéder" vs "crever" (arg.) — même sens, registres très différents
Fréquence lexicale
Un texte utilisant "véloce" au lieu de "rapide" 5 fois de suite est statistiquement suspect
→ Les LLMs modernes (GPT-4, Claude) peuvent substituer des synonymes en respectant le contexte — mais ils introduisent leur propre style d'écriture, potentiellement détectable par les outils de détection d'IA (GPTZero, Originality.ai).
Comparaison avec les autres techniques texte
| Technique | Copier-coller | Analyse format | Analyse style |
|---|---|---|---|
| Zero-Width Unicode | ✓ survit | ✗ détectable | ✓ OK |
| Homoglyphes | ✓ survit | △ si regex | ✓ OK |
| Line Shifting (PDF) | ✗ perdu | △ coordonnées | ✓ OK |
| Synonymes sémantiques | ✓ survit | ✓ invisible | △ détectable |
Questions fréquentes
Comment le récepteur sait-il quel mot décoder ?
Émetteur et récepteur partagent le même dictionnaire de synonymes et le même ordre (index). Par exemple, si 'grand' a 4 synonymes dans leur dictionnaire commun (index 0=grand, 1=immense, 2=vaste, 3=énorme), 'vaste' encode l'index 2 = bits 10. Le récepteur applique le même dictionnaire à l'envers pour décoder.
Le texte résultant semble-t-il naturel ?
C'est le défi principal. Les synonymes parfaits sont rares — 'immense' et 'grand' ne s'utilisent pas dans exactement les mêmes contextes. Un texte trop rigide dans ses substitutions peut sembler artificiel. Les outils modernes utilisent des embeddings (word2vec, BERT) pour choisir le synonyme le plus naturel dans le contexte.
Pour quoi l'utilise-t-on pratiquement ?
Tatouage de textes longs (romans, articles, rapports) pour identifier la source d'une fuite. Communication discrète entre deux parties partageant le même dictionnaire. Stéganographie dans des contextes surveillés où les messages doivent sembler anodins (presse, communications diplomatiques).
Est-ce détectable automatiquement ?
Difficile. La stylométrie (analyse du style d'écriture) peut détecter des substitutions incohérentes avec le style habituel de l'auteur. Des outils d'attribution d'auteur peuvent repérer des anomalies. Mais sans le dictionnaire partagé, décoder le message est pratiquement impossible.
Quelle est la capacité d'encodage ?
Dépend du nombre de synonymes par mot-clé. Avec 2 synonymes : 1 bit par substitution. Avec 4 synonymes : 2 bits. Avec 8 synonymes : 3 bits. Un texte de 1000 mots avec 100 mots-clés remplaçables offre environ 100-300 bits de capacité selon le dictionnaire. C'est faible mais suffisant pour un court message.
Techniques texte connexes
Explorez les autres techniques de stéganographie textuelle.