• 🚫🗄️ Nincs szerveroldali mentés
  • 🚫📊 Nincs analitika/követés
  • 🚫📡 Nincs hálózati kérés a jelszó tartalmával

Jelszó, PIN kód és egyéni kód generálása

Kriptográfiailag biztonságos véletlenszám-generátorral (CSPRNGKriptográfiailag Biztonságos Álvéletlenszám-Generátor – olyan véletlenszám-forrás, amely jelszavak és titkosítási kulcsok generálásához is elég erős (szemben pl. a Math.random()-mal).) készült jelszavak, valós idejű entrópia- és feltörésiidő-becsléssel.

Generált jelszó

— még nincs generálva —

A jelszó/PIN/kód generálása teljes egészében a böngésződben történik (window.crypto.getRandomValues). Ez a böngésző fejlesztői eszközeinek Hálózat (Network) fülén is ellenőrizhető: generáláskor nem indul semmilyen kérés a jelszó tartalmával. Az egyetlen hálózati hívás a generálás alatti, automatikus adatszivárgás-ellenőrzés, amely a Have I Been Pwned szolgáltatást kérdezi le – k-anonimitássalCsak a jelszó SHA-1 lenyomatának első 5 karaktere hagyja el a böngészőt; a szolgáltatás emiatt sosem ismerheti meg a teljes jelszót vagy a teljes hash-t., a teljes jelszó elküldése nélkül.

EntrópiaAzt fejezi ki bitben, hány próbálkozás szükséges átlagosan a jelszó kitalálásához – minél nagyobb a szám, annál nehezebb kitalálni.-elemzés

–
bit entrópia
–
Részletes bontás megjelenítése

Becsült feltörési idő, támadási forgatókönyvenként

Ezek durva, tájékoztató jellegű becslések (átlagos eset, a kombinációk felénél találja el a támadó) – a valós idő számos tényezőtől függ (pl. sózás, hash-algoritmus paraméterezése, egyedi jelszókövetelmények).

Adatszivárgás-ellenőrzés (legutóbb generált elem)

Legutóbb generált elem eredménye

— generálj egy jelszót/PIN-t/kódot az automatikus ellenőrzéshez —

Minden generálás után automatikusan lefut az ellenőrzés a legutóbb generált elemre. A jelszó SHA-1 lenyomatának csak az első 5 karaktere hagyja el a böngészőt (k-anonimitás) – a teljes jelszó soha nem kerül elküldésre, sem a mi szerverünkre, sem máshova. A háttérben a Have I Been Pwned nyilvános, ingyenes adatbázisát kérdezzük le.

Munkamenet-előzmények (0)

Még nincs generálva semmi ebben a munkamenetben.

Ez a lista kizárólag a böngésző memóriájában létezik ebben a munkamenetben – sehova nem kerül elküldve vagy elmentve, és az oldal frissítésekor/bezárásakor automatikusan elvész.

Súgó / Módszertan

Az alábbiakban részletesen leírjuk, hogyan működik az eszköz — a generálás kriptográfiai módszertanától az entrópia- és feltörésiidő-becslés képletein át az adatszivárgás-ellenőrzésig. Kattints egy címre a kibontásához.

Jó jelszó – rövid ellenőrzőlista

  • Legalább 12–16 karakter hosszú (minél hosszabb, annál jobb)
  • Kis- és nagybetű, számjegy és speciális karakter keveréke
  • Minden fióknál egyedi – sehol máshol nem használt
  • Nem szerepel ismert adatszivárgásban (ellenőrizd az "Ellenőrzés" dobozban)
  • Jelszókezelőben tárolva, nem fejben vagy papíron
  • Nem tartalmaz személyes adatot (név, születési dátum, kedvenc csapat)
  • Nem szótári szó, billentyűzet-minta (pl. "qwerty") vagy egyszerű sorozat
Hogyan generálja a jelszavakat, PIN-eket és egyéni kódokat?

A generálás teljes egészében a böngésződben zajlik, a window.crypto.getRandomValues() segítségével. Ez ugyanaz a kriptográfiailag biztonságos véletlenszám-generátor (CSPRNG), amelyet a böngésződ egyéb biztonságkritikus funkciói (pl. TLS-kulcsok) is használnak — nem a Math.random(), ami jelszóhoz NEM biztonságos.

Egyetlen véletlen bájtsorozatból torzítás nélkül kell egy adott tartományba eső egész számot előállítani (pl. "válassz egyet a 94 karakter közül"). Ehhez elutasításos mintavételt (rejection sampling) használunk: ha a kapott véletlen érték kívül esne az egyenletes eloszláshoz szükséges tartományon, egyszerűen eldobjuk és újat húzunk — így minden karakter pontosan ugyanolyan eséllyel kerül kiválasztásra, nincs "modulo-torzítás".

Jelszó módban emellett Fisher–Yates keverést alkalmazunk: előbb biztosítjuk, hogy minden bekapcsolt karaktertípusból (kis-/nagybetű, számjegy, speciális karakter) legalább egy szerepeljen, majd az egészet véletlenszerűen összekeverjük — így ezek sosem kerülnek kiszámítható (pl. mindig az elején lévő) pozícióba.

Hogyan számoljuk az entrópiát (bitben)?

Az entrópia azt fejezi ki, hány próbálkozás szükséges átlagosan a jelszó kitalálásához, kettes alapú logaritmus (bit) skálán. Az alapképlet: hossz × log₂(készletméret).

  • Jelszó mód: a bekapcsolt karaktertípusok (kisbetű, nagybetű, számjegy, speciális karakter) összesített, a kizárások (összetéveszthető karakterek, egyedi kizárás) utáni mérete a "készletméret".
  • PIN mód: minden pozíció 10 lehetséges számjegy (0–9), így a képlet hossz × log₂(10). Ez a kulcstér elméleti mérete — a gyenge minták (lásd lentebb) kizárása ezen felül tovább csökkenti a ténylegesen kitalálható PIN-ek számát.
  • Egyéni karakterkészlet: a megadott karakterek közül az egyedi (duplikátumoktól mentes) darabszám a készletméret.
  • Egyéni minta: minden helyjelölő (L, l, D, S) a saját log₂ értékével járul hozzá; a literál (fix) karakterek 0 bitet adnak, hiszen azok egy támadó számára előre ismertek.

Az "Entrópia-elemzés" doboz pontosan megmutatja az aktuális beállításokhoz tartozó bontást és a végső képletet.

Hogyan becsüljük a feltörési időt?

A becslés abból indul ki, hogy egy támadó átlagosan a lehetséges kombinációk felénél találja el a helyes jelszót (nem a legrosszabb, hanem az átlagos esetet nézzük). A képlet:

idő = 2^entrópia / (2 × próbálkozás/másodperc)

Mivel a "próbálkozás/másodperc" attól függ, hogyan próbálkozik a támadó, 5 különböző, széles körben idézett forgatókönyvet mutatunk egyszerre (a "Feltörési idő" dobozban): a korlátozott online bejelentkezéstől (~100/óra) az állami szereplő szintű GPU-klaszterig (10¹²/mp). Ezek durva, tájékoztató becslések — nem veszik figyelembe pl. a sózást, a konkrét hash-algoritmus paraméterezését, vagy hogy a jelszó szótárban/mintában szerepel-e.

Mit csinálnak a PIN-mód szűrői?

Egy PIN keresési tere sokkal kisebb, mint egy jelszóé (4 jegynél csak 10 000 lehetőség), ezért a valódi védelem nagy része abból áll, hogy kiszűrjük az ismerten leggyakrabban kitalált/ellopott mintákat:

  • Gyakori, ismert PIN-ek kizárása – valós adatvesztési elemzésekből ismert lista (pl. 1234, 0000, 2580), csak 4 jegynél alkalmazva.
  • Számsorok kizárása – növekvő/csökkenő sorozatok (1234, 9876), körkörösen is (pl. 8901).
  • Ismétlődő minták kizárása – egyetlen jegy ismétlése (0000) vagy rövid minta ismétlődése (1212).
  • Ne kezdődjön 0-val – egyes rendszerek ezt megkövetelik.

A szűrés visszautasításos mintavétellel történik: a generátor addig húz új, teljesen véletlen jegysort, amíg az meg nem felel a szabályoknak — ez nem torzítja a kimenet eloszlását, szemben egy minta utólagos "javításával".

Hogyan írjak mintát az Egyéni módban?

A minta helyjelölőkből és szó szerint megjelenő (literál) karakterekből áll:

Lvéletlen nagybetű (A–Z)
lvéletlen kisbetű (a–z)
Dvéletlen számjegy (0–9)
Svéletlen speciális karakter
\Xaz X karakter szó szerint (escape), pl. \L → literál "L"
bármi másszó szerint bekerül a kimenetbe (pl. kötőjel, szóköz)

Például a Ll-DDDD-SS minta egy nagybetűt, egy kisbetűt, egy kötőjelet, 4 számjegyet, egy kötőjelet, majd 2 speciális karaktert generál — valami ilyesmit: Qd-4821-@!

Hogyan működik az adatszivárgás-ellenőrzés (k-anonimitás)?

A Have I Been Pwned nyilvános, ingyenes "Pwned Passwords" adatbázisát kérdezzük le, de úgy, hogy közben a teljes jelszó soha ne hagyja el a böngészőt:

  1. A böngésző kiszámolja a jelszó SHA-1 lenyomatát.
  2. Csak a lenyomat első 5 karaktere ("prefix") kerül elküldésre a szolgáltatásnak.
  3. A szolgáltatás visszaküldi az összes ismert lenyomatot, amely ezzel az 5 karakterrel kezdődik (jellemzően több száz-ezer találat).
  4. A böngésző helyben megkeresi köztük a teljes lenyomat egyezését.

Ez a hivatalosan ajánlott "k-anonimitás" módszer — sem a teljes jelszó, sem a teljes hash nem jut el sehova. Ez az egyetlen hálózati hívás, amit az alkalmazás valaha kezdeményez, és minden generálás után automatikusan lefut a legutóbbi elemre.

Hova kerülnek a generált jelszavaim? Naplózza őket bárki?

Sehova, és nem.

  • Nincs szerveroldali generálás, nincs adatbázis, nincs naplózás.
  • A "Munkamenet-előzmények" lista kizárólag a böngésző memóriájában (egy sima JavaScript-tömbben) létezik — nem localStorage-ban vagy sessionStorage-ban —, ezért az oldal frissítésekor vagy bezárásakor automatikusan, véglegesen elvész.
  • Az egyetlen böngésző-tárolás a világos/sötét mód beállítása (ez nem jelszóadat).
  • Az oldal nem tartalmaz analitikai/követő szkriptet.

Ez a böngésző fejlesztői eszközeinek Hálózat (Network) fülén bárki számára ellenőrizhető.

Jelszót vagy PIN kódot használjak? Melyiket, mikor?

Ökölszabályként: ahol csak lehet, jelszót vagy egyéni kódot használj, ne PIN-t – a PIN kód terjedelme (négyzetes esetben mindössze 10 000 lehetőség) sokkal kisebb, mint egy jelszóé.

  • Jelszó – amikor a rendszer tetszőleges karaktert elfogad (weboldalak, alkalmazások, jelszókezelők). Itt szinte mindig ez a legerősebb választás.
  • PIN kód – amikor a rendszer maga is csak számjegyeket fogad el, és jellemzően korlátozza a próbálkozások számát is (bankkártya, telefon képernyőzár, kaputelefon). Ilyenkor a hosszabb PIN (6+ jegy) és a beépített gyenge-minta-szűrők (lásd feljebb) sokat számítanak.
  • Egyéni mód – amikor egy adott rendszer speciális formátumot ír elő (pl. "pontosan 8 karakter, legalább egy nagybetűvel és számmal") – ilyenkor a minta-szintaxissal pontosan lekövetheted az elvárt formátumot.
Használhatom jelszókezelő programmal együtt?

Igen, sőt: ez a kombináció ajánlott. Ez az eszköz kizárólag generál és (kérésre) ellenőriz egy jelszót – nem tárolja és nem jegyzi meg azt. A gyakorlatban:

  1. Generálj itt egy jelszót a kívánt beállításokkal.
  2. Másold ki (a "Legutóbbi másolása" gombbal, vagy a QR-kóddal más eszközre).
  3. Illeszd be a jelszókezelődbe (pl. böngésző beépített kezelője, Bitwarden, 1Password, KeePass), ami majd biztonságosan, titkosítva tárolja.

Ez a munkamegosztás logikus: itt a véletlenszerűség minőségén van a hangsúly, a jelszókezelőben pedig a biztonságos, tartós tároláson.

Mit mond a NIST SP 800-63B irányelv a jelszavakról?

Az amerikai NIST SP 800-63B az egyik legszélesebb körben idézett hitelesítési irányelv, és néhány pontban meglepően eltér a régi, megszokott "jelszó-szabályoktól":

  • A hossz fontosabb, mint a bonyolultság – egy hosszú, egyszerűbb jelszó gyakran erősebb, mint egy rövid, de kötelező nagybetűt/számot/szimbólumot tartalmazó.
  • Ne írj elő kötelező, rendszeres jelszócserét – csak akkor kelljen váltani, ha van konkrét gyanú a jelszó kompromittálódására (ez az egyik oka, amiért ez az eszköz adatszivárgás-ellenőrzést kínál, nem pedig lejárati időt).
  • Ellenőrizd a jelszót ismert, kiszivárgott listák ellen generáláskor/beállításkor – pontosan ezt csinálja az "Ellenőrzés" doboz, k-anonimitással.
  • Engedj minden nyomtatható karaktert, ideértve a szóközt is, és legalább 64 karakter hosszúságig ne korlátozz mesterségesen.
  • Ne írj elő "biztonsági kérdéseket" (anya leánykori neve stb.) másodlagos hitelesítésként – ezek könnyen kideríthetők.

Ez az irányelv nagyrészt megegyezik azzal, amit ez az eszköz is gyakorlatba ültet: hosszú, véletlenszerű jelszavak generálása, és adatszivárgás elleni ellenőrzés kötelező, rendszeres csere helyett.

Miért pont ezek a korlátok (pl. max. 128 karakter)?

A hossz- és darabszám-korlátok nem önkényesek – mindegyiknek konkrét oka van:

  • Jelszó: 8–128 karakter. Az alsó korlát a NIST SP 800-63B minimum-ajánlása. A felső korlát nem biztonsági, hanem védekező jellegű: megakadályozza, hogy egy véletlen (pl. script által beírt) extrém nagy érték felesleges számítási terhet okozzon – 128 karakter már jóval a gyakorlatban valaha szükséges méret fölött van.
  • PIN: 4–12 jegy. 4 jegy alatt a kulcstér (10 000 alatt) annyira kicsi, hogy a mintaszűrés sem tud érdemben segíteni; 12 jegy fölött már gyakorlatilag senki nem használ PIN-t (a legtöbb rendszer eleve nem is engedne ennél hosszabbat).
  • Egyéni karakterkészlet: max. 256 karakter, egyéni minta: max. 256 karakter. Ugyanaz a védekező logika, mint a jelszónál – bőven elég bármilyen valós használati esethez, de korlátozza a visszaélésszerűen nagy bemeneteket.
  • Darabszám: max. 10 egyszerre. Ennyi bőven elég egy "recovery kód"-szerű listához is, miközben nem terheli feleslegesen a böngészőt (és az automatikus adatszivárgás-ellenőrzés is csak a legutóbbi elemre fut, hogy ne induljon 10 külön hálózati kérés egyszerre).
  • Tömeges teszt: max. 200 sor / 2 MB fájl. Ez is védekező korlát: megakadályozza, hogy egy véletlenül kiválasztott, túl nagy fájl lefagyassza a böngészőlapot.
Változásnapló – mit fejlesztettünk eddig?

Rövid, kronologikus összefoglaló a fontosabb fejlesztésekről:

  • Jelszó-, PIN- és egyéni kód generálás (karakterkészlet és minta-szintaxis), 100% kliensoldali CSPRNG-vel.
  • Valós idejű entrópia-elemzés és feltörésiidő-becslés, 5 támadási forgatókönyvvel.
  • Automatikus adatszivárgás-ellenőrzés (Have I Been Pwned, k-anonimitással) minden generáláskor.
  • Munkamenet-előzmények lista (kizárólag böngésző-memóriában, oldalfrissítéskor törlődik).
  • Önálló Jelszó-teszter szekció: egy tetszőleges, meglévő jelszóra ugyanazok a tesztek (entrópia, feltörés, adatszivárgás) futtathatók le, a generátortól teljesen elkülönítve.
  • QR-kód, "Összes másolása", nyomtatásbarát nézet, vágólap automatikus törlése 30 másodperc után.
  • Sötét/világos mód, DominoDomain.hu márka-arculat, teljes körű SEO- és biztonsági keményítés (CSP, .htaccess, robots.txt).
  • Gyors szabály-sablonok (Bank / Wifi / Vállalati AD, kiemeléssel jelezve, melyik van kiválasztva), mindig aktív kompakt nézet, tömeges (lista/CSV) jelszó-teszt CSV-exporttal, adatvédelmi nyilatkozat.
Nem azt látom, amit vártam – mit tegyek?

Ha egy nemrég frissített funkció (pl. a Jelszó-teszter megnyitásakor a generáló doboznak el kellene tűnnie) nálad másképp viselkedik, mint amit a dokumentáció ír, szinte mindig gyorsítótárazás (cache) áll a háttérben – nem a kód hibája. Ellenőrzési sorrend:

  1. Kemény frissítés a böngészőben: Ctrl+Shift+R (Windows/Linux) vagy Cmd+Shift+R (Mac) – ez kikényszeríti a JS/CSS friss letöltését.
  2. Próbáld inkognitó/privát ablakban – ha ott már helyesen működik, a probléma a normál böngésződ gyorsítótárában van.
  3. Ellenőrizd, hogy a szerveren tényleg a legfrissebb index.php van-e – ha CDN-t (pl. Cloudflare) használsz a domain előtt, ott is lehet szükség gyorsítótár-ürítésre ("Purge Cache").
  4. Böngésző fejlesztői eszközei (F12) → Console fül – ha ott piros hibaüzenet van, az valódi kódhiba jele lehet; ha nincs, a fenti lépések valamelyike valószínűleg megoldja.
Adatvédelmi nyilatkozat

Milyen adatot gyűjtünk? Semmilyen jelszó-, PIN- vagy egyéb generált/beírt adatot. Nincs szerveroldali mentés, nincs adatbázis, nincs naplózás – ezt technikailag is kizárja, hogy a generálás és az elemzés teljes egészében a böngésződben fut.

Sütik / helyi tárolás. Egyetlen böngésző-tárolt adat van: a sötét/világos mód beállítása (localStorage, kulcs: dominodomain-theme). Ez nem jelszóadat, és nem személyes adat. Semmilyen követő cookie-t vagy analitikai szkriptet nem használunk.

Külső szolgáltatás. Az automatikus és a kézi adatszivárgás-ellenőrzéshez a böngésződ közvetlenül a Have I Been Pwned (haveibeenpwned.com) szolgáltatásához kapcsolódik – ez az egyetlen kimenő hálózati hívás, amit az oldal valaha kezdeményez, és abban is csak a jelszó SHA-1 lenyomatának első 5 karaktere szerepel (k-anonimitás), soha a teljes jelszó. Erre a hívásra a Have I Been Pwned saját adatvédelmi szabályzata vonatkozik, amit a fenti linken tekinthetsz meg.

Szerverüzemeltető. Az oldal PHP-alapú, statikus kiszolgálású – a webszerver (Apache) a szokásos technikai access logot vezetheti (IP-cím, időbélyeg, kért URL), ez a szerver üzemeltetőjének általános gyakorlata, nem ennek az alkalmazásnak a funkciója, és nem tartalmaz jelszóadatot (mivel az sosem kerül a szerverhez).

Kapcsolat. Az oldal a DominoDomain.hu márka alatt üzemel.