← Back to Blog

A jelszóentrópia magyarázata: hogyan számítsd ki valójában egy jelszó erősségét

2025-12-26

A „használj erős jelszót” gyakori tanács, de az „erős” szó homályos. Az entrópia az a tényleges mérték e mögött — egy szám, bitben kifejezve, amely megmutatja, hány próbálkozásra van szüksége egy támadónak a legrosszabb esetben. Ez a cikk elmagyarázza, mit jelent ez a szám, és hogyan számítható ki egy általad ténylegesen választott jelszóra.

Röviden

  • Az entrópia (bitben) annak a keresési térnek a méretét méri, amelyet egy támadónak brute force módszerrel végig kell néznie: entrópia = log2(karakterkészlet_mérete ^ hossz).
  • Minden további karakter megsokszorozza a keresési teret; minden további karaktertípus csak egy fix, viszonylag kicsi tényezővel szorozza meg azt.
  • Egy 12 karakteres, csak kisbetűket használó jelszónak kevesebb entrópiája van, mint egy 8 karakteres, mind a négy karaktertípust vegyítő jelszónak — de egy 20 karakteres, kisbetűs jelmondat mindkettőt felülmúlja.
  • A CSPRNG által generált jelszavak pontosan elérik elméleti entrópiájukat; az emberek által választott jelszavak szinte soha, mert az emberek nem véletlenszerűek.

Rövid válasz

Az entrópia bitben log2(N), ahol N az adott hosszúságú és karakterkészletű, egyformán valószínű jelszavak teljes száma. Gyakorlatban: entrópia = hossz × log2(karakterkészlet_mérete). Egy 16 karakteres jelszó, amelyet egyenletesen a 95 nyomtatható ASCII karakterből választanak ki, körülbelül 16 × log2(95) ≈ 105 bit entrópiával rendelkezik — ez összemérhető egy 256 bites AES-kulcs gyakorlati brute force ellenállásával, ami ehhez képest túlzás, de a 105 bit már messze meghaladja azt, amit a jelenlegi vagy belátható jövőbeli hardver ki tud meríteni. A PassGenerate így generálja a jelszavakat, a Web Crypto API CSPRNG-jét használva, így az entrópiaérték valós, nem csupán elméleti.

Az entrópiaképlet levezetése

Az entrópia feltételezi, hogy minden karaktert egymástól függetlenül és egyenletesen véletlenszerűen választanak ki egy rögzített készletből. Egy C méretű karakterkészlet és L hosszúságú jelszó esetén a lehetséges jelszavak száma C^L, és az entrópia bitben:

entrópia = L × log2(C)
KarakterkészletKészlet mérete (C)Bit karakterenként (log2 C)
Csak számjegyek (0-9)103.32
Kisbetűk (a-z)264.70
Kisbetűk + számjegyek365.17
Vegyes nagy-/kisbetűk + számjegyek625.95
Vegyes nagy-/kisbetűk + számjegyek + szimbólumok (~33 gyakori)956.57

Hossz vs. karakterkészlet mérete: miért nyer a hossz

Ez a táblázat megmutatja, miért helyez a NIST SP 800-63B kevesebb hangsúlyt a kikényszerített összetettségi szabályokra a hosszúsággal szemben:

HosszCsak számjegyekKisbetűkVegyes betűk+számjegyek+szimbólumok
827 bit38 bit52 bit
1240 bit56 bit79 bit
1653 bit75 bit105 bit
2066 bit94 bit131 bit
2480 bit113 bit157 bit
32106 bit150 bit210 bit

Figyeld meg, hogy egy 8 karakteres jelszó, amely mind a négy karaktertípust használja (52 bit), kevesebb entrópiával rendelkezik, mint egy 12 karakteres, teljesen kisbetűs jelszó (56 bit). Ez a matematikai alapja egy jól ismert megállapításnak: négy további véletlenszerű karakter hozzáadása többet tesz a biztonságodért, mint szimbólumok és számjegyek kikényszerítése egy rövid jelszóba. Ez az oka annak is, hogy a hosszú, véletlenszerűen generált jelmondatok (több véletlenszerű szótári szó) egyszerre lehetnek erősebbek és könnyebben gépelhetők, mint egy rövid szimbólumhalmaz — minden további szó jellemzően 11-13 bitet ad hozzá, ha néhány ezer szavas listából származik, ami 4-6 szó esetén gyorsan összeadódik.

Hogyan néz ki ez valódi hardveren

A fenti bitszámok hasznosak az összehasonlításhoz, de nem árulják el, mennyi ideig tart egy valós támadás — ez a próbálkozást végző hardvertől függ, amely évről évre gyorsabb lesz. A Hive Systems évente pontosan erről tesz közzé egy referenciamérést, amely a brute force sebességét teszteli egy bérelt, fogyasztói GPU-kból álló flottán. A 2026-os táblázatuk szerint egy véletlenszerűen generált, 8 karakteres, teljes vegyes karakterkészletet (nagybetűk, kisbetűk, számjegyek, szimbólumok) használó jelszó feltörése körülbelül 132 évet vesz igénybe — ez csökkenés a 2025-ös 164 évhez és a 2024-es 225 évhez képest, azaz évente körülbelül 20-25%-os csökkenés, ahogy a GPU-hardver javul. Egy csak kisbetűket használó, 8 karakteres jelszó még gyorsabban esett vissza: a 2025-ös három hetes feltörési időről 2026-ra körülbelül két hétre.

Két dolog érdemel figyelmet ebből a referenciamérésből. Először is, a trend egyirányú — bármi is számít ma „biztonságosnak”, az évről évre gyengül pusztán a hardverfejlődés miatt, ami valós érv amellett, hogy inkább a hosszabb jelszavak felé tévedjünk, mint a jelenlegi minimum felé. Másodszor, kissé meglepő módon, a nyelvi modellek betanítására épített, speciális AI-gyorsító chipek nem bizonyultak gyorsabbnak a jelszavak brute force feltörésében, mint az egyenértékű gamer GPU-k, sőt egyes teszteknél lassabbak voltak — a jelszófeltörés egy tisztán számítási probléma, amely nem profitál azokból a mátrixszorzás-optimalizálásokból, amelyekre az AI-hardvert építették.

Miért nem ugyanaz a „véletlenszerűnek tűnő” és a valóban véletlenszerű

Az entrópiaszámítások valódi, egyenletes véletlenszerűséget feltételeznek. Az emberek által létrehozott jelszavak rendszeresen megsértik ezt a feltételezést, még akkor is, ha összetettnek tűnnek: a billentyűzetmintázatok (Qwerty123!), a leetspeak-helyettesítések (P@ssw0rd), valamint a dátumok vagy nevek szimbólummal kiegészítve mind messze a karakterek száma által sugallt szint alá csökkentik a tényleges entrópiát, mivel a támadók feltörőeszközeit pontosan ilyen mintázatok köré építették. Egy jelszó emberi szemmel véletlenszerűnek tűnhet, és mégis elbukhat egy célzott szótári támadás első néhány millió próbálkozásán belül.

Ez a gyakorlati oka annak, hogy egy kriptográfiailag biztonságos álvéletlenszám-generátort (CSPRNG) használó generátort érdemes előnyben részesíteni a saját magad által kitalált jelszóval szemben. A JavaScript Math.random() függvénye nem kriptográfiailag biztonságos, és alkalmatlan jelszógenerálásra — olyan algoritmus adja meg a kezdőértékét és generálja, amely bizonyos motorokban elég kiszámítható ahhoz, hogy néhány kimenetből rekonstruálható legyen. A Web Crypto API crypto.getRandomValues() függvénye az operációs rendszer kriptográfiai véletlenforrásából merít, így minden karakter valóban, egymástól függetlenül véletlenszerű, és a fenti entrópiamatematika ténylegesen érvényes.

Hány bitre van valójában szükséged?

Nincs egyetlen univerzális szám, mert ez attól függ, mi ellen védekezel:

  • ~40-60 bit: Ellenáll a hétköznapi találgatásnak és a kisméretű automatizált támadásoknak, de elérhető egy jól felszerelt, offline támadás számára egy gyengén hasított adatbázis ellen. Csak valóban alacsony értékű, alacsony következményű fiókokhoz elegendő.
  • ~70-90 bit: Kényelmesen brute force hatókörön kívül esik, még optimalizált feltörő hardverrel szemben is, bármely reális támadási időkeretben. Ésszerű célérték a legtöbb személyes fiókhoz.
  • 100+ bit: Gyakorlatilag elérhetetlen brute force módszerrel a jelenlegi vagy belátható jövőbeli számítástechnikával, kriptográfiai értelemben ugyanolyan erős, mint egy jó titkosítási kulcs. Megfelelő a jelszókezelőd mesterjelszavához vagy más egyetlen hibaponthoz.

Legfontosabb tanulságok

  • Az entrópia hossz × log2(karakterkészlet_mérete) — a hossz lineáris hatással bír, a karakterkészlet mérete logaritmikus hatással, ezért dominál a hossz.
  • Egy rövid, minden karaktertípust tartalmazó jelszónak kevesebb entrópiája lehet, mint egy hosszabb, csak egyetlen típust használó jelszónak.
  • A tényleges entrópia csak akkor egyezik meg az elméleti entrópiával, ha a karakterek valóban, egyenletesen véletlenszerűek — amit egy CSPRNG garantál, az emberi választás pedig általában nem.
  • Törekedj legalább 70 bitre a mindennapi fiókoknál, és legalább 100 bitre a mesterjelszavaknál vagy más egyetlen hibapontoknál.

Miért bízhatsz a PassGenerate-ben

  • A jelszavak helyileg, a böngésződben jönnek létre a Web Crypto API segítségével.
  • Semmilyen jelszó nem kerül továbbításra szerverekre.
  • Kriptográfiailag biztonságos álvéletlenszám-generátort (CSPRNG) használ.
  • A NIST és az OWASP által ajánlott modern biztonsági bevált gyakorlatokat követi.

Hivatkozások

  • Hive Systems 2026-os jelszótáblázat (brute force referenciamérési adatok)
  • NIST SP 800-63B – Digital Identity Guidelines
  • OWASP Authentication Cheat Sheet
  • MDN Web Crypto API dokumentáció

Összegzés

Az entrópia a jelszó erősségének pontos, kiszámítható mértéke, nem pedig az „összetettség” homályos fogalma. A hossz fontosabb, mint a kikényszerített karaktertípus-keverés, mert lineárisan növeli a keresési teret, míg a karakterkészlet mérete csak logaritmikusan — és ez a matematika csak akkor áll fenn, ha a karakterek ténylegesen véletlenszerűek, ezért egy CSPRNG-alapú generátor, mint a PassGenerate, olyan jelszavakat állít elő, amelyek pontosan elérik elméleti entrópiájukat, amit egy ember által választott jelszó gyakorlatilag soha nem ér el.