MD5 vs SHA-256: különbségek és ajánlások
Az MD5 és az SHA-256 két kriptográfiai hash függvény. Ők fix méretű ujjlenyomatot állíthat elő egy tetszőleges méretű bemenetről. Találkozunk velük mindenhol: fájl integritásának ellenőrzése, aláírások, egyedi azonosítók, TLS-tanúsítványok, blokklánc. A biztonsági állapotuk azonban nagyon eltérő: az MD5 elromlott 2004 óta kriptográfiai célokra az SHA-256 2026-ban is biztonságos marad. Ez a cikk áttekinti.
Emlékeztető a hash függvényekről
A kriptográfiai hash függvény bármilyen hosszúságú üzenetet ujjlenyomattá alakít át fix méretű. Három várható ingatlan:
- Preimage-ellenállás: ha egy hash-t kapunk, akkor lehetetlennek kell lennie az eredeti üzenet megtalálásához.
- Második előkép-ellenállás: ha egy üzenetet kap, lehetetlennek kell lennie olyan másikat találni, amely ugyanazt a hash-t produkálja.
- Ütközésállóság: lehetetlennek kell lennie két különböző üzenet megtalálása, amelyek ugyanazt a hash-t eredményezik.
Egy függvényről azt mondják, hogy megszakad, amint ezek közül a tulajdonságok közül valamelyik kiesik. MD5 esetén ellenállás a Az ütközések 2004-ben csökkentek.
MD5: 128 bites, 2004 óta törött
Az MD5 (Message Digest 5) egy Ronald Rivest által 1991-ben és az RFC 1321 szabvány szerint. Ő termel 128 bites ujjlenyomat (16 bájt, 32 hexadecimális karakter).
2004-ben Wang és Yu közzétett egy támadást, amely órákon belül MD5 ütközéseket produkált egy PC-n. Azóta az ütközés generálásának költsége néhány másodpercre csökkent. 2008-ban a kutatók hamis MD5 aláírt SSL tanúsítványt gyártottak, amelyet minden böngésző érvényesnek ismer el. 2012-ben a A Flame malware MD5 ütközést használt, hogy Microsoft binárisként írja alá a végrehajtható fájlját jogos.
Következtetés: Az MD5-öt már nem szabad használni, amint egy támadó befolyásolni tudja a bemenetet. Minden kriptográfiai felhasználás (aláírások, ellenféllel szembeni integritás, kulcsok származtatása) az kizárva. Csak néhány ellenségeskedés nélküli felhasználás marad elfogadható, például a hálózati átvitel ellenőrző összege vagy gyorsítótár kulcsa: az MD5 gyors marad, és a véletlen ütközés statisztikailag megmarad lehetetlen.
SHA-256: 256 bit, biztonságos 2026-ban
Az SHA-256 a NIST által 2001-ben közzétett és szabványosított SHA-2 családhoz tartozik írta: FIPS 180-4. Ő termel 256 bites ujjlenyomat (32 bájt, 64 hexadecimális karakter).
Gyakorlati támadások nem ismertek az SHA-256 ellen. A legjobb elméleti támadás ütközések ellen 64-ből 31 fordulóra vonatkozik, gyakorlati vonatkozások nélkül. Az ütközés megtalálásának brute force költsége 2^128 művelet nagyságrendű, minden ismert infrastruktúra elérhetőségén kívül esik.
Az SHA-256 használatos: TLS (X.509 tanúsítványok), Git (az SHA-256 átállás óta), Bitcoin (proof) munka), Linux csomag aláírások, Windows Update, stb. Ma van a hash alapértelmezés szerint ajánlott az általános kriptográfiai felhasználások többségéhez.
Gyakorlati különbségek
Kimeneti hossz
MD5("hello") = 5d41402abc4b2a76b9719d911017c592 (32 hexadecimális karakter)
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (64 hexa karakter)
Sebesség
Az MD5 körülbelül 2-3-szor gyorsabb, mint az SHA-256 ugyanazon a gépen. Egy modern CPU-n, MD5 magonként több GB/s-ot dolgoz fel, az SHA-256 GB/s nagyságrendű. Legutóbbi bővítményű CPU-kon SHA-NI, a rés erősen szűkül.
Biztonság
Ez az egyetlen különbség, ami igazán számít: az MD5 eltörik az ütközések miatt, Az SHA-256 nem. Ha az ellenféllel szembeni biztonság forog kockán, a választás egyértelmű.
Összehasonlító táblázat
| Kritérium | MD5 | SHA-256 |
|---|---|---|
| Év | 1991 | 2001 |
| Kimeneti méret | 128 bit / 32 hex. | 256 bit / 64 hex |
| Ütközésállóság | 2004 óta törött | Nincs gyakorlati támadás |
| Relatív sebesség | 2-3-szor gyorsabb | Referencia |
| Hardveres gyorsítás | Nincs dedikált | SHA-NI a legújabb CPU-kon |
| Rejtjelezési használat | Nem ajánlott | Ajánlott |
| Nem ellenséges integritás használat | Elfogadható | Javasolt |
| Szabályozási megfelelőség | Elutasítva (PCI-DSS, FIPS) | Elfogadva |
Használati esetek
Ha az MD5 továbbra is elfogadható
- Alkalmazás-gyorsítótár kulcsa (Redis, memcached) biztonsági vonatkozások nélkül
- Duplikált észlelés egy nem ellenséges adatkészletben
- Hálózati átvitel ellenőrző összege a véletlen sérülés észlelésére
- Egy lánc lábnyoma a disztribúcióhoz (sharding) ellentétes megkötés nélkül
Ha szükséges az SHA-256
- Támadókkal szembeni integritás ellenőrzése (aláírt letöltések, csomagok)
- Digitális aláírások, X.509-tanúsítványok
- A véglegesítések és objektumok Git azonosítói
- Kulcs származtatás (a HKDF-fel kombinálva)
- Minden olyan alkalmazás, amelyre szabályozási követelmények vonatkoznak (PCI-DSS, ANSSI, FIPS)
Konkrét példák
A PHP-ben mindkét függvény elérhető a hash() függvényen keresztül:
// Egy karakterlánc lenyomata
$md5 = hash('md5', 'hello világ');
$sha256 = hash('sha256', 'hello világ');
// Fájl ujjlenyomata (adatfolyam)
$md5Fájl = hash_file('md5', '/elérési út/a/file.iso');
$sha256File = hash_file('sha256', '/elérési út/hoz/file.iso');
Ezeket a nyomatokat közvetlenül online generálhatja nálunk szövegkivonat-generátor, hash egy fájlt fájl hash generátor, vagy azonosítson egy ismeretlen hash-típust a kivonatazonosítóval.
Ajánlás
A 2026-os szabály egyszerű: SHA-256 alapértelmezés szerint. Az MD5-nek többé nem szabad megjelennie kódját, amint egy támadó befolyásolni tudja a bemenetet, ami szinte minden esetet lefed szerver. Az MD5 kiváló teljesítménye már nem indokolja a használatát, a rés elhanyagolhatóvá vált a modern x86 és ARM CPU-kon jelen lévő SHA-NI gyorsításokkal.
Gyakran ismételt kérdések
Még mindig biztonságos az MD5 jelszavakhoz?
Nem, soha. És ez a pont független az ütközésektől: az MD5 túl gyors. Egy GPU másodpercenként több milliárd MD5-kivonatot tör meg, és bármilyen támadást végrehajt szótár vagy triviális nyers erő. Jelszavakhoz használjon bcrypt, Argon2 vagy scrypt (lásd a Bcrypt vs Argon2 összehasonlítást).
Mi a különbség az SHA-256 és az SHA-2 között?
Az SHA-2 a család, az SHA-256 a tagja. A család az SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 és SHA-512/256. A kimeneti méretben és a fájlméretben különböznek. belső blokkok. Az SHA-256 a leggyakrabban használt változat.
Áttérjünk az SHA-3-ra?
Nem feltétlenül. Az SHA-3 (megjelent 2015-ben) gyökeresen eltérő konstrukcióra épül (Keccak/szivacs), de az SHA-256 biztonságos marad. Az SHA-3 főként B tervként szolgál problémák esetén váratlan az SHA-2-n. Válassza az SHA-3-at, ha egy szabvány megköveteli, vagy ha sokszínűséget szeretne kriptográfiai. Ellenkező esetben az SHA-256 marad a standard választás.
Megfordíthatjuk az MD5 vagy SHA-256 hash-t?
Nem, konstrukció szerint: a hash információkat veszít. Az MD5 „dekódoló” webhelyek nem mint az előre kiszámított hashek (szivárványtáblázatok) óriási alapjainak lekérdezése a bejegyzésekhez gyakori. Hosszú véletlenszerű adatok esetén mindkettővel lehetetlen megtalálni a bejegyzést algoritmusok.
Megtöri az SHA-256-ot egy kvantumszámítógép?
Grover algoritmusa felére csökkenti a támadókkal szembeni hashek hatékony biztonságát kvantum: Az SHA-256 körülbelül 128 bites biztonságot kínálna, ami nagyrészt megmarad elegendő. A hash oldalon nincs sürgősség, ellentétben az aszimmetrikus kriptográfiával.