Comment fonctionne un captcha ?

Vous utilisez votre ordinateur pour acheter des billets pour assister à un concert dans une salle de concert. Avant de pouvoir acheter les billets, vous devez d’abord passer un test. Ce n’est pas un test difficile, en fait, c’est le but. Pour vous, le test doit être simple et direct. Mais pour un ordinateur, le test devrait être presque impossible à résoudre.

Ce type de test est un CAPTCHA, un acronyme qui signifie Completely Automated Public Turing Test to Tell Computers and Humans Apart. Ils sont également connus sous le nom de Human Interaction Proof (HIP). Vous avez probablement vu les tests CAPTCHA sur de nombreux sites Web. La forme la plus courante de CAPTCHA est l’image de plusieurs lettres déformées. C’est votre travail de taper la bonne série de lettres dans un formulaire. Si vos lettres correspondent à celles de l’image déformée, vous réussissez le test.

Pourquoi quelqu’un aurait-il besoin de créer un test capable de distinguer les humains et les ordinateurs ? C’est parce que les gens essaient de jouer et contourner le système : ils veulent exploiter les faiblesses des ordinateurs qui font tourner le site. Bien que ces personnes constituent probablement une minorité parmi tous les internautes, leurs actions peuvent affecter des millions d’utilisateurs et de sites Web. Par exemple, un service de courrier électronique gratuit pourrait être bombardé par des demandes de compte provenant d’un programme automatisé. Ce programme automatisé pourrait faire partie d’une tentative plus vaste d’envoyer des pourriels à des millions de personnes. Le test CAPTCHA permet d’identifier les utilisateurs qui sont de vrais êtres humains et ceux qui sont des programmes informatiques.

Une chose intéressante à propos des tests CAPTCHA, c’est que les gens qui conçoivent les tests ne sont pas toujours contrariés lorsque leurs tests échouent. C’est parce que pour qu’un test CAPTCHA échoue, quelqu’un doit trouver un moyen d’enseigner à un ordinateur comment résoudre le test. En d’autres termes, chaque échec de CAPTCHA est vraiment un progrès de l’intelligence artificielle.

Les CAPTCHA et le test de Turing

La technologie CAPTCHA repose sur une expérience appelée Test de Turing. Alan Turing, parfois appelé le père de l’informatique moderne, a proposé le test comme moyen d’examiner si les machines peuvent penser, ou sembler penser, comme les humains. Le test classique est un jeu d’imitation. Dans ce jeu, un interrogateur pose une série de questions à deux participants. L’un des participants est une machine et l’autre est un humain. L’interrogateur ne peut pas voir ou entendre les participants et n’a aucun moyen de savoir lequel est lequel. Si l’interrogateur n’est pas en mesure de déterminer quel participant est une machine sur la base des réponses, la machine passe le test de Turing.

Bien sûr, avec un CAPTCHA, l’objectif est de créer un test que les humains peuvent passer facilement mais pas les machines. Il est également important que l’application CAPTCHA soit capable de présenter différents CAPTCHA à différents utilisateurs. Si un CAPTCHA visuel présentait une image statique identique pour chaque utilisateur, cela ne prendrait pas longtemps avant qu’un spammeur ne repère le formulaire, déchiffre les lettres et programme une application pour taper automatiquement la bonne réponse.

La plupart des CAPTCHAs, mais pas tous, s’appuient sur un test visuel. Les ordinateurs n’ont pas la sophistication que les êtres humains ont quand il s’agit de traiter des données visuelles. Nous pouvons regarder une image et choisir des motifs plus facilement qu’un ordinateur. L’esprit humain perçoit parfois des modèles même lorsqu’il n’en existe pas, une bizarrerie que nous appelons paréidolie. Avez-vous déjà vu une forme dans les nuages ou un visage sur la lune ? C’est votre cerveau qui essaie d’associer des informations aléatoires en motifs et en formes.

Mais tous les CAPTCHA ne s’appuient pas sur des motifs visuels. En fait, il est important d’avoir une alternative à un CAPTCHA visuel. Dans le cas contraire, l’administrateur du site Web court le risque de priver de ses droits tout internaute ayant une déficience visuelle. Une alternative à un test visuel est un test audible. Un CAPTCHA audio présente habituellement à l’utilisateur une série de lettres ou de chiffres parlés. Il n’est pas inhabituel que le programme déforme la voix de l’orateur, et il est également courant que le programme inclue des bruits de fond dans l’enregistrement. Cela aide à contrecarrer les programmes de reconnaissance vocale.

Une autre option est de créer un CAPTCHA qui demande au lecteur d’interpréter un court passage de texte. Un CAPTCHA contextuel interroge le lecteur et teste ses compétences de compréhension. Alors que les programmes informatiques peuvent choisir des mots clés dans des passages de texte, ils ne sont pas très bons pour comprendre ce que ces mots signifient réellement.

Qui utilise des CAPTCHAs

Les formulaires d’inscription sur les sites Web utilisent souvent des CAPTCHA. Par exemple, les services de courriel Web gratuits comme Hotmail, Yahoo Mail ou Gmail permettent aux gens de créer gratuitement un compte de courriel. Habituellement, les utilisateurs doivent fournir certaines informations personnelles lors de la création d’un compte, mais les services ne vérifient généralement pas ces informations. Ils utilisent des CAPTCHA pour essayer d’empêcher les spammeurs d’utiliser des robots pour générer des centaines de comptes de courrier indésirable.

Les courtiers en billets comme http://www.francebillet.com utilisent également les applications CAPTCHA. Ces applications permettent d’éviter que les revendeurs de billets ne bombardent le service en achetant massivement des billets pour les grands événements. Sans une sorte de filtre, il est possible pour un scrapper d’utiliser un bot tel que Zennoposter pour placer des centaines ou des milliers de commandes de billets en quelques secondes. Les clients légitimes deviennent des victimes à mesure que les événements se vendent quelques minutes après que les billets sont disponibles. Les scrappeurs essaient ensuite de vendre les billets au-dessus de leur valeur nominale. Bien que les applications CAPTCHA n’empêchent pas le scrapping, elles rendent plus difficile le scrap des tickets à grande échelle.

Certaines pages Web ont des babillards électroniques ou des formulaires de contact qui permettent aux visiteurs d’afficher des messages sur le site ou de les envoyer directement aux administrateurs Web. Pour prévenir une avalanche de spam, beaucoup de ces sites ont un programme CAPTCHA pour filtrer le bruit. Un CAPTCHA n’arrêtera pas quelqu’un qui est déterminé à poster un message grossier ou à harceler un administrateur, mais il aidera à empêcher les robots de poster des messages automatiquement.

La forme la plus courante de CAPTCHA exige que les visiteurs tapent un mot ou une série de lettres et de chiffres que l’application a déformé d’une manière ou d’une autre. Certains créateurs de CAPTCHA ont trouvé un moyen d’augmenter la valeur d’une telle application : numériser des livres. Une application appelée reCAPTCHA exploite les réponses des utilisateurs dans les champs CAPTCHA pour vérifier le contenu d’une feuille de papier numérisée. Parce que les ordinateurs ne sont pas toujours capables d’identifier les mots à partir d’un balayage numérique, les humains doivent vérifier ce que montre une page imprimée. Il est alors possible pour les moteurs de recherche de rechercher et d’indexer le contenu d’un document numérisé.

Voici comment ça marche : Tout d’abord, l’administrateur du programme reCAPTCHA scanne numériquement un livre. Ensuite, le programme reCAPTCHA sélectionne deux mots dans l’image numérisée. L’application reconnaît déjà un des mots. Si le visiteur tape correctement ce mot dans un champ, l’application suppose que le deuxième mot que l’utilisateur tape est également correct. Ce deuxième mot entre dans un pool de mots que l’application présentera à d’autres utilisateurs. Au fur et à mesure que chaque utilisateur tape un mot, l’application compare le mot à la réponse originale. Finalement, l’application reçoit suffisamment de réponses pour vérifier le mot avec un degré élevé de certitude. Ce mot peut alors aller dans le pool vérifié.

Cela peut sembler long, mais rappelez-vous que, dans ce cas, le CAPTCHA fait double emploi. Non seulement il vérifie le contenu d’un livre numérisé, mais il vérifie aussi que les personnes qui remplissent le formulaire sont en fait des personnes. En retour, ces personnes ont accès à un service qu’elles veulent utiliser.

Briser un CAPTCHA

Le défi pour briser un CAPTCHA n’est pas de comprendre ce que dit un message, après tout, les humains devraient avoir un taux de réussite d’au moins 80 pour cent. La tâche vraiment difficile est d’enseigner à un ordinateur comment traiter l’information d’une manière similaire à la façon dont les humains pensent. Dans de nombreux cas, les personnes qui brisent les CAPTCHA ne se concentrent pas sur l’amélioration de l’intelligence des ordinateurs, mais sur la réduction de la complexité du problème posé par le CAPTCHA.

Supposons que vous avez protégé un formulaire en ligne à l’aide d’un CAPTCHA qui affiche des mots anglais. L’application déforme légèrement la police, étirant et pliant les lettres d’une manière imprévisible. De plus, le CAPTCHA inclut un fond généré au hasard derrière le mot.

Un programmeur souhaitant briser ce CAPTCHA pourrait aborder le problème par phases. Il ou elle aurait besoin d’écrire un algorithme qui est un ensemble d’instructions qui ordonne à une machine de suivre une certaine série d’étapes. Dans ce scénario, une étape pourrait être de convertir l’image en niveaux de gris. Cela signifie que l’application supprime toutes les couleurs de l’image, en supprimant l’un des niveaux d’obscurcissement que le CAPTCHA emploie.

Ensuite, l’algorithme pourrait dire à l’ordinateur de détecter les motifs dans l’image en noir et blanc. Le programme compare chaque motif à une lettre normale, à la recherche de correspondances. Si le programme ne peut faire correspondre qu’un petit nombre de lettres, il peut croiser ces lettres avec une base de données de mots anglais. Ensuite, les candidats probables seraient branchés dans le champ de soumission. Cette approche peut être étonnamment efficace. Il peut ne pas fonctionner 100 pour 100 du temps, mais il peut fonctionner assez souvent pour être utile aux spammeurs.

Qu’en est-il des CAPTCHA plus complexes ? Le Gimpy CAPTCHA affiche 10 mots anglais avec des polices déformées sur un fond irrégulier. Le CAPTCHA organise les mots par paires et les mots de chaque paire se chevauchent. Les utilisateurs doivent taper trois mots corrects pour aller de l’avant. Dans quelle mesure cette approche est-elle fiable ?

Il s’avère qu’avec l’algorithme de craquage CAPTCHA, il n’est pas très fiable. Avec l’approche de Gimpy, l’algorithme utilise des mots réels plutôt que des chaînes aléatoires de lettres et de chiffres. Dans cette optique, l’algorithme tente d’identifier les mots en examinant le début et la fin de la chaîne de lettres. Le dictionnaire de 500 mots de Gimpy est aussi utilisé. Le taux de réussite est d’environ 30%.

C’est loin d’être parfait, mais c’est aussi important. Les spammeurs peuvent se permettre de n’avoir qu’un tiers de leurs tentatives réussies s’ils règlent les robots pour casser les CAPTCHA plusieurs centaines de fois par minute.

CAPTCHA et Intelligence Artificielle

Parce que le CAPTCHA est une barrière entre les spammeurs ou les hackers et leur but, ces personnes ont consacré du temps et de l’énergie à briser les CAPTCHA. Leurs succès signifient que les machines deviennent de plus en plus sophistiquées. Chaque fois que quelqu’un trouve comment enseigner à une machine à vaincre un CAPTCHA, nous faisons un pas de plus vers l’intelligence artificielle.

Alors que les gens trouvent de nouvelles façons de contourner les CAPTCHAs, les informaticiens développent des CAPTCHA qui relèvent d’autres défis dans le domaine de l’IA. Un pas en arrière pour CAPTCHA est toujours un pas en avant pour l’Intelligence Artificielle, mais chaque défaite est aussi une victoire.

Mais qu’en est-il des administrateurs Web ? De leur point de vue, ils doivent encore faire face à un problème de taille : les spammeurs et les pirates informatiques. Les personnes qui maintiennent des sites Web ou créent des sondages en ligne doivent savoir que plusieurs systèmes CAPTCHA ne sont plus efficaces. Il est important de faire un peu de recherche sur les applications CAPTCHA qui sont encore fiables. Et il est tout aussi important de se tenir au courant du sujet. Si un système CAPTCHA tombe en panne, l’administrateur peut avoir besoin de supprimer le code de son site et de le remplacer par une autre version.

Quant aux concepteurs de CAPTCHA, ils doivent marcher sur une ligne étroite. Au fur et à mesure que les ordinateurs deviennent plus sophistiqués, la méthode de test doit également évoluer. Mais si le test évolue au point où les humains ne peuvent plus résoudre un CAPTCHA avec un taux de réussite décent, le système dans son ensemble échoue. La réponse peut ne pas impliquer de déformation ou de distorsion du texte : elle peut exiger des utilisateurs qu’ils résolvent une équation mathématique ou qu’ils répondent à des questions sur une courte histoire. Et comme ces tests deviennent de plus en plus compliqués, il y a un risque de perdre l’intérêt des utilisateurs. Combien de personnes voudront encore poster une réponse sur un forum s’ils doivent d’abord résoudre une équation quadratique ?

En 2014, Google (qui a acquis reCAPTCHA en 2009) a commencé à supprimer progressivement le service classique. En place, il vous a demandé de cocher une case avec les mots « Je ne suis pas un robot ». Cela s’appelait No CAPTCHA. En 2017, Google a annoncé qu’il se débarrassait de No CAPTCHA. Au lieu de cela, le service s’appuierait sur des techniques comme remarquer comment vous déplacez un pointeur à l’écran ou analyser vos habitudes de navigation pour déterminer si vous êtes humain ou robot. C’est ce qu’on appelle Invisible reCAPTCHA. Si vous semblez suspect (vous êtes peut-être en fait un robot), vous verrez l’un des défis reCAPTCHA à résoudre comme une vérification supplémentaire.