CAPTCHA proof of work : un CAPTCHA sans puzzle d'images
« Efficiently verifiable, but parameterisably expensive to compute » : c'est ainsi qu'Adam Back décrivait en 2002 le jeton de Hashcash, qu'il appelait déjà un « proof-of-work ». Un CAPTCHA proof of work reprend exactement cette idée. Avant d'accepter votre formulaire, le serveur exige que le navigateur ait trouvé, par essais successifs, la solution d'un petit calcul, qu'il vérifie ensuite d'un seul coup. Un visiteur ne s'en rend pas compte. Un robot qui envoie mille formulaires paie mille fois.
Qu'est-ce que cela prouve ? Pas qu'un humain se trouve devant l'écran, répond l'OWASP. D'où l'habitude, chez la plupart des fournisseurs commerciaux, de coupler le calcul à d'autres signaux.
D'où vient l'idée
Elle date d'avant le web des formulaires. En 1992, à la conférence CRYPTO, Cynthia Dwork et Moni Naor voulaient freiner le courrier indésirable en faisant payer l'accès à une boîte mail par une fonction « moderately hard, but not intractable ». Back a proposé Hashcash en 1997, sur la base de collisions partielles de hachage. Le retour de l'idée sur les sites web doit beaucoup à l'usure des puzzles d'images : l'OWASP constate que des machines les résolvent et que des fermes de clics les traitent en sous-traitance.
Le déroulement
| Étape | Qui | Ce qui se passe |
|---|---|---|
| 1 | serveur | envoie une tâche : une valeur aléatoire et un niveau de difficulté, en général signés |
| 2 | navigateur | essaie des nombres jusqu'à ce que le résultat d'une fonction de hachage remplisse la condition (SHA-256, ou des procédés gourmands en mémoire comme Argon2id) |
| 3 | serveur | vérifie la solution en un seul calcul |
| 4 | serveur | n'accepte chaque jeton qu'une fois et pour peu de temps |
Et si l'attaque s'intensifie ? mCaptcha relève la difficulté quand beaucoup de requêtes arrivent en même temps. D'autres fournisseurs regardent chaque visite et donnent un calcul plus long à celles qui paraissent suspectes.
Les limites
Ben Laurie et Richard Clayton ont fait le calcul en 2004 pour le spam par e-mail : une difficulté assez élevée pour freiner les spammeurs aurait gêné nombre d'expéditeurs légitimes, et un travail de dix secondes sur un Pentium à 3 GHz pouvait prendre une heure sur un Palm Pilot. L'OWASP résume aujourd'hui que le proof of work augmente le coût de l'automatisation sans établir que le client est humain, et que des énigmes trop dures peuvent bloquer des utilisateurs légitimes.
Côté accessibilité, un calcul résolu par le navigateur ne demande au visiteur ni de mémoriser, ni de recopier, ni de calculer, ce que le critère 3.3.8 des WCAG 2.2 vise pour les étapes de connexion. Cela ne dit pas si un widget précis est accessible : un long temps de calcul après une mauvaise classification peut lui aussi exclure des personnes.
Comparaison des procédés invisibles
| Procédé | Exemples | Ce qui est vérifié |
|---|---|---|
| proof of work seul | ALTCHA (open source), mCaptcha | un calcul à difficulté fixe ou liée à la charge |
| calcul et signaux de risque | Friendly Captcha v2, ALTCHA Sentinel, Myra EU CAPTCHA | les caractéristiques du navigateur et de l'appareil fixent la difficulté ; selon le fournisseur, interaction supplémentaire ou calcul plus long en cas de doute |
| vérifications dans le navigateur | Cloudflare Turnstile | selon Cloudflare, notamment proof of work, proof of space et interrogation d'API web |
| score de risque seul | Google reCAPTCHA v3 | le comportement sur la page, score de 0,0 à 1,0 |
| attestation | Privacy Pass (RFC 9576 à 9578), Apple Private Access Tokens | un émetteur confirme par jeton que le client a passé un contrôle, sans révéler son identité |
Myra EU CAPTCHA figure à la deuxième ligne. Selon sa documentation, le widget recueille au chargement de la page des caractéristiques regroupées en sept familles, dont le matériel, le réseau, le comportement (mouvements de souris, défilement) et des indices d'automatisation ; le service en tire un score de risque, qui fixe la difficulté du calcul Argon2id : environ 600 millisecondes en temps normal, jusqu'à une trentaine de minutes quand le risque est très élevé. Le serveur n'accepte chaque jeton qu'une fois.
Questions fréquentes
Un CAPTCHA proof of work prouve-t-il que le visiteur est humain ?
D'après l'OWASP, non : le proof of work « can increase automation cost but does not establish that the client is human ». C'est pour cela que la plupart des fournisseurs commerciaux le combinent avec d'autres signaux.
Est-ce la même chose que le minage de cryptomonnaie ?
L'idée est voisine. Selon hashcash.org, Hashcash, proposé en 1997, sert aujourd'hui surtout au minage de bitcoins. Un CAPTCHA ne mine rien pour autant : le navigateur résout un seul petit calcul, dont le résultat ne vaut que pour une demande de formulaire.
Sources
- Dwork, Naor : Pricing via Processing or Combatting Junk Mail, CRYPTO ’92 (DOI), consulté le 11/10/2026
- Back : Hashcash, A Denial of Service Counter-Measure (2002), consulté le 11/10/2026
- Laurie, Clayton : Proof-of-Work Proves Not to Work (WEIS 2004), consulté le 11/10/2026
- OWASP Bot Management and Anti-Automation Cheat Sheet, consulté le 11/10/2026
- ALTCHA, How it works, consulté le 11/10/2026
- mCaptcha, Configuring difficulty factor, consulté le 11/10/2026
- Google, reCAPTCHA v3, consulté le 11/10/2026
- Cloudflare, Turnstile, consulté le 11/10/2026
- IETF, RFC 9576 : The Privacy Pass Architecture, consulté le 11/10/2026
- W3C, Understanding WCAG 2.2 : Accessible Authentication (Minimum), consulté le 11/10/2026
- Documentation EU CAPTCHA, fonctionnement, consulté le 11/10/2026