# ReCAPTCHA

reCAPTCHA Inc. è un sistema CAPTCHA ideato nel 2007 da un gruppo di ricerca della Carnegie Mellon University e rilevato da Google nel 2009. Originariamente concepito per semplificare la digitalizzazione di testi e manoscritti, esso consente ai web host di distinguere gli accessi ai propri siti web effettuati da parte di esseri umani da quelli effettuati tramite procedure automatizzate. Ad ottobre 2022 detiene da solo il 97% delle quote di mercato relativo ai servizi per l'identificazione automatica tramite CAPTCHA degli utenti che accedono ai siti web.
La versione v1 (ovvero quella originale di reCAPTCHA) richiede agli utenti di decifrare testi difficili da leggere oppure di abbinare delle immagini. La versione v2 richiede inoltre di decifrare del testo o di abbinare delle immagini se l'analisi dei cookie suggerisce che la pagina viene scaricata automaticamente. A partire dalla versione v3 reCAPTCHA non interrompe mai gli utenti ed è progettato per essere eseguito automaticamente quando gli utenti caricano pagine o cliccano sui bottoni.
Nel 2010 era stato calcolato che reCAPTCHA generava quotidianamente più di 100 milioni di CAPTCHA su diversi siti web, tra cui Facebook, Ticketmaster, Twitter, 4chan, CNN.com, StumbleUpon e Craigslist. Google addebita l'utilizzo di reCAPTCHA su siti web che generano oltre un milione di reCAPTCHA al mese.

## Storia

reCAPTCHA venne sviluppato nel 2007 da Luis von Ahn assieme a David Abraham, Manuel Blum, Michael Crawford, Ben Maurer, Colin McMillen ed Edison Tan nel campus principale di Pittsburgh della Carnegie Mellon University. Von Ahn, il quale venne supportato dal MacArthur Fellows Program, era stato uno dei primi sviluppatori di CAPTCHA e si rese conto di "aver involontariamente creato un sistema che stava sprecando, con incrementi di dieci secondi, milioni di ore di una risorsa molto preziosa: i cicli del cervello umano".
L'iterazione originale del servizio era costituita da una piattaforma di collaborazione massiva progettata per la digitalizzazione dei libri, in particolare quelli troppo illeggibili da poter essere scansionati dai computer tramite sistemi OCR, in maniera simile a progetti già esistenti come Distributed Proofreaders. Infatti alla base dell'idea che portò alla creazione di reCAPTCHA vi era la necessità da parte di varie biblioteche di provvedere a convertire in digitale le loro collezioni di antichi testi (anche manoscritti). Questa conversione viene ottenuta solitamente tramite la digitalizzazione delle pagine e la loro successiva analisi tramite un programma OCR, che analizza le immagini delle pagine ed estrae il testo in esse contenuto. I programmi OCR però interpretano con difficoltà le lettere sbiadite e le pagine ingiallite dei testi antichi e quando non sono in grado di riconoscere con certezza un testo necessitano di un intervento umano, che rallenta il processo e innalza il costo della digitalizzazione. I ricercatori della Carnegie Mellon University decisero quindi di utilizzare i sistemi CAPTCHA per interpretare le parole dubbie individuate dai programmi OCR. Quando due sistemi OCR identificano in modo diverso una parola, questa viene associata a una parola nota e inviata a un utente che deve superare un test CAPTCHA per accedere a un servizio. Le richieste di verifica utilizzavano coppie di parole provenienti da pagine scansionate, con una parola nota utilizzata come controllo per la verifica e un'altra utilizzata per eseguire in crowdsourcing la lettura di una parola ignota. Si presuppone che se un utente riesce ad individuare correttamente la parola nota, allora individuerà con elevata probabilità anche quella ignota. Quando tre utenti danno la stessa risposta, il sistema archivia la parola come corretta. Questo sistema permise di convertire 440 milioni di parole con un'accuratezza del 99%; ad agosto 2008, esso convertiva 4 milioni di parole al giorno.
Nel settembre 2009 reCAPTCHA venne acquistato da Google, che avviò una procedura di scansione di decine di milioni di libri immagazzinati in centinaia di librerie sparse per il pianeta con l'intenzione di correggere tramite reCAPTCHA gli errori derivanti dalla scansione OCR dei testi. Il servizio contribuì a digitalizzare gli archivi del New York Times, dopodiché venne in seguito impiegato da Google Libri per scopi simili.
A partire dal 2014 Google ha completamente mutato il servizio di reCAPTCHA rispetto alla sua idea originaria, concentrandosi maggiormente sulla riduzione della quantità di interazione dell'utente necessaria per potersi identificare su un sito web e presentando unicamente sfide di riconoscimento umano (come ad esempio identificare e selezionare tra le immagini appartenenti ad un gruppo quelle che soddisfano un prompt specifico) qualora l'analisi comportamentale sospetti che l'utente possa essere un bot.

## Versioni
### ReCAPTCHA v1

Nella versione originaria di reCAPTCHA il testo scansionato viene sottoposto ad analisi da due diversi OCR. Qualsiasi parola che venga decifrata in modo diverso dai due programmi OCR o che non sia presente in un dizionario di lingua inglese viene contrassegnata come "sospetta" e convertita in un CAPTCHA. La parola sospetta viene visualizzata fuori contesto, talvolta insieme a una parola di controllo già nota. Se l'essere umano digita correttamente la parola di controllo, la risposta alla parola discutibile viene accettata come probabilmente valida. Se un numero sufficiente di utenti digitasse correttamente la parola di controllo, ma digitasse erroneamente la seconda parola che l'OCR non era riuscita a riconoscere, la versione digitale dei documenti potrebbe finire per contenere la parola errata. All'identificazione eseguita da ciascun programma OCR viene assegnato un valore di 0,5 punti, mentre ad ogni interpretazione da parte di un essere umano viene assegnato un punto intero. Una volta che una determinata identificazione raggiunge 2,5 punti, la parola è considerata valida. Quelle parole a cui viene costantemente data un'unica identità dai giudici umani vengono successivamente riciclate come parole di controllo. Se i primi tre tentativi corrispondono tra loro ma non corrispondono a nessuno degli OCR, vengono considerate una risposta corretta e la parola diventa una parola di controllo. Quando sei utenti rifiutano una parola prima che venga scelta l'ortografia corretta, la parola viene scartata perché illeggibile.
Nel 2012 si iniziarono ad includere in reCAPTCHA fotografie tratte da Google Street View in aggiunta alle parole scansionate. Tramite tali fotografie si richiede all'utente di identificare immagini di strisce pedonali, lampioni ed altri oggetti. Si era ipotizzato che tali dati venissero utilizzati dalla società di guida autonoma Waymo (di proprietà di Google), ma ciò è stato smentito dalla società stessa.
reCAPTCHA v1 è stato dichiarato obsoleto da Google nell'ottobre 2017 ed è stato chiuso il 31 marzo 2018.

### ReCAPTCHA v2

Dopo che nel 2013 reCAPTCHA iniziò a implementare l'analisi comportamentale delle interazioni del browser per prevedere se l'utente fosse un essere umano o un bot, nel dicembre 2014 Google presentò reCAPTCHA v2, una nuova versione caratterizzata dalla modalità "NoCAPTCHA reCAPTCHA", grazie alla quale per gli utenti ritenuti a basso rischio è richiesto soltanto un clic su una singola casella di spunta contrassegnata dall'etichetta "Non sono un robot" per verificare la propria identità; cliccando su di esso, il sistema esamina il comportamento che l'utente ha avuto in precedenza e in base a ciò stabilisce se sia un utente umano o un bot. È comunque possibile mostrare una sfida CAPTCHA se il sistema non è sicuro del rischio dell'utente. Per tale scopo, Google introdusse anche un nuovo tipo di sfida CAPTCHA progettata per essere più accessibile agli utenti mobili, in cui l'utente deve selezionare le immagini all'interno di una griglia che corrispondono a un prompt specifico.
Nel 2017 Google introdusse il reCAPTCHA "invisibile", in cui la verifica avviene direttamente in background e non viene visualizzata alcuna sfida se l'utente è ritenuto a basso rischio. Secondo l'ex dipendente di Google Shuman Ghosemajumder, questa capacità "crea un nuovo tipo di sfida che i robot molto avanzati possono ancora aggirare, ma introduce molto meno attrito per l'essere umano legittimo".

### ReCAPTCHA v3

Nell'ottobre 2018 Google lanciò reCAPTCHA v3, in cui introdusse un'analisi dei rischi, predisponendo diversi profili di rischio e assegnando a ciascun utente un punteggio diverso, che va da 0,0 (rischio elevato che l'utente sia un bot) a 1,0 (rischio basso e quindi alta probabilità che l'utente sia umano). Il punteggio si basa sui diversi tipi di interazioni che gli utenti effettuano, dal movimento del mouse al tempo che trascorrono in ciascuna sezione del sito o ai clic effettuati. Google ha invogliato l'adozione di reCAPTCHA v3 su diverse pagine web al fine di tracciare un modello di comportamento con cui identificare le interazioni di ciascun utente su un sito web. Inoltre questa versione consente anche agli amministratori un maggiore controllo sugli utenti, in quanto sono in grado di poter visionare i punteggi dei loro visitatori e monitorare il traffico reale in ingresso; facoltativamente hanno la possibilità di richiedere l'autenticazione in due passaggi o la verifica via email per gli utenti con valutazioni inferiori. Per impostazione di default, reCAPTCHA v3 utilizza una soglia pari a 0,5 e i visitatori con un punteggio inferiore dovranno dimostrare di essere umani. Tuttavia, gli amministratori del sito web hanno la possibilità di modificare questa soglia e possono addestrare un proprio modello nel sito web per combattere i bot che cercano di aggirare la sicurezza.

## Implementazione

I test reCAPTCHA vengono visualizzati dal sito centrale del progetto reCAPTCHA, il quale fornisce le parole da decifrare. Ciò avviene tramite un API JavaScript con il server che effettua una callback a reCAPTCHA dopo che la richiesta è stata inviata. Il progetto reCAPTCHA fornisce librerie per vari linguaggi di programmazione e applicazioni per semplificare questo processo. reCAPTCHA è un servizio gratuito fornito ai siti web per assistenza nella decifrazione, ma il software reCAPTCHA non è open source.
Inoltre reCAPTCHA offre vari plug-in per diverse piattaforme di applicazioni Web, tra cui ASP.NET, Ruby e PHP, per facilitare l'implementazione del servizio.

## Sicurezza

Lo scopo principale di un sistema CAPTCHA è bloccare gli spambot consentendo l'accesso agli utenti umani. Il 14 dicembre 2009, Jonathan Wilkins pubblicò un documento che descriveva i punti deboli di reCAPTCHA, i quali consentivano ai bot di raggiungere un tasso di risoluzione del 18%.
Il 1º agosto 2010 Chad Houck tenne una presentazione alla 18ª edizione del DEF CON, descrivendo in dettaglio un metodo per invertire la distorsione aggiunta alle immagini che consentiva ad un programma per computer di determinare una risposta valida il 10% delle volte. Il sistema reCAPTCHA venne modificato il 21 luglio 2010, quindi prima che Houck parlasse del suo metodo. Houck modificò il suo metodo in quello che lui descrisse come un CAPTCHA "più semplice" per determinare una risposta valida il 31,8% delle volte. Houck ha anche menzionato le difese di sicurezza del sistema, tra cui un blocco ad alta sicurezza nel caso in cui viene data una risposta non valida per 32 volte di seguito.
Il 26 maggio 2012 alcuni membri del gruppo DC949 tennero una presentazione alla conferenza degli hacker LayerOne, spiegando in dettaglio come sono riusciti a ottenere una soluzione automatizzata, denominata Stiltwalker, con un tasso di precisione del 99,1%. La loro tattica era quella di utilizzare tecniche di apprendimento automatico (un sottocampo dell'intelligenza artificiale) per analizzare la versione audio di reCAPTCHA disponibile per i non vedenti. Google pubblicò una nuova versione di reCAPTCHA poche ore prima del loro discorso, apportando importanti modifiche sia alla versione audio che a quella video del loro servizio. In quella versione, la durata della versione audio venne aumentata da 8 a 30 secondi e fu resa molto più difficile da comprendere, sia per gli esseri umani che per i robot. In risposta a questo aggiornamento e a quello successivo, i membri di DC949 pubblicarono altre due versioni di Stiltwalker che risolvevano i test reCAPTCHA con una precisione rispettivamente del 60,95% e del 59,4%. Dopo ogni interruzione successiva, Google aggiornava reCAPTCHA entro pochi giorni. Secondo DC949, spesso venivano ripristinate funzionalità precedentemente compromesse.
Il 27 giugno 2012 Claudia Cruz, Fernando Uceda e Leobardo Reyes pubblicarono un articolo che mostrava un sistema in esecuzione su immagini reCAPTCHA con una precisione dell'82%. Gli autori non affermarono se il loro sistema fosse in grado di risolvere immagini più recenti di reCAPTCHA, sebbene avessero dichiarato che il loro lavoro avesse un riconoscimento intelligente dei caratteri e fosse resistente ad alcune modifiche nel database delle immagini, se non addirittura a tutte.
In una presentazione dell'agosto 2012 tenuta al BsidesLV 2012, DC949 definì reCAPTCHA v2 "insondabilmente impossibile per gli esseri umani", in quanto non sono in grado di risolverli nemmeno manualmente. L'organizzazione per l'accessibilità web WebAIM riferì nel maggio 2012 che "oltre il 90% degli intervistati ritiene che il CAPTCHA sia molto o piuttosto difficile".
In un test condotto da Google nel 2014 in cui uno dei suoi algoritmi di machine learning doveva confrontarsi con degli utenti umani nella risoluzione di testi CAPTCHA fortemente distorti, il primo ottenne una percentuale di risoluzione corretta del 99,8%, mentre i secondi si attestarono al 33%.
Nel 2017 alcuni ricercatori dell'Università del Maryland idearono un metodo, denominato unCAPTCHA, che consentiva di risolvere rapidamente le sfide reCAPTCHA con un tasso di successo dell'85% attraverso il riconoscimento vocale dei file audio usati dagli utenti diversamente abili.
Nell'ottobre 2023 è stato dimostrato che il chatbot GPT-4 di Bing Chat è in grado di risolvere i test di verifica generati da reCAPTCHA.

## Critiche

L'iterazione originale di reCAPTCHA è stata criticata in quanto fonte di lavoro non retribuito per assistere negli sforzi di trascrizione.
Secondo il professor Antonio Casilli di Télécom ParisTech, Google trarrebbe profitto dagli utenti reCAPTCHA come manodopera gratuita per migliorare le proprie ricerche sull'intelligenza artificiale.

### Privacy

L'iterazione di reCAPTCHA è stata criticata per la sua dipendenza dal tracciamento dei cookie e per la promozione del vendor lock-in con i servizi di Google; gli amministratori sono incoraggiati a includere il codice di monitoraggio reCAPTCHA in tutte le pagine del proprio sito Web per analizzare il comportamento e il rischio degli utenti, che determina il livello di attrito presentato quando viene utilizzato un prompt reCAPTCHA. Google ha dichiarato nella sua informativa sulla privacy che i dati utente raccolti in questo modo non vengono utilizzati per pubblicità personalizzate. È stato inoltre scoperto che il sistema favorisce coloro che hanno un account Google attivo, mentre presenta un rischio maggiore nei confronti di coloro che utilizzano proxy anonimizzati e servizi VPN.
Dopo che Google aveva annunciato il lancio di reCAPTCHA v3 sono state sollevate preoccupazioni riguardo alla privacy degli utenti, poiché tale versione consente a Google di tracciarli su siti web non appartenenti a Google.
Nell'aprile 2020 Cloudflare è passato da reCAPTCHA ad hCaptcha, citando preoccupazioni sulla privacy sul potenziale utilizzo da parte di Google dei dati raccolti tramite reCAPTCHA per creare pubblicità mirate e per ridurre i costi operativi, poiché una parte considerevole dei clienti di Cloudflare sono clienti non paganti. In risposta a tali affermazioni, Google dichiarò su PC Magazine che i dati di reCAPTCHA non vengono mai utilizzati per scopi pubblicitari personalizzati.

### Accessibilità

Il centro assistenza di Google ha affermato che reCAPTCHA non è supportato per la comunità dei sordociechi, bloccando di fatto tali utenti da tutte le pagine che utilizzano il servizio. Tuttavia, reCAPTCHA possiede l'elenco più esaustivo di considerazioni sull'accessibilità rispetto a qualsiasi altro servizio CAPTCHA.

### Interfaccia

In una delle varianti delle sfide CAPTCHA, le immagini non vengono evidenziate in modo incrementale, ma svaniscono quando si fa clic e sostituite con una nuova immagine che si dissolve, in maniera simile al gioco Whack-a-Mole.
In particolare, tale critica si concentra principalmente sul lungo periodo di tempo impiegato affinché le immagini svanissero e apparissero.

## Progetti derivati

reCAPTCHA aveva creato anche il progetto Mailhide, che proteggeva gli indirizzi e-mail sulle pagine web, evitando che venissero raccolti dagli spammer. Come impostazione di default, l'indirizzo email veniva convertito in un formato che non consentiva al crawler di visualizzare l'indirizzo email completo; ad esempio, "mailme@example.com" verrebbe convertito in "mai...@example.com". Il visitatore doveva quindi fare clic su "..." e risolvere il CAPTCHA per ottenere l'indirizzo email completo. Inoltre si poteva anche modificare il codice di pop-up in modo che nessuno degli indirizzi fosse visibile. Mailhide è stato chiuso nel 2018 poiché si basava su reCAPTCHA v1.