MD5 vs SHA-1 vs SHA-2 - Koji je najsigurniji hash šifriranja i kako ih provjeriti

Što je hash funkcija?

Hash funkcija uzima ulaznu vrijednost (na primjer, niz) i vraća vrijednost fiksne duljine. Idealan hash funkcija ima sljedeća svojstva:

  • vrlo je brzo
  • može vratiti ogroman raspon hash vrijednosti
  • generira jedinstveni hash za svaki jedinstveni ulaz (bez sudara)
  • generira različite hash vrijednosti za slične ulazne vrijednosti
  • generirane hash vrijednosti nemaju uočljiv obrazac u svojoj distribuciji

Ne postoji idealna hash funkcija, naravno, ali svaka ima za cilj djelovanje što je bliže idealu moguće. S obzirom na to da (većina) hash funkcija vraća vrijednosti fiksne duljine i raspon vrijednosti je stoga ograničen, to se ograničenje može praktički zanemariti. Na primjer, broj mogućih vrijednosti koje može vratiti 256-bitna hash funkcija približno je jednak broju atoma u svemiru.

U idealnom slučaju, hash funkcija praktički ne vraća kolizije - to jest, niti dva različita ulaza ne generiraju istu hash vrijednost. To je posebno važno za kriptografske hash funkcije: hash sudari se smatraju ranjivošću.

Napokon, hash funkcija treba generirati nepredvidivo različite hash vrijednosti za bilo koju ulaznu vrijednost. Na primjer, uzmimo sljedeće dvije vrlo slične rečenice:

1. "The quick brown fox." 2. "The quick brown fax." 

Možemo usporediti MD5 hash vrijednosti generirane iz svake od dvije rečenice:

1. 2e87284d245c2aae1c74fa4c50a74c77 2. c17b6e9b160cda0cf583e89ec7b7fc22 

Za dvije slične rečenice generirana su dva vrlo različita hasha, što je svojstvo korisno i za provjeru valjanosti i za kriptografiju. Ovo je posljedica raspodjele: raspršene vrijednosti svih ulaza trebaju se ravnomjerno i nepredvidivo rasporediti na cijeli raspon mogućih raspršenih vrijednosti.

Uobičajene hash funkcije

Postoji nekoliko hash funkcija koje se široko koriste. Sve su dizajnirali matematičari i informatičari. Tijekom daljnjih istraživanja pokazalo se da neke imaju slabosti, iako se sve smatraju dovoljno dobrima za nekriptografske primjene.

MD5

MD5 hash funkcija daje 128-bitnu hash vrijednost. Dizajniran je za upotrebu u kriptografiji, ali s vremenom su otkrivene ranjivosti, pa se više ne preporučuje u tu svrhu. Međutim, i dalje se koristi za particioniranje baze podataka i računanje kontrolnih suma za provjeru prijenosa datoteka.

SHA-1

SHA je skraćenica od Sigurni hash algoritam. Prva verzija algoritma bila je SHA-1, a kasnije je slijedio SHA-2 (vidi dolje).

Dok MD5 proizvodi 128-bitni heš, SHA1 generira 160-bitni heš (20 bajtova). U heksadecimalnom formatu to je cijeli broj od 40 znamenki. Poput MD5, dizajniran je za kriptološke aplikacije, ali ubrzo je utvrđeno da ima i ranjivosti. Od danas se više ne smatra manje otpornim na napad od MD5.

SHA-2

Druga verzija SHA, nazvana SHA-2, ima mnogo varijanti. Vjerojatno se najčešće koristi SHA-256, koji Nacionalni institut za standarde i tehnologiju (NIST) preporučuje upotrebu umjesto MD5 ili SHA-1.

Algoritam SHA-256 vraća hash vrijednost od 256 bita ili 64 heksadecimalne znamenke. Iako nije sasvim savršeno, trenutna istraživanja pokazuju da je znatno sigurnija od MD5 ili SHA-1.

Što se performansi tiče, SHA-256 raspršivanje otprilike je 20-30% sporije za izračunavanje od raspršivanja MD5 ili SHA-1.

SHA-3

Ova metoda raspršivanja razvijena je krajem 2015. godine i još uvijek nije imala široku primjenu. Njegov algoritam nije povezan s algoritmom koji je koristio njegov prethodnik, SHA-2.

Algoritam SHA3-256 varijanta je s jednakom primjenjivošću kao ona ranijeg SHA-256, pri čemu je prvom potrebno malo više vremena za izračunavanje nego kasnijem.

Korištenje Hash vrijednosti za provjeru valjanosti

Tipična uporaba hash funkcija je provođenje provjera valjanosti. Jedna od čestih upotreba je provjera valjanosti komprimiranih zbirki datoteka, kao što su .zip ili .tar arhivske datoteke.

S obzirom na arhivu i njezinu očekivanu hash vrijednost (obično se naziva kontrolna suma), možete izvršiti vlastiti izračun hasha kako biste potvrdili da je arhiva koju ste dobili cjelovita i neiskvarena.

Na primjer, mogu generirati MD5 kontrolnu sumu za tar datoteku u Unixu pomoću sljedećih cijevnih naredbi:

tar cf - files | tee tarfile.tar | md5sum - 

Da biste dobili MD5 heš za datoteku u sustavu Windows, upotrijebite naredbu Get-FileHash PowerShell:

Get-FileHash tarfile.tar -Algorithm MD5 

Generirani kontrolni zbroj može se objaviti na web mjestu za preuzimanje, pokraj veze za preuzimanje arhive. Nakon što su preuzeli arhivu, prijamnik može provjeriti je li ispravno naišao izvođenjem sljedeće naredbe:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -c 

gdje je 2e87284d245c2aae1c74fa4c50a74c77 generirana kontrolna suma koja je knjižena. Uspješno izvršavanje gornje naredbe generirat će status OK poput ovog:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -ctarfile.tar: OK