Vous avez certainement déjà rencontré un CAPTCHA en utilisant Internet. Vous remplissez un formulaire, vous voulez créer un compte, publier un commentaire, récupérer un mot de passe ou effectuer une opération sensible et, juste avant de continuer, le site vous demande de prouver que vous êtes bien une personne et non un programme automatisé. Le terme CAPTCHA est l'acronyme de :
Completely Automated Public Turing test to tell Computers and Humans Apart
On peut traduire cette expression par :
Test de Turing public et automatique permettant de distinguer les ordinateurs des humains.
L'objectif est de détecter ou décourager les robots automatisés qui tentent d'effectuer une action sur un site Internet.
Pourquoi vouloir bloquer les robots ?
Un site Internet peut être confronté à de nombreux programmes automatisés, dont certains sont parfaitement légitimes. Les moteurs de recherche utilisent par exemple des robots pour parcourir et indexer les pages du Web. Mais d'autres robots peuvent être utilisés à des fins malveillantes.
Ils peuvent notamment :
- créer automatiquement des milliers de comptes
- envoyer des messages publicitaires
- remplir des formulaires
- publier des commentaires indésirables
- tenter de récupérer des informations
- tester automatiquement des identifiants et des mots de passe
- réserver automatiquement des produits ou des places
- saturer certaines fonctionnalités d'un site
- exploiter des vulnérabilités.
Le CAPTCHA constitue donc une des barrières possibles contre ces automatisations.
Le CAPTCHA traditionnel : recopier des caractères
Les premiers CAPTCHA très répandus proposaient souvent une image contenant une série de lettres et de chiffres déformés. L'utilisateur devait recopier ce qu'il voyait.
Par exemple :
X7pK9
Le texte pouvait être volontairement déformé, accompagné de lignes, de points ou de bruit visuel afin de rendre sa lecture plus difficile pour un logiciel.
L'idée était simple :
un humain est capable de reconnaître les caractères malgré les déformations ; un programme aura davantage de difficultés.
Cette technique a cependant montré ses limites. Les logiciels de reconnaissance d'image et de caractères (OCR) ont énormément progressé. Ce qui était difficile pour un ordinateur il y a vingt ans peut aujourd'hui être relativement facile pour un système d'intelligence artificielle.
Le CAPTCHA sous forme d'image
Une autre méthode consiste à demander à l'utilisateur d'identifier certains éléments dans une série d'images.
Par exemple :
Sélectionnez toutes les images contenant un feu de circulation.
Ou :
Cliquez sur toutes les cases contenant un passage piéton.
Ces tests exploitent les capacités de reconnaissance visuelle de l'être humain. Mais là encore, l'intelligence artificielle a changé la situation. Les systèmes modernes de vision artificielle sont capables d'identifier de nombreux objets avec une efficacité remarquable. Il serait donc aujourd'hui incorrect d'affirmer :
« Les bots ne sont pas capables de déchiffrer les images. »
Certains en sont parfaitement capables. Le CAPTCHA doit donc constamment évoluer.
La fameuse case « Je ne suis pas un robot »
Vous avez probablement déjà rencontré une case du type :
☐ Je ne suis pas un robot
C'est notamment le principe popularisé par reCAPTCHA. Contrairement à ce que l'on pourrait penser, le système ne se contente pas nécessairement de vérifier si vous avez réussi à cocher une case. Il peut également analyser différents éléments permettant d'évaluer si le comportement semble correspondre à celui d'un humain ou d'un programme automatisé. Le système peut notamment prendre en compte des signaux comportementaux et techniques. L'utilisateur peut ainsi être considéré comme suffisamment fiable sans avoir à résoudre un véritable puzzle.
CAPTCHA et reCAPTCHA
Il faut distinguer les deux termes :
- CAPTCHA est un type de mécanisme de sécurité.
- reCAPTCHA est une technologie développée par Google permettant notamment de détecter les interactions automatisées.
Le premier reCAPTCHA demandait notamment aux internautes de retranscrire des textes difficiles à reconnaître. Le système a ensuite évolué vers des mécanismes nécessitant moins d'interaction de la part de l'utilisateur. Google propose aujourd'hui différentes générations de reCAPTCHA, avec notamment des mécanismes permettant d'évaluer le risque sans toujours demander à l'utilisateur de résoudre un test visuel.
Tous les CAPTCHA ne sont pas visibles
C'est une évolution importante. Un système anti-robot moderne peut fonctionner sans afficher de puzzle à l'utilisateur. Le site peut analyser le comportement d'une session et attribuer un niveau de confiance ou de risque.
Par exemple :
- vitesse de navigation
- enchaînement des actions
- fréquence des requêtes
- comportement de la session
- caractéristiques techniques du navigateur
- réputation de certaines adresses IP
- utilisation ou non de certaines fonctionnalités du navigateur
Le site peut alors décider :
comportement normal → accès autorisé
comportement suspect → vérification supplémentaire
Cette approche permet de réduire les CAPTCHA visibles pour les utilisateurs légitimes.
Les CAPTCHA ne sont qu'une partie de la défense
C'est probablement le point le plus important à ajouter à ton article. Un CAPTCHA ne constitue pas une protection absolue contre les robots. Les sites utilisent généralement plusieurs mécanismes complémentaires.
La limitation du nombre de requêtes
On peut limiter le nombre de demandes effectuées par une même source pendant une période donnée.
C'est ce qu'on appelle le rate limiting.
Exemple :
Pas plus de 10 tentatives de connexion en une minute.
Cela permet notamment de ralentir certaines attaques automatisées.
L'analyse comportementale
Le site peut rechercher des comportements caractéristiques d'un robot.
Par exemple :
Un utilisateur remplit 500 formulaires en deux minutes.
Ce comportement est évidemment suspect. Un système automatisé peut également présenter des caractéristiques différentes d'un utilisateur humain dans sa manière de naviguer ou d'interagir avec une page.
Le filtrage des adresses IP
Un site peut également surveiller les adresses IP à l'origine des requêtes. Une adresse qui génère un volume anormal de demandes peut être temporairement limitée ou bloquée. Cette méthode possède toutefois des limites. Une même adresse IP peut être utilisée par plusieurs utilisateurs légitimes, notamment derrière un routeur, un réseau d'entreprise ou certains réseaux mobiles. À l'inverse, un attaquant peut utiliser de nombreuses adresses IP différentes.
Les cookies et autres informations de session
Les sites peuvent également utiliser des informations liées à la session de navigation pour détecter des comportements inhabituels. Cela peut permettre de distinguer une véritable session de navigation
d'une succession de requêtes automatisées.
Mais ces mécanismes doivent eux aussi respecter les règles applicables à la protection des données et aux traceurs.
Le fingerprinting
Certains systèmes de sécurité utilisent également le fingerprinting ou empreinte numérique du navigateur. Le principe consiste à analyser différentes caractéristiques techniques du navigateur et de l'environnement utilisé afin d'établir une sorte d'empreinte. Cette technique peut être utilisée à des fins de sécurité ou de lutte contre la fraude. Elle soulève cependant d'importantes questions de confidentialité et de respect de la vie privée.
Les honeypots
Une technique intéressante et relativement simple consiste à utiliser un honeypot (« pot de miel »). Le site ajoute par exemple un champ de formulaire qui est invisible pour un utilisateur normal. Un robot qui remplit automatiquement tous les champs peut également remplir ce champ caché. Le serveur peut alors considérer la requête comme suspecte. C'est une technique particulièrement intéressante pour lutter contre les robots qui remplissent automatiquement les formulaires de contact.
Le temps de remplissage
Un autre indice peut être le temps nécessaire pour remplir un formulaire. Imaginez un formulaire comportant dix champs. Un utilisateur humain met généralement un certain temps à le remplir. Un robot peut envoyer les dix informations quelques millisecondes après le chargement de la page. Le temps de réalisation peut donc constituer un signal parmi d'autres. Mais là encore, ce n'est pas une preuve absolue : un utilisateur peut utiliser un gestionnaire de mots de passe ou la saisie automatique.
Pourquoi les robots remplissent-ils les formulaires ?
Les formulaires de contact constituent une cible particulièrement intéressante pour les spammeurs.
On retrouve souvent les mêmes informations :
- nom
- prénom
- adresse mail
- téléphone
- sujet
- message.
Un robot peut donc être programmé pour remplir automatiquement ces champs sur des milliers de sites. Le but peut être :
- envoyer du spam
- publier des liens
- promouvoir un site
- tenter une escroquerie
- tester la sécurité d'un site
- provoquer une surcharge
Le problème du spam provenant d'un formulaire de contact
Un message envoyé depuis un formulaire de contact n'est pas automatiquement considéré comme légitime par les systèmes anti-spam simplement parce qu'il provient du site lui-même. Les serveurs de messagerie disposent aujourd'hui de nombreux mécanismes de filtrage. Cependant, un formulaire mal protégé peut effectivement devenir un point de départ pour des campagnes de spam ou d'abus, notamment lorsque le site transmet automatiquement le contenu du formulaire à une adresse e-mail interne.
Le CAPTCHA peut aussi protéger une page sensible
Les CAPTCHA peuvent être utilisés notamment lors :
- de la création d'un compte
- de la connexion
- de la récupération d'un mot de passe
- de l'envoi d'un formulaire
- de la publication d'un commentaire
- de l'inscription à un service
- d'une opération considérée comme sensible.
L'objectif est toujours similaire :
rendre l'automatisation abusive plus difficile.
Le CAPTCHA : un compromis entre sécurité et confort
Le problème est évident. Plus le CAPTCHA est compliqué, plus il est difficile pour les robots. Mais plus il est compliqué, plus il devient pénible pour les utilisateurs. Un CAPTCHA mal conçu peut être particulièrement problématique pour les personnes :
- malvoyantes
- aveugles
- ayant des difficultés motrices
- ayant des difficultés cognitives
L'accessibilité doit donc être prise en compte. Un bon système anti-robot doit essayer de protéger le site sans transformer son utilisation en parcours d'obstacles.
CAPTCHA et intelligence artificielle : une course permanente
L'histoire des CAPTCHA ressemble à une course entre deux technologies.
CAPTCHA
↓
Amélioration des robots
↓
Nouveau CAPTCHA
↓
Amélioration de l'intelligence artificielle
↓
Nouvelles techniques de détection
Le CAPTCHA traditionnel reposait notamment sur une idée :
« Une tâche facile pour un humain mais qui est difficile pour une machine. »
Mais cette frontière devient de plus en plus floue. La reconnaissance de caractères, la reconnaissance d'images et la compréhension du langage ont énormément progressé. Le CAPTCHA moderne doit donc davantage chercher à évaluer le comportement et le contexte d'une interaction qu'à simplement poser une énigme visuelle.
Et les robots ne sont pas tous malveillants
Il est important de le préciser. Un bot est simplement un programme automatisé. Tous les bots ne sont pas des logiciels malveillants. Les moteurs de recherche utilisent des robots pour indexer (analyser et référencer) les pages.
Des services utilisent également des robots pour :
- surveiller des sites
- vérifier la disponibilité d'un service
- analyser des contenus
- automatiser certaines tâches.
Le problème n'est donc pas :
humain contre robot
mais plutôt :
utilisateur légitime contre automatisation abusive ou malveillante.
CAPTCHA : une protection parmi d'autres
Un site sérieux ne devrait pas compter uniquement sur un CAPTCHA. Une protection efficace repose généralement sur plusieurs couches :CAPTCHA / détection comportementale :
- limitation des requêtes
- protection des comptes
- filtrage des entrées
- blocage des comportements suspects
- surveillance
- journalisation
Cette approche est beaucoup plus efficace qu'un simple « test anti-robot ».

