Attacco Con Le Rainbow Tables

Rainbow Table

In crittografia Rainbow Table, tradotto in italiano come 'Tabella Arcobaleno', è un attacco che utilizza pezzi di testo cifrati con password conosciute, confrontate poi con pezzi di testo cifrati con password ignote. Se troviamo pezzi simili, possiamo ricavare la password.

COSA SONO LE RAINBOW TABLES ?

Sono delle tabelle di associazione per ottenere delle chiavi crittografiche (nel nostro caso le pass wep o wpa o wpa2) riducendo in maniera significativa la necessità di risorse di sistema e di tempo.

La caratteristica principale di queste tabelle è che possono essere utilizzate unicamente per degli attacchi contro le hash delle password.

Le rainbow tables sono formate da righe (dette catene) e colonne. Nel nostro esempio, supponiamo di avere una tabella di M righe e N colonne

COME SI GENERANO LE RAINBOW TABLES ?

Le catene sono legate tra loro da una relazione simile ad una applicazione vettoriale, dominata da due tipi principali di funzioni irreversibili:

-Funzione Hash:
Simbolicamente la indichiamo come:
Hash(password)
La funzione di hash è sempre uguale in tutta la rainbow tables

-Funzione Riduzione:
La funzione di riduzione è ciò che contraddistingue le rainbow table, infatti sono delle funzioni che da un Hash genrano una stringa. Tale stringa non ha nulla a che fare con la password che ha generato l'hash. Simbolicamente lo indichiamo:

R[x]( Hash(password) ) = stringa

dove [x] è un indice numerico (1, 2, ecc.) che ci permetterà di contraddistinguere due funzioni di riduzione diverse, infatti ci sono diverse funzioni di riduzione nelle rainbow tables, tante quante sono le colonne, quindi N-1.

Cerchiamo ora di capire come sono collegate tra loro i vari termini di una catena.

1.Da una prima password A1, che è il primo elemento della catena, si genera un hash:

Hash(A1) = H1
2.Dal H1, mediante una una funzione di riduzione, si ottiene una nuova password A2, che diventerà il secondo elemento della catena:

R1 ( Hash(A1) ) = R1 ( H1 ) = A2
3.Il processo riprende ciclicamente: la password A2 viene sottoposta ad Hash:

Hash( R1 ( Hash(A1) ) ) = Hash(A2) = H2
4.Mediante una nuova funzione di riduzione si genera una nuova password

A3 che sarà al terzo posto della catena:
R2 ( Hash( R1 ( Hash(A1) ) ) ) = R2 ( Hash(A2) ) = R2 ( H2 ) = A3
5. - - -
6.Il processo continua fino alla generazione di AN password differenti.

AN = R(N-1) ( A(N-1) )

In definitiva abbaimo ottenuto una catena così composta:
A1 A2 A3 - - - AN

Questa catena altro non è che una applicazione lineare irreversibile del tipo:

Catena(A1) = [ A1 , R1 ( Hash(A1) ) , R2 ( Hash ( R1 ( Hash(A1) ) ) , - - - , AN ]

Questo tipo di applicazione è eseguita su una password B1, in questo modo otterremo una nuova catena da inserire sotto la precedente

Come sono legate tra di loro le colonne? La risposta è semplice: ad ogni colonna è stata applicata un solo tipo di funzione di riduzione:
Alla prima colonna non è associata alcuna funzione di riduzione
Alla seconda colonna è associata la funzione di riduzione R1
alla terza colonna è associata la funzione di riduzione R2
- - -
Alla N-esima colonna è associata la funzione di riduzione R(N-1)

Quindi possiamo visualizzare la tabella come una cosa del tipo:

§R R1 R2 R3 - - - R(N-1)
§1 A1 A2 A3 - - - AN
§2 B1 B2 B3 - - - BN
- - - - - - - - - - - - -
§M Z1 Z2 Z3 - - - ZN

Questa è la rainbow tables

Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License