SaveSaveSaveSave ← Tous les guides
Français

Traduction assistée par machine, non relue par des locuteurs natifs. En cas de doute, la version anglaise fait foi.

Guide · Risques des messages · · par Stefan Tsezarov · mis à jour le

Le texte que tu ne vois pas

Deux messages peuvent avoir exactement la même apparence et contenir des caractères complètement différents.

Tu copies un message.

Il a l’air normal.

Trois phrases ordinaires. Rien d’étrange.

Tu le colles dans un document, un site, un wallet ou un assistant IA.

Et soudain, il se passe quelque chose que le message, tel que tu l’as vu, ne semblait pas dire.

Comment ?

Parce que ce que tu vois à l’écran n’est pas forcément tout ce que contient le texte.

Certains caractères n’occupent aucun espace visible.

Ils sont quand même là.

Ils peuvent toujours être copiés, collés, enregistrés et traités.

Simplement, tu ne les vois pas.


Ton ordinateur ne voit pas les lettres comme toi

Quand tu regardes une phrase, tu vois des formes.

Ton ordinateur voit des données.

La lettre A, par exemple, est représentée par un caractère Unicode avec un point de code précis. Une espace est un autre caractère. Chaque lettre, chiffre, signe de ponctuation et beaucoup d’autres symboles ont leur propre représentation.

Mais tous les caractères ne produisent pas une forme visible.

Certains caractères disent au logiciel comment le texte doit se comporter.

Ils peuvent dire à un programme :

Tu peux donc avoir deux textes qui ont l’air identiques tout en étant des suites de caractères différentes.

Cette différence peut compter.

Beaucoup.

Trois types de texte invisible à connaître

Plusieurs mécanismes entrent en jeu, mais trois sont particulièrement utiles à comprendre.

1. Des caractères qui n’apparaissent pas

On les appelle souvent caractères de largeur nulle.

Parmi eux : l’espace de largeur nulle, le liant de largeur nulle et le gluon de mots.

Ils occupent une position dans le texte mais ne produisent aucun pixel visible.

Par exemple, ces deux mots peuvent avoir l’air identiques :

Deux mots · l’un n’est pas ce qu’il paraît

payment

pay​ment

premier : 7 caractèressecond : 8 caractères

Il y a un caractère invisible dans le second.

Tu ne le vois probablement pas.

Ton ordinateur, si.

Cela signifie que les deux chaînes ne sont pas réellement identiques.

Cela peut affecter les recherches, les filtres, les noms d’utilisateur, les identifiants et les autres systèmes qui comparent les caractères sous-jacents plutôt que ce que voit une personne.

Et certains de ces caractères existent pour une raison légitime.

Nous y reviendrons.

2. Des caractères qui changent l’ordre que tu vois

Certains caractères invisibles agissent sur le sens du texte.

C’est nécessaire, car des langues comme l’arabe et l’hébreu s’écrivent de droite à gauche, alors que le français s’écrit de gauche à droite.

Une phrase qui contient les deux peut avoir besoin d’instructions qui disent au logiciel comment afficher chaque partie.

Ces instructions peuvent être utiles.

Mais on peut aussi en abuser.

Un caractère de contrôle de direction peut faire apparaître à l’écran dans un autre ordre les caractères enregistrés par un ordinateur.

Cela crée un problème de sécurité évident.

Un nom de fichier, par exemple, peut sembler se terminer par une extension alors que sa suite réelle de caractères dit autre chose.

Le même principe peut compter dans le code source.

La personne qui relit voit une chose.

L’ordinateur en traite une autre.

3. Des caractères qui peuvent porter un message invisible

C’est le cas inhabituel.

Unicode contient une plage appelée bloc Tags.

Ces caractères ont été conçus pour étiqueter et sont normalement invisibles à l’affichage.

L’intérêt, c’est que chaque caractère Tag peut représenter un caractère ASCII ordinaire.

Mets-en assez bout à bout et ils peuvent encoder du texte.

Une phrase peut donc contenir une suite supplémentaire de caractères qui n’apparaît pas à l’écran.

À tes yeux, le message peut ressembler à une salutation tout à fait ordinaire.

Pour un logiciel qui lit les caractères sous-jacents, il peut y avoir beaucoup plus.

Et cette différence devient particulièrement intéressante quand la destination est un assistant IA.

Une IA ne voit pas ton message comme une photo de l’écran.

Elle traite les caractères.

Donc quelque chose que tu ne peux pas voir peut quand même faire partie de l’entrée.

Voici à quoi ça ressemble

Prends cette phrase :

Send the payment to the address below.

Ça a l’air normal, non ?

Imagine maintenant qu’on y a inséré des caractères invisibles.

À l’écran, elle peut toujours ressembler à ceci, et celle-ci est la vraie, préparée pour que tu la testes :

Un exemple préparé · sélectionne-le, copie-le, analyse-le

Send the​ payment⁠ to the​ address below.󠁨󠁩󠁤󠁤󠁥󠁮

caractères visibles : 38caractères réels : 47différence : 9

Mais en dessous, l’ordinateur peut contenir des caractères supplémentaires.

Par exemple :

La même phrase, décrite

Ce que tu vois :

Send the payment to the address below.

Ce que reçoit l’ordinateur :

Send the invisible payment invisible … TAGS

La phrase visible n’a pas changé.

La chaîne sous-jacente, si.

C’est l’idée importante.

Même apparence. Données différentes.

Si tu passes l’exemple préparé dans un scanner, le scanner peut identifier ces caractères même si tes yeux ne le peuvent pas.

Retape la phrase visible à la main et ces caractères cachés ne suivent pas.

C’est toute l’astuce.

La lettre qui n’est pas la lettre

Les caractères invisibles ne sont pas le seul problème.

Parfois, le caractère est parfaitement visible.

Simplement, ce n’est pas le caractère que tu crois.

Regarde ces deux-là :

Même forme · caractères différents

savesavesave

sаvesavesave

seconde chaîne, 2e caractère : cyrillique U+0430pas le latin U+0061

Ils sont presque impossibles à distinguer.

Mais regarde attentivement le second.

Le deuxième caractère n’est pas la lettre latine a.

C’est un а cyrillique.

Ils se ressemblent.

Ce sont des caractères différents.

Cette technique s’appelle une attaque par homoglyphe.

La même idée peut servir avec des noms d’utilisateur, des noms de domaine, des noms de tokens et d’autres identifiants.

Un faux compte peut utiliser un caractère sosie.

Un faux site peut utiliser un domaine sosie.

Pour une personne, le nom peut paraître familier.

Pour un ordinateur, c’est une chaîne complètement différente.

Où cela peut-il vraiment poser problème ?

Ce n’est pas qu’une curiosité d’Unicode.

Cela compte partout où du texte est copié, comparé ou utilisé pour agir.

Assistants IA

Tu colles un message dans un assistant IA.

Tu vois une question.

Le texte sous-jacent peut contenir des caractères que tu ne vois pas.

Comme l’assistant traite le texte réel, et pas seulement son apparence, ces caractères font partie de l’entrée.

C’est pourquoi les vérifications de caractères invisibles peuvent être utiles avant de coller un texte non fiable dans un système qui peut agir ou traiter des informations sensibles.

Noms d’utilisateur et noms de comptes

Deux comptes peuvent sembler avoir le même nom tout en contenant des caractères différents.

Cela rend l’usurpation d’identité beaucoup plus difficile à remarquer.

Liens et domaines

Un lien peut contenir des caractères qui ressemblent à des lettres familières.

Le nom que tu reconnais n’est pas forcément le domaine exact que tu crois.

Code

Les caractères de contrôle de direction et d’autres caractères Unicode inhabituels peuvent rendre le code source plus difficile à relire correctement.

La personne qui développe voit le texte affiché.

Le compilateur voit les caractères réels.

Recherche et filtrage

Un filtre compare généralement des chaînes.

Insère un caractère invisible et la chaîne change.

Cela peut affecter les recherches, les listes de blocage, les systèmes de modération et d’autres outils de traitement de texte.

Comment vérifier ?

Pas besoin de devenir expert en Unicode.

Il existe quelques vérifications simples.

VÉRIFICATION 1 : analyse le texte

Colle le texte suspect dans un scanner de sécurité des caractères.

Un scanner utile devrait te dire :

C’est ce que le scanner de ce site est conçu pour montrer.

L’important, c’est qu’il te dise ce qu’il a réellement trouvé, plutôt que de t’afficher simplement un mystérieux voyant vert ou rouge.

VÉRIFICATION 2 : compare le nombre de caractères

C’est un contrôle de bon sens rapide.

Si une phrase semble contenir 38 caractères mais qu’un compteur en indique 47, il y a une différence qui mérite d’être examinée.

Un nombre de caractères ne te dira pas quels sont les caractères en trop.

Mais il peut te dire qu’il y a quelque chose que tu ne vois pas.

VÉRIFICATION 3 : retape le texte quand c’est pertinent

Si quelqu’un t’envoie une courte instruction et que tu n’as pas besoin de garder la mise en forme d’origine, taper toi-même la partie importante peut éliminer les caractères invisibles du texte copié.

Mais rappelle-toi :

Retaper ne rend pas la destination fiable.

Si quelqu’un t’envoie une adresse web suspecte, par exemple, la taper à la main ne prouve pas que le site lui-même est légitime.

C’est seulement une façon d’éviter les caractères cachés dans le texte que tu copies.

VÉRIFICATION 4 : lis le domaine réel

Ne te fie pas seulement à l’apparence d’un domaine.

Si un lien compte, vérifie le domaine réel.

Pour les comptes importants, utilise un favori déjà enregistré ou tape toi-même l’adresse connue au lieu de suivre un lien inattendu.

Le même principe vaut pour les noms d’utilisateur et les adresses de wallets :

reconnaître la forme n’est pas la même chose que vérifier les caractères.

Ne panique pas si tu trouves un caractère invisible

C’est important.

Invisible ne veut pas automatiquement dire malveillant.

Certains caractères Unicode invisibles existent parce que les gens en ont vraiment besoin.

Les liants de largeur nulle, par exemple, peuvent influer sur la façon dont les caractères se joignent dans divers systèmes d’écriture.

Ils servent aussi dans les séquences d’émojis.

Les caractères de contrôle de direction sont nécessaires pour afficher correctement un texte qui mélange des écritures de gauche à droite et de droite à gauche.

Trouver un caractère invisible ne signifie donc pas automatiquement :

« C’est une attaque. »

Cela signifie :

Il y a ici quelque chose que je ne vois pas.

Ce que cela signifie dépend du contexte.

Qui a envoyé le texte ?

Que te demande le texte ?

Où t’apprêtes-tu à le coller ?

Va-t-il dans un assistant IA, un wallet, un site, un terminal ou un autre système qui agira en conséquence ?

Ces questions comptent.

Le bloc Tags mérite une attention particulière

Les caractères Tags sont inhabituels parce que leur rôle est de représenter de l’information tout en restant invisibles dans un affichage de texte normal.

Si un inconnu t’envoie un message qui en contient une suite inattendue, cela mérite d’être examiné.

Un scanner peut révéler que ces caractères existent et, le cas échéant, décoder le texte qu’ils représentent.

Mais même alors, la détection ne te dit pas l’intention de l’expéditeur.

Elle te dit ce que contient le texte.

C’est une réponse bien plus utile et défendable.

Ce qu’une analyse propre te dit, et ce qu’elle ne te dit pas

C’est un autre point où les outils de sécurité doivent être honnêtes.

Un scanner détecte des caractères.

Il ne lit pas dans les pensées.

Si le scanner trouve des caractères invisibles, il peut te dire lesquels.

Il ne peut pas te dire qui les a insérés.

Il ne peut pas prouver pourquoi ils ont été insérés.

Et s’il ne trouve rien, cela ne veut pas dire que le message lui-même est fiable.

Une phrase d’aspect tout à fait normal peut quand même contenir un mensonge, un lien malveillant ou une instruction dangereuse.

De même, un message contenant un caractère invisible peut être tout à fait inoffensif.

La détection automatique des homoglyphes a aussi ses limites. Un scanner peut vérifier des caractères sosies connus et des jeux de caractères connus, mais aucune vérification seule ne doit être considérée comme une garantie que toutes les tromperies visuelles possibles ont été trouvées.

Le résultat te dit ce qui a été détecté.

C’est toujours à toi de décider ce que signifie le texte et si tu fais confiance à sa source.

L’habitude simple qui vaut la peine

Pas besoin d’avoir peur de copier-coller.

Ralentis simplement quand le texte que tu copies est sur le point de déclencher quelque chose.

Un assistant IA.

Un wallet.

Un site.

Une ligne de commande.

Un compte.

Une transaction financière.

Un morceau de code.

Si tu n’as pas tapé le texte toi-même, tu ne sais pas forcément tout ce qu’il contient.

Et tu n’as pas à deviner.

Vérifie les caractères avant de les laisser agir.

Ça prend quelques secondes.

Et dans bien des cas, la vérification est gratuite.


Cet article a une visée uniquement pédagogique. Il explique comment les caractères Unicode invisibles, les contrôles de sens du texte et les caractères sosies peuvent affecter le texte numérique. L’exemple de cette page contient des caractères invisibles insérés volontairement pour que tu puisses examiner le mécanisme toi-même. Le texte caché est inoffensif et n’existe qu’à des fins de démonstration.

Les caractères invisibles survivent au copier-coller, donc le scanner les voit dans tous les cas. Pour éviter de coller, utilise le favori d’analyse du texte sélectionné.