# Mi is valójában a SHA-256

> Cuadernos Lacre · Koncepció · 2026. május 19.
> https://solo2.net/hu/fuzetek/articulos/mi-is-valojaban-a-sha-256.html

Egy matematikai ujjnyomat, amely hatvannégy karakterbe belefér, és amely teljesen megváltozik, ha az eredeti szövegben akár egyetlen vessző is elmozdul. Miért nevezzük digitális pecsétviasznak.

---

## A technikai név mögötti egyszerű ötlet

Képzeld el, hogy létezik egy gép, amelynek egyetlen nyílása és egyetlen képernyője van. A nyíláson keresztül betáplálsz egy szöveget: egy szót, egy mondatot vagy egy egész regényt. A képernyőn pillanatokkal később megjelenik egy pontosan hatvannégy karakterből álló sorozat. Ezt a sorozatot a szakmai olvasóknak *hash*-nek vagy *kriptográfiai lenyomatnak* nevezzük; az átlagolvasó számára egyelőre hívhatjuk a szöveg matematikai ujjnyomatának, ahogyan az ujjlenyomat az emberé.

Ha kétszer ugyanazt a szöveget táplálod be, a gép mindkétszer ugyanazt az ujjnyomatot mutatja. Ha egy kicsit eltérő szöveget táplálsz be — egy elmozdított vessző, egy nagybetű, amely kisbetűvé válik —, a gép az elsőtől teljesen eltérő ujjnyomatot mutat. Nem hasonlót: eltérőt. Ez a két tulajdonság együtt — a determinizmus és az érzékenység — alkotja az egyszerű ötletet. A SHA-256 minden egyéb része az a gépezet, amely biztosítja ezek helyes működését.

Érdemes már az elején tisztázni, mit nem csinál a gép. Nem titkosítja a szöveget. Nem rejti el. Nem menti el. A gép megnézi a szöveget, kiszámítja az ujjnyomatot, és elfelejti a szöveget. Az ujjnyomatból nem lehet rekonstruálni az azt létrehozó szöveget; csak azt teszi lehetővé, hogy egy adott szövegről ellenőrizzük, megegyezik-e az eredetivel. Ezért mondjuk, hogy ez egy *egyirányú* lenyomat: odafelé megy, visszafelé nem.

## A hash nem ugyanaz, mint a titkosítás

Gyakori a tévedés, ezért érdemes tisztázni: a titkosítás és a hash-elés különböző műveletek. A titkosítás abból áll, hogy egy szöveget úgy alakítunk át, hogy csak a kulcs birtokosa tudja visszaállítani az eredeti formájába. A hash-elés abból áll, hogy a szövegből egy olyan ujjnyomatot hozunk létre, amelyből az eredeti szöveg soha nem nyerhető vissza, sem kulccsal, sem anélkül. Az első tervezésénél fogva visszafordítható; a második tervezésénél fogva visszafordíthatatlan.

A gyakorlati következmény fontos. Amikor egy alkalmazás azt mondja: „titkosítva tároljuk a jelszavadat”, akkor van valaki, akinél ott a kulcs a feloldáshoz — mindenképpen maga az alkalmazás. Amikor egy alkalmazás azt mondja: „hash-elve tároljuk a jelszavadat”, az alkalmazás maga sem tudja elolvasni az eredeti jelszót, még ha akarná sem; csak azt tudja ellenőrizni, hogy amit beírsz, az újra ugyanazt az ujjnyomatot hozza-e létre. A második modell, ha jól csinálják, sokkal előnyösebb a jelszavak tárolására, mint az első. Később látni fogjuk, miért igényel a „jól csinálás” többet a puszta SHA-256-nál.

## A kriptográfiai hash négy hasznos tulajdonsága

Egy hash függvény, amely megérdemli a *kriptográfiai* jelzőt, négy tulajdonságnak felel meg:

1. Determinizmus. Ugyanaz a bemenet mindig ugyanazt az ujjnyomatot eredményezi.
2. Lavinaeffektus. A bemenet kismértékű változása teljesen eltérő ujjnyomatot eredményez, amelyen nem látható hasonlóság az előzővel.
3. Visszafejtéssel szembeni ellenállás. Egy adott ujjnyomatból kiindulva számításilag nem kivitelezhető megtalálni az azt létrehozó szöveget.
4. Ütközésmentesség. Számításilag nem kivitelezhető két különböző szöveget találni, amelyek ugyanazt az ujjnyomatot eredményezik.

A „számításilag nem kivitelezhető” nem azt jelenti, hogy „matematikailag lehetetlen”. Azt jelenti, hogy az eléréséhez szükséges idő, energia és pénz nagyságrendekkel meghaladja az összes ésszerűen rendelkezésre álló számítási kapacitást. A SHA-256 esetében ez a korlát több billió évben mérhető, még a legoptimistább, speciális hardvereket használó megközelítések mellett is. Ami az olvasó gyakorlati szempontjából ugyanaz, mint a „lehetetlen”.

## A SHA-256-ról konkrétan

A név mindent elárul. A SHA a *Secure Hash Algorithm* rövidítése: biztonságos hash algoritmus. A 256-os szám az ujjnyomat bitben mért méretét jelzi: kétszázötvenhat bit, azaz harminckét bájt, ami hexadecimális formában az a hatvannégy karakter, amelyet az olvasó már felismer. A szabványt az amerikai NIST tette közzé 2001-ben a SHA-2 család részeként; a szabvány jelenlegi verziója, a FIPS 180-4, 2015-ös.

A méretek megérdemelnek egy pillanatot. Kétszázötvenhat bit kettő a kétszázötvenhatodikon különböző értéket tesz lehetővé: ez egy hetvennyolc tizedesjegyből álló szám, amely több nagyságrenddel nagyobb, mint az atomok becsült száma a megfigyelhető univerzumban. A világ minden szövege — minden könyv, minden e-mail, minden üzenet — ezen értékek egyikére esik. Annak a valószínűsége, hogy két különböző szöveg véletlenül megegyezzen, a gyakorlatban megkülönböztethetetlen a nullától.

## Hogyan néz ki kódban

## Miért nevezzük pecsétviasznak

A 15. és 19. század közötti európai levelezésben pecsétviasz zárta le a levelet. Egy csepp olvadt viasz, egy rányomott pecsét, és a levél megismételhetetlen módon meg volt jelölve. Nem védte meg a tartalmat az elszánt kíváncsiskodótól — a papírt át lehetett világítani, a viaszt fel lehetett törni —, de bizonyítékként szolgált. A lezárás bármilyen módosítása látható volt a címzett számára, még mielőtt kinyitotta volna a papírt. A pecsétviasz nem akadályozta meg a kárt; hanem jelezte azt.

Minden egyes Cuaderno törzsszövegének SHA-256 értéke ugyanezt a funkciót tölti be digitális formában. Ha a cikknek akár egyetlen szava is megváltozna a közzététel pillanata és az olvasás pillanata ket között, a szöveg alján lévő hexadecimális pecsét már nem egyezne meg az előtted lévő szöveg SHA-256 értékével. Bármely olvasó öt sornyi kóddal ellenőrizhetné ezt. A kiadvány nem tudja újraírni a történetét anélkül, hogy a pecsét ne árulná el. Nem véd a kár ellen; hanem ellenőrizhetővé teszi azt.

## Amit a hash nem tud

Néha négy olyan feladatra kérik a SHA-256-ot, amely nem az ő asztala:

1. Titkosítás. A hash tömörít; nem rejt el. Ha azt szeretnéd, hogy a szöveg ne legyen olvasható, titkosítanod kell, nem hash-elned.
2. Szerző hitelesítése. A hash nem mondja meg, ki írta a szöveget, csak azt, hogy melyik szöveget hash-elték. A szerzőség társításához kriptográfiai aláírásra van szükség a hash felett, nem pedig magára a hash-re.
3. Jelszavak tárolása. Itt van egy csapda, amit érdemes megérteni. A SHA-256-ot úgy tervezték, hogy nagyon gyors legyen — ami sok mindenre jó, de erre rossz. Egy speciális hardverrel rendelkező támadó másodpercenként több milliárd jelszót próbálhat ki egy SHA-256 hash ellen, amíg meg nem találja a tiédet. A jelszavak mentéséhez szándékosan lassú kulcsszármaztatási függvényeket kell használni, mint például az Argon2, a scrypt vagy a bcrypt, kombinálva egy *sóval* (felhasználónként egyedi véletlenszerű adat, amely megakadályozza, hogy két azonos jelszóval rendelkező személynek ugyanaz legyen a hash értéke).
4. A hash olvasása a szerző azonosítójaként. Nem az. A hash a tartalmat azonosítja. Ha két ember a *szia* szót hash-eli SHA-256-tal, mindketten ugyanazt a lenyomatot kapják — és ez a központi tulajdonság, nem pedig hiba: ha különböző lenyomatok lennének, nem tudnánk ellenőrizni a közzétett és a kapott tartalom egyezését.

## Hol bukkan fel a SHA-256 a mindennapjaidban

Még ha nem is látod, a SHA-256 támogatja nagy részét annak, amit naponta használsz az interneten. A Bitcoin blokklánca úgy épül fel, hogy minden blokk SHA-256 értékét a következőhöz láncolják; egy múltbeli blokk módosítása az egész későbbi lánc újraszámítására kényszerít. A Git, a rendszer, amellyel a világ kódjainak felét verziózzák, minden commitot a teljes tartalmának SHA-256 (újabb verziókban) vagy elődje, a SHA-1 (régebbi verziókban) értéke alapján azonosít. A webhelyek azonosítását végző HTTPS tanúsítványokhoz SHA-256 ujjnyomat társul. A szoftverletöltéseket gyakran kíséri a fejlesztő által közzétett SHA-256 érték, hogy ellenőrizhesd, nem módosult-e a fájl útközben. És mint mondtuk, minden Cuaderno Lacre alján.

## A szakmai olvasó számára

Négy operatív emlékeztető azoknak, akik rendszerekről döntenek vagy auditálnak:

1. A hash nem titkosítás. Ha egy szolgáltató a két kifejezést összekeveri a műszaki dokumentációjában, érdemes megkérdezni, pontosan mire gondol.
2. Jelszavak tárolására soha nem szabad önmagában SHA-256-ot használni. A SHA-256 túl gyors ehhez a feladathoz (lásd az *Amit a hash nem tud* 3. pontját). A jelenlegi szabvány az Argon2id: tervezésénél fogva lassú, a szerver kapacitása szerint konfigurálható, felhasználónként eltérő véletlenszerű *sóval* kombinálva.
3. Dokumentumok — szerződések, akták, fájlok — integritásához továbbra is a SHA-256 a hivatkozási szabvány. Ezt használják az EU-ban a minősített időbélyegző szolgáltatók.
4. Hosszú távú (évtizedes) megőrzéshez érdemes a SHA-256 mellé egy SHA-3-at vagy egy SHA-512-t is kiszámítani és archiválni; a kriptográfiai óvatosság azt javasolja, hogy évszázados archívumok esetén ne hagyatkozzunk egyetlen függvényre.

Képzeld el, hogy felállítottad a világ legbonyolultabb dominópályáját: több ezer bábu, tucatnyi elágazás, mechanikus hidak és rámpák szelik át az egész szobát, gondosan, darabról darabra elhelyezve.

Ha megpöccinted az első bábu, a lánc pontos és megismételhető sorrendben dől el. Ugyanaz az elrendezés, ugyanaz a kezdő lökés → ugyanaz a végső minta a földön, újra és újra.

Itt jön az érdekesség: mozdíts el egyetlen bábut fél centiméterrel arrébb a kezdés előtt, és pöccintsd meg újra. Egy rámpa, aminek aktiválódnia kellene, mozdulatlan marad, egy híd nem dől le, egy másik elágazás lép működésbe. A földön lévő bábuk végső mintája teljesen felismerhetetlen lesz az elsőhöz képest.

A SHA-256 matematikailag pontosan ez a pálya. Az általad írt szöveg a bábuk kezdeti helyzete. Az algoritmus a lökés, amely elindítja a zuhatagot. A végső eredmény pedig – amit *hash*-nek hívunk – a földről készült állókép, miután minden megállt. Változtass meg egyetlen vesszőt az eredeti szövegben, és a kép gyökeresen más lesz. Ilyen egyszerű, és ilyen drasztikus.

---

*Ha visszatérsz a cikk aljára, egy hatvannégy karakteres hexadecimális pecsétet fogsz látni. Ez az általad éppen elolvasott szöveg SHA-256 értéke ezen a nyelven. Ha lefordítanánk a cikket, a pecsét más lenne; ha a magyar verzió egyetlen szava megváltozna, a magyar pecsét megváltozna. A pecsét nem védi a tartalmat — erre más eszközök szolgálnak —, hanem egyedileg azonosítja azt. És ez, bármilyen szerényen is hangzik, elég ahhoz, hogy a szerkesztői lánc egyetlen lépése se tudja észrevétlenül megváltoztatni az elmondottakat. Minden más — titkosítás, aláírás, azonosítás — erre az egyszerű ötletre épül.*

## Források és további olvasnivalók

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, 2015. augusztus. A SHA-2 család hivatalos specifikációja, beleértve a SHA-256-ot.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, 2011. május. Normatív verzió a megvalósítók számára.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). Az 5. és 6. fejezet a hash függvényekkel és azok jogos és jogosulatlan felhasználásával foglalkozik.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Gyakorlati példa a SHA-256 használatára a blokkok láncolásához egy konstrukciójánál fogva megváltoztathatatlan struktúrában.
- 910/2014/EU rendelet (eIDAS) — a minősített időbélyegző-szolgáltatók keretrendszere. Az EU-ban kibocsátott minősített elektronikus aláírások és pecsétek hivatkozási függvénye a SHA-256.
- Referencia-megvalósítás Zig nyelven: std.crypto.hash.sha2.Sha256 a nyelv hivatalos tárolójában (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). Ez az optimalizált és auditált verzió, amelyet a Solo2 valójában használ. Hasznos a függelékben található didaktikai megvalósítással való összevetéshez.

---

*Cuadernos Lacre · A Menzuri Gestión S.L. kiadványa · írta R.Eugenio · szerkesztette a Solo2 csapata.*
*https://solo2.net/hu/fuzetek/*
