Advanced Linux & INFOSEC

DOCUMENTATIE CURS

Hashing

Definitie: o functie hash ( hash function ) reprezinta un algoritm matematic criptografic care genereaza un checksum (rezumat criptografic) unic pentru fiecare mesaj. Acest checksum se numeste Message Diggest, Diggest sau Hash.

Exemplu
In acest exemplu calculam hash-ul fisierului httpd-2.2.11.tar.bz2 folosind cunoscutul algoritm MD5. Stringul 3e98bcb14a7122c274d62419566431bb reprezinta hash-ul sau.


Proprietati ale functiilor hash:

1. Doua mesaje diferite genereaza doua hash-uri diferite, adica fiecare mesaj genereaza un hash unic sau nu exista 2 mesaje diferite avand acelasi hash.

2. Dimensiunea hash-ului este intotdeauna aceeasi indiferent de marimea datelor care genereaza hash-ul.

Exemplu
In acest exemplu se observa ca cele 2 fisiere au hash-uri diferite, dar de aceiasi lungime.


3. Aceste functii se numesc one-way functions deoarece nu exista posibilitatea practica ca din hash sa se recreeze mesajul initial.

4. Functiile de hash sunt extrem de sensibile la orice modificare oricat de mica (efect de avalansa).

Exemplu
In acest exemplu se observa ca o singura litera diferenta in mesajul al carui hash se calculeaza genereaza un cu totul alt Diggest.


5. Hash-ul unui mesaj este mereu acelasi.

Exemplu
In acest exemplu se observa calcularea in mod repetat de 3 ori a hash-ului pentru fisierul httpd-2.2.11.tar.bz2. De fiecare data se obtine acelasi hash.


Aplicatii ale functiilor hash:

1. Sistemele de parole.
De cele mai multe ori parola nu este salvata pe hard-disk in clar ci se salveaza un hash al acesteia. Astfel in momentul in care userul introduce parola, se calculeaza hash-ul acesteia care este comparat apoi cu hash-ul salvat in momentul setarii initiale a parolei din fisierul de pe hard disk. Daca cele doua hash-uri sunt egale atunci parola este corecta. Daca parola ar fi fost introdusa gresit, hash-ul ei ar fi fost diferit de cel salvat pe hard disk fiindca fiecare mesaj are propriul hash, nu exista 2 mesaje (2 parole cu acelasi hash). Avantajul acestui mod de salvare a parolelor este ca nimeni (nici root pe Linux sau Administrator pe Windows) nu poate afla parolele utilizatorilor. In plus daca un cracker compromite sistemul si are astfel acces la fisierul cu parole, acesta poate observa hash-ul parolelor si nu parolele. Iar din hash nu se poate obtine parola... (proprietatea 3).

2. Garantarea integritatii unui fisier, program executabil etc.
Toti producatorii de software includ pe langa fisierul binar care reprezinta programul si hash-ul acestuia. Astfel dupa ce se downloadeaza fisierul, se calculeaza hash-ul acestuia apoi se compara cu cel afisat pe site-ul producatorului. Daca hashurile nu sunt identice atunci fisierul a fost modificat (poate fi un virus, cal troian sau pur si simplu a fost copiat cu erori). Un singur bit modificat in informatia a carui hash calculam genereaza un Diggest complet diferit (proprietatea 4 si 5).

3. Semnarea digitala a unui mesaj.
Hash-ul mesajului se cripteaza cu cheia privata, iar rezultatul se numeste semnatura digitala. Mai multe detalii in sectiunea dedicata semnaturii digitale.

Algoritmi de hashing

1. MD5 - Message Diggest Version 5
- genereaza un hash pe 128 biti exprimat in 32 cifre hexazecimale;
- a fost creat de prof. Ronald Rivest de la MIT in 1991;
- a fost standardizat in RFC1321;
- este unul dintre cei mai folositi algoritmi de hashing in prezent (2009);
- incepand cu anul 2004 au inceput sa fie descoperite diferite vulnerabilitati in algoritm multe ne-fatale. Se considera ca va fi inlocuit in curand de alt algoritm mai sigur;

2. SHA1 - Secure Hash Algorithm Version 1
genereaza un hash output pe 160 biti exprimat in 40 cifre hexazecimale;
- a fost creat si publicat de guvernul USA (NSA) in 1993;
- opereaza pe mesaje de maximum 2^64-1 biti;
- este unul dintre cei mai folositi algoritmi de hashing in prezent (2009);
- incepand cu anul 2004 au inceput sa fie descoperite diferite vulnerabilitati in algoritm multe ne-fatale. Se considera ca va fi inlocuit in curand de alt algoritm mai sigur;
- SHA2 este o noua familie de algoritmi de Hash publicati in 2001 care contine SHA-224, SHA-256, SHA-384 si SHA-512 dupa nr. de biti ai outputului;
- SHA3 reprezinta un nou protocol care este inca in dezvoltare si va fi supus unei competitii publice pana in 2012;


3. Whirlpool
- a fost creat in 1995;
produce un hash de 512 biti;
- este o functie noua de hashing care poate opera cu mesaje de maxim de 2^256 biti;

4. Tiger
optimizat pentru procesoarele pe 64 biti;
- outputul poate fi de 128 sau 160 pentru compatibilitate cu algoritmii mai vechi sau 192 biti;

Tipuri de atacuri asupra functiilor de hash

1. Collision attack
Presupune gasirea a doua mesaje oarecare cu acelasi hash in mai putin de 2^(L/2) iteratii. Acest tip de vulnerabilitate nu reprezinta o problema de securitate.

2. First pre-image attack
Presupune gasirea unui mesaj care determina un hash dat in mai putin de 2^L iteratii. Acest tip de vulnerabilitate reprezinta o grava problema de securitate.

3. Second pre-image attack
Presupune gasirea unui mesaj M2, avandu-se un mesaj M1 care sa determine acelasi hash in mai putin de 2^L iteratii. Acest tip de vulnerabilitate reprezinta o grava problema de securitate.
L = lungimea hash-ului rezultat

MAC - Message Authentication Code

MAC se foloseste pentru garantarea identitatii sursei si integritatii mesajului.
Ideea de baza din spatele unui MAC este simpla. In loc de a calcula doar hash-ul unui mesaj, sursa adauga la mesaj o cheie secreta stiuta doar de catre destinatie si calculeaza hash mesaj+cheie. Catre destinatie se trimite mesajul in clar si MAC-ul sau. Astfel destinatia calculeaza hash-ul mesajului primit + cheia secreta. Daca MAC-ul primit de la sursa este identic cu cel calculat local de catre destinatie exista garantia integritatii mesajului si identitatii sursei (non-repudiation).

Resurse
© 2006-2012 Crystal Mind Academy. All rights reserved