Abonnez-vous pour recevoir des notifications sur les nouveaux articles :

Les CAPTCHA font perdre chaque jour près de 500 ans à l'ensemble de l'humanité : il est temps de mettre un terme à cette folie

2021-05-13

Lecture: 11 min.
Cet article est également disponible en English, en Deutsch, en 日本語 et en 简体中文.

Sélectionnez tous les bus. Cliquez sur les vélos. Cette photo comporte-t-elle des feux de circulation ? Ces questions paraissent ridicules, pourtant vous en avez certainement eu au moins une devant les yeux récemment. Il s'agit là d'une technique, appelée CAPTCHA, que les services en ligne utilisent pour distinguer les humains des bots. Les CAPTCHA permettent ainsi de renforcer la sécurité des services en ligne, mais cette protection s'accompagne d'un prix bien réel.

D'après nos informations, le processus de réponse à un test CAPTCHA demande environ 32 secondes à l'utilisateur. 4,6 milliards d'internautes existent à travers le monde. Partons également du postulat qu'un internaute type rencontre un CAPTCHA environ une fois tous les 10 jours.

Un rapide calcul permet d'établir que ces tests représentent chaque jour une perte de temps correspondant à près de 500 ans à l'échelle de l'humanité, et ce uniquement pour prouver sa nature d'être humain.

Nous lançons aujourd'hui une expérience visant à mettre fin à cette folie et à nous débarrasser totalement des CAPTCHA. L'idée est assez simple : un être humain devrait pouvoir simplement se contenter de toucher ou de regarder son appareil pour prouver qu'il n'est pas un bot, sans avoir à dévoiler son identité. Nous souhaitons vous permettre de prouver votre nature humaine sans nécessairement révéler qui vous êtes ! Vous vous demandez peut-être si l'opération s'avère tout simplement possible ? Et la réponse est : « Oui ! » L'utilisation des clés d'authentification USB (comme YubiKey), une solution qui existe depuis un certain temps maintenant, commence à se développer avec un nombre toujours plus croissant de téléphones et d'ordinateurs équipés par défaut.

Les jours des bouches d'incendie, des passages piétons et des feux de signalisation sont désormais comptés sur Internet.

Pourquoi utiliser les CAPTCHA ?

Les entreprises ont bien souvent besoin d'un moyen de vérifier qu'un utilisateur en ligne n'est pas un bot. Cette vérification est généralement motivée par des raisons liées à la sécurité ou à des risques d'utilisation abusive d'un service en ligne. Les CAPTCHA ont ainsi le jour au début des années 2000 afin de répondre à ce besoin. Le premier d'entre eux a été développé en 1997 et le terme CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart, ou test de Turing public entièrement automatisé ayant pour but de différencier les humains des ordinateurs ») a été inventé en 2003 par Luis von Ahn, Manuel Blum, Nicholas J. Hopper et John Langford.

La nature même des tests CAPTCHA implique une automatisation, afin de leur permettre d'être présentés aussi bien aux humains qu'aux bots qu'ils essaient de détecter.

Pourquoi se débarrasser des CAPTCHA ?

Simplement parce que tout le monde les déteste.

Jusqu'à présent, la meilleure réponse à notre disposition a été d'en réduire l'usage au minimum. Chez Cloudflare, par exemple, nous cherchons à apporter des améliorations constantes à notre solution de gestion des bots afin de déterminer le plus intelligemment possible à quel moment il convient de présenter un CAPTCHA à l'utilisateur. Toutefois, grâce aux progrès de l'IA (voir l'article sur les numéros de rue, le web est passé au fil du temps d'un modèle basé sur des CAPTCHA simples (le repérage de texte contre un fond) à la reconnaissance optique de caractères de livres anciens, sans oublier l'identification d'objets à partir d'images. Cette transformation entraîne d'ailleurs de véritables problèmes pour les internautes humains :

  1. Productivité : cette tâche fait perdre du temps, nuit à la concentration en détournant l'attention de l'activité en cours et engendre souvent une certaine frustration.

  2. Accessibilité : les utilisateurs sont censés disposer des capacités physiques et cognitives nécessaires pour résoudre les tests, mais le contraire reste possible. Un handicap visuel, par exemple, peut rendre impossible la résolution d'un test CAPTCHA.

  3. Connaissances culturelles : à l'échelle de la planète, le nombre de personnes ayant déjà vu une bouche d'incendie américaine reste relativement faible, de même que tout le monde ne parle pas nécessairement anglais. Les taxis sont jaunes à New York, noirs à Londres, mais restent des véhicules tout à fait classiques dans beaucoup d'autres pays !

  4. Interactions sur les appareils mobiles : les téléphones et les appareils mobiles constituent le principal (et bien souvent le seul) moyen d'accès à Internet pour une grande partie du monde. Les CAPTCHA sollicitent lourdement le forfait de données et la batterie de l'utilisateur, sans compter la difficulté d'utilisation accrue sur les petits écrans.

En réalité, le World Wide Web Consortium (W3C) a mis en lumière le défaut d'accessibilité des CAPTCHA par le biais de divers projets, et ce dès 2003.

La liste ci-dessus ne mentionne toutefois que les inconvénients pour l'utilisateur. Le poids pesant sur les usagers se traduit également par des coûts très réels pour les entreprises. C'est là l'une des raisons pour lesquelles ces dernières consacrent tellement de temps à l'optimisation des performances et de la mise en page de leurs sites web et de leurs applications. Ce travail en amont permet de prévenir le rebond de l'utilisateur lorsque vous souhaitez qu'il s'inscrive et évite l'abandon du panier d'achat au moment du paiement. En général, l'objectif consiste à empêcher le client de ressentir une frustration susceptible de l'inciter à ne plus revenir.

Dans la pratique, les CAPTCHA engendrent des frictions entre les entreprises et les utilisateurs, comme vous l'affirmera n'importe quel dirigeant d'une entreprise très active dans le commerce en ligne. Le déploiement de ces tests ne résulte jamais d'une volonté propre, mais d'une absence de choix.

Nous avons commencé à nous attaquer à ces problèmes lors de la transition entre Google reCAPTCHA et hCAPTCHA. Il est désormais temps d'aller plus loin.

Le CAPTCHA sans image : l'attestation cryptographique de personnalité

Les clés de sécurité physiques se présentent sous la forme de petits dispositifs dotés d'un élément secret intégré, capables de se connecter à votre ordinateur ou à votre téléphone.

Du point de vue de l'utilisateur, l'attestation cryptographique de personnalité fonctionne comme suit :

  1. L'utilisateur accède à un site web protégé par une attestation cryptographique de personnalité, comme cloudflarechallenge.com.

  2. Cloudflare affiche un test.

  3. L'utilisateur clique sur « Je suis humain (bêta) » et se voit invité à présenter un dispositif de sécurité.

  4. L'utilisateur décide d'utiliser une clé de sécurité physique.

  5. L'utilisateur connecte le dispositif à son ordinateur ou l'approche de son téléphone en cas de signature sans fil (à l'aide de la technologie NFC).

  6. Une attestation cryptographique est envoyée à Cloudflare, qui autorise l'accès de l'utilisateur une fois le test de présence de l'utilisateur effectué.

La procédure demande cinq secondes. Plus important encore, ce test garantit la confidentialité de l'utilisateur dans la mesure où l'attestation n'est pas liée de manière exclusive à son appareil. Tous les fabricants approuvés par Cloudflare font partie de l'alliance FIDO. À ce titre, chaque clé physique partage son identifiant avec les autres clés fabriquées au sein du même lot (voir le document Universal 2nd Factor Overview [Second facteur universel : présentation], section 8). Du point de vue de Cloudflare, votre clé ressemble à toutes les autres clés du lot.

La procédure d'attestation cryptographique de personnalité nécessite au maximum trois clics. Le phénomène de mise en boucle disparaît et l'utilisateur n'a plus à cliquer dix fois de suite sur un bus.

Une vaste gamme de clés de sécurité physiques existe, mais notre déploiement initial se limitera à quelques dispositifs : les clés YubiKeys (que nous avons eu la chance d'utiliser et de tester), les clés HyperFIDO et les clés FIDO U2F de Thetis.

« Yubico place depuis longtemps la promotion des normes d'authentification ouvertes, comme WebAuthn, au cœur de notre mission consistant à offrir des mesures de sécurité robustes assorties d'une expérience agréable pour l'utilisateur », déclare Christopher Harrell, directeur de la technologie (CTO) chez Yubico. « En proposant une solution de remplacement au CAPTCHA sous la forme d'une procédure à contact unique, soutenue par le matériel YubiKey et le chiffrement par clé publique, l'expérience d'attestation cryptographique de personnalité de Cloudflare pourrait contribuer à alléger davantage la charge cognitive imposée aux utilisateurs lors de leurs interactions avec des sites soumis à des contraintes ou des attaques. J'espère que cette expérience permettra aux usagers d'atteindre leurs objectifs avec le moins de frictions possible et le maximum de confidentialité, et que les résultats montreront qu'il peut être intéressant pour d'autres sites d'envisager la sécurité physique à d'autres fins que la simple authentification. »

Comment cette solution fonctionne-t-elle ?

L'attestation cryptographique de personnalité repose sur l'attestation d'authentification web (WebAuthn), une API normalisée par le W3C et déjà intégrée à la plupart des navigateurs web et des systèmes d'exploitation modernes. Cette API a pour objectif de proposer une interface standard pour l'authentification des internautes, tirant parti des capacités de chiffrement de leurs appareils.

À mesure que la nécessité de disposer d'une sécurité renforcée et à la convivialité optimisée augmente, nous prévoyons une explosion des déploiements de WebAuthn.

Plate-forme

Navigateurs compatibles

iOS 14.5

Tous les navigateurs

Android 10 et versions ultérieures

Chrome

Windows

Tous les navigateurs

macOS

Tous les navigateurs

Ubuntu

Tous les navigateurs

En partant du principe que vous utilisez un appareil physique doté d'une configuration compatible, vous pourriez néanmoins vous demander ce qui se passe en arrière-plan.

Présentation rapide

En résumé, votre dispositif comporte un module sécurisé intégré contenant un élément secret unique, scellé par le fabricant. Le module de sécurité est capable de prouver qu'il détient cet élément secret sans avoir à le révéler. Cloudflare vous demande des preuves et vérifie la légitimité du fabricant de votre dispositif.

Explication technique

Dans la version longue, cette vérification implique un chiffrement à clé publique et des certificats numériques.

Le chiffrement à clé publique permet de produire des signatures numériques infalsifiables. Un utilisateur génère une clé de signature capable de signer des messages et une clé de vérification susceptible d'être utilisée par quiconque pour vérifier l'authenticité d'un message. L'ensemble s'apparente à un anneau sigillaire, où la signature représente l'empreinte de l'anneau et l'anneau en lui-même constitue la clé de signature.

L'utilisation d'une signature est largement répandue pour prouver l'authenticité de quelque chose. Dans le cas présent, votre navigateur a vérifié que le serveur qui prétend être « blog.cloudflare.com » est bien légitime en contrôlant une signature produite par un utilisateur en possession d'une clé de signature associée à « blog.cloudflare.com ». Pour prouver la légitimité de la clé de vérification, le serveur fournit un certificat reliant la clé de vérification à « blog.cloudflare.com », un site lui-même signé par une autre clé de vérification dans un autre certificat. La chaîne remonte ainsi à un certificat racine issu d'une autorité de certification intégrée à votre navigateur.

Prenons un autre exemple. Alice possède un ordinateur portable disposant d'un module sécurisé intégré. Ce module contient une clé de signature, sk_a. Alice dit qu'elle a envoyé une lettre d'amour à Bob hier. Toutefois, Bob est méfiant. Malgré les mots « Salut Bob, c'est Alice » au début de la lettre, Bob souhaiterait s'assurer que cette lettre provient bien d'Alice. Pour ce faire, Bob demande à Alice de lui fournir sa signature dans le cadre du message suivant, « musical-laboratory-ground ». Comme Bob choisit lui-même le message, si Alice peut fournir une signature associée à sa clé de vérification (pk_a), Bob sera convaincu que la lettre d'amour provient bien d'Alice. Alice fournit la signature sk_a(« musical-laboratory-ground »). Bob confirme que la signature sk_a(« musical-laboratory-ground ») est bien associée à la signature pk_a. Il peut désormais s'engager en toute sécurité dans leurs échanges chiffrés.

Revenons à l'attestation cryptographique de personnalité. Vous savez désormais que votre clé physique contient une clé de signature intégrée. Toutefois, Cloudflare ne connaît pas et ne peut pas connaître les clés de signature de tous les internautes. Pour remédier à ce problème, Cloudflare demande un autre type de preuve. En vous demandant si vous êtes humain, nous vous demandons en fait de prouver que vous êtes bien en possession d'une clé publique signée par un fabricant de confiance. Lors de l'envoi de dispositifs dotés d'un module sécurisé, les fabricants signent la clé publique d'attestation associée à l'aide d'un certificat numérique.

Les certificats numériques contiennent généralement une clé publique, à savoir des informations sur l'organisation pour laquelle ils sont délivrés, une période de validité, l'utilisation autorisée et une signature vérifiée par une autorité de certification permettant d'en garantir la légitimité. Ces certificats permettent d'associer des métadonnées à une clé publique et donc de donner des informations sur l'émetteur d'une signature.

Ainsi, lorsque Cloudflare vous demande de fournir une signature, le système vérifie que votre clé publique a été signée par la clé publique d'un fabricant. Les fabricants disposant de plusieurs niveaux de certificats, votre appareil présente une chaîne de certificats que Cloudflare peut vérifier. Chaque maillon de la chaîne est signé par celui qui précède et signe pour celui qui suit. Cloudflare fait confiance au certificat racine des fabricants. Comme ces certificats existent en nombre limité, nous pouvons les contrôler manuellement.

La confidentialité avant tout

La conception d'un test demandant aux utilisateurs de prouver qu'ils sont bien en possession d'une clé réalisée par un fabricant donné est une gageure en matière de confidentialité et de sécurité.

Le tableau suivant résume les propriétés de l'attestation cryptographique de personnalité en matière de confidentialité.

Action

Possibilité

En réalité

Enregistrer vos empreintes digitales ou d'autres données biométriques

NON

S.O.

Déterminer le fabricant de votre clé

OUI, connaissance limitée au nombre de clés de votre lot*

OUI

Associer un identifiant unique à votre clé

OUI**

NON

* Chaque lot doit se composer d'un minimum de 100 000 clés (FIDO UAF Protocol Specification #4.1.2.1.1 [Spécification du protocole FIDO UAF nº 4.1.2.1.1] ). Il s'avère toutefois que les clés autosignées et les clés émises par certains fabricants ne respectent pas cette exigence.

** Ceci nécessiterait la définition d'un cookie séparé et distinct pour suivre votre clé, une opération qui va à l'encontre du respect de la confidentialité sur Internet et des objectifs de ce projet. Vous trouverez plus d'informations sur la manière dont nous supprimons les cookies, tels que __cfduid, ici.

Attestation sans collecte de données biométriques

Objectif de ce projet : nous souhaitons nous assurer que vous êtes bien humain, mais n'avons pas besoin de savoir qui vous êtes vraiment.

Par chance, l'API WebAuthn s'en charge parfaitement pour nous. Si nous devions un jour renier nos principes et collecter des éléments biométriques (comme les empreintes digitales), l'API nous en empêcherait. Lorsque votre appareil demande une authentification biométrique (à l'aide d'un capteur d'empreintes digitales, par exemple), tout se passe localement. La vérification a pour but de déverrouiller le module sécurisé de votre appareil, qui transmet alors une signature associée à votre plate-forme.

Notre test tire parti du processus d'inscription à WebAuthn. Ce dernier a été conçu pour effectuer plusieurs authentifications, mais il s'agit là d'une fonctionnalité dont nous n'avons pas l'usage. Nous attribuons par conséquent la même valeur constante au champ de nom d'utilisateur demandé, soit une opération permettant de protéger les utilisateurs contre la désanonymisation.

Aucune activité dissimulée

L'un des usages des CAPTCHA consiste à étiqueter des jeux de données difficiles à identifier pour l'IA, comme des livres, des numéros de rues ou des bouches d'incendie. Si ce processus s'avère utile d'un point de vue scientifique, il a également été exploité par certaines entreprises afin de tirer parti des capacités de reconnaissance humaine à des fins commerciales, à l'insu des utilisateurs.

Avec l'attestation cryptographique de personnalité, ce cas de figure ne se présente jamais. Nous disposons d'une plus grande souplesse dans la conception de la procédure pour les utilisateurs, car nous ne sommes plus contraints par le modèle des tests CAPTCHA.

Les mesures prises par Cloudflare pour renforcer davantage la confidentialité

Si l'attestation cryptographique de personnalité présente de nombreux avantages en matière de confidentialité, cette solution demeure néanmoins imparfaite. Cloudflare doit encore connaître le fabricant de votre clé pour vous laisser entrer. Comme WebAuthn fonctionne avec n'importe quel certificat, nous devons nous assurer que Cloudflare reçoit des certificats provenant de clés physiques vierges de toute manipulation. Nous préférerions toutefois ne pas disposer de ces informations, afin de préserver davantage la confidentialité.

Nous avons déjà travaillé sur des normes de confidentialité par le passé, à commencer par le Privacy Pass, par exemple. Le protocole Privacy Pass vous permet de répondre à un test une seule fois, car il se charge de transmettre la preuve de votre réussite les fois suivantes afin de vous éviter de résoudre plusieurs CAPTCHA. Cette solution a ainsi considérablement amélioré l'expérience utilisateur des utilisateurs de VPN, soumis à davantage de tests que les autres internautes.

Pour l'attestation cryptographique de personnalité, nous nous intéressons à un domaine émergent de la cryptographie, à savoir la preuve à divulgation nulle de connaissance (ZKP, Zero Knowledge Proof). Cette méthode permet à nos utilisateurs de prouver que leur fabricant fait bien partie d'un ensemble de fabricants auxquels Cloudflare fait confiance. Grâce aux ZKP, les dispositifs issus d'un même fabricant deviennent indiscernables les uns des autres. Même chose pour les dispositifs provenant des autres fabricants. Ce nouveau système requiert davantage de précisions techniques et mérite qu'un article de blog lui soit consacré. Restez donc à l'écoute !

Une quête sans fin

La conception d'un test visant à protéger des millions de propriétés Internet n'est pas une mince affaire. Dans la configuration actuelle, nous pensons que l'attestation cryptographique de personnalité offre de solides garanties en matière de sécurité et de facilité d'utilisation par rapport aux tests traditionnels du modèle CAPTCHA. Lors d'une étude préliminaire, les utilisateurs ont exprimé une forte préférence pour le fait de toucher une clé physique plutôt que de cliquer sur des images. Nous sommes néanmoins conscients que ce nouveau système peut encore être amélioré.

Cette expérience sera accessible de manière limitée dans les régions anglophones. Ce mode de déploiement nous garantit ainsi une certaine diversité au sein des utilisateurs et nous permet de tester le processus dans différents endroits. Toutefois, nous reconnaissons que cette couverture est insuffisante et comptons bien poursuivre les tests. N'hésitez pas à nous contacter si vous avez des besoins spécifiques.

La sécurité représente un autre aspect que nous surveillons de près. Tout repose ici sur les équipements physiques fournis par les fabricants de confiance. Nous avons toute confiance dans leur caractère sécurisé. En cas de violation, nous serions en mesure d'annuler rapidement les autorisations des clés publiques des fabricants à différents niveaux de granularité.

Nous devons également envisager la possibilité de nous retrouver face à des systèmes automatisés d'activation de boutons. Un oiseau buveur capable d'appuyer sur un capteur tactile capacitif pourrait ainsi réussir le test d'attestation cryptographique de personnalité. Au mieux, la vitesse de résolution par l'oiseau correspondrait au temps nécessaire à l'équipement physique pour générer une attestation. Avec notre ensemble actuel de fabricants de confiance, l'opération demeurerait toutefois plus lente qu'avec les services de résolution de CAPTCHA professionnels, tout en permettant aux utilisateurs légitimes de passer avec certitude. De plus, les mesures d'atténuation Cloudflare existantes resteraient en place, afin de protéger efficacement les propriétés Internet.

Conclusions

L'objectif de Cloudflare revient toujours au même : contribuer à bâtir un Internet meilleur. Aussi, l'idée de perdre collectivement 500 ans par jour sur Internet (et l'absence de remise en question des postulats fondamentaux des CAPTCHA depuis le début du siècle) nous paraissait tout bonnement absurde.

Nous sommes très fiers du travail que nous avons accompli ici pour lancer l'attestation cryptographique de personnalité. Conçu selon une méthode axée sur l'utilisateur, le test maintient néanmoins un haut niveau de sécurité concernant l'accès aux propriétés Internet présentes sur le réseau mondial de Cloudflare. Nous sommes actuellement en train d'enrichir le test d'humanité existant en y intégrant l'attestation cryptographique de personnalité. Vous pouvez donc vous attendre à la voir de plus en plus fréquemment au fil du temps. Essayez-la dès aujourd'hui sur cloudflarechallenge.com.

Nous tenons à saluer le travail des autres équipes Cloudflare. Si ce dernier a certes été dirigé par l'équipe de recherche, nous avons néanmoins eu le privilège d'être épaulés par l'ensemble de l'entreprise. D'ailleurs, si vous souhaitez participer à nos côtés à la construction d'un meilleur Internet, nous recrutons.

Enfin, nous sommes ravis de contribuer à la disparition des bouches d'incendie sur Internet. Leur présence n'est plus nécessaire aujourd'hui.

Commentaires et erreurs courantes

Comme il s'agit actuellement d'un projet expérimental de l'équipe de recherche Cloudflare, seules les clés de sécurité USB ou NFC fonctionnent pour le moment. Nous nous réjouissons de recevoir des commentaires sur le sujet et examinerons la possibilité d'ajouter d'autres dispositifs d'authentification dès que possible. Si vous utilisez un dispositif non pris en charge, vous éprouverez probablement des difficultés à comprendre le message d'erreur de votre navigateur. Sur Google Chrome, le message se présentera sous cette forme :

Si vous souhaitez nous faire part de vos commentaires concernant l'attestation cryptographique de personnalité, merci d'utiliser notre formulaire Google, disponible ici : https://forms.gle/HQxJtXgryg4oRL3e8

Nous protégeons des réseaux d'entreprise entiers, aidons nos clients à développer efficacement des applications à l'échelle d'Internet, accélérons tous les sites web ou applications Internet, repoussons les attaques DDoS, tenons les pirates informatiques à distance et pouvons vous accompagner dans votre parcours d'adoption de l'architecture Zero Trust.

Accédez à 1.1.1.1 depuis n'importe quel appareil pour commencer à utiliser notre application gratuite, qui rend votre navigation Internet plus rapide et plus sûre.

Pour en apprendre davantage sur notre mission, à savoir contribuer à bâtir un Internet meilleur, cliquez ici. Si vous cherchez de nouvelles perspectives professionnelles, consultez nos postes vacants.
Nouveautés produitsSécuritéResearchCAPTCHA

Suivre sur X

Thibault Meunier|@thibmeu
Cloudflare|@cloudflare

Publications associées

24 octobre 2024 à 13:00

Durable Objects aren't just durable, they're fast: a 10x speedup for Cloudflare Queues

Learn how we built Cloudflare Queues using our own Developer Platform and how it evolved to a geographically-distributed, horizontally-scalable architecture built on Durable Objects. Our new architecture supports over 10x more throughput and over 3x lower latency compared to the previous version....