Hai probabilmente letto che i siti web memorizzano la tua password come un "hash" anziché il valore reale. Come fanno allora gli aggressori che rubano quegli hash a riconvertirli in password? Una delle risposte più vecchie e ingegnose è la rainbow table, e capirla spiega anche perché una piccola tecnica, la salatura, la sconfigge silenziosamente.
Cos'è 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 può 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 è un modo per farlo velocemente. È 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. È 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 finché uno non corrisponde: corretto, ma lento su larga scala. Le rainbow table accelerano il processo con un ingegnoso trucco di archiviazione. Anziché salvare ogni hash, costruiscono lunghe catene di passaggi alternati di hashing e "riduzione" e ne memorizzano solo l'inizio e la fine. Ciò 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.

Perché 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 è 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 finché una non corrisponde: lenta, sconfitta da password lunghe. Vedi cos'è un attacco di forza bruta.
- Dictionary attack prova un elenco di password probabili anziché tutte le combinazioni: più veloce, sconfitto non usando password comuni o riutilizzate. Vedi che cos'è un attacco a dizionario.
- Credential stuffing riprova coppie reali di nome utente e password trapelate: sconfitto da password univoche. Vedi cos'è 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 già salano e usano hash lenti, cosa che blocca sul nascere le rainbow table. Ciò che puoi controllare è 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 è 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'è una rainbow table?
Una rainbow table è una grande tabella precalcolata che collega gli hash delle password alle password che li hanno prodotti. I siti web memorizzano le password come hash anziché in chiaro, perciò 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, così l'aggressore può cercare un hash rubato e trovare rapidamente la password corrispondente. È 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 è lento, perciò 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 è che questo funziona solo contro hash che non sono stati salati individualmente.
Come ci si difende dalle rainbow table?
Con un sale. Un sale è un valore univoco e casuale aggiunto a ogni password prima che venga sottoposta a hashing, così due utenti con la stessa password ottengono hash completamente diversi. Poiché una rainbow table è 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 anziché attuale.
Rainbow table, brute force e dictionary attack: che differenza c'è?
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 finché una non corrisponde: esaustivo ma lento. Un dictionary attack prova un elenco di password probabili (parole comuni e password trapelate) anziché ogni combinazione. Una rainbow table precalcola il lavoro di hashing in anticipo e cerca le risposte, scambiando spazio di archiviazione per velocità. La salatura sconfigge specificamente le rainbow table, perché 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 già salano e usano hash lenti, cosa che neutralizza le rainbow table. Ciò che puoi controllare è usare una password univoca e lunga su ogni sito, così che anche se un sito memorizza male gli hash e viene decifrato, la password esposta non sblocca nient'altro. Un password manager rende tutto ciò pratico.



