MD5 vs SHA-256: erinevused ja soovitused

MD5 ja SHA-256 on kaks krüptograafilist räsifunktsiooni. Nad luua suvalise suurusega sisendist fikseeritud suurusega sõrmejälge. Me kohtume nendega kõikjal: faili terviklikkuse kontrollimine, allkirjad, kordumatud identifikaatorid, TLS-sertifikaadid, plokiahel. Nende turbestaatus on aga väga erinev: MD5 on katki Alates 2004. aastast on SHA-256 krüptograafiliseks kasutuseks kaitstud ka 2026. aastal. Selles artiklis tehakse kokkuvõte.

Meeldetuletus räsifunktsioonide kohta

Krüptograafiline räsifunktsioon muudab mis tahes pikkusega sõnumi sõrmejäljeks fikseeritud suurusega. Kolm eeldatavat omadust:

  • Eelkujutise takistus: räsi olemasolu korral peab algse sõnumi leidmine olema võimatu.
  • Teise eelkujutise takistus: sõnumit arvestades peab olema võimatu leida teist, mis toodab sama räsi.
  • Põrkekindlus: peab olema võimatu leida kahte erinevat sõnumit, mis toodavad sama räsi.

Funktsioon on katki kohe, kui üks neist omadustest langeb. MD5 puhul vastupidavus kokkupõrked langesid 2004. aastal.

MD5: 128 bitti, katki alates 2004. aastast

MD5 (Message Digest 5) on funktsioon, mille kujundas Ronald Rivest 1991. aastal ja standarditud RFC 1321 järgi. Ta toodab 128-bitine sõrmejälg (16 baiti, 32 kuueteistkümnendmärki).

2004. aastal avaldasid Wang ja Yu rünnaku, mis põhjustas mõne tunni jooksul arvutis MD5 kokkupõrkeid. Sellest ajast alates on kokkupõrke tekitamise hind langenud mõne sekundini. 2008. aastal tegid teadlased on valmistanud võltsitud MD5-ga allkirjastatud SSL-sertifikaadi, mida kõik brauserid tunnistavad kehtivaks. Aastal 2012, Flame'i pahavara kasutas MD5 kokkupõrget, et allkirjastada oma käivitatav fail Microsofti kahendfailina legitiimne.

Järeldus: MD5 ei tohiks enam kasutada niipea, kui ründaja saab sisendit mõjutada. Kõik krüptograafilised kasutusviisid (allkirjad, vastase vastase terviklikkus, võtme tuletamine) on välistatud. Ainult vähesed vaenulikkuseta kasutusviisid on vastuvõetavad, näiteks võrguülekande kontrollsumma või vahemälu võti: MD5 jääb kiireks ja tahtmatu kokkupõrge püsib statistiliselt võimatu.

SHA-256: 256 bitti, turvaline 2026. aastal

SHA-256 kuulub SHA-2 perekonda, mille NIST avaldas 2001. aastal ja standardiseeritud FIPS 180-4. Ta toodab 256-bitine sõrmejälg (32 baiti, 64 kuueteistkümnendmärki).

Praktilisi rünnakuid SHA-256 vastu pole teada. Parim teoreetiline rünnak kokkupõrgete vastu puudutab 31 vooru 64-st, ilma praktilise tähenduseta. Kokkupõrke leidmise jõhkra jõu maksumus on suurusjärgus 2^128 toimingut, mis on väljaspool ühegi teadaoleva infrastruktuuri haardeulatust.

SHA-256 kasutatakse: TLS (X.509 sertifikaadid), Git (alates SHA-256 üleminekust), Bitcoin (tõend töö), Linuxi paketi allkirjad, Windows Update jne. Täna on räsi Vaikimisi soovitatav enamiku üldiste krüptograafiliste kasutuste jaoks.

Praktilised erinevused

Väljundi pikkus

MD5 ("tere") = 5d41402abc4b2a76b9719d911017c592 (32 kuueteistkümnendmärki)
SHA-256 ("tere") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (64 kuueteistkümnendmärki)

Kiirus

MD5 on umbes 2-3 korda kiirem kui SHA-256 samas masinas. Kaasaegsel protsessoril MD5 töötleb mitu GB/s tuuma kohta, SHA-256 on suurusjärgus GB/s. Viimastel laiendusega protsessoritel SHA-NI, vahe väheneb järsult.

Turvalisus

See on ainus erinevus, mis on tõesti oluline: MD5 on kokkupõrgete jaoks katki, SHA-256 ei ole. Kui kaalul on ohutus vastase vastu, on valik selge.

Võrdlustabel

Kriteerium MD5 SHA-256
Aasta19912001
Väljundi suurus128 bitti / 32 hex256 bitti / 64 hex
PõrkekindlusKatkine alates 2004. aastastPraktiline rünnak puudub
Suhteline kiirus2–3 korda kiiremViide
Riistvaraline kiirendusViimastel protsessoritel puudub spetsiaalneSHA-NI
Krüptograafiline kasutusPole soovitatavSoovitatav
Mittevaenulik terviklikkuse kasutamineVastuvõetavSoovitatav
Regulatiivnõuete järgimineKeeldus (PCI-DSS, FIPS)Kinnitatud

Kasutusjuhtumid

Kui MD5 jääb vastuvõetavaks

  • Rakenduse vahemälu võti (Redis, vahemällu salvestatud) ilma turvalisuseta
  • Duplikaattuvastus mittevaenulikus andmestikus
  • Võrguülekande kontrollsumma juhusliku riknemise tuvastamiseks
  • Ahela jalajälg levitamiseks (jagamiseks) ilma võistleva piiranguta

Kui SHA-256 on nõutav

  • Terviklikkuse kontroll ründaja suhtes (allkirjastatud allalaadimised, paketid)
  • Digiallkirjad, X.509 sertifikaadid
  • Komitatsioonide ja objektide Git-identifikaatorid
  • Võtme tuletamine (koos HKDF-iga)
  • Iga rakendus, millele kehtivad regulatiivsed nõuded (PCI-DSS, ANSSI, FIPS)

Konkreetsed näited

PHP-s on mõlemad funktsioonid saadaval funktsiooni hash() kaudu:

// Stringi jäljend
$md5 = hash('md5', 'tere maailm');
$sha256 = hash('sha256', 'tere maailm');

// Faili sõrmejälg (voogesitus)
$md5Fail = hash_file('md5', '/tee/faili.iso');
$sha256File = hash_file('sha256', '/tee/failile.iso');

Saate neid väljatrükke luua otse meie veebis teksti räsigeneraator, räsi faili faili räsigeneraator, või tuvastada tundmatu räsitüüp räsiidentifikaatoriga.

Soovitus

Reegel 2026 on lihtne: vaikimisi SHA-256. MD5 ei tohiks enam kuvada oma koodi niipea, kui ründaja saab sisendit mõjutada, mis hõlmab peaaegu kõiki juhtumeid server. MD5 suurepärane jõudlus ei õigusta enam selle kasutamist, vahe on muutunud tühiseks SHA-NI kiirendustega kaasaegsetel x86 ja ARM protsessoritel.

Korduma kippuvad küsimused

Kas MD5 on endiselt paroolide jaoks ohutu?

Ei, mitte kunagi. Ja see punkt ei sõltu kokkupõrgetest: MD5 on liiga kiire. GPU purustab mitu miljardit MD5 räsi sekundis, tehes mis tahes rünnaku sõnastik või triviaalne toore jõud. Paroolide jaoks kasutage bcrypt, Argon2 või scrypt (vaadake meie Bcrypt vs Argon2 võrdlust).

Mis vahe on SHA-256 ja SHA-2 vahel?

SHA-2 on perekond, SHA-256 on liige. Perekonda kuuluvad SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 ja SHA-512/256. Need erinevad väljundi suuruse ja faili suuruse poolest. sisemised plokid. SHA-256 on enimkasutatav variant.

Kas peaksime üle minema SHA-3-le?

Mitte tingimata. SHA-3 (välja antud 2015. aastal) tugineb radikaalselt erinevale konstruktsioonile (Keccak/käsn), kuid SHA-256 jääb ohutuks. SHA-3 toimib probleemide korral peamiselt plaani B-na ootamatu SHA-2 puhul. Valige SHA-3, kui standard seda nõuab või kui soovite mitmekesisust krüptograafiline. Vastasel juhul jääb standardvalikuks SHA-256.

Kas saame MD5 või SHA-256 räsi tagasi pöörata?

Ei, konstruktsiooni järgi: räsi kaotab teabe. MD5 dekrüpteerimissaidid seda ei tee kui kannete eelarvutatud räside hiiglaslike aluste (vikerkaaretabelite) päringuid levinud. Pikkade juhuslike andmete korral on kirje leidmine mõlemaga võimatu algoritmid.

Kas kvantarvuti rikub SHA-256?

Groveri algoritm vähendab räsi tõhusat turvalisust ründaja vastu poole võrra kvant: SHA-256 pakuks siis umbes 128 bitti turvalisust, mis jääb suures osas alles piisav. Erinevalt asümmeetrilisest krüptograafiast pole räsi poolel kiireloomulisust.