Un Captcha est une forme de test de Turing permettant de différencier de manière automatisée un utilisateur humain d'un ordinateur.
Parce que le test est réalisé par un ordinateur, en opposition avec les tests de Turing standards 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 essayent aussi de prouver qu'ils sont des ordinateurs.
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 tape les lettres et les chiffres visibles sur une image distordue qui apparait à l'écran. Certains sites Web préfèrent afficher une image qui contient une question mathématique.
Ils sont utilisés :
Captcha est l'acronyme de l'anglais " 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.
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 évidemment 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 Captcha 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 Captcha qui furent largement utilisés (par Yahoo! notamment).
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 évidents au niveau des coûts et 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 dans le domaine de l'intelligence artificielle, plutôt que simplement la découverte des secrets de l'algorithme, qui pourraient être obtenus par décompilation ou autres moyens.
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 Captchas 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 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 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érieux problèmes. Du fait que les Captchas sont conçus pour n'être pas lus 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 permet aux utilisateurs aveugles de lire le texte, ce procédé exclut toujours les personnes qui sont à la fois déficientes visuelles et auditives[1].
L'utilisation de 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 systèmes de blogs…
Ceci étant dit, même pour des personnes parfaitement voyantes, les nouvelles générations de Captcha, conçus pour résister aux logiciels sophistiqués de reconnaissance, peuvent devenir pratiquement impossibles à lire. Même certains exemples présents sur les sites cités ci-dessous sont indéchiffrables aux yeux de la majorité, pour ne pas dire la totalité, des humains.
Un rapport du W3C a souligné l'inaccessibilité de certains tests visuels antirobots.
Il y a plusieurs approches pour mettre en échec un Captcha :
Il est possible de passer au travers du test de Captcha en utilisant des opérateurs humains employés à décoder les Captcha. Une publication du W3C indique qu'un tel opérateur " pourrait aisément vérifier des centaines de Captchas par heure ". Néanmoins, cette solution n'est pas forcément économiquement viable. Des spammeurs ont cependant 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 mail. L'utilisateur du premier site contribue ainsi, à son insu, aux actes malveillants de ces derniers.
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é 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.
Bien que les Captcha 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 " vaincre " un grand nombre de Captchas 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 :