Cum de a cripta parolele stiva de preaplin în limba rusă

În primul rând trebuie să înțelegeți ce un hash - nu este criptat. parola Heshrovanie pe client nu înlocuiește criptare, și nu protejează împotriva interceptării traficului. Transmitere și parola / hash a acestuia (dacă într-adevăr doriți să scrie JS bicicleta) nu înlocuiește criptarea. Ar trebui să folosiți HTTPS. Toate celelalte metode, inclusiv criptarea asimetrică samopisnaya - fiabile.

Hashing protejează doar împotriva scurgerilor de date din baza de date. Problema principală cu o astfel de scurgere - capacitatea de a recupera parolele pentru hash și să le utilizeze pentru a ataca reutilizarea parolei - încercați să meargă cu același e-mail / utilizator / parola pe servicii populare. De exemplu, pe Github. Ie te obliga utilizatorii să schimbe nu numai parola pentru serviciul dvs., dar, de asemenea, pentru a schimba parola pentru toate celelalte servicii (da, nu e bun pentru a utiliza peste tot aceeași parolă, dar toate fac!)

Din aceasta rezultă hashing direct cerințe:

  1. Personajul negativ nu ar trebui să fie capabil de a recupera rapid parolele de hash populare. Utilizarea populare MD5 / SHA1 vă permite să recupereze rapid parole. 5f4dcc3b5aa765d61d8327deb882cf99 descifra prima dată orice serviciu online.
  2. Personajul negativ nu ar trebui să fie în măsură să recupereze peste parole pentru toți utilizatorii dintr-o dată. Una și aceeași parolă ați folosit diferite polzovatelemi, pentru a da un hash diferit. Acest lucru va crește timpul pentru a decripta proporțional cu numărul de utilizatori.

Acesta are un mod standard de încredere pentru a rezolva ambele probleme simultan - Funcția de derivare cheie (funcția cheie derivare).

  1. În cazul în care valoarea inițială este hash generat aleator - sare, și se calculează un hash de „sare + parola“. Sarea utilizată stocată ca parte a rezultatului.
  2. În cazul în care verificarea parolei - hash „sare + verifică parola,“ și compara cu valoarea obținută în (1).

Această abordare oferă valori diferite, chiar dacă un utilizator folosește dublu aceeași parolă.

În .NET, sunt gata KDF rezalizatsii, de exemplu, Rfc2898DeriveBytes. Se folosește ceva de genul:

articole similare