Hashelt jelszavak: mi ez, hogyan működik, és miért érdemes használni
A jelszavak hash-elése egy olyan technika, amelynek során az eredeti jelszó egy speciális (visszafordíthatatlan) hash-függvény segítségével egy rögzített hosszúságú karakterlánccá – úgynevezett hash-é – alakul. Ha egy támadó hozzáférne a jelszavak hash-eit tartalmazó adatbázishoz, magukat a jelszavakat nem látná, csak azok lenyomatait. A hash-függvény kimenete egyirányú: a már kiszámolt hash-ből az eredeti jelszó nem nyerhető vissza könnyen.
Például az „exTraTITkosJelszó159" jelszó hash-elése után egy hosszú, „véletlenszerűnek" tűnő karakterláncot kapunk. Ebből senki nem tudja visszafejteni az eredeti szöveget. Bejelentkezéskor a jelszót újra hash-eljük, és ezt hasonlítjuk össze a korábban eltárolt hash-sel. Ez hasonló ahhoz, mint amikor ujjlenyomatot vesznek. Az ujjlenyomat alapján nem lehet megmondani, ki az illető, de azonosítani lehet ugyanazt a személyt. A jelszó hash-je ugyanígy működik: a rendszer ellenőrzi a jelszó hitelességét, de magát a jelszót sosem ismeri.
zdroj: gen.Ai
A jelszavak hash-elése – tulajdonságai, működése és jelentősége
A hash-elés legfontosabb jellemzői
Egyirányúság: A hash-ből (lenyomatból) nem lehet (könnyen) visszafejteni az eredeti jelszót. Még ha a támadó ismeri is az egész hash-t, a jelszót csak brutális próbálgatással (brute-force) tudná kitalálni, ami rendkívül időigényes.
Fix hosszúságú kimenet: Az eredeti jelszó hosszától függetlenül a hash mindig azonos hosszúságú. (Például: MD5 → 32 karakter, SHA-256 → 64 karakter.)
Determinisztikus kimenet: Ugyanaz a jelszó mindig ugyanazt a hash-t eredményezi (ha nincs hozzáadva "só").
Kryptográfiai só (salt): Egy véletlenszerű karaktersorozatot adunk a jelszóhoz hash-elés előtt. Ennek köszönhetően két teljesen azonos jelszó is különböző hash-t ad. Így a támadók nem tudnak előre legyártott rainbow táblákat (elterjedt jelszavak hash-ei) használni. Például ha két felhasználó ugyanazt a jelszót használja, de különböző sóval, akkor a hash-eik teljesen eltérnek – így egy támadó nem használhatja ugyanazt a szótárat mindkét fiókhoz.
Hash algoritmusok: Többféle hash-elő algoritmus létezik. Az MD5 és SHA-1 korábban elterjedtek voltak, de ma már nem tekinthetők biztonságosnak. A korszerűbb algoritmusok, mint a bcrypt vagy az Argon2, szándékosan lassúak és memóriaigényesek. Például az Argon2-nél megadható a memóriahasználat és az iterációk száma; a bcrypt rendelkezik ún. cost factor-ral. Ez lassítja a brute-force támadásokat, főleg ha GPU-val történnek.
Hogyan működik a jelszavak hash-elése
A felhasználó megadja a jelszavát (pl. egy webes űrlapon vagy nyomtató admin felületén).
A rendszer egy hash-algoritmust alkalmaz (pl. SHA-256, bcrypt, Argon2), amely létrehozza a jelszó hash-ét.
A hash kerül eltárolásra az adatbázisban (például Linuxban az /etc/shadow fájlban), nem pedig maga a jelszó.
Később, amikor a felhasználó újra bejelentkezik, a megadott jelszót ugyanúgy hash-eli a rendszer, és összehasonlítja a tárolt hash-sel. Ha egyeznek, a bejelentkezés sikeres.
A rendszer tehát sosem látja a jelszót tiszta formában, és a hálózaton keresztül sem továbbítódik jelszó – csak annak hash-e. Ha egy támadó megszerzi az adatbázist, csak a hash-eket látja, amiket nehéz feltörni.
A hash-elés előnyei más módszerekkel szemben
Adatszivárgás elleni védelem: Ha egy hacker hozzájut a hash-ekhez, azok még nem jelentik automatikusan a jelszavak ismeretét. A hash-ek feltörése sok időt vesz igénybe. Ha viszont a jelszavak simán (plaintextben) lennének tárolva, a támadó azonnal hozzáférhetne minden fiókhoz.
Titkosítással szemben: A titkosítás visszafejthető folyamat, amely kulccsal működik. Ha a támadó megszerzi a kulcsot, visszafejtheti a jelszavakat. A hash-elés egyirányú, nincs visszafejtési kulcs, így nincs kulcs, amit ellophatnának. Minden jelszót külön kell feltörni.
Támadások elleni védelem: A támadók gyakran alkalmaznak szótár-alapú támadást (gyakori jelszavak kipróbálása) vagy rainbow táblákat. Egyedi sók és lassú hash algoritmusok használatával ezek a módszerek nehézkessé válnak.
Kiegészítő biztonsági rétegek: A hash-elést gyakran kombinálják más hitelesítési módszerekkel, mint a kétfaktoros azonosítás (2FA) vagy biometrikus hitelesítés. Ezek extra védelmet nyújtanak, de a jelszavak hash-elése változatlanul a háttérben zajlik.
Számítási igény: A modern algoritmusok szándékosan erőforrás-igényesek. A bcrypt cost factor-ja vagy az Argon2 memória- és iteráció-beállításai miatt a támadók még erős hardverrel is csak lassan tudnak hasheket generálni. Ez nagyban növeli a biztonságot az MD5 és SHA-1-hez képest.
A hash-elt jelszavak gyakorlati alkalmazása
Webes szolgáltatások: Webáruházak, banki portálok, e-mail rendszerek és közösségi oldalak csak hash-elt jelszavakat tárolnak. A jelszó hash-ét mentik el, nem magát a jelszót. Így a szerver sem ismeri meg azt soha.
Operációs rendszerek: Linux, Windows és macOS egyaránt hash-elt formában tárolják a jelszavakat. Linux például az /etc/shadow fájlban. Windows a NTLM hash-t, macOS pedig hasonló eljárásokat használ.
Hálózati és perifériás eszközök: Modern nyomtatók, szkennerek és routerek is kérhetnek admin jelszót. Például a Brother nyomtatók egyik biztonsági hibájában a gyári jelszót a sorozatszám hash-elésével generálták. Ez hibás megközelítés volt, de mutatja, hogy hash-elést használnak az ilyen eszközök is.
Nyomtatásbiztonság: Sok irodai nyomtatónál elérhető a Secure Print mód, amely jelszóval védi a dokumentumot. Ezek a jelszavak is hash-elve kellene, hogy legyenek tárolva – a szerver csak a hash-t menti, és azzal hasonlítja össze a beírt jelszót.
Egyéb alkalmazások: Számos szoftver – például WordPress, Drupal, CRM rendszerek – szintén hash-elt formában tárolja a jelszavakat. Az olyan protokollok, mint az SSH vagy RADIUS is jellemzően csak hash-t továbbítanak. Továbbá, a hash-elés használható adat-integritás ellenőrzésére is (pl. ellenőrzőösszegek, digitális aláírások), bár ez nem közvetlenül jelszótárolás.
Összegzésként
A hash-elt jelszavak minden olyan helyen megtalálhatók, ahol a felhasználói azonosításra szükség van anélkül, hogy a jelszót eredeti formájában tárolnák. Hash-elés biztosítja, hogy még ha az adatbázis kompromittálódik is, a támadó csak lenyomatokat kap, amiket nehéz visszafejteni – nem a jelszavakat magukat.
Zárszó
A jelszavak hash-elése a modern hozzáférésvédelem alapköve. A felhasználó számára ez azt jelenti, hogy a szerverek, weboldalak vagy eszközök, amelyekkel dolgozik, soha nem tárolják a jelszavát egyszerű szövegként. Csak a hash-elt változatát látják. Még ha egy támadó meg is szerezné a hash-ek adatbázisát, csak ezekhez a hash-ekhez férne hozzá, amelyeket neki kellene (nehézkesen) visszafejtenie – például szótáras támadással.
Egy átlagos felhasználó számára ez a következőket jelenti:
Használjon erős és egyedi jelszavakat.
Használjon jelszókezelőt a különböző szolgáltatásokhoz való hozzáférés kezelésére.
Kapcsolja be a kétfaktoros hitelesítést (2FA), ahol csak lehetséges.
Soha ne használjon ugyanazt a jelszót több oldalon.
Ezek a szokások jelentősen megerősítik a fiókjaink biztonságát. Ha a jelszavak hash-jei valamilyen módon kompromittálódnak, a támadók így sem férnek hozzá közvetlenül a fiókhoz. Ha minden szolgáltatásban más-más jelszót használunk, egy kiszivárgás nem vezet más fiókok feltöréséhez.
Csak olyan szolgáltatásokban bízzunk meg, amelyek támogatják a jelszavak hash-elését. Ha egy rendszer vissza tudja küldeni a jelszót (például e-mailben), az azt jelenti, hogy a jelszót egyszerű szövegként tárolja, ami súlyos biztonsági hiba.
A jelszavak kezelése során a hash-elés megakadályozza azok közvetlen felfedését, és robusztus védelmet nyújt a hozzáférési adatok számára. Ezért a hash-elés kulcsfontosságú elem, amely jelentősen növeli a biztonságot – akár nyomtatók, akár más eszközök esetében is.
A legtöbb átlagfelhasználó számára sok biztonsággal kapcsolatos kifejezés ismeretlen. Ha azonban egy új szolgáltatás használatakor vagy regisztráció során plusz védelmi lehetőséget kínálnak a jelszón túl, érdemes élni vele. Manapság ez már szinte minden alkalmazás és szolgáltatás biztonsági beállításának része.
Kriptográfiai sózás A kriptográfiai sózás egy olyan biztonsági technika, amelyet jelszavak és más érzékeny adatok védelmére használnak a brute-force és szótáras támadások ellen. Ez a folyamat magában foglalja egy véletlenszerű adat – az úgynevezett „só" – hozzáadását a felhasználó eredeti adataihoz, még a hash-elés előtt.
A só hozzáadása:
Megakadályozza, hogy két azonos jelszó ugyanazt a hash-t eredményezze.
Növeli a rendszer ellenállását azokkal szemben, akik hozzáférhetnek a hash-ekhez.
Megnehezíti a rainbow table és más automatizált támadási módszerek használatát.
A kriptográfiai sózás alapvető gyakorlat az érzékeny adatok védelmében a modern információbiztonsági rendszerekben.