vineri, 14 ianuarie 2011

CAPTCHA

Dupa cum v-ati dat seama din titlu, aici vom discuta despre unele sisteme populare de validare a userilor pe web.

 

Termenul CAPTCHA e un acronim pentru  Completely Automated Public Turing Test To Tell Computers and Humans Apart.

Ideea din spatele CAPTCHA este ca, pentru a preveni spam-ul(abuzuri, worm spreading, creare de multiple conturi de email, in mod automat, postare de mesaje automate pe diverse site-uri, blog-uri etc), utilizatorilor sa li se ceara sa scrie o serie de caractere generate automat sub forma de imagine asupra careia i se aplica o serie de transformari(rotiri, deformari). Pentru omul obisnuit acest lucru nu e un mare impas dar pentru un bot de spam, spre exemplu, interpretarea acelei imagini este dificila, daca nu imposibila. Exista desigur sanse ca un bot sa recunoasca cuvantul sau sa il ghiceasca dar aceste sanse sunt extrem de mici.

Sa ne oprim aici si sa ne gandim putin asupra a ceea ce se petrece cu CAPTCHA. Oamenilor li se cere in mod constant sa descifreze diverse cuvinte, caractere pe care calculatoarele nu le pot procesa. Ca sa va faceti o idee asupra nivelului la care se intampla acest lucru, aproximativ 100 de milioane de CAPTCHAs sunt completate zilnic. Pentru a nu pierde aceasta pretioasa munca umana, a aparut reCAPTCHA. 


 

 

reCaptcha este fratele mai mic al proiectului CAPTCHA. In loc de 1 cuvant sub forma unor caractere alfanumerice, acum apar 2 cuvinte amandoua din dictionarul englez. Twist-ul este acela unul din cuvinte este cuvantul de control, a carei secvente de litere se cunoaste, iar celalt este un cuvant scanat din una din zecile de mii de carti vechi ce urmeaza a intra in biblioteca virtuala universala dar care nu a putut fi transcris automat de catre softul folosit.

Cum functioneaza? 

Pentru unul dintre cuvinte se stie deja raspunsul. Pentru celalalt nu. Cand o persoana introduce cuvantul de control corect, celalalt cuvant introdus intra datorita unui algoritm, in categoria de "maybe is valid". In cazul in care mai multi utilizatori introduc aceleasi caractere pentru cuvantul necunoscut, cuvantul devine un "is valid". In cazul in care acelasi cuvant necunoscut este introdus in mai multe forme gresite, el intra in categoria "suspicious" si urmeaza sa fie trimis in continuare ca un cuvant necunoscut. Doar in cazul in care 3 utilizatori dau consecutiv aceeasi traducere cuvantului necunoscut, cuvantul necunoscut devine valid si este introdus drept un cuvant de control.  Niciun program OCR nu a reusit sa descifreze niciunul dintre cuvinte asadar riscul ca un bot sa ghiceasca chiar si cuvantul de control este infim. Aceasta forta enorma de munca umana voluntara inseamna ~1.2 miliarde de cuvinte introduse din care au rezultat aproximativ 440 de milioane de cuvinte traduse corect care, mai tarziu, au intrat in posesia celor aproximativ 17600 de carti digitalizate.

Pentru a vedea cat de benefica este influenta reCAPTCHA, o serie de 50 de articole din 5 ani diferiti(1860, 1865, 1908, 1935) din publicatia New York Times a fost transcrisa manual de catre 2 profesionisti. Numarul total de cuvinte transcrise a fost de 24080. Acelasi lucru s-a facut cu ajutorul reCAPTCHA.

Rata de erori a programului reCAPTCHA a fost de 0.9 % (216 greseli), deci o rata de succes de 99.1 %! Rata de erori a celor 2 profesionisti a fost putin mai mica(189 greseli). Putem vedea deci cat de precis poate fi reCAPTCHA si cat de precise sunt introducerile utilizatorilor web. Trebuie sa intelegem ca utilizatorii web care nu au limba nativa engleza sunt cei care introduc cele mai multe greseli, neintelegand uneori cuvantul pe care il transcriu. Totodata cuvintele scurte sunt cele care sunt traduse intr-un timp mai lung decat cele lungi. Este logic intrucat cuvintele mai lungi isi creeaza un anume context, pe cand cele scurte nu.

 Avantajele programului CAPTCHA sunt cele mentionate mai sus, de filtrare a spam-ului. Avantajele programului reCAPTCHA sunt atat cele de filtrare a spam-ului cat si de traducere a zecilor de mii de carti anual, carti ce n-au putut fi traduse folosind soft-uri OCR(nu complet). Dar care sunt dezavantajele?

Vulnerabilitati: 

1) Folosirea site-urilor pornografice pentru a rezolva multiple captcha. Cum? Atacatorii pot crea niste site-uri cu content pornografic pe care apoi, o data la cateva minute, utilizatorii sa fie nevoiti sa rezolve CAPTCHA's pentru a continua vizionarea pe site. Aceste rezolvari sunt trimise apoi robotilor si introduse ca fiind corecte.

Efectul este minim oricum, nu se compara cu generarea automata a raspunsurilor.

2) Folosirea fortei de munca din tarile de lumea a III-a pentru a rezolva captcha 8 - 10 ore pe zi, ca apoi acestea sa fie introduse intr-o baza de date si folosite de catre bots.

Efectul este deasemenea mic intrucat vorbim de oameni care sa faca aceasta treaba in ritm... uman.

Dezavantaje : Solutiile actuale de prevenire a spam-ului pe internet consuma timp. Acesta este singurul dezavantaj adevarat. Avantajele, consider, intrec cu mult posibilul dezavantaj ca esti nevoit sa stai 7-18 secunde pentru descifrarea cuvintelor date.

Cu toate acestea, CAPTCHA si reCAPTCHA(sau audio Captcha, image Captcha, etc) nu sunt singurele modalitati de a preveni spam-ul.

Unii programatori s-au gandit ca in loc de CAPTCHA sa foloseasca o intrebare simpla sub forma unei ecuatii matematice(ex : 2 + 2 = ) si sa introduca raspunsul. Altii s-au gandit sa puna o intrebare usoara sub forma "What is the second letter in the English alphabet?". O abordare ingenioasa a fost si aceea de a introduce intr-un formular de inregistrare o optiune bifata cu textul afisat "Uncheck this if you are human". Iar o solutie care imi place foarte mult este aceea ca in cadrul unui formular sa ai niste field-uri ascunse pe care botii le completeaza iar oamenii nu pot. Desigur, mai exista verificarea prin SMS a user-ului, detectarea timpului necesar completarii formularului. Un robot face asta intr-o fractiune de secunda pe cand un om poate avea nevoie de la 30 de secunde in sus, depinzand de complexitatea formularului(ex: Creare cont forum). Mai avem detectarea incarcarii in pagina a unui modul javascript, problema fiind atunci cand userul uman are javascriptul inchis.

 

Exemplu alternativa.

Dupa cum se poate observa, o multitudine de solutii exista si sunt folosite pentru a micsora numarul mesajelor de spam pe internet. Toate au ca dezavantaje posibilul timp luat din experienta utilizatorului pe internet precum si posibila dificultate in completarea query-ului.