MD5 proti SHA-256: razlike in priporočila
MD5 in SHA-256 sta dve kriptografski zgoščevalni funkciji. Oni ustvari prstni odtis fiksne velikosti iz vnosa poljubne velikosti. Srečamo jih povsod: preverjanje celovitosti datoteke, podpisi, edinstveni identifikatorji, potrdila TLS, blockchain. Njihov varnostni status pa je zelo drugačen: MD5 je pokvarjen od leta 2004 za kriptografske namene SHA-256 ostaja varen tudi v letu 2026. Ta članek predstavlja pregled.
Opomnik o zgoščevalnih funkcijah
Kriptografska zgoščevalna funkcija pretvori sporočilo poljubne dolžine v prstni odtis fiksne velikosti. Tri pričakovane lastnosti:
- Odpornost na predsliko: glede na zgoščeno vrednost mora biti nemogoče najti izvirno sporočilo.
- Odpornost na drugo predsliko: glede na sporočilo mora biti nemogoče najti drugo, ki proizvede enako zgoščeno vrednost.
- Odpornost proti trčenju: mora biti nemogoče najti dve različni sporočili, ki ustvarita enako zgoščeno vrednost.
Za funkcijo pravimo, da je pokvarjena takoj, ko ena od teh lastnosti pade. Za MD5, odpornost na leta 2004 padla trčenja.
MD5: 128 bitov, pokvarjen od leta 2004
MD5 (Message Digest 5) je funkcija, ki jo je zasnoval Ronald Rivest leta 1991 in standardizirano z RFC 1321. Ona proizvaja 128-bitni prstni odtis (16 bajtov, 32 šestnajstiških znakov).
Leta 2004 sta Wang in Yu objavila napad, ki je povzročil trke MD5 v nekaj urah na osebnem računalniku. Od takrat so stroški ustvarjanja trka padli na nekaj sekund. Leta 2008 so raziskovalci so izdelali lažno potrdilo SSL s podpisom MD5, ki ga vsi brskalniki priznavajo kot veljavnega. Leta 2012 je Zlonamerna programska oprema Flame je uporabila kolizijo MD5, da je svojo izvršljivo datoteko podpisala kot Microsoftovo binarno datoteko legitimno.
Zaključek: MD5 se ne sme več uporabljati, takoj ko lahko napadalec vpliva na vnos. Vse kriptografske uporabe (podpisi, celovitost pred nasprotnikom, izpeljava ključev) so izključena. Le nekaj uporab brez sovražnosti ostane sprejemljivih, kot je kontrolna vsota prenosa omrežja ali ključ predpomnilnika: MD5 ostaja hiter, nenamerno trčenje pa statistično nemogoče.
SHA-256: 256 bitov, varno leta 2026
SHA-256 spada v družino SHA-2, ki jo je objavil NIST leta 2001 in standardiziral avtor FIPS 180-4. Ona proizvaja 256-bitni prstni odtis (32 bajtov, 64 šestnajstiških znakov).
Praktični napadi na SHA-256 niso znani. Najboljši teoretični napad na trke zadeva 31 krogov od 64, brez praktičnih posledic. Cena grobe sile za iskanje trka obsega 2^128 operacij, zunaj dosega katere koli znane infrastrukture.
SHA-256 se uporablja v: TLS (certifikati X.509), Git (od prehoda na SHA-256), Bitcoin (dokaz delo), podpisi paketov Linux, Windows Update itd. Danes je zgoščena vrednost Privzeto priporočeno za večino splošnih kriptografskih uporab.
Praktične razlike
Izhodna dolžina
MD5("zdravo") = 5d41402abc4b2a76b9719d911017c592 (32 šestnajstiških znakov)
SHA-256("zdravo") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (64 šestnajstiških znakov)
Hitrost
MD5 je približno 2-3 krat hitrejši od SHA-256 na istem stroju. Na sodobnem procesorju MD5 procesira več GB/s na jedro, SHA-256 je v vrstnem redu GB/s. Na novejših procesorjih z razširitvijo SHA-NI, vrzel se močno zoži.
Varnost
To je edina razlika, ki je resnično pomembna: MD5 je pokvarjen zaradi trkov, SHA-256 ni. Če je ogrožena varnost pred nasprotnikom, je izbira jasna.
Primerjalna tabela
| Merilo | MD5 | SHA-256 |
|---|---|---|
| Leto | 1991 | 2001 |
| Izhodna velikost | 128 bitov / 32 hex | 256 bitov / 64 hex |
| Odpornost proti trčenju | Pokvarjen od leta 2004 | Ni praktičnega napada |
| Relativna hitrost | 2- do 3-krat hitrejša | Referenca |
| Strojno pospeševanje | Ni namenskega | SHA-NI na nedavnih procesorjih |
| Kriptografska uporaba | Ni priporočljivo | Priporočeno |
| Nesovražna uporaba integritete | Sprejemljivo | Priporočeno |
| Skladnost s predpisi | Zavrnjeno (PCI-DSS, FIPS) | Sprejeto |
Primeri uporabe
Ko MD5 ostane sprejemljiv
- Ključ predpomnilnika aplikacije (Redis, memcached) brez varnostnih posledic
- Zaznavanje dvojnikov v nesovražnem nizu podatkov
- Kontrolna vsota omrežnega prenosa za odkrivanje nenamerne poškodbe
- Odtis verige za distribucijo (sharding) brez kontradiktorne omejitve
Ko je potreben SHA-256
- Preverjanje integritete pred napadalcem (podpisani prenosi, paketi)
- Digitalni podpisi, potrdila X.509
- Identifikatorji Git za objave in objekte
- Izpeljava ključa (v kombinaciji s HKDF)
- Katera koli aplikacija, za katero veljajo regulativne zahteve (PCI-DSS, ANSSI, FIPS)
Konkretni primeri
V PHP sta obe funkciji na voljo prek funkcije hash():
// Odtis niza
$md5 = hash('md5', 'zdravo svet');
$sha256 = hash('sha256', 'zdravo svet');
// Prstni odtis datoteke (pretakanje)
$md5File = hash_file('md5', '/path/to/file.iso');
$sha256File = hash_file('sha256', '/path/to/file.iso');
Te natise lahko ustvarite neposredno na spletu z našimi generator zgoščenih besedil, zgostiti datoteko z generator zgoščenih datotek, ali identificirajte neznano vrsto zgoščene vrednosti z identifikatorjem zgoščene vrednosti.
Priporočilo
Pravilo 2026 je preprosto: SHA-256 privzeto. MD5 se ne bi smel več pojavljati v vašo kodo takoj, ko lahko napadalec vpliva na vnos, kar zajema skoraj vse primere strežnik. Vrhunska zmogljivost MD5 ne upravičuje več njegove uporabe, razlika je postala zanemarljiva s pospeški SHA-NI, ki so prisotni na sodobnih procesorjih x86 in ARM.
Pogosta vprašanja
Ali je MD5 še vedno varen za gesla?
Ne, nikoli. In ta točka je neodvisna od kolizij: MD5 je prehiter. GPE zlomi več milijard zgoščenih vrednosti MD5 na sekundo, kar povzroči kakršen koli napad slovar ali trivialna surova sila. Za gesla uporabite bcrypt, Argon2 ali scrypt (glejte našo primerjavo Bcrypt proti Argon2).
Kakšna je razlika med SHA-256 in SHA-2?
SHA-2 je družina, SHA-256 je član. Družina vključuje SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 in SHA-512/256. Razlikujejo se po izhodni velikosti in velikosti datoteke. notranji bloki. SHA-256 je najbolj uporabljena različica.
Ali naj preidemo na SHA-3?
Ni nujno. SHA-3 (izdan leta 2015) temelji na radikalno drugačni konstrukciji (Keccak/goba), vendar SHA-256 ostaja varen. SHA-3 služi predvsem kot plan B v primeru težav nepričakovano na SHA-2. Izberite SHA-3, če to zahteva standard ali če želite raznolikost kriptografski. V nasprotnem primeru SHA-256 ostaja standardna izbira.
Ali lahko obrnemo zgoščeno vrednost MD5 ali SHA-256?
Ne, po konstrukciji: zgoščena vrednost izgubi informacije. Spletna mesta za »dešifriranje« MD5 ne kot poizvedovanje po ogromnih bazah vnaprej izračunanih zgoščenih vrednosti (mavričnih tabel) za vnose pogosta. Pri dolgih naključnih podatkih je iskanje vnosa nemogoče z obema algoritmi.
Ali bo SHA-256 zlomil kvantni računalnik?
Groverjev algoritem prepolovi učinkovito varnost zgoščenih vrednosti pred napadalcem kvantno: SHA-256 bi nato ponudil približno 128 bitov varnosti, kar ostaja v veliki meri dovolj. Ni nujnosti na strani zgoščevanja, za razliko od asimetrične kriptografije.