Si le test de Turing (http://fr.wikipedia.org/wiki/Test_de_Turing) est à la base un test du “degré d'humanisation” d'un programme informatique, il présente un grand intérêt dans la lutte contre la prolifération des robots (spammeurs, moissonneurs …) sur nos réseaux.
Le but est de poser une “question” au client afin de différentier un automate (script) d'une personne.
Le plus grand problème lors de la conception d'un tel test est de faire un compromis entre son degré d'accessibilité auprès des utilisateurs et le risque d'être face à un robot capable de se faire passer pour une personne. Avec la montée en puissance des techniques d'analyse, entre autres l'OCR des tests de plus en plus complexes peuvent paraitre nécessaires, mais la complexité de ces tests peut amener des populations d'utilisateurs à se retrouver bloquées car dans l'impossibilité de le résoudre !
L'application soumet à l'utilisateur une question, issue d'une liste ou générée de manière ponctuelle, dont elle connait la réponse a l'avance. On distingue deux grandes familles de test de Turing à l'usage de la reconnaissance des robots :
Les premiers s'appuient sur le fait que si l'analyse syntaxique d'une phrase par un logiciel est possible (bien que encore assez limitée), l'obtention de son sens est d'un autre niveau, par exemple un programme informatique sera bien en peine de répondre à la question “De quelle couleur sont les panneaux de sens interdits ?” …
Les deuxièmes se basent sur la génération d'une image sur laquelle on demande par exemple “Quels sont les mots dans cette image ?”. La solidité de ce genre de test est directement liée à la complexité de l'image produite et au niveau de la question demandée. Le soucis majeur est que la difficulté de compréhension du test par les êtres humains est elle aussi liée à ces mêmes paramètres. Nous avons tous expérimenté des captchas tellement brouillés pour empêcher un OCR d'être productif que nous mêmes n'arrivons pas à les déchiffrer. De tels dispositifs peuvent être contraires aux obligations réglementaires d'accessibilité. Cette question est partiellement résolue avec des extensions audio qui surajoutent à la complexité de mise ne œuvre de ces dispositifs.
“Quelle est la couleur du cheval blanc d'Henri IV ?”, “Quelle est la couleur des petits pois ?”, “Combien font trois fois neuf ?” … Ces tests, même implémentables dans des applications non-graphiques, sont parmi les plus simples et peuvent être très efficaces.
Les tests du genre de celui donné en introduction (“De quelle couleur sont les panneaux de sens interdits ?”) sont quasiment inanalysables par un ordinateur car ils font référence à un univers dans lequel celui-ci n'évolue pas, ici la circulation routière … Une analyse de type sémantique automatisée pourrait extraire le sujet de la question (panneaux de sens interdits) mais l'attaquant aurait ensuite à effectuer une recherche d'image, une identification, des recoupements … Un procédé beaucoup trop lourd à conduire.
Les tests basés sur les mathématiques sont solides dans la mesure où la syntaxe mathématique n'est pas utilisée dans la question, par exemple “Combien font trois fois neuf ?” est beaucoup plus solide que “Combien font 3 * 9 ?” dans la mesure où le second est décryptable par suppression des caractères alphabétiques puis évaluation par un moteur de calcul standard.
Le risque principal avec ce genre de test est de ne présenter qu'un nombre limité de questions différentes, desquelles le développeur du robot aura vite fait le tour afin de fournir à son programme des moyens d'identifier les questions et les réponses associées.
Ce test est différent du précédent dans la mesure où la réponse n'est plus une valeur mais une action sur un/des éléments de la page. Par exemple on peut avoir deux cases à cocher, l'une intitulée “je suis humain” et l'autre “je suis un robot idiot”, ou encore une série de cases avec un intitulé “Veuillez cocher X cases parmis les suivantes”.
Ces tests sont un peu plus solides que les précédents car ils réclament une analyse de la structure de la page afin de soumettre une réponse, pour peu que l'on utilise des noms de champs aléatoires cette analyse se complique encore un peu.
Même si à l'origine le terme captcha désignait l'ensemble des moyens de reconnaissance de soumission automatisées sur le Web, ce mot désigne aujourd'hui dans le langage courant ces tests graphiques que l'on trouve un peu partout et qui sont parfois un peu … déroutants.
Le principe le plus courant consiste à générer une image contenant un texte, puis à la déformer pour rendre difficile un OCR, et à demander à l'utilisateur de restituer le texte pour validation.
Un des problèmes majeurs de cette technique est la progression rapide des performances de l'OCR qui pousse les développeurs de captcha à déformer et obscurcir toujours un peu plus leurs images. On en arrive à un point où le décryptage (car on ne peut plus parler de lecture) de l'image est difficile pour un humain … (Des cas où l'OCR donnait de meilleurs résultats que l'humain ont été rencontrés …).
D'autres méthodes de tests graphiques ont été développées, comme par exemple des images contenant des dessins de fruits ou d'animaux où il faut donner le nombre de tel ou tel type de fruit/animal, par exemple kittenauth.
Une des solutions apporté à ce problème est la possibilité “d'écouter” le captcha, mais cela repose bien souvent sur des extensions propriétaires (flash/java) …
Plusieurs problématiques vont être liées au captchas, celles concernant les utilisateurs, celles concernant les spammeurs :
Comme évoqué plus haut, les déficients visuels vont avoir des difficultés pour les captchas graphiques. Dans cette catégorie on se doit d'inclure :
Enfin, on constate, parfois, un rejet pur et simple du procédé qui aboutit à la non-utilisation du service protégé.
Par contre, les spammeurs ont, eux, déjà des parades à leur disposition pour l'ensemble des techniques évoquées, car basées DIRECTEMENT sur le concept de test de turing :
Heureusement, ces deux méthodes ne sont pas, pour l'instant, utilisées ailleurs que sur des sites à gros trafic. Nous remarquerons aussi que les captcha sont devenus quasiment illisible au fur et à mesure des années à cause du perfectionnement des procédures d'O.C.R.