Password Cracking - cum se face?

Cred ca asta este un thread mai bun, decat sa compun altul nou, in plus aici ai si filmuletul cu ceva info interesante.

Interpretare a postului Funny dev related stuff - the chill corner si a celor de dupa.
De curand, o echipa Google Security & Co a anuntat ca a gasit o metoda de a produce coliziuni in sha1 http://shattered.io/
In md5 este descoperita o metoda inca din 2004 https://en.wikipedia.org/wiki/MD5
Atat functia md5 cat si sha1 sunt functii hash dar nu bijective, asta inseamna ca ele nu au o inversa (d-aia nu folosest la criptare), Nu sunt bijective pentru ca ele nu sunt injective, adica exista x si y, x =/= y astfel incat md5(x) = = md5(y), atunci cand gasim x si y am gasit o coliziune. Acest efect este oarecum logic deoarece md5 are valori intr-o multime de 128 biti, iar sha1 in 160 biti.
Cele 2 functii erau folosite pentru a tine parolele hash-uite si pentru a autentifica mesaje/fisiere.
Daca “Security through obscurity.” ar fi fost un principiu bun, nu se mai organizau concursuri pentru gasirea algoritmului functiei sha-3 https://en.wikipedia.org/wiki/NIST_hash_function_competition
Deci md5(md5(md5…())) de n ori o sa aiba 128 biti, nu este mai sigur ca un singur md5 daca poti gasi coliziunea la fel nici concatenarea lor. Asta atat pentru parole cat si pentru mesaje. Adica serios, chiar crezi ca cineva care incearca sa-ti sparga parolele nu isi da seama ca tu ai concatenat 2 functii, chiar fara sa-ti vada codul? Si oricum pot fi folosite alte atacuri pentru asta.

Pana acum era stiut faptul ca sha1 nu este o solutie buna pentru parole, dar mai era folosit pentru autentificarea fisierelor. Shattered spune ca nu mai este bun nici pentru fisiere.

Pentru viitor iti recomand sa folosesti Libsodium in PHP https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium - hash, crypt, rng… Nu cred ca o sa gasesti md5 sau sha1 acolo.

1 Like