Urmăresc de ceva vreme progresul făcut în direcția „spargerii” algoritmului MD5. Și nu o dată m-am contrazis cu oamenii care susțineau că a fost deja spart. De ce? Pentru că „posibilitatea găsirii unor coliziuni random” nu echivalează cu „posibilitatea găsirii unor coliziuni pentru un text dat”, sau (și mai important) cu „posibilitatea realizării unui atac pe baza acestor coliziuni”.
Ei bine, iată că a fost făcut și acest ultim pas. Astăzi a fost anunțat ceea ce este (din câte știu eu) primul atac „real-world” bazat pe vulnerabilitățile MD5. Un grup de cercetători au reușit să obțină un certificat „fals”, care apare în browsere ca fiind emis de un CA comercial. Ca urmare, certificatul este recunoscut și acceptat ca valid de către browser-ele web.
Mai mult – certificatul emis este un certificat de CA intermediar. Ca urmare, toate certificatele semnate ulterior folosind acest certificat vor fi recunoscute și acceptate ca valide de către browsere!
Da, cercetarea nu s-a bazat numai pe vulnerabilitățile MD5-ului. S-a bazat și pe anumite vulnerabilități din implementarea CA-ului (numere de secvență liniare, moment predictibil al emiterii certificatului, path length lipsă în CA-ul root, etc). Totuși, faptul că atacul a reușit (timpul necesar pentru calcul fiind de numai câteva zile!!) înseamnă că într-adevăr perioada de utilitate a MD5-ului s-a terminat.
Aș spune că este momentul să ne căutăm alți algoritmi de hashing, dar…. nu prea avem alternative. SHA-1 este mai secure, dar și el are o serie de vulnerabilități (nu de aceeași anvergură, dar vulnerabilități nevertheless). Ca urmare, și el va trebui înlocuit până în 2010 (recomandare NIST).
Cu ce? Încă nu știm. Și eu (ca și mulți alții) consider că soluția cea mai bună ar fi organizarea unei competiții de tipul celei organizate pentru algoritmii de criptare în 1997 (competiție în urma căreia a apărut AES-ul).
Detaliile despre atac le găsiți aici. Credits go to LifeTester, care se pare că în loc să se gândească la anul nou stă și citește despre MD5 pe ‘Net.