Comandarea parolei


Deoarece majoritatea programatorilor nu înțeleg modul în care protecția prin parolă funcționează cu hash și cum să o aplice corect, am decis să fac un mic text explicativ pe această temă.







Primul lucru pe care trebuie sa-l intelegem: principiul protectiei prin hashing este principiul "ascunzand totul in vedere". Se presupune că șarpele însuși și toate elementele sale (cu excepția parolei, desigur) sunt cunoscute de atacator. Dar asta nu-l va ajuta. Acest lucru este foarte important. Ar trebui să se înțeleagă că sarcina de a avea hash nu trebuie să ascundă rezultatul funcției hash, ci mai degrabă să o facă în siguranță, chiar dacă hash-ul este compromis.

Următorul lucru pe care trebuie să-l înțelegeți este că parolele de tip hashing servește, în primul rând, pentru a nu proteja aplicația, ci pentru a proteja parola însăși, în cazul în care aplicația este hacked. Prin urmare, să se bazeze pe orice mecanisme ale aplicației pentru a proteja parola este contrară principiului hașunerii. Hash-ul trebuie să fie autosuficient - de dragul lui a fost inventat.

Apoi, trebuie să ne imaginăm ce caracteristici ale hashing-ului sunt exact parolele. Principala problemă cu parolele este că acestea sunt relativ scurte. Dacă puteți [într-o anumită măsură] să vă asigurați că nimeni nu va prelua textul sursă prin hash, atunci în cazul unei parole această opțiune este posibilă în principiu. Și în anumite condiții - și foarte probabil.







Ce tipuri de atacuri poate expune o parolă hash?

1. Căutați un hash pe mesele de curcubeu: baze de date uriașe în care se colectează hash-uri pre-calculate pentru eventualele șiruri de caractere.
2. Metoda Bruteforce: pentru a sorta prin toate combinațiile de simboluri și pentru a aplica o funcție de hash pentru ei până când returnează hash-ul dorit.
3. Căutare în dicționar. Arată ca bruteforce, dar căutarea nu este toate valorile posibile, ci doar câteva mii de parole cele mai populare, cum ar fi "123", "parola" etc.

Pentru a proteja împotriva acestor trei tipuri de atacuri, sunt necesare diferite mecanisme. Acestea sunt:

1. Pentru a proteja împotriva căutării de tabele curcubeu, sarea a fost inventată: un șir de caractere aleatoare adăugate la parola înainte de a calcula hash. În acest fel, extindem parola într-o astfel de stare încât nici o masă de curcubeu nu poate găzdui toate opțiunile.
Dezavantajul sarei este că trebuie să fie stocat cu parola în spațiul liber. Și astfel, parola este vulnerabilă la alte două tipuri de atacuri. Dar trebuie să fiți conștienți întotdeauna de faptul că acest lucru este destinat - sarea este proiectată pentru a fi compromisă cu hash-ul. Iar apărarea este construită pe faptul că sarea este cunoscută atacatorului.

Respectând toate cele trei reguli, putem fi siguri că, chiar dacă baza de date a parolei este scursă sau dacă aplicația este spart sau chiar când computerul este furat, parolele vor fi sigure. Trebuie să înțelegem că neglijarea oricăreia dintre cele trei reguli enumerate mai sus va face ca parolele să fie vulnerabile la scurgere.

Să trecem acum la specificul.







Articole similare

Trimiteți-le prietenilor: