CAPTCHA LECTURE

L'opacité et la lisibilité sur le web

Le CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) est une famille de tests automatiques visant à discriminer les humains des ordinateurs dans le but de contrôler l’accès à certains services web. Il s’agit, par un défi-réponse, de vérifier que l’utilisateur n’est pas un robot malveillant dédié par exemple à l’envoi de spams ou à l’extraction automatisée de bases de données.

Les CAPTCHA de Gmail

Le CAPTCHA se développe dans le début des année 2000 par les ingénieurs de la Carnegie Mellon University pour contrer les logiciels de reconnaissance de caractères OCR. Pour se faire, l’équipe développeuse du CAPTCHA étudie le manuel de son numériseur et prend le contre-pied de toutes les recommandations données pour améliorer les performances de son système de reconnaissance de caractères. L’équipe conçoit des images casse-têtes utilisant des polices d’écritures disparates, des fonds hétérogènes, des déformations… Les ingénieurs inventent de multiples exemples, dont les premiers sont largement utilisés par Yahoo!

Ce CAPTCHA de «smwm» rend difficile son interprétation par un ordinateur, en modifiant la forme des lettres et en ajoutant un dégradé de couleur en fond. Ces procédés peuvent cependant compromettre la reconnaissance des caractères par un humain. Image par Martin sur Wikipédia.

Un exemple de reCAPTCHA datant de 2007: plutôt que d’utiliser un dégradé du fond et une distorsion des lettres, la segmentation est rendue difficile par l’ajout d’une ligne brisée. Image par BMaurer sur Wikipédia.

Une forme de course-poursuite commence alors entre l’amélioration progressive des robots lecteurs et le brouillage des CAPTCHA, entrainant la déformation accrue des caractères, l’usage de couleurs et même le développement de CAPTCHA animés dont les caractères se déforment avec le temps…

un CAPTCHA animé utilisé par Yahoo!

Le meilleur moyen de contourner l’obstacle qu’il représente, notamment pour mener des campagnes de marketing automatisées, reste de faire appel à des êtres humains. Des sociétés - indiennes principalement, car la main-d’œuvre est très peu chère - se spécialisent dans le décodage des CAPTCHA. Des opérateur·ices les transcrivent en série, jusqu’à plusieurs centaines par heure. Ainsi, ces travailleur·euses à l’autre bout du monde permettent à des robots de se faire passer pour des humains pour mener des campagnes de marketing automatisées.

Très vite, Google met à profit les capacités de reconnaissance que le test mobilise chez les utilisateur·ices humains pour entraîner par la même occasion les intelligences artificielles qu’il développe : c’est le reCAPTCHA. En 2012, les reCAPTCHA consistent en la reconnaissance d’éléments au sein d’images issues de Google Street View pour améliorer la reconnaissance de formes des IA.

Un autre moyen de rendre la segmentation difficile est d’imbriquer les lettres les unes dans les autres, une technique utilisée par Yahoo! pour générer ses CAPTCHA en 2007.

La reconnaissance des CAPTCHA typographiques, quand à elle, s’inscrit dans le projet Google Books, qui numérise les livres du monde entier par brassée. Les caractères numérisés sur des pages froissées ou abimées, difficilement reconnaissables, peuvent alors être déchiffrés grâce aux millions de transcriptions effectuées par les internautes qui entrainent les logiciels de reconnaissance de texte. Ainsi, lorsque l’on transcrit un CAPTCHA, il y a des chances pour que l’on participe à l’amélioration des logiciels de Google. Il y a des chances, donc, que l’on travaille pour Google.

Si l’usage des CAPTCHA typographiques est devenu obsolète sur le web, les formes graphiques qui en ont découlé peuvent être aujourd’hui réinvesties comme outils de contre-surveillance.

Les CAPTCHA utilisés pour écrire le texte de CAPTCHA LECTURE ont été générés de manière à l’aide de scripts automatisés sur le logiciel Adobe Illustrator. Cette édition s’inscrit dans un projet de recherche sur la lecture du texte par les machines, et les moyens de déjouer celle-ci.

Dans un souci de protection de la vie privée, on pourrait imaginer une police complète qui fonctionnerait comme un CAPTCHA et qui serait illisible pour les OCR ultra-performantes: une telle police devrait être constamment en évolution pour contrer le développement des logiciels de reconnaissance de texte…

Mais au-delà de son efficacité, cette police CAPTCHA proposerait une réponse graphique et symbolique au besoin d’empêcher les ordinateurs de lire tout ce que nous écrivons.

Chiffrer les chiffres
Partie 1

Le code de César et la nature du texte numérique

Tout au long de l’histoire, la cryptographie a été utilisée pour communiquer des secrets d’État et militaires. Dès le Ier siècle av. J.-C., Jules César chiffre ses correspondances privées et militaires en utilisant une méthode de substitution monoalphabétique, appelée aujourd’hui « chiffre de César ». Elle consiste à décaler au sein d’un message les lettres de l’alphabet d’un nombre n. Par exemple, si l’on remplace A par D (n=3), on remplace B par E, C par F… Si l’information non chiffrée (appelée « texte clair » dans le vocabulaire cryptographique) est le mot « SECRET », le « texte chiffré » est alors : « VHFUHW ».

Le ou la destinataire doit connaitre la clé de chiffrement pour retransformer le texte chiffré en texte clair. Le code de César est relativement simple à décrypter, mais les chiffrements modernes utilisent des méthodes similaires en employant des clés basées sur des nombres premiers très élevés pour résister aux méthodes de décryptage employées par de puissants ordinateurs.

Pour s’aider à chiffrer et déchiffrer un chiffre de césar, on peut utiliser une roue de chiffrement. Elle se présente sous la forme de disques concentriques coulissants, sur la circonférence desquels est inscrit un alphabet. On fait glisser la roue de n cases pour faire correspondre les lettres de l’alphabet en clair et celles de l’alphabet crypté. Le cryptage et le décryptage sont ainsi plus rapides, plus simples et moins sujets aux erreurs. Dans le cas de l’alphabet latin, le chiffre de César n’a que 26 clés possibles (y compris la clé nulle, qui ne modifie pas le texte).

De nos jours, les échanges de texte se font principalement sous forme numérique, et l’affichage d’un caractère sur un écran passe par plusieurs étapes de codage et de décodage. L’aspect visuel d’une lettre — sa forme — ne constitue pas aux « yeux » des ordinateurs une donnée significative : les données textuelles sous leur forme informatique sont constituées de séquences d’un et de zéro, optimisées pour un stockage compact et un traitement en aval.

Chaque lettre affiché sur un écran est asssociée à un point de code

De nombreuses normes d’encodage des lettres en chiffres ont été proposées depuis le début des années 1960. Le système le plus abouti aujourd’hui est la norme Unicode, proposé par l’informaticien John Becker en 1987. Ce standard informatique uniformise le codage des glyphes appartenant à divers langages, permettant les échanges de textes numériques à un niveau mondial. Dans Unicode, un caractère correspond à un point de code. Les points de code sont les numéros attribués par le consortium Unicode à chaque caractère dans chaque système d’écriture. Les points de code sont notés « U+ » suivi de 4 à 6 chiffres en hexadécimal. Par exemple, U+0041 code le A majuscule latin.

Johannes Bergerhausen, Decodeunicode - Die Schriftzeichen der Welt, Verlag Hermann Schmidt, 2011

Lorsque le codage des caractères utilisé pour enregistrer un texte est différent de celui utilisé pour l’afficher — c’est-à-dire que le codage n’est pas uniformisé —, le texte apparait à l’écran comme du Mojibake (du japonais 文字化け, « transformation de caractères »), une suite de glyphes incompréhensibles. Par exemple, la suite de glyphes Þ¥¿é£ æØ¢Ã?☒اŮæØÃ???½ peut-être considérée comme du mojibake. Il s’agit d’une erreur de codage facilement évitable en utilisant la norme Unicode.

La Wikipédia en japonais encodé en UTF-8, affiché avec l’encodage Windows-1252.

Mais ces attributions erronées peuvent aussi nous servir a tromper les machines. Si l'on associe délibérement une lettre à un point de code qui ne lui correspond pas, la suite de lettres (de chiffres) pourra être lu par la machine mais ne correspondra à aucun mot existant.

Lors de la création d’une police de caractère, on peut dessiner un « A » dans la case codée pour accueillir un « B » et procéder ainsi avec le reste de l’alphabet. On peut exécuter cette attribution à la manière d’un chiffrement par décalage — décaler les lettres et leurs formes d’un pas régulier dans la suite des cases typographiques — ou aléatoirement. Ainsi, une fois la fonte exportée et installée, les caractères tapés sur le clavier d’un ordinateur ne correspondront pas à ceux affichés à l’écran.

clavier -> encodage -> affichage

Cette manipulation des caractères et de leur encodage permet d’éviter qu’un contenu « secret » publié sur le web puisse être lisible par les bots qui scrappent le Net pour en récolter le contenu textuel. Aux yeux des machines, les messages ainsi codés restent des suites de chiffres, mais leur restitution n’aura aucun sens pour quiconque n’a pas accès à la typographie chiffrée. La typographie devient alors la clé de chiffrement.

Le contenu textuel de ce site est ainsi chiffré.

Chiffrer les chiffres
Partie 2

Workshops

La première partie du workshop Crypte-ta-fonte présente la marche à suivre pour chiffrer efficacement une police de caractère.

On sait maintenant comment chiffrer une fonte. Mais comment l'utiliser sans se donner une migraine? La seconde partie du workshop est dédiée à la création d'un sur-clavier chiffré.

Deux sur-claviers personnalisés.

Bounding boxes

Si les données textuelles sont rendues lisibles grâce aux fontes, l’étape inverse (le fait de passer de l’image d’une lettre à sa valeur numérique) est plus compliquée pour les machine. Lorsque l'on transforme un texte numérique en pixels ou en tracé dans un éditeur d’images, on réduit considérablement les possibilités d’édition de ce texte. En effet, d’un point de vue numérique, les lettres de cette image ne sont pas du texte — ou, du moins, pas dans le format attendu par un ordinateur. Pour repasser ce texte sous un format compréhensible par les machines, il faut faire usage d'un OCR (Optical Caractère Recognition).

Pour décoder les lettres sous forme d’images, la plupart des systèmes OCR fonctionnent en deux étapes. La première étape est la localisation : il s’agit pour la machine de trouver le texte dans cette image. Lors de l’analyse de document, cette étape peut consister à identifier des lignes de base cohérentes, tandis que dans les scènes naturelles, elle peut impliquer une analyse procédurale plus complexe, des traitements statistiques ou des outils de deep learning. Par exemple, le système Rosetta de Facebook fait d’abord passer l’entrée par un détecteur d’objets basé sur un réseau neuronal, qui dessine des « boîtes englobantes » autour du texte dans l’image. Les bounding boxes « ciblent » le texte à lire.

Les « boîtes englobantes » du système de reconnaissance Rosetta de Facebook.

Traitement de l'image en vue de la reconnaissance des caractères. Le contraste des images est accentué pour mieux délimiter la forme des lettres.

Si le système n’arrive pas à déterminer où sont les lettres, alors la machine ne peut pas lire le texte. Pour brouiller la localisation des lettres, on peut créer, comme avec la grille de Cardan, un « texte ordinaire » dans lequel le message secret va être dissimulé.

Une capture d'écran de l'application Google Lens sur portable. Google Lens ne détecte pas les lettres du mot « secret » (en jaune) inscrites dans celles du mot « text » (en noir). La bounding box déssinée par l'application (rectangle gris clair) autour du mot le plus grand semble empêcher la détection d’autres lettres au sein de la même zone. On peut ainsi écrire des textes indetectable par l'OCR pourtant très performant de l'application.

Ce système de message caché peut s'appliquer, par exemple, sur des banderoles réalisées au pochoir ou sur des posts Instagram pour contourner les formes de censures automatisées.

Les banderoles de la grève générale de la HEAR, réalisées au pochoir. Pour inscritre le texte secret au sein du slogan principal, il faut placer les contreformes des lettres découpées dans les bâches plus petites avant de bomber la banderole.

Les images comme programmes

Dans les années 80 le philosophe, écrivain et journaliste Vilém Flusser présage que l’écriture telle qu’on la connait va laisser place à des formes de transmissions visuelles non linéaires. Les images numériques sont, selon lui, le point de départ d’une révolution culturelle qui remplacera le texte comme outil dominant de création et de médiation de l’information.

« L’écriture, au sens où l’on place les lettres et autres marques les unes à la suite des autres, semble avoir peu ou pas d’avenir. Les informations sont désormais transmises plus efficacement par d’autres codes que ceux des signes écrits. »

Vilém Flusser, Does Writing Have a Future ?, University of Minnesota Press, 2007 (1987)

Il ajoute que ce qui était autrefois écrit peut maintenant être transmis sur des cassettes, des films, des bandes vidéo, des vidéodisques ou des disques durs, et que beaucoup de choses qui ne pouvaient pas être écrites jusqu’à présent peuvent dorénavant être transcrites dans ces nouveaux formats.

De nos jours le texte n’a pas disparu, mais les images sont en effet massivement utilisées pour communiquer, qu’elles soient combinées avec du texte ou qu’elles le contiennent.

Les memes combinent texte et image.

Photographie d’une manifestation

L'application de reconnaissance Google Lens détecte les images et le texte.

Toutes ces images sont computées et capitalisées par les ordinateurs notamment grace à la Computer Vision (CV ou Vision par Ordinateur), une technique d'intelligence artificielle qui consiste à analyser puis interpréter une image ou une vidéo. La CV est elle-même constituée de plusieurs branches, dont la reconnaissance d’image (qui contient la reconnaissance optique de caractère, ou OCR).

Si le terme "vision" peut suggérer que la machine fonctionne et "voit" comme un humain, la réalité est assez différente: la reconaissance d'image par la CV se fonde sur l'analyse de pixels au sein d'une image là où, selon le psychologue de la perception James Gibson, la perception visuelle des humains est poreuse et constament influencée par son environnement. (James J. Gibson, Approche écologique de la perception visuelle, Éditions Dehors, 2014 (1979)

La detection d'objet de Google AI, une branche de la Computer Vision

La nature des images et le fonctionnement de la vision sont donc de natures très différentes pour les humains et les ordinateurs. C'est sur cette différence que l'on va s'appuyer pour contrer la lecture par les machines.

Si pour les machines les lettres sont des images et que les images sont des programmes, est-il possible de déjouer/manipuler les infrastructures numériques (les conduits de la surveillance), par la typographie?
Pour répondre à cette problématique, il faut d'abord comprendre comment le texte lu par les machines est exploité.

Une inspection du code d'Instagram et de la balise img alt nous indique que le texte présent sur les images postées est lu par l'application.

Sur le web, c'est dans la balise img alt qu'est décrit le texte lu par les OCR. Cette balise est à l'origine destinée à faciliter l'usage du web pour utilisateur·ices malvoyant·e, mais la lecture du texte est aussi largement utilisée pour réferencer les images et cibler les utilisateurs selon le contenu qu’il produisent ou consomment.

Photo trouvée dans Google image en tapant dans la barre de recherche le slogan inscrit sur le t-shirt de la fille au premier plan, qui est le titre d'un album de Drake.

Bien évidemment un tel accès aux information privées, bien qu'elles soient parfois partagées publiquement (une forme d'autoveillance), soulève des questions relatives à la vie privée et la surveillance.

La censure sur Wechat. Certains mots sont "bannis" par l'application et les messages les comportant ne sont pas recevables dans certaines zones géographiques. Le "shadowban" d'Instagram fonctionne sur un principe similaire.

Comme on a pu le voir sur les photos précédentes, lorsqu'une image contenant du texte est lue par une machine celui-ci est intégré à son code source. On peut alors exploiter la lecture des textes par les OCR en leur injectant du code. Il s'agit de faire lire à la machine une commande qu'elle executera automatiquement. Au sein du texte lu, on ferme une phrase attendue avec des guillemets et l'on execute des commandes arbitraires. Avec ce pseudocode on demande par exemple aux systèmes qui lisent le message d’envoyer sur une adresse mail dédiée leur adresse ip et leur mot de passe.

Portée dans l'espace publique (imprimée sur un T-shirt ou casquette par exemple), cette injection permettrait d'obtenir des données sur les systèmes de surveillance qui nous entourent et de prendre leur contrôle.

Publication secret

La grille de cardan est un système de communication secrète faisant usage d’une grille de décodage. En 1550, Girolamo Cardano, connu en France comme Jérôme Cardan, propose une méthode de chiffrage simple. Il s’agit d’intégrer un message secret dans une lettre ordinaire de sorte que, aux yeux de tous, l’ensemble du texte ne soit pas identifié comme un quelconque chiffrement. Le message secret est révélé lorsqu’on y appose une feuille (de papier ou de métal) percée aux endroits où l’on souhaite révéler le texte sous-jacent. Ainsi, il s’agit d’écrire un message dans celui d’un texte préexistant. L’opération peut aussi se faire dans le sens inverse — en écrivant un message secret dans les trous de la grille puis en complétant les espaces entre les mots avec du faux texte pour dissimuler le message confidentiel — mais le texte « ordinaire » paraitra peu naturel aux yeux des observateurs non complices, éveillant ainsi les soupçons. Cette forme de communication est stéganographique : elle consiste à transmettre un message de manière inaperçue au sein d’un autre message.

Un message seret révélé par une grille de cardan.

Le format fixe imposé par la grille le rend particulièrement compatible à un usage contemporain sur les réseaux sociaux. Instagram, qui est la plateforme privilégiée par la gen Z pour communiquer, impose de poster et de lire des images sous un ratio 1:1 , 1.91:1 ou 4:5. Le plus souvent, c'est le format carré qui est utilisé. Si l'on adapte une grille au format des posts et que l'on prend en compte les varitions d'affichage selon les téléphones portables, on peut créer un système de communication secrète accessible seulement aux détenteur·ices de la grille.

Il existe un espace sur Instagram où les posts textuels alambiqués n'attirent pas l'attention: c’est celui des inspirational quotes, ou "citations inspirantes". Un compte dédié à ce genre de posts, souvent considérés inoffensifs ou futiles, peut servir de couverture à une communauté pour échanger des messages secrets. La grille peut être conservée à part ou aposée sur les écrans de téléphones de manière permanente avec un protège écran.

Un poste du compte @inspirationalquooote, sans et avec la grille permettant de lire le message secret.

Dazzle camouflage

Le Dazzle camouflage (ou en français « camouflage d’éblouissement »), est une technique mise au point par les peintres Norman Wilkinson (pour la marine militaire anglaise) et Everett Warner (pour la marine américaine) et utilisée principalement durant la Première Guerre mondiale. Ce camouflage apposé sur d’énormes navires de guerre n’avait pas pour objectif de les dissimuler, mais de perturber les télémètres et les méthodes d’estimation utilisées par l’artillerie adverse (perturbation de l’estimation de la vitesse, de la trajectoire, de la distance, de la géométrie du navire).

Aujourd’hui cette technique militaire est réinvestie à des fins capitalistes. Les motifs Dazzle servent à camoufler les prototypes de voiture pas encore sortis sur le marché en venant perturber la mise au point des appareils photo des potentiels espions industriels. Le Dazzle est par la suite devenu un motif récurrent dans le monde du tuning.

Des voitures camouflées en Dazzle.

Le motif Dazzle étant difficile à photographier, il peut être réinvesti pour dissimuler du texte, des codes barres, des QR codes ou tout simplement des individus.