MatteoVignoli.it

CAPTCHA: breve storia di un utile fastidio

(5 min read) web curiosità pillole

Con una pronuncia ed un significato simile a "Gotcha!" ("Ti ho preso!"), la parola CAPTCHA è in realtà un acronimo e sta per Completely Automated Public Turing-test-to-tell Computers and Humans Apart, ossia Test di Turing Pubblico Completamente Automatizzato per Distinguere gli Umani dai Computer).

La forma più conosciuta in cui si presenta, ossia le classiche immagini con lettere distorte e/o sovrapposte da leggere e trascrivere, nasce agli albori dell'Internet (intorno agli anni 2000) nei laboratori di AltaVista come tentativo di impedire invii massicci automatizzati di url per il loro motore di ricerca. L'idea dietro questo sistema era semplice: cosa serve ad un sistema di riconoscimento caratteri (OCR) per leggere correttamente un testo? Ok, allora facciamo un testo che abbia caratteristiche diametralmente opposte.

Alcuni esempi di implementazioni captcha
Alcuni esempi di implementazioni captcha

Il sistema si rivelò molto efficace (oltre al 95% di bot bloccati) e iniziò a diffondersi rapidamente anche grazie alla spinta di nomi importanti (PayPal lo iniziò a sperimentare nel 2001).

Per anni milioni di bot sono stati fermati grazie a questo piccolo strumenti automatico; ma fatta la legge trovato l'inganno, ed ecco che nacquero società che impiegavano manodopera a basso costo per risolvere manualmente i captcha, mentre nel frattempo venivano creati bot sempre più raffinati.

L'arrivo del reCaptcha

Una domanda sorse spontanea fra gli ingegneri di Google: decine di milioni di persone, ogni giorno, si stavano sforzando per riuscire a leggere questi caratteri distorti; perchè non usare tutto questo tempo e questo potenziale per qualcosa di utile? Ed ecco che, dopo aver acquisito il sistema reCaptcha nel 2009, decidono di sfruttarlo per contribuire alla digitalizzazione di libri e manoscritti antichi, andando a mostrare agli utenti quelle parole che i lettori automatici non erano riusciti ad interpretare.

Cosa?

Questo scenario apparentemente idilliaco presentava, tuttavia, delle grosse falle.

In primis, anche per gli umani riconoscere quei caratteri non era un'impresa così semplice, dopo tutto: i problemi di accessibilità (gli screen reader per i non vedenti sono, agli occhi di un captcha, un bot a tutti gli effetti), i contrasti e/o i colori che diventano un ostacolo per una vista non perfetta e caratteri a volte oggettivamente difficili da interpretare rendevano la sfida del reCaptcha un'attività frustrante e con probabilità di successo non così alte.

Il diffondersi a macchia d'olio dell'Intelligenza Artificiale e lo sviluppo di algoritmi di Machine Learning sempre più sofisticati aveva reso, inoltre, i bot sempre più abili nella risoluzione dei captcha. Non solo: li aveva resi molto più bravi degli esseri umani! Da uno studio effettuato da Google nel 2014, infatti, risultò che la percentuale di correttezza nei captcha più complessi si attestava ad un misero 33% per gli esseri umani, mentre il più avanzato algoritmo di ML sviluppato da Google al tempo riusciva a risolverli nel 99.8 % dei casi.

Auto a guida autonoma e No Captcha

Il sistema del riconoscimento caratteri non era, quindi, lo strumento migliore possibile; bisogna aggiungere qualche ostacolo nella gara, ed ecco che fanno la loro comparsa le sfide in cui bisogna riconoscere le immagini in cui appare un determinato soggetto.

Questo nuovo ostacolo dovrebbe tagliare fuori tutti quei bot che non riescono a renderizzare la nuova finestra e che non hanno un algoritmo di Computer Vision sotto al cofano. Ma presenta un vantaggio ulteriore non indifferente: centinaia di ore di lavoro gratuito per gli algoritmi ML da utilizzare per le auto a guida autonoma (o per altre applicazioni dell'Intelligenza Artificiale. Anche saper riconoscere i gattini, sì).

Esatto, proprio così.

Spesso, infatti, vengono mostrate immagini in cui bisogna riconoscere semafori, cartelli stradali, autobus, numeri civici: tutte queste informazioni verranno date in pasto all'Intelligenza Artificiale che muoverà auto del futuro sempre più affidabili.

https://www.explainxkcd.com/wiki/index.php/1897:_Self_Driving
La consueta genialità di XKCD

Ma il problema dei caratteri da interpretare ancora non è stato risolto.

Ed ecco che viene introdotto, grazie al sistema di "Analisi Avanzata dei Rischi" (Advanced Risk Analysis) il "No CAPTCHA reCAPTCHA": una semplice checkbox per confermare che "Non sono un robot". Dietro questa apparentemente banale implementazione si cela un algoritmo (segreto) di analisi dei movimenti, tempi e interazioni dell'utente che riesce a capire con un'ottima probabilità di successo se a selezionare la casella è stata una mano umana - per ogni dubbio c'è sempre lo step successivo con le immagini, naturalmente.

Alternative al Captcha

Quello che abbiamo visto è sicuramente il sistema più diffuso ma non è l'unico approccio possibile nel fermare i bot automatici. Dopo tutto, la User Experience è un fattore da non trascurare quando si sviluppa per il web e spesso il CAPTCHA si rivela frustrante e fastidioso per molti utenti (concordo).

Semplici domande

Uno stratagemma possibile è quello di presentare una domanda che, in teoria, solo una persona riuscirebbe a leggere: ad esempio, una semplice espressione matematica da risolvere.

Un puzzle da completare

Uno slider da spostare con il mouse (o il dito) fino al punto preciso richiesto: mentre la prima azione è relativamente semplice da simulare con uno script, riuscire a fermare lo scorrimento nel punto preciso richiede che venga visualizzata, e correttamente interpretata, anche l'immagine. Ad esempio nel login di Binance:

Un campo "trappola", o HoneyPot

E' lo stratagemma più semplice (e più datato) per bloccare la compilazione di form da parte di un bot. Un campo di testo o una casella invisibili, con un nome invitante, che i bot non esiteranno a compilare - ma saranno solo loro a farlo ed ecco che la trappolo ha funzionato. Per quanto crudo e spartano questo sistema si rivela efficace per la maggior parte dei bot "standard", e per un sito con traffico ed esposizione nella media potrebbe essere la soluzione migliore: semplice da implementare e nessun fastidioso captcha da compilare per gli utenti.


Questo piccolo excursus sul CAPTCHA non è certament né completo né esaustivo, ma trovo interessate conoscere la storia di qualcosa che utilizziamo quasi tutti i giorni e che, spesso, diamo per scontato - anzi, a cui spesso rivolgiamo tante imprecazioni senza riconoscere la grande utilità ed il grande lavoro che ha svolto per noi in tutto questo tempo.

Chissà come evolverà il CAPTCHA nei prossimi anni: basterà un'analisi dei movimenti nella pagina con nuovi algoritmi? Verranno utilizzati strumenti biometrici di riconoscimento? Quanto farà evolvere i bot questa guerra contro lo spam?


Alcune fonti per questo articolo:

Condividi:


Matteo Vignoli

Matteo Vignoli