Hai probabilmente letto che i siti web memorizzano la tua password come un "hash" anziche il valore reale. Come fanno allora gli aggressori che rubano quegli hash a riconvertirli in password? Una delle risposte piu vecchie e ingegnose e la rainbow table, e capirla spiega anche perche una piccola tecnica, la salatura, la sconfigge silenziosamente.
Cos'e una rainbow table
Quando crei un account, un buon sito web non memorizza la tua password reale. Memorizza un hash: il risultato di una funzione a senso unico che trasforma la password in una stringa di lunghezza fissa, in un modo che non si puo semplicemente invertire. Se qualcuno ruba il database, ottiene gli hash, non le password, e deve comunque ricavare quale password ha prodotto ciascun hash.
Una rainbow table e un modo per farlo velocemente. E una vasta tabella di consultazione precalcolata che collega gli hash alle password che li hanno generati. L'aggressore svolge il costoso lavoro di hashing in anticipo, lo memorizza in forma compatta e poi si limita a cercare ciascun hash rubato. E tutta qui l'idea: spendere spazio di archiviazione ora per risparmiare tempo dopo.
Come funziona l'attacco
Decifrare un hash con la brute force significa calcolare l'hash di ogni tentativo possibile dal vivo finche uno non corrisponde: corretto, ma lento su larga scala. Le rainbow table accelerano il processo con un ingegnoso trucco di archiviazione. Anziche salvare ogni hash, costruiscono lunghe catene di passaggi alternati di hashing e "riduzione" e ne memorizzano solo l'inizio e la fine. Cio mantiene una tabella altrimenti impossibilmente grande abbastanza piccola da essere utile. Per decifrare un hash rubato, l'aggressore ricostruisce la catena pertinente e recupera la password originale.

Perche la salatura le sconfigge
Ecco la parte importante, e la buona notizia. Una rainbow table funziona solo se una data password produce sempre lo stesso hash. La difesa e un sale: un valore univoco e casuale aggiunto a ogni password prima che venga sottoposta a hashing. Con sali per ogni utente, due persone con la stessa identica password finiscono con hash completamente diversi, e una tabella precalcolata diventa inutile: l'aggressore avrebbe bisogno di una rainbow table separata per ogni sale possibile, cosa non pratica.
I sistemi moderni vanno oltre, abbinando i sali a funzioni di hash deliberatamente lente come bcrypt, scrypt o Argon2. L'hashing lento rende costoso anche il tentativo dal vivo, e la salatura elimina la scorciatoia del precalcolo. Insieme rendono le rainbow table una minaccia perlopiu storica: pericolosa contro sistemi vecchi o mal costruiti che memorizzano hash non salati, ma neutralizzata da chiunque gestisca correttamente la memorizzazione delle password oggi.
Come si confronta con altri attacchi
Aiuta collocare le rainbow table accanto agli attacchi con cui vengono spesso confuse:
- Brute force calcola l'hash di ogni combinazione possibile dal vivo finche una non corrisponde: lenta, sconfitta da password lunghe. Vedi cos'e un attacco di forza bruta.
- Dictionary attack prova un elenco di password probabili anziche tutte le combinazioni: piu veloce, sconfitto non usando password comuni o riutilizzate.
- Credential stuffing riprova coppie reali di nome utente e password trapelate: sconfitto da password univoche. Vedi cos'e il credential stuffing.
- Rainbow table precalcola il lavoro di hashing e lo cerca: sconfitta specificamente dalla salatura.
Cosa significa per te
Non puoi controllare come un sito web memorizza i suoi hash, e i siti affidabili gia salano e usano hash lenti, cosa che blocca sul nascere le rainbow table. Cio che puoi controllare e l'unica cosa che limita i danni quando un sito sbaglia: una password univoca e lunga su ogni account. Se un sito memorizza male gli hash e le sue password vengono decifrate, una password che non hai usato altrove non espone nulla oltre a quel singolo account. Un password manager rende semplice generare e memorizzare quelle password univoche, ed e la conclusione pratica dietro ognuno di questi attacchi.
★ Audit Cure53 2024 · ✓ Plan gratuit · Cross-platform
Blinda i tuoi account → NordPassPassword forti e uniche · scanner di violazioni · piano gratuito→Domande frequenti
Cos'e una rainbow table?
Una rainbow table e una grande tabella precalcolata che collega gli hash delle password alle password che li hanno prodotti. I siti web memorizzano le password come hash anziche in chiaro, percio un aggressore che ruba il database degli hash deve comunque ricavare le password originali. Invece di calcolare l'hash di ogni tentativo sul momento, una rainbow table svolge questo lavoro in anticipo e ne memorizza i risultati in forma compatta, cosi l'aggressore puo cercare un hash rubato e trovare rapidamente la password corrispondente. E un classico compromesso tempo-memoria: enorme spazio di archiviazione in anticipo in cambio di una decifrazione veloce dopo.
Come funziona un attacco con rainbow table?
Le password sono di solito memorizzate come hash, trasformazioni a senso unico che non si possono semplicemente invertire. Per decifrarle, un aggressore deve trovare quale input produce un dato hash. Calcolarlo dal vivo per miliardi di tentativi e lento, percio le rainbow table precalcolano lunghe catene di passaggi di hashing e riduzione e ne memorizzano solo gli estremi, il che mantiene la tabella abbastanza piccola da essere pratica. Dato un hash rubato, l'aggressore ricostruisce la catena pertinente per recuperare la password originale. Il punto e che questo funziona solo contro hash che non sono stati salati individualmente.
Come ci si difende dalle rainbow table?
Con un sale. Un sale e un valore univoco e casuale aggiunto a ogni password prima che venga sottoposta a hashing, cosi due utenti con la stessa password ottengono hash completamente diversi. Poiche una rainbow table e precalcolata per input non salati, un sale per ogni utente la rende inutile: un aggressore avrebbe bisogno di una tabella separata per ogni sale possibile, cosa non fattibile. La memorizzazione moderna delle password combina sali per utente con funzioni di hash deliberatamente lente come bcrypt, scrypt o Argon2, che insieme rendono le rainbow table una minaccia perlopiu storica anziche attuale.
Rainbow table, brute force e dictionary attack: che differenza c'e?
Tutti e tre cercano di recuperare le password dagli hash, ma in modo diverso. Un attacco brute force calcola dal vivo l'hash di ogni combinazione possibile finche una non corrisponde: esaustivo ma lento. Un dictionary attack prova un elenco di password probabili (parole comuni e password trapelate) anziche ogni combinazione. Una rainbow table precalcola il lavoro di hashing in anticipo e cerca le risposte, scambiando spazio di archiviazione per velocita. La salatura sconfigge specificamente le rainbow table, perche spezza il presupposto che la stessa password produca sempre lo stesso valore hash.
Devo ancora preoccuparmi delle rainbow table?
Per i tuoi account, indirettamente. Non puoi controllare come un sito web memorizza i suoi hash, e i siti ben gestiti gia salano e usano hash lenti, cosa che neutralizza le rainbow table. Cio che puoi controllare e usare una password univoca e lunga su ogni sito, cosi che anche se un sito memorizza male gli hash e viene decifrato, la password esposta non sblocca nient'altro. Un password manager rende tutto cio pratico.


