Vous êtes ici: index » securite » tests_de_turing

Cette page est en cours de construction.

Bloquer les robots avec des tests de Turing

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 !

Toutefois des solutions simples et confortables pour l'utilisateur sont pertinentes dans le cas ou le site web n'est pas une cible représentant un intérêt important pour l'attaquant éventuel. Google, Yahoo, hotmail sont contraints à des protections sophistiquées parce que les possibilités recherchées par l'attaquant sont considérables. Une application web standard sur un site universitaire n'a pas à redouter exactement les mêmes menaces. Pour autant, il convient d'empêcher des itérations triviales.

Principe général

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 tests requérants une analyse sémantiques
  • Les tests requérants une analyse graphique (ou audio)

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.

Exemples

Test sémantique simple

“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.

Test sémantique conduisant à une action

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.

Ces deux tests ont le mérite d'être très simples à mettre en place et très accessibles, si toutefois les questions posées restent dans la limite de l'abordable pour la grande majorité des êtres humains … 1)

CAPTCHA

Divers captcha 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.

Ces tests sont parmis les moins accessibles, au dela de leur complexité visuelle qui peuvent en dérouter plus d'un, ils excluent aussi les personnes ayant des problèmes de vue par exemple, ou ceux qui navigent avec un terminal trop petit, avec un nombre de couleurs limitées (téléphones mobiles).

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) …

HOWTO et exemples HTML

Décrivez nous ici vos retours d'expérience sur le sujet, vos techniques et astuces. (RSSI d'un établissement d'enseignement supérieur et de recherche, vous pouvez éditer cette page, sinon envoyez nous par mail vos contributions)

Quelques exemples simples des techniques abordées

Problématiques liés aux captchas

Plusieurs problématiques vont être liées au captchas, celles concernant les utilisateurs, celles concernant les spammeurs :

Les utilisateurs

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 :

  • les daltoniens
  • les aveugles qui naviguent, quand ils le peuvent, avec des logiciels traducteurs vocaux (qui lisent la page à haute voix)
  • les personnes atteintes de presbytie (pour les malheureux de plus de quarante ans qui n'étaient pas myopes ;-) )

Enfin, on constate, parfois, un rejet pur et simple du procédé qui aboutit à la non-utilisation du service protégé.

Les spammeurs

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 :

  • les chinese turing farm, qui n'ont d'autres but que d'industrialiser la lecture de captcha. Ce sont des entreprises basées en chine dont les ouvriers sont payés à lire des captchas et à les résoudre. Ceci permet, pour un coût de 1 centime d'euro par captcha, de faire une grande quantité de résolutions Lire ici
  • Pour rire (ou pleurer) un peu : Une offre d'emploi en inde pour 40 roupies par 1000 captchas Offre d'emploi
  • plus déroutant : les sites qui vous proposent de jouer à des jeux (adultes) nécessitant pour progresser (comprendre : faire agir la demoiselle) vont demander de “résoudre” un test de turing “emprunté” à un site qui se protège. Il y a même eu des malwares crées dans ce seul but Malware captcha

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.

1) Exemple vu sur un système de forum : une question “De quelle couleur sont les petits pois ?” à laquelle il fallait répondre “rouge” car les petits poissons rouges … :-?