Un rainbow table este un tabel uriaș, precalculat, care conține perechi de parole posibile și hash-urile lor corespunzătoare, folosit de atacatori pentru a afla rapid parola originală atunci când au acces doar la hash-ul ei, de exemplu dintr-o bază de date furată. În loc să calculeze hash-uri în timp real pentru fiecare încercare, atacatorul caută pur și simplu hash-ul furat în tabel și citește direct parola asociată.
Cum funcționează un rainbow table?
Site-urile serioase nu stochează parolele în text simplu, ci doar hash-ul lor — un șir de caractere generat matematic, teoretic imposibil de inversat direct. Un rainbow table exploatează faptul că mulți utilizatori aleg parole comune: atacatorul precalculează hash-urile a milioane de parole posibile o singură dată, le organizează într-un tabel compact și, când obține o bază de date cu hash-uri furate, doar caută fiecare hash în tabel, în loc să recalculeze totul de la zero. E o formă de a "cumpăra" viteză cu spațiu de stocare făcut dinainte.
De ce contează?
Pentru că transformă o bază de date de hash-uri furate, care ar părea inofensivă la prima vedere, într-o listă utilizabilă de parole reale, în câteva secunde per intrare. Fără apărări suplimentare, o parolă comună, oricât de "lungă" ca șir de caractere, poate fi găsită aproape instant într-un rainbow table popular, disponibil public.
Cum te protejezi?
- Ca utilizator, folosește parole unice și complexe — parolele foarte comune sunt exact cele incluse în rainbow table-urile publice.
- Ca firmă care dezvoltă sisteme, aplică întotdeauna salting la stocarea parolelor — adaugă un șir aleatoriu unic fiecărei parole înainte de hash, ceea ce face rainbow table-urile precalculate inutile.
- Folosește funcții de hash special concepute pentru parole (lente, intenționat), nu funcții de hash generice, rapide.
- Activează autentificarea în doi pași, ca o parolă recuperată dintr-un rainbow table să nu fie suficientă pentru acces.
Un exemplu concret
Baza de date a unui site mai vechi e furată. Parolele fuseseră stocate ca hash-uri, dar fără "salt" unic pentru fiecare utilizator. Atacatorul rulează hash-urile prin un rainbow table public și recuperă instant parolele pentru mii de conturi cu parole comune, în timp ce firma vecină, care aplicase salting corect, rămâne practic neafectată de aceeași metodă.
Vrei să știi dacă sistemele firmei tale stochează parolele corect? Cere un audit de securitate.
Întrebări frecvente
Salting elimină complet riscul rainbow table?
Practic da — pentru că fiecare parolă primește o valoare aleatorie unică înainte de hash, atacatorul ar trebui să construiască un tabel separat pentru fiecare "salt", ceea ce anulează avantajul de viteză al metodei.
O parolă lungă e imună la rainbow table?
Doar dacă e și neobișnuită. Rainbow table-urile publice conțin de obicei parole reale, folosite frecvent, indiferent de lungime — o frază lungă dar comună poate fi la fel de expusă ca o parolă scurtă.
