CAPTCHA

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
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.
CAPTCHA plus récent (reCAPTCHA) : 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.
Un autre moyen de rendre la segmentation difficile est d'imbriquer les lettres les unes dans les autres, comme dans le format actuel de CAPTCHA de Yahoo.

Le terme CAPTCHA est une marque commerciale de l'université Carnegie-Mellon désignant une famille de tests de Turing permettant de différencier de manière automatisée un utilisateur humain d'un ordinateur.

C'est un test de défi-réponse utilisé dans le domaine de l'informatique, ayant pour but de s'assurer qu'une réponse n'est pas générée par un ordinateur. L'acronyme « CAPTCHA » est basé sur le mot capture, et vient de l'anglais completely automated public Turing test to tell computers and humans apart[1].

Parce que le test est réalisé par un ordinateur, en opposition avec les tests de Turing standard réalisés par des humains, un captcha est souvent décrit comme un test de Turing inversé. Ce terme est néanmoins ambigu parce qu’il pourrait aussi signifier que les participants essaient de prouver qu'ils sont des ordinateurs.

Histoire[modifier | modifier le code]

Dès le début d'Internet, les utilisateurs ont toujours voulu rendre le texte illisible par les ordinateurs. Les premiers furent les hackers, postant sur des sujets sensibles dans des forums en ligne, qui étaient automatiquement surveillés avec des mots-clefs. Pour contourner ces filtres, ces hackers ont commencé à remplacer les mots par des caractères visuellement ressemblants. Par exemple, HELLO pouvait être remplacé par |-|3|_|_() ou )-(3££0, ainsi qu'une multitude d'autres variantes numériques. Ainsi les filtres à mots-clefs ne pouvaient pas tous les détecter. Ce procédé fut plus tard connu sous le nom de « 13375p34k » (leetspeak).

La première réflexion sur la création de tests automatiques qui pourraient distinguer les humains des ordinateurs dans le but de contrôler l'accès aux services web est apparue dans un manuscrit de Moni Naor de l'institut de science de Weizmann, daté de 1996, et intitulé Verification of a human in the loop, or Identification via the Turing Test. Des captchas primitifs semblent avoir été développés plus tard, en 1997 chez AltaVista par Andrei Broder et ses collègues dans le but d'empêcher des robots d'ajouter des sites à leur moteur de recherche.

En recherchant un moyen de rendre leurs images résistantes à des attaques de logiciels de reconnaissance de caractères, l'équipe a cherché dans le manuel de leur numériseur de marque Brother, qui donnait des recommandations pour améliorer les performances de la reconnaissance de caractères (types d'écritures similaires, fond homogène…). L'équipe conçut des puzzles en essayant de simuler ce qui pourrait causer une mauvaise reconnaissance automatique de caractères. En 2000, von Ahn et Blum développèrent et publièrent la notion de captcha, qui comprenait tout programme qui pouvait différencier un humain d'un ordinateur. Ils inventèrent de multiples exemples de captcha, dont les premiers furent largement utilisés (par Yahoo! notamment).

Une course incessante est lancée entre l'amélioration des robots pour la lectures des captchas et le brouillage des captchas eux mêmes. Les caractères sont de plus en plus déformés, les couleurs sont également utilisées pour rendre le code moins lisible. Il existe également des captchas animés ou les caractères se déforment également avec le temps.

Cela ne va pas sans augmenter les problèmes d'accessibilités des personnes ayant une vision déficiente ou ne voyant simplement pas. Pour remédier au problème avec les non voyants, différents systèmes de captchas proposent de choisir entre captcha graphique et sonore.

Pour contourner le problème, certaines sociétés engagent des humains pour décoder des captchas. D'autres sociétés, afin de réduire les coûts de la main d’œuvre, renvoient le captcha dans des logiciels permettant d'accéder par exemple à des images pornographiques. Leur clients, se chargeront donc de décoder le captcha pour accéder à leurs images et les robots pourront avec cette réponse continuer à envoyer des spams à peu de frais, voire avec le double bénéfice de la vente d'images pornographiques et de la publicité faite par le spam ajouté[2].

À propos du nom[modifier | modifier le code]

« Captcha » est un rétroacronyme : le mot se prononce comme capture en anglais américain et est censé être composé des initiales de Completely Automated Public Turing test to Tell Computers and Humans Apart, soit en français, « test public de Turing complètement automatique ayant pour but de différencier les humains des ordinateurs ». Ce terme, qui est une marque déposée par l'université Carnegie-Mellon, a été inventé en 2000 par Luis von Ahn, Manuel Blum et Nicholas J. Hopper de cette université, et par John Langford d'IBM. Le nom "captcha" peut également être interprété comme "capture character" (capture de caractères).

Caractéristiques[modifier | modifier le code]

Les captchas sont, par définition, entièrement automatisés, ne nécessitant qu'une petite intervention humaine lors de l'utilisation du test. Ceci présente donc des bénéfices au niveau des coûts et des performances.

L'algorithme utilisé pour créer un captcha est souvent public, bien qu'il puisse être breveté. Ceci est fait dans le but de démontrer que casser ce type de test nécessite la résolution d'un problème difficile en faisant appel à des notions de l'intelligence artificielle, plutôt que la découverte des secrets de l'algorithme, qui pourraient être obtenus par décompilation ou un autre moyen.

Applications[modifier | modifier le code]

Le test de Turing utilisé sur Wikipédia est une séquence de lettres brouillées et déformées ; ici l'utilisateur doit reconnaître la séquence de lettres captcha.

Ce test est utilisé sur Internet dans les formulaires pour se prémunir contre les soumissions automatisées et intensives réalisées par des robots malveillants.

La vérification utilise la capacité d'analyse d'image ou de son de l'être humain. Un captcha usuel requiert ainsi que l'utilisateur saisisse au clavier une courte séquence improbable d'une demie-douzaine de lettres et/ou de chiffres visibles sur une image distordue (voir illustration) qui apparaît à l'écran. Certains sites web préfèrent afficher une image qui contient une question mathématique.

Ils sont utilisés :

  • contre le spam :
    • lors de l'inscription à des webmails gratuits (dont les comptes pourraient être utilisés par la suite pour l'envoi de courriers non sollicités),
    • lors de la soumission de messages dans des forums de discussion et des blogs (qui pourraient permettre de faire du référencement abusif), etc. ;
  • contre l'extraction automatisée de bases de données ;
  • contre les tentatives d'attaque par force brute ;
  • pour la participation à des sondages (dont les résultats pourraient être faussés par des votes automatisés).

Complexité[modifier | modifier le code]

La complexité de certains types de ce système contribue à pénaliser l'expérience des internautes contraints d'essayer plusieurs fois des combinaisons possibles. En effet, certains captchas sont tellement déformés pour éviter une reconnaissance automatique que même les internautes ne peuvent les reconnaître. Pire, certain captchas sont plus facilement reconnus par les ordinateurs.[réf. nécessaire]

De plus, leur efficacité est contestée et des captchas peuvent être reconnus automatiquement en quelques secondes[3]

Accessibilité[modifier | modifier le code]

Les tests de captcha basés sur une lecture de texte - ou toute autre tâche de perception visuelle - rendent impossible l'accès aux ressources protégées pour des personnes déficientes visuelles. Néanmoins, le captcha n'a pas forcément besoin d'être visuel. N'importe quel problème d'intelligence artificielle, comme la reconnaissance vocale, peut être utilisé comme base pour un test de captcha. Certaines implémentations de captcha permettent aux utilisateurs d'opter pour un captcha audio.

Le développement des captchas audio semble être en retard par rapport aux tests visuels. D'autres types de tests, comme ceux qui nécessitent une compréhension de texte (par exemple, un puzzle logique, des questions ou des instructions pour créer un mot de passe) peuvent aussi constituer des méthodes utilisables dans le cadre d'un captcha. Encore une fois, il n'y a que peu d'études concernant leur résistance face aux contre-mesures.

Quelques tests intéressants apparurent avec l'idée de la reconnaissance d'images. KittenAuth[4] est un test de ce type, qui demande à l'utilisateur de reconnaître un animal (des chatons) dans une série de photographies de différentes espèces (dauphins, chiots, renards, etc.)

Pour les personnes déficientes visuelles (comme les utilisateurs aveugles ou ayant des difficultés à la perception des couleurs), les captchas visuels présentent de sérieuses difficultés. Du fait que les captchas sont conçus pour ne pas être lisibles par les machines, les outils courants d'aide comme les lecteurs d'écran ne peuvent pas les interpréter. Du fait que certains sites peuvent utiliser les tests de captcha dès le processus d'inscription initial, ou même à chaque connexion, ces derniers peuvent complètement bloquer l'accès. Dans certaines juridictions, les propriétaires de sites peuvent devenir la cible de litiges s'ils utilisent des captchas qui discriminent les gens ayant certains handicaps. Dans d'autres cas, ceux qui ont des difficultés visuelles peuvent choisir d'identifier un mot qui leur est lu.

Bien que fournir un captcha audio permette aux utilisateurs aveugles de lire le texte, ce procédé exclut toujours les personnes souffrant à la fois d’un déficit visuel et auditif[5].

L'utilisation d'un captcha empêche ainsi un grand nombre d'individus d'utiliser tous les services basés sur Internet comme PayPal, Gmail, Orkut, Yahoo!, ainsi que de nombreux forums et blogs.

Même pour des personnes parfaitement voyantes, les nouvelles générations de captcha, conçues pour résister aux logiciels sophistiqués de reconnaissance, peuvent devenir pratiquement impossibles à lire.

Un rapport du W3C a souligné l'inaccessibilité de certains tests visuels anti-robots[6].

Contournement[modifier | modifier le code]

Il y a plusieurs approches pour mettre en échec un captcha, détaillées ci-après :

  • utiliser une main-d’œuvre humaine pour les reconnaître :
    • rémunérer des décodeurs de captcha dans des pays à bas coût de main-d’œuvre ;
    • posséder soi-même un site assez bien fréquenté demandant aux utilisateurs de résoudre un captcha, qui provient en réalité d'un autre site, en temps réel ;
  • exploiter les bogues dans les implémentations qui permettent à l'attaquant de passer complètement outre le captcha ;
  • améliorer les logiciels de reconnaissance de caractères ;
  • l'attaque par force brute ou l'attaque par dictionnaire, qui peuvent être facilitées par la reconnaissance partielle du captcha (notamment le nombre de caractères).

Main-d’œuvre humaine[modifier | modifier le code]

Il est possible de passer au travers du test de captcha en utilisant des opérateurs humains employés à décoder les captchas. Une publication du W3C indique qu'un tel opérateur « pourrait aisément vérifier des centaines de captcha par heure ». Des entreprises de services indiennes sont spécialisées dans ce négoce[7]. Des spammeurs ont réussi à contourner la difficulté en créant des sites internet qui demandent à ce que l'utilisateur passe un test de captcha pour y accéder, ce test étant en fait celui requis par un autre site, tel celui de Yahoo pour valider la création d'une nouvelle adresse électronique. L'utilisateur du premier site contribue ainsi, à son insu, aux actes malveillants de ces derniers. Une contre-mesure existe : ajouter, dans le captcha, une expression identifiant clairement son émetteur (telle que « yahoo.fr »).

Bogues de conception[modifier | modifier le code]

Certains systèmes de protection par captcha mal conçus peuvent parfois être forcés sans utiliser de logiciels de reconnaissance de caractères, mais simplement en réutilisant l'ID d'une session d'une image connue de captcha. Parfois, si une partie du logiciel qui génère le captcha est située côté client (la validation est faite sur un serveur, mais le texte que l'utilisateur doit saisir pour s'identifier est généré côté client), alors les utilisateurs peuvent modifier le logiciel client pour afficher le texte de captcha non déformé par exemple.

Reconnaissance automatique de caractères[modifier | modifier le code]

Bien que les captchas fussent initialement conçus pour contrer les logiciels de reconnaissance de caractères standards utilisés pour la numérisation par balayage de documents, plusieurs projets de recherche ont prouvé qu'il est possible de décrypter un grand nombre de captcha avec des programmes spécifiquement adaptés à un type de captcha. Pour des captchas avec des lettres déformées, l'approche adaptée est constituée d'une manière générale par les étapes suivantes :

  1. suppression du fond de l'image, par exemple avec des filtres de couleurs et la détection de lignes fines ;
  2. segmentation, c'est-à-dire découpe de l'image en plusieurs segments contenant une seule lettre ;
  3. identification de la lettre contenue dans chaque segment.

Le reCAPTCHA propose une approche semblable, à l'échelle des mots.

Utilisations déviées[modifier | modifier le code]

  • En numérisation de livres : le reCAPTCHA propose deux mots dont le premier est connu et sert de CAPTCHA et dont le second est incertain voire inconnu car issu de la numérisation d'un livre. Cela permet d'aider à la numérisation de textes mal scannés. En général un des deux mots peut ne pas avoir de réponse correcte déjà connue du serveur, au contraire du second mot où la réponse est connue du serveur (soit parce que le mot a été choisi au préalable par le serveur avant d'être rendu et présenté déformé à l'utilisateur, soit parce que le l'image a déjà fait l'objet d'une série suffisante de confirmations identiques par d’autres utilisateurs du système en nombre suffisant). Un tel générateur nécessite pour fonctionner et être réellement sécurisé un système utilisé par base très importante d’utilisateurs différents (plusieurs millions) et de tels générateurs ne peuvent être mis en pratique que par les plus grands agrégateurs de contenus et sites Internet.
  • En numérisation de données cartographiques : le captcha propose une ou plusieurs séries de chiffres correspondant à des panneaux indicateurs routiers, plaques de rues, numéros de maisons, afin d’aider à constituer un fichier d’adresses géolocalisées à partir de clichés photographiques du terrain. La grande variété de formats et de présentation des chiffres, ainsi que des couleurs et textures du lettrage et des fonds et des matériaux utilisés, rend souvent trop aléatoire leur traitement entièrement automatique ; le générateur de captchas utilise les réponses fournies pour améliorer la reconnaissance effective des chiffres. Comme pour le système précédent, si les captchas sont utilisés comme méthode d'autorisation d'accès, il fournit généralement deux images à lire, dont une a une réponse connue avec certitude du serveur et l'autre est imprécise et encore à confirmer par un lecteur humain.
  • En publicité : certaines entreprises proposent d'utiliser le captcha comme vecteur de propagation de publicité. Le captcha peut ainsi demander à l’utilisateur de visiter un site, regarder une vidéo ou animation ou écouter une bande annonce, pour y chercher et obtenir la réponse correcte à retourner. En bonus, l'utilisateur peut obtenir une rémunération ou un autre avantage (comme une réduction sur le prix normalement demandé pour obtenir le produit ou service protégé par le captcha).
  • Comme moyen de micropaiement ou de confirmation légale ou contractuelle : certains sites utilisent les captchas pour vérifier que l'utilisateur a lu, entendu et compris un message particulier avant d'avoir accès à un contenu ou service protégé ou payant. Le message est souvent de nature publicitaire mais peut aussi être une façon pour le site protégeant le contenu de prouver que l’utilisateur a bien mémorisé le message publicitaire ou compris une clause légale ou contractuelle qu’il s'engage à respecter en connaissance de cause (dans de tels cas, le captcha pose une question ou un problème relatif à ce message ou cette clause, et l’utilisateur doit mentionner la réponse correcte confirmant que le message a été compris).

Notes et références[modifier | modifier le code]

  1. http://www.captcha.net/
  2. Les attaques contre le CAPTCHA
  3. http://www.xmcopartners.com/article-captcha.html
  4. KittenAuth.
  5. D'après sense.org.uk, environ 4 % des gens au Royaume-Uni ont de sérieuses déficiences visuelles et auditives. D'après le Consortium national d'assistance technique pour les enfants et jeunes adultes aveugles, sourds et muets (NTAC), il y avait 9 516 enfants aveugles, sourds et muets aux États-Unis en 2004. L'université Gallaudet cite une estimation de 1993 qui donne 35 000 adultes entièrement aveugles, sourds et muets aux États-Unis. L'estimation de la population aveugle, sourde et muette dépend du degré de handicap retenu dans les définitions.
  6. [1] « Souvent, ces systèmes de vérification font qu'il est impossible, pour certains utilisateurs handicapés, de créer des comptes, de rédiger des commentaires ou de faire des achats sur les sites, c'est-à-dire que les captcha ne reconnaissent pas les utilisateurs handicapés comme étant des utilisateurs humains. »
  7. Inside India's CAPTCHA solving economy. ZDNet, 29 aout 2009. La rémunération mentionnée par l'article est de l'ordre de 2 dollars pour mille problèmes résolus.

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]