Rainbow table: cosa sono e perché rendono fragili le password

Cosa sono le rainbow table? Le rainbow table, o tabelle arcobaleno, sono archivi preparati in anticipo che collegano milioni di password alla...
Mani sulla tastiera del portatile mentre si digita una password

Cosa sono le rainbow table? Le rainbow table, o tabelle arcobaleno, sono archivi preparati in anticipo che collegano milioni di password alla loro versione cifrata, l’hash. Chi ruba un database di password cifrate in modo debole può usarle per risalire alle password originali in pochi istanti, senza doverle indovinare una per una. Capire come funzionano spiega perché alcune password sono fragili e perché la difesa dipende anche da come il sito le conserva.

Cos’è l’hash di una password

Un sito serio non salva la tua password così come la scrivi. Salva il suo hash: il risultato di una funzione matematica che trasforma qualsiasi testo in una stringa di lunghezza fissa. Dalla stessa password esce sempre lo stesso hash, ma dall’hash non si può tornare indietro con un calcolo diretto.

Quando fai l’accesso, il sito calcola l’hash di quello che hai scritto e lo confronta con quello salvato. Se coincidono, la password è giusta. Così, se qualcuno ruba il database, trova solo hash e non le password in chiaro.

Il punto debole è che chi attacca può fare lo stesso calcolo: prende una password probabile, ne calcola l’hash e controlla se compare nel database rubato. Se compare, ha trovato la password.

Come funziona una rainbow table

Calcolare gli hash di miliardi di password richiede tempo. L’idea delle tabelle precalcolate è fare quel lavoro una volta sola e conservarne il risultato: un enorme elenco “password → hash” da consultare quando serve.

Un elenco completo però occuperebbe troppo spazio. Nel 2003 il ricercatore Philippe Oechslin ha pubblicato un metodo per comprimerlo: le rainbow table. Invece di salvare tutte le coppie, la tabella salva catene di calcoli, conservando solo il primo e l’ultimo elemento di ogni catena. Quando serve, il programma ricostruisce il pezzo di catena che contiene l’hash cercato. È uno scambio tra memoria e tempo: meno spazio occupato, qualche calcolo in più al momento della ricerca.

Il risultato pratico è che, per gli hash calcolati in modo semplice, una password corta o comune si ritrova in pochi secondi. Esistono tabelle già pronte per gli algoritmi più vecchi, come MD5 e SHA-1 usati senza protezioni aggiuntive.

Il caso LinkedIn del 2012

Nel giugno 2012 circolarono in rete circa 6,5 milioni di hash di password di LinkedIn. Erano calcolati con SHA-1 senza “sale” (vedi sotto): due utenti con la stessa password avevano lo stesso hash. Nel giro di pochi giorni gran parte di quelle password fu ricostruita con tabelle e dizionari. Le prime a cadere furono proprio quelle corte e comuni.

Il caso ha mostrato una cosa che vale ancora oggi: la robustezza della tua password conta, ma conta anche il modo in cui il servizio la conserva. E tu, da utente, non puoi saperlo.

Il sale: perché le rainbow table oggi funzionano meno

La difesa contro le tabelle precalcolate si chiama salt, “sale”. Il sito aggiunge alla tua password una sequenza casuale, diversa per ogni utente, prima di calcolare l’hash, e la salva accanto. Così la stessa password produce hash diversi per utenti diversi, e una tabella preparata in anticipo non serve più: andrebbe rifatta per ogni singolo sale.

I servizi seri usano anche funzioni di hash lente di proposito, come bcrypt o Argon2 (vincitore nel 2015 della Password Hashing Competition). Ogni tentativo richiede più calcoli e più memoria, e provare miliardi di password diventa molto costoso.

Per questo oggi le rainbow table sono meno usate di un tempo. Chi attacca preferisce i dizionari di password già rubate e la forza bruta con le schede grafiche. Ma i siti vecchi o fatti male esistono ancora, e i loro database continuano a essere rubati.

Cosa significa per le tue password

Non puoi controllare come un sito salva la tua password. Puoi però fare in modo che, anche nel caso peggiore, il danno resti piccolo:

  • usa password lunghe: le tabelle e la forza bruta coprono bene le password corte. Una frase di quattro o cinque parole casuali è fuori portata;
  • evita le password comuni e le loro varianti: “s1m0ne!(” sembra complicata, ma è “simone” con le sostituzioni che ogni programma di attacco prova per prime;
  • usa una password diversa per ogni sito: se un servizio con hash deboli viene violato, la password scoperta non deve aprire anche la tua email;
  • attiva la verifica in due passaggi e, dove c’è, la passkey: con una passkey il sito non conserva nessuna password da rubare;
  • chiudi gli account che non usi più: i siti abbandonati sono quelli con le protezioni più vecchie.

Trovi i metodi pratici per scegliere e conservare le password nella guida su come creare password sicure.

Domande frequenti

Le rainbow table possono scoprire qualsiasi password?

No. Funzionano solo contro hash senza sale e su password che rientrano nella tabella, di solito corte o comuni. Una password lunga e casuale non c’è.

Come faccio a sapere se un sito usa il sale?

In genere non lo puoi sapere. Per questo conviene trattare ogni sito come se fosse il più debole e usare password diverse ovunque.

Se un sito mi rimanda la password in chiaro per email?

È un brutto segnale: vuol dire che la conserva in un modo che permette di leggerla. Cambia quella password con una che non usi da nessun’altra parte.

Se hai perso l’accesso a dei file e non a un account online, scopri i servizi di recupero dati del nostro laboratorio: la diagnosi è gratuita.

Se un attacco ha già cifrato o rovinato i tuoi file, in molti casi si possono ancora salvare: ecco come lavoriamo sul recupero dei file criptati da ransomware.