Ce este hash-ul, checksum sau rezumat criptografic?

O funcție hash (hash function) reprezintă un algoritm matematic criptografic care generează un rezumat criptografic (checksum) unic pentru fiecare mesaj. Acest checksum se numește Message Diggest, Diggest sau Hash.

Funcțiile hash trebuie să aibă o serie de proprietăți și anume: două mesaje diferite generează două hash-uri diferite, adică fiecare mesaj generează un hash unic sau nu exista 2 mesaje diferite avand același hash; dimensiunea hash-ului este întotdeauna aceeași indiferent de mărimea datelor care generează hash-ul; aceste funcții se numesc one-way functions deoarece nu există posibilitatea practică ca din hash să se recreeze mesajul inițial; funcțiile de hash sunt extrem de sensibile la orice modificare oricât de mică (efect de avalanșă); hash-ul unui mesaj este mereu același.

A. Aplicații ale funcțiilor hash

A.1. Sistemele de parole
De cele mai multe ori parola nu este salvată pe hard-disk, ci se salvează un hash al acesteia. Astfel în momentul în care userul introduce parola, se calculează hash-ul acesteia care este comparat apoi cu hash-ul salvat în momentul setării inițiale a parolei stocat pe hard disk. Dacă cele două hash-uri sunt egale atunci parola este corectă. Dacă parola ar fi fost introdusă greșit, hash-ul ei ar fi fost diferit de cel salvat pe hard disk. Avantajul acestui mod de salvare a parolelor este că nimeni nu poate afla parolele utilizatorilor. În plus dacă un cracker compromite sistemul și are astfel acces la fișierul cu parole, acesta poate observa hash-ul parolelor dar nu și parolele. Iar din hash nu se poate obține parola.

A.2. Garantarea integrității unui fișier
Toți producătorii de software includ pe langă fișierul binar care reprezintă programul și hash-ul acestuia. Astfel după ce se descarcă fișierul, se calculează hash-ul acestuia apoi se compară cu cel afișat pe site-ul producătorului. Dacă hașhurile nu sunt identice atunci fișierul a fost modificat (poate fi un virus sau a fost copiat cu erori). Un singur bit modificat în informația a cărui hash îl calculăm generează un Diggest complet diferit.

A.3. Semnarea digitală a unui mesaj
Hash-ul mesajului se criptează cu cheia privată, iar rezultatul se numeste semnatură digitală.

B. Algoritmi de hashing

B.1. MD5 – Message Diggest Version 5
– generează un hash pe 128 biti exprimat în 32 cifre hexazecimale;
– a fost creat de prof. Ronald Rivest de la MIT in 1991;
– a fost standardizat în RFC1321;
– este unul dintre cei mai folosiți algoritmi de hashing;
– începând cu anul 2004 au început să fie descoperite diferite vulnerabilități în algoritm multe ne-fatale.

B.2. SHA1 – Secure Hash Algorithm Version 1
– generează un hash output pe 160 biți exprimat în 40 cifre hexazecimale;
– a fost creat și publicat de guvernul USA (NSA) în 1993;
– operează pe mesaje de maximum 2^64-1 biți;
– este unul dintre cei mai folosiți algoritmi de hashing;
– începând cu anul 2004 au început să fie descoperite diferite vulnerabilitati în algoritm multe ne-fatale.

B.3. SHA2 – Secure Hash Algorithm Version 2
– 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 biți ai outputului;

B.4. SHA3 – Secure Hash Algorithm Version 3
– reprezintă un nou protocol care este înca în dezvoltare.

B.5. Whirlpool
– a fost creat in 1995;
– produce un hash de 512 biți;
– este o funcție nouă de hashing care poate opera cu mesaje de maxim de 2^256 biți;

B.6. Tiger
– optimizat pentru procesoarele pe 64 biti;
– outputul poate fi de 128 sau 160 biți pentru compatibilitate cu algoritmii mai vechi sau 192 biti;

C. Tipuri de atacuri asupra funcțiilor hash

C.1. Collision attack
Presupune găsirea a două mesaje oarecare cu același hash în mai putin de 2^(L/2) iterații. Acest tip de vulnerabilitate nu reprezintă o problemă de securitate.

C.2. First pre-image attack
Presupune găsirea unui mesaj care determină un hash dat în mai putin de 2^L iterații. Acest tip de vulnerabilitate reprezintă o gravă problemă de securitate.

C.3. Second pre-image attack
Presupune găsirea unui mesaj M2, avându-se un mesaj M1 care să determine același hash în mai puțin de 2^L iterații. Acest tip de vulnerabilitate reprezintă o gravă problemă de securitate (L = lungimea în biți a hash-ului rezultat).

D. MAC – Message Authentication Code

MAC se foloseste pentru garantarea identității sursei și integrității mesajului. Ideea de bază din spatele unui MAC este simplă. În loc de a calcula doar hash-ul unui mesaj, sursa adaugă la mesaj o cheie secretă știută doar de către destinație și calculează hash mesaj + cheie. Către destinație se trimite mesajul în clar și MAC-ul său. Astfel destinația calculează hash-ul mesajului primit + cheia secretă. Dacă MAC-ul primit de la sursă este identic cu cel calculat local de către destinație există garanția integrității mesajului și identității sursei (non-repudiation).

Sursa: www.invata-online.ro

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *