Ce este Captcha

De multe ori atunci cand ne inregistram, comentam sau publicam diverse informatii sau materiale pe un website, ni se afiseaza un cod, uneori greu de descifrat, pe care trebuie sa-l introducem pentru a duce la bun sfarsit operatia pe care dorim sa o facem pe site-ul respectiv. Ce este mai exact acel cod, de ce este folosit si mai ales de ce este acesta uneori indescifrabil, eventual daca acel cod va deveni cu timpul mai greu de descifrat sau din contra va disparea - toate aceste informatii le vei gasi in continuarea articolului.

  Ce este Captcha?

CAPTCHA reprezinta acronimul expresei englezesti "Completely Automated Public Turing test to tell Computers and Humans Apart", se aseamana fonetic cu verbul "capture" - a prinde / a captura, apare in anul 2000 si are drept echivalent romanesc expresia "Test Turing public, complet automat, pentru distingerea computerelor de oameni". Un test Turing reprezinta un concept creat de Alan Turing - matematician, informatician, logician si criptanalist britanic considerat parintele inteligentei artificiale - prin care se testeaza daca o masina de calcul sau un program informatic care se comporta mai mult sau mai putin asemanator oamenilor poate concura cu un subiect uman pentru a raspunde la o serie de intrebari logice sau de a efectua operatii care sunt caracteristice doar oamenilor, de exemplu recunoasterea de elemente vizuale dintr-o imagine.

 Mai exact, Captcha este un software care are menirea de a proteja site-urile de pe web de actiunile unor programe de calculator numite roboti sau boti care au scopul de a realiza automat operatii care sunt destinate doar persoanelor, de exemplu de a crea conturi, de a posta comentarii, de a citi continutul paginiilor, etc.

Varianta cea mai folosita de Captcha este acea in care utilizatorului i se afiseaza o imagine ce contine litere si cifre distorsionate, iar acesta trebuie sa le recunoasca si sa le reintroduca de la tastatura pentru a dovedi ca este persoana si nu program automatizat. Alte forme de captcha includ de exemplu redarea sonora a unor litere sau cifre pe care utilizatorul trebuie sa le introduca intr-un formular folosind tastatura, efectuarea unor operatii simple (adunare, scadere, inmultire) pe baza unor cifre care sunt la randul distorsionate.

Mai exista in prezent si tipuri de captcha care nu doar au scopul de a diferentia personale fata de programele informatice ci si de a diferentia persoana autorizata sa efectueze o anumita actiune pe un site fata de alte persoane, folosind dispozitive speciale care genereaza un cod atat captcha cat si de identificare (de exemplu, token-urile bancare).

  De ce si unde sunt folosite codurile Captcha?

Principala intrebuintare a codurilor Captcha este de a inlatura pe cat posibil interactiunea programelor informatice automate cu website-urile prezente pe www, permitand deci asigurarea integritatii si securitatii site-ului si a materialelor pe care le contine. Cateva exemple de aplicatii ale codurilor Captcha sunt:
  • Prevenirea comentariilor de tip spam pe website-uri. Majoritatea site-urilor, cu precadere blogurile, ofera posibilitatea ca utilizatorii sa comenteze, doar ca printre aceste comentarii pot aparea mesaje publicitare sau special create pentru a favoriza pozitia unui website pe motoarele de cautare - mesaje care sunt publicate automatizat de catre un program informatic. Folosind Captcha mesajele de acest fel sunt stopate, doar persoanele sunt cele care pot recunoaste acel cod si deci doar acestea pot publica comentarii. In plus, acest lucru vine in beneficiul utilizatorilor care nu vor fi nevoiti neaparat sa se autentifice pe site pentru a comenta, existand deseori si posibilitatea de a comenta anonim.
  • Protejarea site-urilor de inregistrarile automate ce nu pot fi asociate niciunei persoane. Site-urile care ofera servicii gratuite, de exemplu conturile de email si cele de pe retelele sociale, se pot confrunta cu problema inregistrarii unui numar foarte mare de conturi false intr-un interval scurt de timp, fapt ce incetineste viteza de acces la site pentru persoanele reale si irosirea numelor de utilizator disponibile - care ulterior ar putea fi vandute ilegal. Si in acest caz, folosirea captcha permite crearea de conturi doar atunci cand o persoana efectueaza operatia de inregistrare.
  • Protejarea anumitor informatii fata de botii din mediul online. Daca pe un site exista date care nu se doresc a fi preluate de catre boti, fie ei ai motoarelor de cautare fie specializati in analizarea si extragerea datelor atunci trebuie neaparat sa se foloseasca ori Captcha ori un sistem de inregistrare - logare. De exemplu adresa de email nu trebuie sa fie afisata in text pentru ca astfel exista riscul ca un bot de spam sa gaseasca adresa si sa inceapa sa trimita spam catre aceasta - indicat in acest caz este ca email-ul sa apara incorporat intr-o imagine sau sa fie afisat doar dupa validarea cu captcha.
  • Asigurarea validitatii sondajelor facute online. Pentru ca un sondaj sa fie veridic atunci participantii supusi sondajului trebuie sa fie persoane reale si nu programe specializate care au scopul de a vota o anumita optiune. Asadar, efectuarea unui sondaj online cu interes major poate fi considerat nul daca pentru a vota nu este necesara confirmarea faptului ca cel care a rezolvat sondajul este o persoana reala.
  • Prevenirea atacurilor informatice asupra parolelor. "Spargerea parolelor" se face de regula pe baza unui algoritm care pune laolalta litere, cifre sau caractere speciale pana cand se nimereste parola sau folosind o serie de alaturari de cuvinte, cifre sau expresii uzuale cu speranta ca posesorul contului nu a specificat o parola prea complicata (de exemplu parola "123456") - oricare ar fi procedeul de aflare a unei parole, acesta se face pe baza incercarilor multiple executate rapid de catre un program software. Majoritatea website-urilor vor afisa o validare cu cod Captcha dupa un anumit numar de logari esuate, prevenind astfel posibilele tentative de aflare a parolei unui cont de catre o persoana care nu este posesorul contului.

  Codurile Captcha vs. inteligenta artificiala

Pe scurt, inteligenta artificiala (Artificial Intelligence) este definita ca fiind “o mașină care se comportă într-un mod care ar putea fi considerat inteligent, dacă ar fi vorba de un om” - John McCarthy, 1955. Succesul codurilor captcha se bazeaza pe faptul ca doar subiectii umani pot descifra corect continutul imaginii captcha si ca nici un program specializat - iar la acest nivel astfel de programe trebuie sa aiba implementate strategii de inteligenta artificiala - nu poate decodifica imaginile distorsionate prezentate.

Modul in care sunt create codurile captcha este urmatorul: un algoritm genereaza o serie de litere, cifre, eventual caractere speciale, dupa care transpune rezultatul generat intr-o imagine in care s-a distorsionat optic anumite elemente ale rezultatului astfel incat sa fie daca nu imposibil atunci greu de decodificat de catre programele ce se bazeaza pe inteligenta artificiala, iar dupa ce utilizatorul introduce ceea ce vede in imagine se valideaza daca acesta corespunde cu codul generat de algoritm, caz in care cel care a introdus codul este considerata o persoana reala si nu un robot.

La inceputul utilizarii lor, codurile Captcha erau simpliste, codul generat nefiind distorsionat ci prezentat in clar, insa pe parcurs acestea au devenit din ce in ce mai distorsionate si dificil de decifrat, in unele cazuri poate ca si imposibil. Motivul? Progresele inteligentei artificiale in recunoasterea de caractere dintr-o imagine.

Multa vreme codurile captcha au fost cu mult inaintea programelor de inteligenta artificiala, chiar si performante, ale vremii, dar asta pana in anul 2013 cand Google a anuntat ca exista algoritmi capabili sa descifreze corect codurile captcha in proportie de 99%, fiind nevoiti deci sa implementeze un nou test de diferentiere intre oameni si roboti: reCaptcha. 1

reCaptcha este un test turing atat mai performant cat si mai eficient care se bazeaza pe inteligenta artificiala pentru a analiza modul cum se interactioneaza cu pagina unde exista afisata validarea reCaptcha. Daca algoritmul detecteaza faptul ca interactiunea cu pagina web nu poate fi decat datorata unei prezente umane atunci validarea presupune doar bifarea unui casute cu textul "Nu sunt Robot / I'm not a robot", altfel este necesara recunoasterea unor obiecte din imagini reale - si nu caractere cum se foloseste la validarea Captcha.

Testare contra programelor bot folosind reCaptcha.
  Concluzie

Captcha reprezinta un test care are scopul de a diferentia un om fata de un program informatic afisand o expresie ce contine caractere aleatoare sau cuvinte reale care apartin unei limbi (de regula acestea sunt in engleza), distorsionata optic intr-o masura in care poate fi descifrata doar de catre un subiect uman. La testul reCaptcha, expresiile sunt inlocuite cu imagini reale, fara distorsionari, validarea facandu-se in acest caz prin recunoasterea unor obiecte din respectivele imagini.

Garantia data de validarea folosind Captcha sau reCaptcha este raportata intotdeauna la nivelul de dezvoltare al inteligentei artificiale. In prezent, algoritmi sofisticati pot recunoaste caracterele afisate in imaginile captcha si tocmai de accea s-a facut trecerea la un test mai performant, pe baza de imagini reale - fapt ce sugereaza ca inteligenta artificiala, cel putin cea care se ocupa cu recunoasterea de text dintr-un fisier de tip imagine, face progrese semnificative; insa oricum inteligenta artificiala este departe de nivelul in care nu se mai poate face o distinctie clara intre oameni si programele informatice.

https://gigaom.com/2014/12/03/google-kills-captchas-with-new-ai-system/
http://www.captcha.net/