MD5 vs SHA-256: razlike i preporuke
MD5 i SHA-256 dvije su kriptografske hash funkcije. oni proizvesti otisak prsta fiksne veličine iz ulaza proizvoljne veličine. Upoznajemo ih posvuda: provjera integriteta datoteke, potpisi, jedinstveni identifikatori, TLS certifikati, blockchain. Međutim, njihov je sigurnosni status vrlo različit: MD5 je pokvaren od 2004. za kriptografsku upotrebu, SHA-256 ostaje siguran u 2026. Ovaj članak daje pregled.
Podsjetnik na hash funkcije
Kriptografska hash funkcija pretvara poruku bilo koje duljine u otisak prsta fiksne veličine. Tri očekivana svojstva:
- Otpornost predslike: s obzirom na hash, mora biti neizvedivo pronaći izvornu poruku.
- Drugi otpor predslike: s obzirom na poruku, mora biti neizvedivo pronaći drugu koja proizvodi isti hash.
- Otpornost na sudare: mora biti neizvodljivo pronaći dvije različite poruke koje proizvode isti hash.
Za funkciju se kaže da je pokvarena čim jedno od ovih svojstava padne. Za MD5, otpornost na sudari su pali 2004.
MD5: 128 bita, pokvaren od 2004
MD5 (Message Digest 5) značajka je koju je dizajnirao Ronald Rivest 1991. standardiziran prema RFC 1321. Ona proizvodi 128-bitni otisak prsta (16 bajtova, 32 heksadecimalna znaka).
Godine 2004. Wang i Yu objavili su napad koji je proizveo sudare MD5 u roku od nekoliko sati na računalu. Od tada je cijena generiranja sudara pala na nekoliko sekundi. Godine 2008. istraživači proizveli su lažni MD5 potpisani SSL certifikat kojeg svi preglednici prepoznaju kao valjanog. Godine 2012., Zlonamjerni softver Flame koristio je MD5 koliziju kako bi potpisao svoju izvršnu datoteku kao Microsoftovu binarnu datoteku legitiman.
Zaključak: MD5 se više ne bi trebao koristiti čim napadač može utjecati na unos. Sve kriptografske upotrebe (potpisi, integritet protiv protivnika, izvođenje ključa) su isključeni. Samo nekoliko upotreba bez neprijateljstva ostaje prihvatljivo, kao što je kontrolni zbroj mrežnog prijenosa ili ključ predmemorije: MD5 ostaje brz, a nenamjerna kolizija ostaje statistički nemoguće.
SHA-256: 256 bita, sigurno 2026
SHA-256 pripada obitelji SHA-2 koju je objavio NIST 2001. i standardizirao autor FIPS 180-4. Ona proizvodi 256-bitni otisak prsta (32 bajta, 64 heksadecimalna znaka).
Nisu poznati nikakvi praktični napadi protiv SHA-256. Najbolji teorijski napad na sudare tiče se 31 runde od 64, bez praktičnih implikacija. Cijena grube sile pronalaženja sudara je reda veličine 2^128 operacija, izvan dosega bilo koje poznate infrastrukture.
SHA-256 se koristi u: TLS (X.509 certifikati), Git (od prijelaza na SHA-256), Bitcoin (dokaz posao), potpise Linux paketa, Windows Update itd. Danas je hash Preporučeno zadano za većinu općih kriptografskih upotreba.
Praktične razlike
Duljina izlaza
MD5("zdravo") = 5d41402abc4b2a76b9719d911017c592 (32 heksadecimalna znaka)
SHA-256("zdravo") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (64 heksadecimalna znaka)
Brzina
MD5 je otprilike 2-3 puta brži od SHA-256 na istom stroju. Na modernom CPU-u, MD5 obrađuje nekoliko GB/s po jezgri, SHA-256 je reda veličine GB/s. Na novijim procesorima s proširenjima SHA-NI, jaz se naglo sužava.
Sigurnost
Ovo je jedina razlika koja je stvarno bitna: MD5 je pokvaren zbog sudara, SHA-256 nije. Ako je sigurnost od protivnika u pitanju, izbor je jasan.
Usporedna tablica
| Kriterij | MD5 | SHA-256 |
|---|---|---|
| Godina | 1991. | 2001. |
| Izlazna veličina | 128 bita / 32 hex | 256 bita / 64 hex |
| Otpornost na sudar | Polomljen od 2004. | Nema praktičnog napada |
| Relativna brzina | 2 do 3 puta veća | Referenca |
| Hardversko ubrzanje | Nijedan namjenski | SHA-NI na novijim procesorima |
| Kriptografska upotreba | Ne preporučuje se | Preporučuje se |
| Upotreba integriteta koja nije neprijateljska | Prihvatljivo | Preporučeno |
| Usklađenost s propisima | Odbijeno (PCI-DSS, FIPS) | Prihvaćeno |
Slučajevi upotrebe
Kada MD5 ostaje prihvatljiv
- Ključ predmemorije aplikacije (Redis, memcached) bez sigurnosnih implikacija
- Otkrivanje duplikata u skupu podataka koji nije neprijateljski
- Kontrolni zbroj mrežnog prijenosa za otkrivanje slučajnog oštećenja
- Otisak lanca za distribuciju (sharding) bez kontradiktornog ograničenja
Kada je potreban SHA-256
- Provjera integriteta protiv napadača (potpisana preuzimanja, paketi)
- Digitalni potpisi, X.509 certifikati
- Git identifikatori obveza i objekata
- Izvođenje ključa (u kombinaciji s HKDF)
- Svaka aplikacija koja podliježe regulatornim zahtjevima (PCI-DSS, ANSSI, FIPS)
Konkretni primjeri
U PHP-u su obje funkcije dostupne preko funkcije hash():
// Otisak niza
$md5 = hash('md5', 'zdravo svijetu');
$sha256 = hash('sha256', 'zdravo svijetu');
// Otisak prsta datoteke (streaming)
$md5File = hash_file('md5', '/path/to/file.iso');
$sha256File = hash_file('sha256', '/path/to/file.iso');
Ove ispise možete generirati izravno na mreži s našim generator raspršivanja teksta, hash datoteka sa generator hash datoteke, ili identificirajte nepoznati hash tip pomoću hash identifikatora.
Preporuka
Pravilo 2026 je jednostavno: SHA-256 prema zadanim postavkama. MD5 se više ne bi trebao pojavljivati u vaš kod čim napadač može utjecati na unos, što pokriva gotovo sve slučajeve poslužitelj. Vrhunska izvedba MD5 više ne opravdava njegovu upotrebu, razlika je postala zanemariva sa SHA-NI akceleracijama prisutnim na modernim x86 i ARM procesorima.
Često postavljana pitanja
Je li MD5 još uvijek siguran za lozinke?
Ne, nikad. I ova je točka neovisna o kolizijama: MD5 je prebrz. GPU razbija nekoliko milijardi MD5 hashova u sekundi, čineći bilo kakav napad rječnik ili trivijalna gruba sila. Za lozinke koristite bcrypt, Argon2 ili scrypt (pogledajte našu usporedbu Bcrypt i Argon2).
Koja je razlika između SHA-256 i SHA-2?
SHA-2 je obitelj, SHA-256 je član. Obitelj uključuje SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 i SHA-512/256. Razlikuju se po veličini izlaza i veličini datoteke. unutarnji blokovi. SHA-256 je najčešće korištena varijanta.
Trebamo li prijeći na SHA-3?
Nije nužno. SHA-3 (izdan 2015.) oslanja se na radikalno drugačiji konstrukt (Keccak/spužva), ali SHA-256 ostaje siguran. SHA-3 uglavnom služi kao plan B u slučaju problema neočekivano na SHA-2. Odaberite SHA-3 ako to zahtijeva standard ili ako želite raznolikost kriptografski. Inače, SHA-256 ostaje standardni izbor.
Možemo li obrnuti MD5 ili SHA-256 hash?
Ne, po konstrukciji: hash gubi informacije. MD5 stranice za "dešifriranje" to ne čine nego postavljanje upita ogromnim bazama unaprijed izračunatih hash vrijednosti (dugine tablice) za unose zajednički. Za duge nasumične podatke, pronalaženje unosa je nemoguće s oba algoritmi.
Hoće li SHA-256 razbiti kvantno računalo?
Groverov algoritam prepolovljuje učinkovitu sigurnost hasheva od napadača kvantno: SHA-256 bi tada nudio oko 128 bita sigurnosti, što ostaje uglavnom dostatan. Nema hitnosti na strani raspršivanja, za razliku od asimetrične kriptografije.