# CAPTCHA

Con l'acronimo inglese CAPTCHA (pronuncia: [ˈkæp.tʃə]) si denota nell'ambito dell'informatica un test fatto di una o più domande e risposte per determinare se l'utente sia un umano e non un computer o, più precisamente, un bot.
L'acronimo, che si pretende derivato dall'inglese "Completely Automated Public Turing-test-to-tell Computers and Humans Apart" ("test di Turing pubblico e completamente automatico per distinguere computer e umani"), in effetti riproduce foneticamente l'espressione colloquiale "Caught you!" (Ti ho beccato!). Il termine è stato coniato nel 2000 da Luis von Ahn, Manuel Blum e Nicholas J. Hopper della Università Carnegie Mellon e da John Langford della IBM.
Un test CAPTCHA tipicamente utilizzato è quello in cui si richiede all'utente di scrivere quali siano le lettere o i numeri presenti in una sequenza, che appare distorta o offuscata sullo schermo.
Dal momento che il test viene gestito da un computer, mentre il test originale di Turing viene gestito da un umano, a volte si descrive il test CAPTCHA come un test di Turing inverso;

## Descrizione
### Origini

I CAPTCHA sono stati sviluppati per la prima volta nel 1997 dal settore ricerca e sviluppo di AltaVista capitanato da Andrei Broder, per impedire ai bot di aggiungere URL al loro motore di ricerca. Broder e colleghi cercavano di creare immagini resistenti agli attacchi degli OCR e così consultarono il manuale degli scanner della Brother, su cui erano indicate tutte le caratteristiche che un testo deve avere per poter essere riconosciuto dallo scanner: caratteri ben definiti e lineari, mancanza di differenze tra i font utilizzati nel testo, sfondo omogeneo e ben distinguibile dal testo e così via. Applicando al contrario queste indicazioni, si riuscì a ottenere la peggiore situazione possibile, ossia un testo la cui scansione sarebbe stata molto difficile: caratteri storti, font diversi, colori del testo simili a quello dello sfondo o accorgimenti simili. Broder sostenne che l'introduzione di tale tecnologia avesse ridotto lo spam di oltre il 95%.
In modo indipendente dal team di AltaVista, Luis von Ahn e Manuel Blum realizzarono e diffusero nel 2000 l'idea del test CAPTCHA, intendendo con ciò qualunque tipo di programma che fosse in grado di distinguere tra persone e computer. Loro inventarono vari tipi di test, compresi i primi a ricevere un'ampia diffusione grazie all'uso da parte di Yahoo!

### Applicazioni

I CAPTCHA sono utilizzati per impedire che i bot utilizzino determinati servizi, come i forum, la registrazione presso siti web, la scrittura di commenti e in generale tutto ciò che potrebbe essere usato per creare spam o per violare la sicurezza con operazioni di hacking come il brute force. Questo tipo di test è stato utilizzato anche per contrastare lo spam generato da bot, obbligando il mittente di un messaggio e-mail non conosciuto dal destinatario a superare un test CAPTCHA prima di consentire la consegna del messaggio. I test CAPTCHA hanno avuto anche degli utilizzi secondari non legati unicamente all'eliminazione dello spam, come ad esempio il riconoscimento di testi contenuti in libri antichi, che è stato alla base della creazione di reCAPTCHA nel 2007.

### Caratteristiche

Per definizione i test CAPTCHA sono completamente automatici e non richiedono di norma interventi umani per la somministrazione o la manutenzione, con indubbi vantaggi in termini di costi e affidabilità.
Gli algoritmi utilizzati per realizzare i test vengono spesso divulgati al pubblico, anche se in molti casi sono protetti da brevetto. Tale politica di trasparenza è tesa a dimostrare il fatto che la sicurezza del metodo non risiede nella conoscenza di un algoritmo segreto (che potrebbe essere ricavata con tecniche di reverse engineering o in modo fraudolento); al contrario, per 'rompere' l'algoritmo è necessario risolvere un problema classificato come 'hard' nel campo dell'intelligenza artificiale.
Non è obbligatorio ricorrere a tecniche visive: qualunque problema di intelligenza artificiale che abbia lo stesso grado di complessità, ad esempio il riconoscimento vocale, è adatto a fare da base per un test di questo tipo. Alcune implementazioni consentono all'utente di scegliere in alternativa un test basato su tecniche auditive, anche se tale approccio ha subito uno sviluppo più lento e non è detto che possieda lo stesso grado di efficacia di quello visivo. Inoltre, è possibile ricorrere ad altri tipi di verifiche che richiedano un'attività di comprensione testuale, quali la risposta a una domanda o a un quiz logico, il seguire delle specifiche istruzioni per creare una password ecc. Anche in questo caso i dati sulla resistenza di tali tecniche alle contromisure sono scarsi.
Una promettente tecnica che si sta sviluppando negli ultimi anni impiega dei test basati sul riconoscimento di una faccia all'interno di un'immagine familiare. Per questo tipo di CAPTCHA si parla di RTT based on faces recognition. In letteratura allo stato attuale sono stati implementati soltanto due metodi basati su questo tipo di CAPTCHA: l'ARTiFACIAL e un CAPTCHA basato sul riconoscimento facciale.

### Accessibilità

L'uso di test CAPTCHA basati sulla lettura di testi o altre attività legate alla percezione visiva impedisce o limita fortemente l'accesso alle risorse protette agli utenti con problemi di vista e, poiché tali test sono progettati specificamente per non essere leggibili da strumenti automatici, i normali ausili tecnologici usati dagli utenti ciechi o ipovedenti non sono in grado di interpretarli; ma anche gli utenti discromatopsici possono non essere in grado di superare il test. L'uso dei test CAPTCHA, generalmente legato alle fasi iniziali di accesso o registrazione ai siti e talvolta ripetuto per ogni accesso, può costituire una discriminazione nei confronti di tali utenti disabili tale per cui in alcuni ordinamenti esso costituisce una violazione delle norme di legge.
Nelle nuove generazioni di CAPTCHA, create per resistere ai più sofisticati programmi di riconoscimento di testi, può diventare abbastanza complicato, se non impossibile, riuscire a riconoscere il testo da parte di molti utenti, anche nel pieno possesso della propria capacità visiva. Il W3C ha redatto un rapporto in cui vengono evidenziati alcuni dei problemi di accessibilità legati all'uso di tali tecniche.

## Contromisure

Dopo l'uso massiccio di CAPTCHA, sono state scoperte alcune contromisure che permettono agli spammer di superare i test. Software intelligenti sono oggi in grado di risolvere CAPTCHA di varie tipologie. Greg Mori e Jitendra Malik hanno presentato nel 2003 uno studio che illustra come aggirare uno dei sistemi più diffusi per realizzare test CAPTCHA, EZ-Gimpy; tale approccio si è rivelato efficace nel 92% dei casi. Nei confronti del sistema Gimpy, più sofisticato ma meno diffuso, l'efficacia del metodo scende al 33%. Al momento non è però noto se tale algoritmo sia stato implementato al di fuori del contesto della ricerca.
Sono stati creati anche alcuni programmi per cercare una soluzione ripetutamente e altri per riconoscere i caratteri scritti, utilizzando tecniche apposite e non quelle standard degli OCR. Progetti come PWNtcha hanno fatto grandi passi in avanti, contribuendo alla generale migrazione verso CAPTCHA sempre più difficili. Un altro metodo per superare un CAPTCHA è sfruttare sessioni in cui il test è già stato superato, salvando i test per poi creare un archivio di soluzioni.
Ma il metodo più efficace è quello di utilizzare un essere umano per risolvere il CAPTCHA: è infatti possibile affidare a persone pagate il compito di risolvere i CAPTCHA. Il già citato documento del W3C afferma che un operatore può facilmente risolvere centinaia di test CAPTCHA in un'ora. Questa possibile soluzione necessiterebbe di un investimento economico che non sempre è giustificato, ma è stato scoperto un metodo più a buon mercato per ottenere gli stessi risultati: lo spammer utilizza a tal fine un sito Internet con un servizio a cui gli utenti umani chiedono l'accesso, che può essere un forum ma anche una collezione di immagini pornografiche. Così, quando un utente chiede di accedere, gli viene proposto un CAPTCHA ottenuto dal sito esterno che lo spammer vuole attaccare: il test viene quindi risolto dall'utente, che ottiene in cambio una remunerazione che per lo spammer ha un costo trascurabile, mentre il sistema "ricicla" la soluzione del test per superare la barriera del sito bersaglio.

## CAPTCHA nella cultura di Internet

Uno dei fenomeni di Internet nati su 4chan riguarda proprio il CAPTCHA. Esso si riferisce ad un codice in cui si leggeva "Inglip Summoned": ne è scaturita la finta leggenda che un dio oscuro, tale Inglip, sia ritornato sulla terra per trascinarla nell'oscurità. Sono presenti inoltre diversi video su YouTube in cui Inglip darebbe ordini ai suoi adepti, sempre tramite degli stravaganti e spesso incomprensibili codici CAPTCHA.