Tipul de parolă pe care ar trebui să-l creați are foarte mult de-a face cu modul în care este stocată parola.
Cu ani în urmă, parolele aleatorii de opt caractere, compuse din litere mari și minuscule, simboluri și numere, erau foarte greu de spart. În unele cazuri, o astfel de parolă a durat ani să se spargă.
Datorită tehnologiei în schimbare de astăzi și mașinilor de închiriat, acest timp a fost redus la ore. Dar cum sunt stocate aceste parole în primul rând?
Cum sunt stocate parolele online
Sistemele nu stochează parolele utilizatorului direct în fișiere sau baze de date, deoarece atacatorii pot prelua baza de date în care sistemele păstrează parolele. În schimb, sistemele criptează parolele utilizatorilor, iar atacatorii întâlnesc o versiune criptată a fiecărei parole.
Există unii algoritmi pe care sistemele îi folosesc pentru a cripta parolele. Unul dintre acești algoritmi este algoritmul simetric. Algoritmul simetric este un tip de criptare unde puteți folosi aceeași cheie atât pentru criptare, cât și pentru decriptare. Cheia pe care o veți folosi pentru a cripta datele este aceeași atât pentru criptare, cât și pentru decriptare. Securitatea algoritmilor simetrici prezintă anumite riscuri, deoarece există o singură cheie pentru decriptare. Din acest motiv, sistemele, în general, nu folosesc algoritmi simetrici pentru criptarea parolelor.
În general, metoda pe care o folosesc sistemele pentru criptare sunt algoritmii hash. Algoritmii hash sunt pentru verificarea și reprezentarea integrității datelor, nu pentru criptarea datelor. Algoritmii hash convertesc datele într-un hash de dimensiune fixă. Aceste hashuri reprezintă de obicei un hash unic de date.
Datorită algoritmului hash, dacă un atacator a preluat baza de date de parole, atacatorul nu poate accesa parola înapoi de aici. Există o nuanță foarte importantă căreia ar trebui să acordați atenție aici. Teoretic, un atacator care compromite un sistem care folosește același algoritm hash pentru toate combinațiile de parole poate compara rezultatele obținute. Dacă atacatorul produce aceeași valoare în urma acestor comparații, atacatorul a aflat care este versiunea deschisă a parolei. Această metodă se referă la încercare și eroare, iar această formă de atac este numit în general un atac de forță brută.
La începutul anilor 2000, ar putea dura sute de ani pentru a încerca toate combinațiile pentru parole de 8 caractere criptate cu algoritmi de hashing populari. Desigur, aceasta nu include combinații foarte simple, cum ar fi „123456” sau „parola mea” în acest set. Odată cu dezvoltarea tehnologiilor software și hardware de astăzi, metoda de spargere a parolelor s-a schimbat foarte mult.
Impactul GPU-urilor emergente
Capacitățile de procesare a datelor în paralel ale procesoarelor grafice (GPU) s-au îmbunătățit în timp. GPU-urile nu sunt capabile să efectueze operațiuni versatile, cum ar fi procesoarele de uz general. Deci, chiar dacă există atât de multe nuclee și putere de procesare paralelă, nu are sens să le folosești pentru aproape orice problemă, cum ar fi CPU.
Cu toate acestea, este posibil să se realizeze unii algoritmi hash folosiți pentru parole destul de eficient pe GPU. Numărul de hasheuri calculabile pe secundă pe care le puteți obține cu procesoarele tradiționale au crescut enorm cu noile platforme GPU.
Pentru a vă face o idee, examinați numerele de hashing pe secundă ale algoritmilor de hash, cum ar fi NTLM, MD5 și SHA1, în tabelul de mai jos. Este suficient, deocamdată, să știm că acești algoritmi sunt doar un algoritm hash. Pentru a crea acest tabel, am folosit un sistem cluster format din 25 de GPU-uri AMD Radeon.
Algoritm |
Hashing-uri pe secundă |
NTLM |
350.000.000.000 |
MD5 |
180.000.000.000 |
SHA1 |
63.000.000.000 |
SHA512Crypt |
364.000 |
Bcrypt |
71.000 |
Scriptează |
33.000 |
După cum puteți vedea, cu un astfel de sistem, puteți genera hashe-uri NTLM de 350 de miliarde de ori pe secundă. Aceasta înseamnă că puteți încerca toate combinațiile unei parole de 8 caractere în mai puțin de 6 ore. Mai mult, hardware-ul din acest exemplu aparține cu ani în urmă. Imaginează-ți puterea de spargere a parolelor de astăzi.
Ce ar trebui să facă dezvoltatorii de software?
Modul în care ar trebui să meargă programatorii este destul de simplu: ar trebui să prefere algoritmii care durează mai mult pentru a calcula valorile hash atunci când criptează parolele. Dezvoltatorii trebuie să învețe nu numai despre performanța algoritmului pe care îl folosesc pe procesor, ci și despre cât de rezistent este acesta împotriva lumii GPU.
Dacă dezvoltatorii lucrează cu un cadru software care abordează și procesele de criptare a parolelor, cum ar fi Django, Ruby on Rails și Spring Security, ar trebui să verifice dacă au fost luate deciziile corecte în cadrul cadru Securitate.
De exemplu, Inventează, una dintre cele mai utilizate biblioteci pentru operațiunile utilizatorului în Ruby on Rails, folosește Bcrypt ca algoritm hash implicit. De asemenea, vă permite să utilizați o altă metodă ca algoritmul hash. Algoritmul Bcrypt este fiabil, deoarece este nevoie de mult timp pentru ca GPU-ul să se rupă.
Pe scurt, cu cât calculul valorii hash durează mai mult, cu atât ești mai sigur.
Câte caractere ar trebui să aibă parola dvs.?
Fiecare caracter suplimentar pe care îl utilizați va crește geometric numărul de încercări și erori necesare pentru a vă sparge parola și pentru a vă face parola mai sigură.
Să luăm în considerare această situație prin două scenarii diferite. Luați în considerare valorile din tabelul de mai sus pentru algoritmul hash NTLM și imaginați-vă că veți încerca să spargeți parola. Imaginați-vă că țintiți parole de opt caractere sau mai mult.
Numărul de caractere |
Litere mari/minuscule și cifre |
Litere mari/minuscule, numere și simboluri speciale |
8 |
mai puțin de 1 minut |
2 minute |
9 |
2 minute |
2 ore |
10 |
2 ore |
1 săptămână |
11 |
6 zile |
2 ani |
12 |
1 an |
200 de ani |
13 |
mai mult de 100 de ani |
mai mult de 1000 de ani |
Când examinați tabelul, puteți vedea că utilizarea unei parole de minim 12 caractere este sigură atunci când utilizați toate combinațiile de litere mari/minuscule, numere și simboluri speciale. Dacă nu utilizați simboluri speciale, atunci se dovedește că trebuie să utilizați 13 caractere ca lungime a parolei sigure. Dacă ați folosit metoda hash Bcrypt în loc de hash NTLM în acest sistem, 8 caractere ar fi suficiente. Cu toate acestea, nu aveți ocazia să știți cu ce metodă hash vă păstrează parola un sistem pe care îl introduceți pe web. De aceea ar trebui să luați în considerare toate posibilitățile.
Principala problemă pentru dezvoltatorii de software este că este aproape imposibil să convingi utilizatorii să aibă o parolă de minim 12 caractere. Astăzi, este posibil să spunem că rata de utilizare a parolei de această lungime este scăzută. Prin urmare, conform scenariului de utilizare a sistemului dezvoltat, va fi necesar să se găsească o cale de mijloc care să fie acceptată de utilizatori. pentru a-și îmbunătăți securitatea parolei.
o ultimă sugestie pentru dezvoltatori este să verifice nu numai lungimea minimă, ci și lungimea maximă a intrărilor care vin prin formularele pe care le-ați prezentat utilizatorului. Mai ales atunci când activați utilizarea unui algoritm hash lent de calculat, cum ar fi Bcrypt pentru securitate În scopuri, vă puteți confrunta cu anumite riscuri dacă nu controlați lungimea maximă a parolei introduse de utilizatorul. De exemplu, atacatorii pot efectua atacuri încercând zeci de parole de 100 de mii de caractere în același timp cu niște solicitări special pregătite. Într-un astfel de caz, este foarte probabil ca sistemul dumneavoastră să nu mai răspundă la alți utilizatori.
Sfaturi pentru utilizatorii finali
Asigurați-vă că lungimea parolei este de minim 12 caractere și asigurați-vă că includeți combinații de litere mari și mici, numere și simboluri. Nu uita niciodată că sistemele care stochează parola ta pot fi sparte, iar informațiile tale pot fi abuzate. Nu puteți ști ce algoritmi folosește un sistem pentru a vă cripta parola, așa că depinde în întregime de dvs. să vă luați măsuri de precauție și să creați parole puternice.