SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Rainbow Tables
                         Frison Marco ↔ minst
                             27 Agosto 2006


Indice
1 Introduzione                                                               2

2 Password e Hash                                                            2

3 Le Rainbow Tables                                                          3
  3.1 L’idea di Oechslin . . . . . . . . . . . . . . . . . . . . . . . . .   3
  3.2 Servizi online . . . . . . . . . . . . . . . . . . . . . . . . . . .   5

4 Difendiamoci: le salt password                                             5

5 Conclusioni                                                                6

6 Fonti e link utili                                                         7




                                      1
1    Introduzione
Ore di lavoro per installare il nostro Windows XP nuovo fiammante,
aggiornato all’ultimo bugfix; scelta una buona password alfanumerica final-
mente cediamo alle tentazioni di Morfeo, tranquilli che il nostro sistema sia
perfettamente sicuro.

               Quanti si riconoscerebbero in tale descrizione?

Quale che sia il vostro sistema, simili supposizioni sono totalmente infondate
(perfettamente sicuro un sistema multiutente connesso alla rete? non scher-
ziamo!), tantopi´ se il vostro ambiente ´ di stampo Microsoft, azienda che
                 u                         e
ha fatto della semplicit´ ma non certo della sicurezza il proprio cavallo di
                         a
battaglia. Quindi giusto per rovinare il vostro meritato riposo vi informo che
chiunque, senza scomodare i grandi esperti di sicurezza, potrebbe decifrare
la vostra password in qualche decina di secondi (in senso letterale!).

“Ma come? Un normale attacco brute-force pu´ richiedere anni (o anche
                                                 o
secoli con taluni algoritmi!) e sono sicuro che la mia password non sia cos´
                                                                           ı
classica da potersi facilmente ritrovare in un dizionario!”


2    Password e Hash
Torniamo un attimo indietro e introduciamo come vengono memorizzate le
nostre password: ovviamente non desideriamo che tali sensibili informazio-
ni risultino leggibili in chiaro perci´ ci affidiamo a particolari algoritmi di
                                      o
cifratura (detti “one-way”, a senso unico) che codificano secondo funzioni
matematiche non invertibili la nostre password; ci´ significa che non ´ possi-
                                                    o                  e
bile decodificarle direttamente a partire dal risultato cifrato.
Questo valore generato ´ detto hash ed ´ teoricamente univoco, non do-
                          e                e
vrebbero esistere due stringhe diverse che codificate generino lo stesso hash:
tale eventualit´ ´ chiamata collisione e una sua scoperta porter´ lentamente
               ae                                                  a
l’algoritmo ad essere dichiarato non sicuro; tra le altre propriet´ comuni alla
                                                                  a
maggior parte delle funzioni di hashing ricordo infine la dimensione prefissata
dell’hash qualunque sia la lunghezza del messaggio cifrato.
Dunque quando digitiamo la nostra password viene ricalcolato il codice hash
con la medesima funzione e confrontato il risultato con quello in memoria.
Le combinazioni possibili (variano tra algoritmi) sono superiori all’ordine dei

                                      2
milioni di miliardi, lasciandoci ingannevolmente sicuri sull’indecifrabilit´ del
                                                                           a
nostro codice.
Spendiamo infine poche ultime righe per introdurre un’altra notevole poten-
zialit´ delle funzioni di hashing, la certificazione: notando infatti che non do-
      a
vrebbero esistere due messaggi generanti lo stesso valore hash risulta evidente
come quest’ultimo rappresenti una sorta di impronta digitale dell’informazio-
ne che l’ha prodotto. Questa particolarit´ permette l’uso di valori hash come
                                            a
certificazione dell’autenticit´ di un messaggio: se esso venisse modificato,
                              a
quasi sicuramente cambierebbe anche l’hash corrispondente; ci´ ´ applicabile
                                                                 oe
in qualsiasi contesto, per esempio ´ frequentemente in uso nelle reti peer-to-
                                      e
peer per ricercare i files (anche se i vari peer li avessero memorizzati su disco
con nomi diversi l’hash rimarrebbe uguale).


3     Le Rainbow Tables
Veniamo ora alle Rainbow Tables. L’idea part´ negli anni Ottanta dal mate-
                                                ı
matico americano Martin Hellman: il segreto ´ una tecnica chiamata time-
                                                e
memory trade-off (tradotto “compromesso tempo-memoria”) di cui le
Rainbow Tables sono una raffinata evoluzione.
Alla base c’´ una considerazione piuttosto semplice: perch´ cifrare ogni vol-
             e                                               e
ta tutte le possibili combinazioni fino a ricavare l’hash corrispondente alla
password cercata? Se avessi anzitempo criptato e memorizzato ogni combi-
nazione possibile, una sorta di elenco telefonico dell’algoritmo, potrei molto
pi´ agilmente eseguire una ricerca nel mio archivio e trovare l’hash corrispon-
  u
dente, risparmiando notevole tempo; infatti il maggior spreco di burst time
della cpu ´ proprio nella codifica ripetuta delle password, non nel confronto.
           e
Compreso ci´ sussiste solo un problema: un archivio tale da contenere tutti
              o
gli hash frutto delle combinazioni alfanumeriche di password sufficentemente
lunghe supererebbe le decide di terabyte (1 terabyte = 1024 gigabyte)!
Un comune elaboratore non possiede n´ tanta memoria n´ sufficente potenza
                                        e                  e
per analizzarla: ecco intervenire le Rainbow Tables.

3.1    L’idea di Oechslin
Philippe Oechsin, un esperto in sicurezza, ha ideato un procedimento per
ridurre un archivio di hash in una tabella molto pi´ piccola.
                                                   u
Non ´ scopo di questo breve documento illustrare in modo dettagliato le fun-
     e


                                       3
zioni matematiche alla base di questa tecnica: per tali necessit´ si rimanda al
                                                                   a
documento originale dell’autore, di cui ´ disponibile il link nell’ultima pagina;
                                        e
qui daremo solo un’idea di come funzioni il procedimento: per prima cosa
codifichiamo la nostra password e otteniamo l’hash corrispondente; ora dob-
biamo definire una formula di riduzione R(hash) tale che ad un hash faccia
corrispondere una password: ovviamente non sar´ quella di partenza, abbia-
                                                   a
mo inizialmente ribadito l’impossibilit´ di invertire una funzione di hashing!
                                       a
Iteriamo t volte il seguente procedimento: generiamo l’hash della nuova pas-
sword e applichiamo le formula di riduzione Ri (hashi ) i = 1, 2, . . . , t dove i
indica i passaggi effettuati.
Definiamo quindi
            fi+1 = Ri (HashAlgorith(fi )) dove fi = passwordi
ovvero ci´ che abbiamo appena detto: la password al passo i + 1 ´ il risultato
          o                                                        e
della formula di riduzione i-esima applicata all’i-esimo hash.
In questo modo genereremo una catena “password-hash-password-hash” di
migliaia di elementi ma di questi solo il primo e l’ultimo verranno conservati
su disco con un risparmio di memoria pari a t volte!
Ora quando vorremo confrontare il nostro hash gli applicheremo ft e control-
leremo che il risultato non sia l’ultimo elemento di una delle nostre catene
(di cui come appena detto conserviamo solo l’inizio e la fine); se ci´ non fosse
                                                                     o
vero applicheremo in sequenza ft−1 e ft e riconfronteremo il risultato con
l’ultimo elemento delle catene: continuando con questo procedimento all’i-
esimo passaggio dovremmo ricavare che il nostro hash fa parte di una certa
catena X e quindi con discreta probabilit´ la nostra password sar´ quella che
                                            a                       a
precede nella catena (generata dalla R(i−1) (hashi−1 )). Non ´ possibile risalire
                                                              e
la catena (dovremmo invertire una funzione di hashing!) ma abbiamo me-
morizzato l’inizio di tale catena e possiamo perci´ riapplicargli in sequenza
                                                    o
gli t − i passi necessari a ritrovare la password del passo precedente.
Essa ´ un’ottima candidata: ricaviamone l’hash e confrontiamo il risultato;
      e
questo metodo porta raramente a falsi allarmi dovuti a eventuali collisioni
(generati dalle formule di riduzione) lungo la catena; al contrario la versione
originale di tale metodo applicava un’unica R(hashi ) ad ogni passo, con ri-
levanti percentuali di errore.
Tale procedimento che pu´ apparire di difficile computazione ´ in realt´ ve-
                            o                                    e         a
locissimo e, aspetto particolare delle Rainbow Tables, il tempo di cracking si
riduce col quadrato della grandezza della tabella (cio´, incredibilmente, usare
                                                       e
una tabella da 1 gigabyte ´ 16 volte pi´ veloce di una da 256 megabyte!).
                             e            u

                                        4
3.2    Servizi online
Ora qualcuno domander´:
                     a
“Grazie tanto! Se avessi avuto la potenza per codificare cos´ tante password
                                                            ı
atte a realizzare complesse tabelle non mi sarei dato pena!”
In effetti per computer casalinghi realizzare una buona tabella ´ pressoch´
                                                                   e           e
impossibile a meno di attese di svariati anni (´ comunque possibile realizzare
                                               e
proprie tabelle per password brevi e con charset limitati in qualche decina
di giorni); se per´ operassi con diverse centinaia di server in parallelo potrei
                  o
ridurre tale tempo a pochi mesi. Su internet si trovano archivi gi´ pronti per
                                                                   a
numerosi algoritmi (LM, NTLM, MD5, SHA1 e altri) realizzati proprio da
chi dispone di tali strutture: i pi´ semplici sono gratuiti e solitamente non
                                   u
superano il gigabyte, quelli complessi (spesso costosi) che coprono lunghe
combinazioni alfanumeriche e di simboli superano il terabyte.
Inoltre ´ spesso possibile usufruirne direttamente online, lasciando anche la
        e
computazione necessaria alla ricerca a carico dei server: una semplice ricerca
con Google fornir´ dozzine di tale siti, sia gratuiti che a pagamento.
                   a


4     Difendiamoci: le salt password
Un quesito ´ d’obbligo: come difendersi? Per cominciare rimane sempre
             e
buona norma la seguente regole base nella scelta di una password: minimo
otto cifre con uso di caratteri alfanumerici (maiuscoli e minuscoli) e simboli.
Contro le Rainbow Tables ci´ per´ non basta, un attacker in possesso di
                                o    o
tabelle sufficentemente ampie forzerebbe comunque tale password: vengono
dunque in aiuto le salt password (“password salate”), una tecnica in uso
sui sistemi *nix e derivati da oltre 25 anni (ora chiedetevi perch´ il buon
                                                                      e
XP ancora non implementa tale tecnica!). L’idea delle salt password ´ tanto
                                                                         e
semplice quanto efficace: prima di codificare la password le si aggiunge un
insieme di bit casuali, tipicamente all’inizio o alla fine, ricavati ad esempio
dall’username, dalla data o dal clock e solo poi si esegue la cifratura.
All’hash corrispondente ´ poi ri-aggiunto, in chiaro, tale set di bit (anche
                           e
qui solitamente all’inizio o alla fine). Ecco un esempio chiarificatore (i valori
dell’hash sono inventati e non corrispondono a nessun particolare algoritmo):

Password: NuVoLoSo
Salt prescelto: cX

                                       5
Password da codificare: cXNuVoLoSo
Hash corrispondente: ZT~Z~NbTL¸)^E?
                         O O    c A
Valore cifrato conservato in memoria: cXZT~Z~NbTL¸)^E?
                                          O O    c A

Il vantaggio di tale tecnica ´ chiaro: a salt differenti corrispondono hash
                             e
differenti per password uguali, rendendo di fatto inutile la tecnica delle
Rainbow Tables o di altri dizionari di hash preconfezionati (senza sapere il
salt a priori nessuno potr´ generarle); l’unica possibilit´ potrebbe essere nel
                           a                              a
calcolare tabelle per salt differenti ma ogni bit del salt duplica la grandezza
dell’archivio e il tempo necessario a realizzarlo!
A titolo di esempio i primi sistemi Unix utilizzavano un salt a 12 bit uni-
to all’algoritmo DES (Data Encryption Standard, nonostante da anni sia
considerato insicuro ´ ancora, seppure modificato, usato di default in mol-
                       e
te distribuzioni!): ci´ significa che ogni password aveva 212 = 4096 diverse
                      o
combinazioni; ´ evidente che tale tecnica espande in modo inaccettabile la
                e
grandezza degli archivi e inoltre nei sistemi odierni spesso il numero dei bit
di salt ´ ancora maggiore (generalmente 216 = 65536 combinazioni).
        e
Tralasciando la famiglia Windows praticamente tutti i sistemi operativi uti-
lizzano la tecnica salt ma ci´ non vale per molti altri applicativi e anche per
                              o
numerose sessioni PHP e MySQL (nonostante sia attivabile): in tutti questi
casi un attacco tramite Rainbow Tables risulta terribilmente efficace.


5    Conclusioni
Credersi ben protetti solo perch´ si dispone dell’ultimo modello di pc, con
                                   e
sistema operativo aggiornato e dotazione di firewall, antivirus, antispyware,
ecc... ´ una vana chimera per bambini.
       e
La sicurezza informatica ´ un aspetto troppo spesso tralasciato, come dram-
                           e
maticamente dimostra il sistema operativo pi´ usato al mondo che ad oggi
                                                u
ancora non implementa nemmeno tecniche semplici e facilmente applicabili
come le salt password. Aumentando le potenzialit´ (velocit´ e densit´ di me-
                                                   a          a        a
moria) degli hard-disk e la potenza delle cpu, diminuir´ il tempo necessario ad
                                                       a
attaccare un qualsiasi algoritmo (sia con metodi time-memory trade-off che
con attacchi brute-force); naturalmente anche gli algoritmi stessi si evolvono
ma una basilare conoscenza dell’argomento aiuter´ quantomeno a riflettere
                                                    a
sull’intrinseca insicurezza delle password con cui abitualmente lavoriamo.



                                      6
6     Fonti e link utili
    • Il documento in cui Oechslin illustra pi´ dettagliatamente la tecnica e
                                              u
      le formule alla base delle Rainbow Tables (vivamente consigliato):
      http://lasecwww.epfl.ch/pub/lasec/doc/Oech03.pdf


    • Intervista all’autore sulle possibilit´ e le capacit´ delle Rainbow Tables:
                                            a             a
      https://www.isc2.org/cgi-bin/content.cgi?page=738


    • Il programma di Oechslin, Ophcrack, e alcune tables:
      http://ophcrack.sf.net


    • Progetto e documentazione RainbowCrack:
      http://www.antsight.com/zsl/rainbowcrack/


    • Salt password - Wikipedia:
      http://en.wikipedia.org/wiki/Salt_(cryptography)




                                        7

Weitere ähnliche Inhalte

Mehr von Ce.Se.N.A. Security

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Ce.Se.N.A. Security
 
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Ce.Se.N.A. Security
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura moderna
Ce.Se.N.A. Security
 
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivo
Ce.Se.N.A. Security
 

Mehr von Ce.Se.N.A. Security (20)

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 
Msfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetMsfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheet
 
ICTF overview
ICTF overviewICTF overview
ICTF overview
 
Anonymous email
Anonymous emailAnonymous email
Anonymous email
 
Hacking reti wireless
Hacking reti wirelessHacking reti wireless
Hacking reti wireless
 
SELinux - overview
SELinux - overviewSELinux - overview
SELinux - overview
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura moderna
 
Sicurezza delle reti 802.11
Sicurezza delle reti 802.11Sicurezza delle reti 802.11
Sicurezza delle reti 802.11
 
Rilevamento intrusioni in wlan
Rilevamento intrusioni in wlanRilevamento intrusioni in wlan
Rilevamento intrusioni in wlan
 
Network monitoring tramite snmp
Network monitoring tramite snmpNetwork monitoring tramite snmp
Network monitoring tramite snmp
 
Monitoraggio di rete con nagios
Monitoraggio di rete con nagiosMonitoraggio di rete con nagios
Monitoraggio di rete con nagios
 
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivo
 
Clonare mac os x
Clonare mac os xClonare mac os x
Clonare mac os x
 
Sql injection - intro
Sql injection - introSql injection - intro
Sql injection - intro
 
IENA
IENAIENA
IENA
 
BLUETOOTH SECURITY - part2
BLUETOOTH SECURITY - part2BLUETOOTH SECURITY - part2
BLUETOOTH SECURITY - part2
 
BLUETOOTH SECURITY - part1
BLUETOOTH SECURITY - part1BLUETOOTH SECURITY - part1
BLUETOOTH SECURITY - part1
 

Kürzlich hochgeladen

Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
sasaselvatico
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
nico07fusco
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Kürzlich hochgeladen (20)

CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 

Rainbow tables

  • 1. Rainbow Tables Frison Marco ↔ minst 27 Agosto 2006 Indice 1 Introduzione 2 2 Password e Hash 2 3 Le Rainbow Tables 3 3.1 L’idea di Oechslin . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 Servizi online . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4 Difendiamoci: le salt password 5 5 Conclusioni 6 6 Fonti e link utili 7 1
  • 2. 1 Introduzione Ore di lavoro per installare il nostro Windows XP nuovo fiammante, aggiornato all’ultimo bugfix; scelta una buona password alfanumerica final- mente cediamo alle tentazioni di Morfeo, tranquilli che il nostro sistema sia perfettamente sicuro. Quanti si riconoscerebbero in tale descrizione? Quale che sia il vostro sistema, simili supposizioni sono totalmente infondate (perfettamente sicuro un sistema multiutente connesso alla rete? non scher- ziamo!), tantopi´ se il vostro ambiente ´ di stampo Microsoft, azienda che u e ha fatto della semplicit´ ma non certo della sicurezza il proprio cavallo di a battaglia. Quindi giusto per rovinare il vostro meritato riposo vi informo che chiunque, senza scomodare i grandi esperti di sicurezza, potrebbe decifrare la vostra password in qualche decina di secondi (in senso letterale!). “Ma come? Un normale attacco brute-force pu´ richiedere anni (o anche o secoli con taluni algoritmi!) e sono sicuro che la mia password non sia cos´ ı classica da potersi facilmente ritrovare in un dizionario!” 2 Password e Hash Torniamo un attimo indietro e introduciamo come vengono memorizzate le nostre password: ovviamente non desideriamo che tali sensibili informazio- ni risultino leggibili in chiaro perci´ ci affidiamo a particolari algoritmi di o cifratura (detti “one-way”, a senso unico) che codificano secondo funzioni matematiche non invertibili la nostre password; ci´ significa che non ´ possi- o e bile decodificarle direttamente a partire dal risultato cifrato. Questo valore generato ´ detto hash ed ´ teoricamente univoco, non do- e e vrebbero esistere due stringhe diverse che codificate generino lo stesso hash: tale eventualit´ ´ chiamata collisione e una sua scoperta porter´ lentamente ae a l’algoritmo ad essere dichiarato non sicuro; tra le altre propriet´ comuni alla a maggior parte delle funzioni di hashing ricordo infine la dimensione prefissata dell’hash qualunque sia la lunghezza del messaggio cifrato. Dunque quando digitiamo la nostra password viene ricalcolato il codice hash con la medesima funzione e confrontato il risultato con quello in memoria. Le combinazioni possibili (variano tra algoritmi) sono superiori all’ordine dei 2
  • 3. milioni di miliardi, lasciandoci ingannevolmente sicuri sull’indecifrabilit´ del a nostro codice. Spendiamo infine poche ultime righe per introdurre un’altra notevole poten- zialit´ delle funzioni di hashing, la certificazione: notando infatti che non do- a vrebbero esistere due messaggi generanti lo stesso valore hash risulta evidente come quest’ultimo rappresenti una sorta di impronta digitale dell’informazio- ne che l’ha prodotto. Questa particolarit´ permette l’uso di valori hash come a certificazione dell’autenticit´ di un messaggio: se esso venisse modificato, a quasi sicuramente cambierebbe anche l’hash corrispondente; ci´ ´ applicabile oe in qualsiasi contesto, per esempio ´ frequentemente in uso nelle reti peer-to- e peer per ricercare i files (anche se i vari peer li avessero memorizzati su disco con nomi diversi l’hash rimarrebbe uguale). 3 Le Rainbow Tables Veniamo ora alle Rainbow Tables. L’idea part´ negli anni Ottanta dal mate- ı matico americano Martin Hellman: il segreto ´ una tecnica chiamata time- e memory trade-off (tradotto “compromesso tempo-memoria”) di cui le Rainbow Tables sono una raffinata evoluzione. Alla base c’´ una considerazione piuttosto semplice: perch´ cifrare ogni vol- e e ta tutte le possibili combinazioni fino a ricavare l’hash corrispondente alla password cercata? Se avessi anzitempo criptato e memorizzato ogni combi- nazione possibile, una sorta di elenco telefonico dell’algoritmo, potrei molto pi´ agilmente eseguire una ricerca nel mio archivio e trovare l’hash corrispon- u dente, risparmiando notevole tempo; infatti il maggior spreco di burst time della cpu ´ proprio nella codifica ripetuta delle password, non nel confronto. e Compreso ci´ sussiste solo un problema: un archivio tale da contenere tutti o gli hash frutto delle combinazioni alfanumeriche di password sufficentemente lunghe supererebbe le decide di terabyte (1 terabyte = 1024 gigabyte)! Un comune elaboratore non possiede n´ tanta memoria n´ sufficente potenza e e per analizzarla: ecco intervenire le Rainbow Tables. 3.1 L’idea di Oechslin Philippe Oechsin, un esperto in sicurezza, ha ideato un procedimento per ridurre un archivio di hash in una tabella molto pi´ piccola. u Non ´ scopo di questo breve documento illustrare in modo dettagliato le fun- e 3
  • 4. zioni matematiche alla base di questa tecnica: per tali necessit´ si rimanda al a documento originale dell’autore, di cui ´ disponibile il link nell’ultima pagina; e qui daremo solo un’idea di come funzioni il procedimento: per prima cosa codifichiamo la nostra password e otteniamo l’hash corrispondente; ora dob- biamo definire una formula di riduzione R(hash) tale che ad un hash faccia corrispondere una password: ovviamente non sar´ quella di partenza, abbia- a mo inizialmente ribadito l’impossibilit´ di invertire una funzione di hashing! a Iteriamo t volte il seguente procedimento: generiamo l’hash della nuova pas- sword e applichiamo le formula di riduzione Ri (hashi ) i = 1, 2, . . . , t dove i indica i passaggi effettuati. Definiamo quindi fi+1 = Ri (HashAlgorith(fi )) dove fi = passwordi ovvero ci´ che abbiamo appena detto: la password al passo i + 1 ´ il risultato o e della formula di riduzione i-esima applicata all’i-esimo hash. In questo modo genereremo una catena “password-hash-password-hash” di migliaia di elementi ma di questi solo il primo e l’ultimo verranno conservati su disco con un risparmio di memoria pari a t volte! Ora quando vorremo confrontare il nostro hash gli applicheremo ft e control- leremo che il risultato non sia l’ultimo elemento di una delle nostre catene (di cui come appena detto conserviamo solo l’inizio e la fine); se ci´ non fosse o vero applicheremo in sequenza ft−1 e ft e riconfronteremo il risultato con l’ultimo elemento delle catene: continuando con questo procedimento all’i- esimo passaggio dovremmo ricavare che il nostro hash fa parte di una certa catena X e quindi con discreta probabilit´ la nostra password sar´ quella che a a precede nella catena (generata dalla R(i−1) (hashi−1 )). Non ´ possibile risalire e la catena (dovremmo invertire una funzione di hashing!) ma abbiamo me- morizzato l’inizio di tale catena e possiamo perci´ riapplicargli in sequenza o gli t − i passi necessari a ritrovare la password del passo precedente. Essa ´ un’ottima candidata: ricaviamone l’hash e confrontiamo il risultato; e questo metodo porta raramente a falsi allarmi dovuti a eventuali collisioni (generati dalle formule di riduzione) lungo la catena; al contrario la versione originale di tale metodo applicava un’unica R(hashi ) ad ogni passo, con ri- levanti percentuali di errore. Tale procedimento che pu´ apparire di difficile computazione ´ in realt´ ve- o e a locissimo e, aspetto particolare delle Rainbow Tables, il tempo di cracking si riduce col quadrato della grandezza della tabella (cio´, incredibilmente, usare e una tabella da 1 gigabyte ´ 16 volte pi´ veloce di una da 256 megabyte!). e u 4
  • 5. 3.2 Servizi online Ora qualcuno domander´: a “Grazie tanto! Se avessi avuto la potenza per codificare cos´ tante password ı atte a realizzare complesse tabelle non mi sarei dato pena!” In effetti per computer casalinghi realizzare una buona tabella ´ pressoch´ e e impossibile a meno di attese di svariati anni (´ comunque possibile realizzare e proprie tabelle per password brevi e con charset limitati in qualche decina di giorni); se per´ operassi con diverse centinaia di server in parallelo potrei o ridurre tale tempo a pochi mesi. Su internet si trovano archivi gi´ pronti per a numerosi algoritmi (LM, NTLM, MD5, SHA1 e altri) realizzati proprio da chi dispone di tali strutture: i pi´ semplici sono gratuiti e solitamente non u superano il gigabyte, quelli complessi (spesso costosi) che coprono lunghe combinazioni alfanumeriche e di simboli superano il terabyte. Inoltre ´ spesso possibile usufruirne direttamente online, lasciando anche la e computazione necessaria alla ricerca a carico dei server: una semplice ricerca con Google fornir´ dozzine di tale siti, sia gratuiti che a pagamento. a 4 Difendiamoci: le salt password Un quesito ´ d’obbligo: come difendersi? Per cominciare rimane sempre e buona norma la seguente regole base nella scelta di una password: minimo otto cifre con uso di caratteri alfanumerici (maiuscoli e minuscoli) e simboli. Contro le Rainbow Tables ci´ per´ non basta, un attacker in possesso di o o tabelle sufficentemente ampie forzerebbe comunque tale password: vengono dunque in aiuto le salt password (“password salate”), una tecnica in uso sui sistemi *nix e derivati da oltre 25 anni (ora chiedetevi perch´ il buon e XP ancora non implementa tale tecnica!). L’idea delle salt password ´ tanto e semplice quanto efficace: prima di codificare la password le si aggiunge un insieme di bit casuali, tipicamente all’inizio o alla fine, ricavati ad esempio dall’username, dalla data o dal clock e solo poi si esegue la cifratura. All’hash corrispondente ´ poi ri-aggiunto, in chiaro, tale set di bit (anche e qui solitamente all’inizio o alla fine). Ecco un esempio chiarificatore (i valori dell’hash sono inventati e non corrispondono a nessun particolare algoritmo): Password: NuVoLoSo Salt prescelto: cX 5
  • 6. Password da codificare: cXNuVoLoSo Hash corrispondente: ZT~Z~NbTL¸)^E? O O c A Valore cifrato conservato in memoria: cXZT~Z~NbTL¸)^E? O O c A Il vantaggio di tale tecnica ´ chiaro: a salt differenti corrispondono hash e differenti per password uguali, rendendo di fatto inutile la tecnica delle Rainbow Tables o di altri dizionari di hash preconfezionati (senza sapere il salt a priori nessuno potr´ generarle); l’unica possibilit´ potrebbe essere nel a a calcolare tabelle per salt differenti ma ogni bit del salt duplica la grandezza dell’archivio e il tempo necessario a realizzarlo! A titolo di esempio i primi sistemi Unix utilizzavano un salt a 12 bit uni- to all’algoritmo DES (Data Encryption Standard, nonostante da anni sia considerato insicuro ´ ancora, seppure modificato, usato di default in mol- e te distribuzioni!): ci´ significa che ogni password aveva 212 = 4096 diverse o combinazioni; ´ evidente che tale tecnica espande in modo inaccettabile la e grandezza degli archivi e inoltre nei sistemi odierni spesso il numero dei bit di salt ´ ancora maggiore (generalmente 216 = 65536 combinazioni). e Tralasciando la famiglia Windows praticamente tutti i sistemi operativi uti- lizzano la tecnica salt ma ci´ non vale per molti altri applicativi e anche per o numerose sessioni PHP e MySQL (nonostante sia attivabile): in tutti questi casi un attacco tramite Rainbow Tables risulta terribilmente efficace. 5 Conclusioni Credersi ben protetti solo perch´ si dispone dell’ultimo modello di pc, con e sistema operativo aggiornato e dotazione di firewall, antivirus, antispyware, ecc... ´ una vana chimera per bambini. e La sicurezza informatica ´ un aspetto troppo spesso tralasciato, come dram- e maticamente dimostra il sistema operativo pi´ usato al mondo che ad oggi u ancora non implementa nemmeno tecniche semplici e facilmente applicabili come le salt password. Aumentando le potenzialit´ (velocit´ e densit´ di me- a a a moria) degli hard-disk e la potenza delle cpu, diminuir´ il tempo necessario ad a attaccare un qualsiasi algoritmo (sia con metodi time-memory trade-off che con attacchi brute-force); naturalmente anche gli algoritmi stessi si evolvono ma una basilare conoscenza dell’argomento aiuter´ quantomeno a riflettere a sull’intrinseca insicurezza delle password con cui abitualmente lavoriamo. 6
  • 7. 6 Fonti e link utili • Il documento in cui Oechslin illustra pi´ dettagliatamente la tecnica e u le formule alla base delle Rainbow Tables (vivamente consigliato): http://lasecwww.epfl.ch/pub/lasec/doc/Oech03.pdf • Intervista all’autore sulle possibilit´ e le capacit´ delle Rainbow Tables: a a https://www.isc2.org/cgi-bin/content.cgi?page=738 • Il programma di Oechslin, Ophcrack, e alcune tables: http://ophcrack.sf.net • Progetto e documentazione RainbowCrack: http://www.antsight.com/zsl/rainbowcrack/ • Salt password - Wikipedia: http://en.wikipedia.org/wiki/Salt_(cryptography) 7