Débutant

Le « CAPTCHA » : Est-il condamné à mourir, ou va-t-il renaître de ses cendres ?

accroche_ala_02Depuis quelques années, le CAPTCHA (type texte et autre) est victime de son succès. Sa large utilisation lui a non seulement attiré les foudres de ce qu’on peut appeler « les hackers académiques », mais surtout des autres, « les hackers malveillants ».
Parmi les derniers assauts subis, une étude publiée par les équipes de recherche de Google a presque annoncée sa mise à mort.

 

Beaucoup de groupes, grands et petits, utilisent le système de CAPTCHA de type texte, en tant que verrou de sécurité contre un certain nombre d’abus, comme la création de comptes frauduleux, le spam, le vol de contenu, etc. Jusqu’à récemment, ce petit bijou remplissait assez bien sa fonction, mais (et oui il y a toujours un mais) des équipes de chercheurs, néées de la collaboration entre les équipes :

  • Google et l’université de Stanford (publication 2013-2014),
  • Google et l’université de Cornell (publication 2014)

Se sont penchées sur son cas et l’ont presque fait voler en éclat.

En effet, un des moyens les plus utilisés pour contrôler les accès, généralement en phase d’inscription, est le CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). Ce dernier,  jusque-là, constituait un moyen peu couteux mais assez efficace contre les accès frauduleux via des soumissions de formulaires, infractions perpétrées le plus souvent par le biais de robots ou d’autres procédés automatisés.

Les « CAPTCHA », en particulier de type texte, sont basés sur une combinaison distordue de lettres et/ou de chiffres, tout en restant lisible pour l’œil humain. L’objectif est de constituer un rempart face aux accès automatisés non autorisés (non humains : robots et autres programmes), et ceci sans heurter le confort des utilisateurs finaux.

Dès leur émergence, et pour des raisons différentes, pirates et chercheurs ont essayé de mettre en place des moyens de résolution du contenu d’un « CAPTCHA ». Ces techniques butaient sur une difficulté majeure, la reconnaissance des caractères. Pour ce faire, elles suivaient une approche dite “segment then recognize”, qui procèdent en découpant le « CAPTCHA » en petits segments supposés contenir un caractère à la fois, pour ensuite, dans une seconde étape, procéder à l’identification des différents caractères/chiffres.

Il va sans dire que la réussite de l’ensemble des opérations est essentiellement tributaire de la première étape, donc d’une segmentation valide et de qualité. Les « CAPTCHA» qui associent différentes techniques anti-segmentation, comme la “distorsion d’image” et les caractères entremêlés (padding négatif), rendent cette étape particulièrement compliquée. Ces « CAPTCHA » appartiennent donc à la catégorie des plus robustes, mais présentent l’inconvénient d’être moins lisibles, donc moins confortables pour l’utilisateur. Souvenez-vous des « CAPTCHA » que vous avez dû rafraichir une voir plusieurs fois.

La nouvelle technique utilisée par les chercheurs Google et Stanford a réussi, dans une certaine mesure, à lever cette difficulté, tout en rendant complétement automatique l’ensemble du processus de la résolution. L’étude s’est concentrée sur les « CAPTCHA» de type texte et n’a pas abordé les autres types comme :

  • Picatcha (Picture Identification CAPTCHA),
  • Mathematical « CAPTCHA »
  • 3D CAPTCHA,
  • Etc.

L’algorithme adopté est assez complexe : il combine segmentation et reconnaissance de caractères de façon simultanée, puis est consolidé par un apprentissage itératif basé sur l’intelligence artificielle (machine learning).

Sans trop entrer dans le détail, la nouveauté de cette étude (Generic Solving of Text-based CAPTCHAs – 2014) est qu’elle utilise un procédé complètement automatique. Et contrairement à d’anciennes méthodes, elle ne nécessite aucune phase préalable de découpage manuel des caractères, ni toute autre intervention humaine. Le procédé, correspondant se déroule en quatre phases. Chacune est effectuée par une brique technique spécifique. Ci-dessous les quatre temps qui composent l’algorithme:

Cut point detector : son rôle est de trouver toutes les possibilités de découpage d’un « CAPTCHA » pour obtenir des segments exploitables.

Slicer : à partir des différents segments obtenus suite aux différentes segmentations, il construit un graphe contenant l’ensemble des possibilités à analyser

Scorer : brique responsable de la reconnaissance des caractères (OCR). Dans l’optique de classer les différents résultats de résolution pour n’en choisir qu’un, ce composant attribue une valeur de confiance pour chaque résolution.

Arbiter : à partir des différentes résolutions, et en fonction des valeurs de confiances attribuées à chacune, ce dernier détermine le caractère résolu.

 

Pour un maximum de crédibilité, le procédé a été validé, en éprouvant différents patterns de « CAPTCHA » type texte, ceux-là même utilisés par de grands groupes comme Google, Yahoo, Ebay, et combinant parfois plusieurs techniques anti-segmentation (distorsion à des degrés différents, caractères barrés, « padding » négatif, …). Ci-dessous, quelques exemples faisant partie des patterns testés :

Exemples de patterns évalués

Figure 1.1 : Exemples de patterns évalués

 

Le but est bien évidement de détecter les faiblesses des différentes méthodes de générations de « CAPTCHA » et aider les fournisseurs à offrir des « CAPTCHA » plus robustes. A titre d’exemple « DeCAPTCHA », pour ne citer que celui-là, est un outil qui a vu le jour en 2011 permettant de contourner le verrou « CAPTCHA ». Il a été réalisé dans un cadre de recherche académique, loin de toutes considérations illégales et a obligé certains patterns « CAPTCHA » à évoluer en :

  • adoptant une distorsion plus forte,
  • utilisant des caractères creux,
  • Ajoutant des techniques anti-segmentations.

 

Ce n’est pas la première, ni la dernière fois qu’une étude s’attaque à la robustesse des « CAPTCHA », mais jusque-là, les outils d’analyses et de reconnaissance étaient bâtis sur des approches séquentielles connues sous le nom de “segment then recognize”. Certaines de ces techniques nécessitaient même une intervention manuelle. La nouveauté est que la collaboration Google-Stanford a donnée naissance à une méthode :

  • Générique et sans intervention humaine, pour la validation du schéma de la segmentation.
  • Basée sur une approche non séquentielle, comme c’est le cas pour “segment then recognize”. Toutes les opérations sont réalisées simultanément en un seul traitement.
  • D’une précision supérieure dans la reconnaissance des caractères
  • Dont les taux de réussite sont plus importants.

 

Cette étude est allée plus loin que toutes les autres, surtout si on considère que certains patterns de CAPTCHA, même améliorés par leurs fournisseurs pour être plus sécurisés, ont été résolus. L’algorithme utilisé a permis de résoudre tous les “CAPTCHA” étudiés avec des précisions importantes, mais plus ou moins différentes en raison de la diversité des mécanismes de protection (différents taux de distorsion, protection anti-segmentation ou pas, différence de caractères, nombre de caractères). A titre d’exemple, les résultats de la résolution sont d’environ :

  • Un tiers pour les ” CAPTCHA Wikipedia”
  • La moitié pour les ” CAPTCHA Ebay”
  • Un quart pour les “ReCAPTCHA”

 

En termes de résolution automatique, on peut juger ces taux de réussite comme étant troublants, mais leur magnitude n’est rien devant celle livrée par une autre publication réalisée par des chercheurs de Google et de l’université de Cornell (V4 Avril 2014). Basée sur l’exploitation des réseaux neuronaux (deep convolutional neural network), cette dernière jette un très sérieux doute sur la fiabilité des « CAPTCHA », en rapportant un taux de résolution de l’ordre de 99.8% et si, comme moi, vous êtes encore un peu sceptiques, sachez simplement que la fiabilité et l’efficacité de ce nouveau procédé lui a valu d’être intégré assez rapidement, par les équipes Google MAP/Street view, dans les améliorations des services de résolution et localisation des adresses.

Les déboires du CAPTCHA semblent venir du fait qu’il est un bon candidat pour les études du domaine de l’intelligence artificielle. Interrogé sur ces assauts répétitifs, Luis von Ahn, un des inventeurs du « CAPTCHA » livre son opinion en disant que pour chaque pas vers l’arrière pour les « CAPTCHA », c’est un pas en avant au bénéfice de l’intelligence artificielle (“Every step backward for CAPTCHA is a step forward for AI”).

L’horizon du « CAPTCHA », du moins celui du type texte, se trouve de plus en plus assombri par l’amélioration des techniques de résolution. Spécialement car elles utilisent des moyens de plus en plus performants et sont associés aux avancées en particulier du domaine de l’intelligence artificielle. Cependant, il semble y avoir encore un peu d’espoir car de nouvelles approches pour des « CAPTCHA » plus robustes et innovants sont de temps à autre proposées comme les CAPTCHA 3D, les CAPTCHA avec images dynamique type puzzle ou le nouveau reCAPTCHA de Google qui se base sur l’analyse du comportement de la souris pour distinguer une activité humaine de celle d’une machine.

 

Le nouveau "No CAPTCHA reCAPTCHA"

Figure 1.2 : Exemples du nouveau Google “No CAPTCHA reCAPTCHA”

 

Pour finir, notons simplement qu’il devient capital pour un architecte, un administrateur ou un concepteur, en termes de conditions de sécurité, de bien se documenter sur la qualité du CAPTCHA avant de le mettre en place et de ne pas considérer le CAPTCHA comme un unique rempart face aux risques grandissants auxquels s’exposent de plus en plus les applications en général, et les application Web en particulier.

Nombre de vue : 180

AJOUTER UN COMMENTAIRE