Hash függvények: hogyan működik a SHA-256?
A hash függvény rövid, rögzített hosszúságú lenyomatot készít az adatból. Nézd meg interaktívan, hogyan változik a SHA-256 hash már egyetlen karakter módosítására is.
Röviden
A kriptográfiai hash függvény tetszőleges hosszúságú bemenetből fix hosszúságú lenyomatot készít úgy, hogy a lenyomatból gyakorlatilag ne lehessen visszaállítani a bemenetet, és nagyon nehéz legyen két különböző bemenethez azonos hasht találni.
Mit csinál egy hash függvény?
A hash függvény determinisztikus: ugyanarra a bemenetre mindig ugyanazt az eredményt adja. A jó kriptográfiai hash ugyanakkor erősen keveri a bemenet bitjeit, ezért már egyetlen karakter módosítása is teljesen más lenyomatot eredményezhet. Ezt avalanche effectnek nevezik.
A SHA-256 kimenete 256 bit, vagyis 32 bájt. Hexadecimális formában ez 64 karakter. A kimenet hossza nem függ attól, hogy egyetlen szót vagy egy több gigabájtos fájlt hash-elsz.
Írj át egy karaktert, és figyeld a SHA-256 lenyomatot
SHA-256
A böngésző számolja…
A „ByBence” alapértékhez képest a 64 hex karakterből 0 pozíció eltér. Írj át akár egyetlen karaktert.
Mitől kriptográfiai egy hash?
A preimage resistance azt jelenti, hogy egy ismert hashből ne legyen reálisan visszakereshető az eredeti bemenet. A second-preimage resistance azt nehezíti meg, hogy egy adott bemenethez másik, azonos hashű bemenetet találjunk. A collision resistance pedig azt, hogy bármely két eltérő bemenethez azonos hash-t találjunk.
Az ütközés matematikailag elkerülhetetlen, mert végtelen sok bemenetet képezünk véges számú hashértékre. A biztonság azon múlik, hogy megfelelő hashméretnél az ütközés megtalálása számításilag irreális legyen.
Mire használjuk a hash függvényeket?
Jelszavakhoz külön, szándékosan lassú és memóriaigényes jelszóhash függvény kell. A gyors SHA-256 kiváló sok általános feladatra, de jelszópróbálgatás ellen túl gyors.
- Fájlok és letöltések sértetlenségének ellenőrzésére.
- Digitális aláírás előtt az üzenet rövid lenyomatának elkészítésére.
- Tartalomazonosításra és deduplikációra.
- Jelszótárolás részeként – de nem önmagában gyors SHA-256-tal.
Miért nem titkosítás a hash?
A titkosítás célja, hogy megfelelő kulccsal visszakaphasd az eredeti adatot. A hash ezzel szemben egyirányú lenyomat: nincs „visszafejtő kulcs”. Ha egy szolgáltatás azt állítja, hogy SHA-256-tal titkosított és később visszafejtette az adatot, valójában nem hash-ről beszél.
Hashből nem azért nem lehet visszafejteni az eredetit, mert nincs rá gomb, hanem mert a leképezés információt veszít: rengeteg különböző bemenet tartozhat ugyanahhoz a véges kimeneti térhez.
Gyakori kérdések
Vissza lehet fejteni a SHA-256 hasht?
A SHA-256 nem visszafejthető titkosítás. Gyenge vagy rövid bemenetet szótáras vagy brute-force próbálgatással ki lehet találni, majd a hashét összehasonlítani, de ez nem a hash matematikai visszafordítása.
Miért 64 karakter a SHA-256?
Mert 256 bit = 32 bájt, és egy bájtot két hexadecimális karakterrel írunk le, ezért 64 hex karakter jelenik meg.
Források és szabványok
Biztonsági témánál az elsődleges szabvány és a karbantartott szakmai útmutató fontosabb, mint egy véletlen implementációs példa. Az alábbi forrásokból érdemes továbbmenni.
Kapcsolódó ByBence