✖

Securitatea parolei

Un atacator care încearcă să pătrundă într-o aplicație protejată cu parolă (o arhivă RAR cu parolă, un e-mail…) are mai multe posibilități de a ajunge la rezultat fără să cunoască parola. Unele dintre ele cer o anumită doză de inteligență, ingeniozitate și cunoștințe, altele cer mai degrabă puțin noroc și rezistență fizică. Să vedem, deci, mai întâi ce posibilități are atacatorul.

Cum se sparge parola cuiva

  • Să găsească persoana care știe parola (de exemplu, proprietarul e-mailului) și să obțină parola de la ea – prin vorbe, mită sau bătaie. Această metodă nu o voi mai descrie în articol :-).
  • Să încerce să obțină parola de la proprietar într-un mod discret, de exemplu printr-un e-mail fals; metoda se numește phishing. Ea constă în a trimite proprietarului contului un e-mail în care îl îndemnăm să ne trimită înapoi numele de utilizator și parola. Depinde doar de tine cât de credibil arată mesajul; rugămintea singură nu ar fi probabil suficientă, trebuie adăugată o poveste. Deseori întâlnim mesaje de genul „s-a defectat baza de date, de aceea îi rugăm pe toți utilizatorii să-și introducă din nou numele și parola, altfel le ștergem căsuța poștală” și altele asemenea. Dacă mesajul arată cu adevărat serios, procentul de reușită nu este deloc mic.
  • Atacul prin dicționar – descărcăm de pe internet niște pachete cu cele mai frecvente parole și le încercăm pe toate. Dacă avem noroc și proprietarul are o parolă mai des folosită, o vom afla cu adevărat ușor. De aici rezultă marea învățătură – nu alege parole care au sens. Alege, de exemplu, parola pisica și îți garantez că primul hacker începător ți-o sparge în câteva secunde. Aceasta este probabil cea mai eficientă metodă; dacă ai un dicționar de parole cu adevărat mare, poți ghici parola unei mari părți dintre utilizatori fără prea mult efort.
  • Forța brută (brute force) este cea mai primitivă metodă. Constă în încercarea tuturor parolelor posibile care există pe lume. Programul alcătuiește pe rând combinații de litere după un anumit algoritm și verifică dacă a nimerit parola căutată. Când o găsește, o salvează și se oprește. Pe această metodă o vom analiza mai departe.

Forța brută

Un program care folosește această metodă doar formează diverse aranjamente de caractere și verifică dacă a nimerit întâmplător parola. Să calculăm cât timp poate dura o astfel de încercare.

Presupunem că avem o parolă de cinci caractere, formată doar din litere mici ale alfabetului englez (fără litere cu diacritice, precum ă, î, ș etc.). Alfabetul englez are douăzeci și șase de litere. Acum putem calcula ușor câte parole diferite se pot forma cu cinci astfel de litere. Vom folosi aranjamente, deoarece contează ordinea (parola carte nu este aceeași cu tecar, deși este formată din aceleași litere), și mai trebuie să folosim aranjamente cu repetiție, pentru că literele se pot repeta în parole. Trecem la calcul. Formula pentru aranjamente cu repetiție este A―nk=nk. În locul lui n punem numărul de litere din care alegem – numărul literelor alfabetului englez – iar în locul lui k punem numărul de litere din care este formată parola, în cazul nostru cinci. Obținem 265, adică aproximativ douăsprezece milioane de aranjamente diferite. Este mult sau puțin?

Depinde și de calculatorul pe care îl avem la dispoziție. Un calculator mai vechi face într-o secundă puține comparații, iar calculatoarele ultramoderne fac de zece mii de ori mai multe. Eu voi lucra în aceste exemple cu presupunerea că un calculator face zece milioane de comparații și evaluări pe secundă. Probabil că toată lumea și-a dat seama deja că o parolă de cinci caractere ar fi descoperită de un astfel de calculator în două secunde, ceea ce chiar nu este un rezultat bun. Dar nu ne dăm bătuți.

Întărim parola

O parolă de cinci caractere nu este deloc sigură, iar unele sisteme mai rezonabile nici nu permit alegerea unei parole atât de scurte. Se spune că parola nu ar trebui să aibă mai puțin de opt caractere. Să calculăm acum câte aranjamente există pentru o parolă de opt caractere. Ca și în cazul precedent, vom considera doar literele mici ale alfabetului englez. Înlocuim în formulă și obținem 268, adică aproximativ două sute de miliarde de aranjamente. Este deja un număr mai frumos. Calculatorul le-ar evalua pe toate în mai puțin de șase ore. E mai bine decât data trecută, dar să vedem cât ar crește puterea parolei dacă ai folosi și litere mari, cifre și caractere speciale, cum sunt liniuța de subliniere, cratima etc.

Literele mici sunt 26, literele mari sunt tot 26, ceea ce dă în total 52 de caractere. La acestea trebuie adăugate 10 cifre și niște caractere speciale. Nu peste tot sunt permise toate caracterele speciale, așa că, pentru simplitate, voi lua în calcul doar opt caractere speciale, ca numărul de caractere să se rotunjească la un frumos 70. Lungimea parolei va fi din nou opt. După înlocuire obținem numărul 708, care, pentru a ne face o idee mai bună, este aproximativ 5,8 · 1014, adică aproape șase sute de mii de miliarde de aranjamente. Este deja un număr destul de impresionant. Calculatorul nostru le-ar verifica pe toate în șaisprezece mii de ore! Asta înseamnă aproape doi ani. Atacatorul ar trebui să aibă foarte mult noroc ca să descopere parola într-un timp realist. În plus, ar trebui să cunoască lungimea parolei tale; în caz contrar, ar trebui să verifice și aranjamentele cu un număr mai mic de litere.

Unii oameni se tem atât de mult pentru datele lor, încât folosesc parole formate doar din cifre. Aceste parole rezistă foarte bine la atacul prin dicționar, deoarece e greu de crezut că într-un dicționar de parole frecvent folosite se află tocmai 41.274.390.553. Din păcate, parolele de acest fel, deși rezistă la atacul prin dicționar, rezistă mai slab la forța brută. Cifrele sunt doar zece, deci numărul de aranjamente este întotdeauna 10k. Puterea parolei este susținută doar de lungimea ei. Parola noastră anterioară de opt caractere, cu toate tipurile de caractere, avea aproximativ 5,8 · 1014 aranjamente. Ca să atingem măcar aceeași valoare cu o parolă numerică, ea ar trebui să aibă cincisprezece cifre, aproape de două ori mai multe caractere. Se vede clar că este mai eficient să alegi o parolă mai scurtă, dar cu mai multe tipuri de caractere.

Nu subestima atacatorul

Atacatorul poate fi isteț. După ce ai citit rândurile de mai sus, ai decis, să zicem, să-ți transformi parola actuală „limonada” cel puțin în „Limonada”, ceea ce mărește de mai multe ori numărul de aranjamente posibile, deoarece atacatorul trebuie acum să includă în algoritm și literele mari. Numai că atacatorul poate presupune că litera mare va fi doar pe primul loc, pentru că se ține minte mai ușor și nu e obișnuit să existe literă mare în mijlocul cuvântului. Așa că își scrie un algoritm care verifică toate aranjamentele de cuvinte cu litere mici și, eventual, cu o singură literă mare chiar la început.

Parola ta inițială avea complexitatea (mă refer aici la numărul total de aranjamente posibile, dacă păstrăm aceeași formă a parolei – opt litere mici) 268. Dacă atacatorul nu s-ar gândi, noua parolă ar avea complexitatea 528, dar dacă ar folosi algoritmul descris mai sus, parola ar avea complexitatea 52 · 267. Pe primul loc al parolei se pot alterna literele mici și mari, care sunt în total 52, iar pe celelalte șapte locuri se pot alterna doar literele mici, ceea ce este un aranjament cu repetiție obișnuit.

Mai mult, atacatorul poate ști, de exemplu, că parola ta este formată din patru litere și patru cifre, neamestecate, adică mereu cifrele una după alta și literele una după alta. Complexitatea unei astfel de parole se calculează astfel: primul grup de patru litere are în total 264 aranjamente, al doilea grup de patru cifre are 104 aranjamente. Aceste două rezultate se înmulțesc: 264 · 104. Dacă atacatorul n-ar ști dacă la început sunt cifrele sau literele, ar trebui să mai înmulțim rezultatul precedent cu doi.

Mai poți să te uiți și la aceste tabele, în care sunt indicate vitezele de spargere a parolelor.