Il reCAPTCHA

Il funzionamento

Prima di descrivere il funzionamento del sistema CAPTCHA, facciamo una piccola premessa. Supponiamo per un momento di essere i proprietari di un sito e di voler inserire su di esso, per questioni di sicurezza, il nostro CAPTCHA. Forse non tutti sanno che la procedura per poter inserire un CAPTCHA è quella di "richiedere" il servizio al sito ufficiale (www.captcha.net). Ogni proprietario deve perciò essere registrato, insieme al proprio sito web, come utente del medesimo sito. Il sistema CAPTCHA utilizza la tecnica della crittografia a Chiave Pubblica per svolgere le operazioni in modo che lo scambio di informazioni tra Client e Server si svolga in maniera protetta e sicura.  

Ogni proprietario, e il suo rispettivo sito associato, vengono quindi dotati di un codice identificativo e di una Private Key. Una Private Key è una sequenza di cifre di cui solo il proprietario del sito è a conoscenza ed è univoca per ogni sito  di proprietà del medesimo. Una volta ricevuta la Private Key, riservata esclusivamente al prorprietario, il sito ufficiale fornisce un'ulteriore chiave: la Public Key. Essa sarà associata alla Private Key dell'utente, secondo ciò che prevede la tecnica che va sotto il nome di algoritmo a Chiave Pubblica. 

Attraverso la coppia Private Key/Public Key il proprietario è univocamente identificato e riconosciuto dal sito ufficiale. Vedremo in seguito che questo elemento svolgerà un ruolo fondamentale ai fini del funzionamento del CAPTCHA.




Attraverso la figura sovrastante, possiamo comprendere come funziona il sistema CAPTCHA:

1. Ad iniziare la procedura è l'Application Server che fornisce al sito richiedente, l'applicazione del CAPTCHA. In altri termini appena l'utente comincia , tra il sito e l'Application Server si apre una connessione. La Public Key permette di stabilire una connessione in cui le informazioni sono strettamente crittografate, in accoppiamento alla Private Key.

2. L'Application Server fornisce dunque all'utente l'interfaccia (reCaptcha Widget) del modulo Captcha. Nel reCaptcha Server sono contenute tutte le immagini, univocamente identificate da un URL. All'atto della richiesta, una tra queste, scelta in maniera casuale, verrà inglobata nel modulo ReCaptcha. 


3. Una volta fornito il ReCaptcha Widget (interfaccia), l'utente quindi può interagire con il ReCaptcha inserendo la soluzione nel box (oppure svolgendo una delle le operazioni possibili, come ad esempio quella di Reload). Il Captcha fornito all'utente contiene come abbiamo sottolineato, oltre all'immagine, due elementi importanti: 

    • Response Field: nel quale verrà memorizzata la soluzione, nel momento in cui l'utente avvierà la procedura di invio al Server con il tasto Submit. Essa è, in termini tecnici una stringa, ovvero un insieme di caratteri alfanumerici. In questo caso la soluzione immessa 

S1 = "passes wildly". 

     • Challenge Field: nascosto all'utente e opportunamente crittografata, vi è memorizzata la soluzione effettiva del Captcha. Anche la soluzione del Captcha è un insieme di caratteri, che chiameremo S. Nel nostro caso è proprio:

S = "passes wildly".

L'utente, dopo aver inserito la soluzione, avvia la procedura attraverso Submit e invia al ReCaptcha Server il modulo Captcha, in cui stavolta a differenza di prima, è memorizzata anche la risposta dell'utente. Prima dell'invio il modulo viene opportunamente crittografato. 

4. L'Application Server, poi, riceve tale modulo e apre una connessione con un cosiddetto Verify Server (http://www.google.com/recaptcha/api/verify), che ha il compito di verificare se il Captcha è stato risolto oppure no. Tramite una richiesta HTTP (Hyper Text Transfer Protocol), l'Application Server invia il modulo al sito. Dopo aver decriptato le informazioni tramite la coppia Private Key/Public Key, il Verify Server effettua un semplice confronto di stringhe. E' importante sottolineare che è il Verify Server è l'unico a poter decriptare le informazioni.

5. Se la soluzione S1, immessa dall'utente, è uguale alla soluzione del reCaptcha (S1 = S) allora il CAPTCHA viene considerato risolto (Solved), in caso contrario il CAPTCHA non è risolto (Unsolved). I risultati vengono inviati all'Application Server che in caso di successo, si prende carico di far visualizzare all'utente il messaggio di risoluzione del Captcha, tramite l'API dedicata, così che l'utente possa continuare le operazioni precedentemente.