În termeni simpli, un algoritm de hashing a parolei $pH$ ia o sare $sare$ și a introdus parola $pwd$ si calculeaza $h' = pH(sare,pwd)$ si verifica $h$ cu hash-ul parolei curente stocate $h$, $h \overset{?}{=} h'$.
Îmi va permite introducerea unei parole incorecte care doar hash la aceeași?
Dacă introduceți o parolă arbitrară, poate avea o modificare neglijabilă pentru a avea același hash de parolă cu sare. Dacă se întâmplă acest lucru, acesta este valid și puteți intra în sistem.
Nu o voi numi o parolă incorectă, mai degrabă numesc o altă imagine prealabilă pentru $h$. În afară de forța brută (și mesele curcubeu unde sarea împiedică acest lucru), acesta este atacul care trebuie să fie efectuat de atacatori. Acest atac este de fapt un atac pre-imagine;
- Dată o valoare hash $h$ găsiți și introduceți astfel $m$ acea $h = hash(m)$. Costul generic al acestui atac este $\mathcal{O}(2^n)$ pentru $n$-funcții hash de biți (funcții de hash de tip passord sau hash criptografic)
Cel mai slab punct al spargerii parolelor este factorul uman. Oamenii tind să aibă parole slabe iar în prezent una dintre metodele bune este zaruri. Utilizați dicewire pentru a vă genera parola sau, mai bine, utilizați un manager de parole în care acestea generează parole cu adevărat aleatorii și vă păstrați baza de date a parolelor cu parola puternică generată de dicewire.
dar cum funcționează pentru a împiedica folosirea interschimbabilă a parolelor care se ciocnesc?
Nu o poți preveni, există prin principiul porumbeilor. Mai degrabă, algoritmul de hashing al parolei este sigur împotriva lui, chiar dacă ați folosit pur și simplu MD5. MD5 este încă securizat împotriva atacurilor pre-imagine, veți avea o rezistență pre-imagine de ~128 de biți. Desigur, trebuie să folosiți algoritmi de hashing moderni, cum ar fi Argon2.
cu alte cuvinte, sunt aceste tehnici motivul pentru care trecerea incorectă nu vă va lăsa să intrați sau oricum nu funcționează?
Așa funcționează, va funcționa întotdeauna. Rețineți că, veți avea o probabilitate de $\dfrac{1}{2^{128}}$ pentru o singură parolă aleatorie care se potrivește cu hash-ul parolei dvs. (presupunând o ieșire pe 128 de biți). Dacă probabilitatea unui eveniment este $\geq \dfrac{1}{2^{100}}$ pur și simplu spunem asta nu-se-va-întâmpla.
Chiar dacă vă temeți de acest lucru, utilizați sisteme de autentificare cu doi factori și, de fapt, ar trebui să le folosiți ori de câte ori este posibil.
O notă laterală: găsirea unei coliziuni este irelevantă în hashingul parolei în ceea ce privește atacul de coliziune, unde trebuie să găsiți doar două intrări arbitrare $a$ și $b$ astfel încât $hash(a) = hash(b)$. În hashingul parolei, atacatorul are hash-ul și încearcă să găsească unul care să producă același hash,