Jelszógenerátor és -ellenőrző eszköz

Professzionális jelszógeneráló és -ellenőrző eszköz, amely erős jelszavakat és könnyen megjegyezhető jelszókifejezéseket hoz létre, kötegelt generálást, egyediséggaranciát, erősségértékelést és szabályzatellenőrzést támogat. Funkciói közé tartozik a kriptográfiailag biztonságos véletlenszerű forrás, konfigurálható karaktersorozatok, hasonló karakterek kiszűrése, kötegelt duplikációstatisztikák és egykattintásos másolási funkció. Többnyelvű kódpéldákat, jelszótudásbázist, biztonsági bevált gyakorlatokat és szabályzattesztelő eszközöket tartalmaz. Minden művelet a böngészőben helyben fut, biztosítva a adatvédelmet és biztonságot.

Jelszógenerátor

Szimbólumcsoportok Kiválasztása
Tipp: Kizárhat karaktereket csoportok kiválasztásával vagy közvetlenül az egyes karakterekre kattintással.
Eredmény

Jelszóházirend-tesztelő

Eredmények
  • Hossz
  • Kisbetű
  • Nagybetű
  • Számjegyek
  • Szimbólumok
  • Szekvenciális
  • Ismétlődések
  • Tiltólista
Minden ellenőrzés helyben, a böngésződben történik.

Jelszókifejezés-generátor

A szavak egy 1271 szóból álló, egyértelmű listából, kriptográfiailag biztonságos véletlenszerűséggel (Web Crypto) kerülnek kiválasztásra; 6 szó körülbelül 62 bit entrópiát ad –– használj 8 szót az erősebbhez.

Jelszóhashelés Csalólap

Argon2id
  • Használjon Argon2id-t ésszerű memóriaigényes paraméterekkel
  • Idő ≥ 2 menet, memória ≥ 64MB (hangolja a környezetnek megfelelően)
  • Tároljon egyedi sót minden felhasználó számára; opcionálisan használjon paprikát az alkalmazás szintjén
PBKDF2
  • Válassza a SHA-256 vagy SHA-512 algoritmust ≥ 210k iterációval (szükség szerint hangolja)
  • Használjon egyedi sót minden hash-hez; támogassa a paraméterfrissítéseket
  • Vegyen át magasabb költségparamétereket a felhasználó következő bejelentkezése során
BCrypt
  • Állítsa a költséget 10–14 között, a szerver képességeitől függően
  • Kerülje a csonkolási problémákat; hashelje a teljes jelszót
  • Implementálás sebességkorlátot és megfigyelést a hitelesítési végpontokon
Forrás: NIST SP 800-63B, OWASP ASVS. A paramétereknek illeszkedniük kell a hardverképességekhez és SLO-hoz.

Jelszóerősség-értékelő

Az erősséget az entrópia alapján közelítjük meg: entrópia = log2(karakterhalmaz mérete) × hossz. A nagyobb karakterhalmaz és hossz jobb ellenállást biztosít a feltöréssel szemben.

  • Gyenge: < 50 bit –– Csak egyszeri vagy alacsony értékű forgatókönyvekhez alkalmas
  • Közepes: 50–80 bit –– Elfogadható alacsony kockázatú forgatókönyvekhez
  • Erős: 80–110 bit –– Ajánlott alapértelmezett cél
  • Kiváló: > 110 bit –– Ajánlott adminisztrátori vagy kritikus fiókokhoz

Megjegyzés: A valós támadási modellek változhatnak; kerülj a jelszavak újbóli használatát és engedélyezd a többtényezős hitelesítést (MFA).

Használat

  • Válassza ki a hosszúságot és a karaktersorozatot (kisbetűk/nagybetűk/számok/szimbólumok); szükség esetén engedélyezze a hasonló karakterek elkerülését és az egyes karakterek szükségességét
  • Pontosabb vezérléshez: zárjon ki bizonyos karaktereket vagy karaktercsoportokat, vagy válasszon szimbólumrészhalmazokat
  • Válaszd ki, hány jelszót szeretnél generálni, majd kattints a Generálás gombra; a kötegelt eredmények automatikusan ismétlődés-mentesítve lesznek, és egyszerre másolhatók
  • Meglévő jelszavak ellenőrzéséhez használja a Szabályzattesztelőt; könnyen megjegyezhető jelszókifejezésekhez használja a Jelszókifejezés-generátort

Funkciók

  • Kriptográfiailag biztonságos véletlenszerű forrás (Web Crypto)
  • Konfigurálható karaktersorozatok és szimbólumcsoportok
  • Hasonló karakterek kiszűrése és egyedi kizárások
  • 1-100 jelszó kötegelt generálása, mindig egyedi
  • Erősség és entrópia metrikák
  • Szabályzattesztelő és jelszókifejezés-generátor
  • Többnyelvű kódpéldák
  • Egykattintásos másolás (egyetlen vagy összes)

Jelszógenerálási példák

Erős
24 hosszú, tartalmaz nagybetűket, kisbetűket, számjegyeket és szimbólumokat
Könnyen megjegyezhető
16 hosszú, tartalmaz nagybetűket, kisbetűket és számjegyeket; kerüli a hasonló karaktereket

Jelszótudásbázis

1) Jelszóerősség és entrópia
  • Entrópia ≈ log2(karaktersorozat mérete) × hosszúság; a hosszúság általában nagyobb hozzájárulást tesz
  • Ajánlott célok: Általános fiókok ≥ 80 bit; Magas jogosultságú/pénzügyi fiókok ≥ 110 bit
  • Nagyobb karaktersorozat + hosszabb hosszúság → nagyobb ellenállás a feltöréssel szemben
2) Hosszúság vs. komplexitás
  • A szimbólumok vakon hozzáadása kevésbé hatékony, mint a hosszúság növelése
  • Kerülje a kiszámítható mintákat (pl. mindig „Nagybetűs első betű + záró szám!”)
  • Előnyös a megfelelő hosszúság, majd mérsékelten növelni a karakterdiverzitást
3) Gyakori hibák és anti-minták
  • Billentyűzet-sorozatok (pl. qwerty), ismétlődő blokkok, születésnapok/évek könnyen célzottak a szabályok által
  • A „gyökérjelszó + oldal utótag” használata változatok újrahasználatát hozza létre, koncentrálva a kockázatot és könnyebbé téve a jelszavak feltörését
  • Soha ne használja újra ugyanazt a jelszót több webhelyen
4) Jelszókezelési ajánlások
  • Használjon jelszókezelőt; biztosítson egyedi jelszavakat minden oldalhoz; engedélyezze az MFA-t a kritikus fiókokhoz
  • Kerülje a jelszavak egyszerű szövegben történő továbbítását nyilvános csatornákon; szükség esetén használjon „kimondható” jelszókifejezéseket
  • Azonnal változtassa meg és tegye egyedivé a jelszavakat, ha szivárgást vagy újrahasználatot észlel
5) Jelszókifejezés-irányelvek
  • A 4–6 véletlenszerű szó kombinációja általában erős és könnyen megjegyezhető
  • Keverje az elválasztójeleket, nagybetűvel kezdett szavakat és számokat, hogy növeld az erősséget és az olvashatóságot
  • Kerüld a közismert kifejezések, dalszövegek vagy híres idézetek közvetlen összekapcsolását

Jelszóbiztonsági bevált gyakorlatok

Bevált gyakorlatok
  • Használj megfelelő hosszúságot: általános fiókokhoz 16+ karakter, kritikus fiókokhoz 24+ karakter
  • Emlékezhetőség esetén részesítsd előnyben a jelmondatokat; használj jelszókezelőt a véletlenszerű, nagy erejű jelszavak tárolásához
  • Lehetőség szerint engedélyezd a többtényezős hitelesítést (MFA)
  • Sose használd újra a jelszavaidat különböző oldalakon – minden fióknak egyedi jelszóra van szüksége
Entrópia és erősség

Az entrópia a kiszámíthatatlanságot méri a hossz és a karakterkészlet mérete alapján – minél magasabb az entrópia bitek száma, általában annál erősebb a jelszó.

  • Növeld a hosszúságot az elsődleges célként a maximális erősség-növelés érdekében
  • Használj több karakterkészletet, ha megvalósítható
  • Túl sok karakter kizárása csökkenti a karakterkészlet méretét és gyengíti az erősséget
Szabályzatok és változtatás
  • Előnyben részesítsd a hosszúsági követelményeket és a közismert/kiszivárgott jelszavakat tiltó listákat az összetett összetételi szabályokkal szemben
  • Kerüld a gyakori, kötelező jelszóváltoztatásokat; csak akkor változtasd, ha sérülést vagy kockázatot észlelsz
  • Használd a feltört jelszavak listáit a gyakran használt vagy kiszivárgott jelszavak blokkolására
Jelmondatok
  • Használj 4–6 véletlenszerű szót elválasztójelekkel összekapcsolva, pl.: tó. répa. bolygó_7
  • Kerüld a híres idézeteket, dalszövegeket vagy más közismert kifejezéseket; a véletlenszerűség fontosabb, mint az „okosság”
  • Kritikus fiókok esetén használj jelszókezelőt a valóban magas entrópiájú véletlenszerű jelszavak tárolásához
Generálási beállítások tippek
  • "Minden kiválasztott készletet kötelezően" biztosítja, hogy minden választott kategóriából legalább egy karakter megjelenjen
  • "Hasonló karakterek kerülése" javítja az olvashatóságot, de kissé csökkenti a karakterkészlet méretét
  • A szimbólumok korlátozhatók a célrendszer által támogatott részhalmazra
Szerveroldali tárolás
  • Sose tárolj jelszavakat egyszerű szövegben; hasznlj erős hashinget (Argon2id/PBKDF2/Bcrypt) sóval
  • Konfiguráld megfelelően a paramétereket (memória/idő/költség); szükség esetén fontolóra vehető a pepper használata
  • Korlátozd a bejelentkezési kísérletek számát és monitorozd a sikertelen próbálkozásokat; alkalmazd a CAPTCHA-t vagy eszköz-ellenőrzést támadások idején
Többtényezős hitelesítés és helyreállítás
  • Előnyben részesítsd a TOTP-t vagy hardverkulcsokat; a lehetőség szerint kerüld az SMS-t
  • Biztonságos helyreállítási folyamatok többtényezős vagy e-mailes ellenőrzéssel, és kényszeríts várakozási időszakokat
  • Biztosíts tartalék helyreállítási kódokat, és ösztönözd a felhasználókat azok biztonságos tárolására
Brute Force védelem
  • Valósíts meg fokozatos késleltetéseket vagy zárolásokat IP/eszköz kockázati pontszámmal
  • Alkalmazj WAF-okat és sebességkorlátozást az API-okra és bejelentkezési űrlapokra
  • Monitorozd a hitelesítő adatok feltöltését, és ösztönözd a felhasználókat az egyedi jelszavak használatára
Helyi tárolás és kezelés
  • Használj megbízható jelszókezelőt a tároláshoz és automatikus kitöltéshez
  • Soha ne oszd meg a jelszavakat nyílt szöveges csevegésben vagy e-mailben; csapatokhoz titkoságkezelő eszközöket használj
  • Ha offline írod le a jelszavakat, gondoskodj fizikai biztonságukról
Jogi nyilatkozat: Ez az eszköz a jelszavakat helyben, a böngésződben generálja Web Crypto használatával; az adatokat nem küldi el egyetlen szerverre sem.

Jelszavak Generálása Programozási Nyelvekkel

JavaScript (Web Crypto)
function randomPassword(length = 16, sets = {lower:true, upper:true, digits:true, symbols:true}) {
  const pools = {
    lower: 'abcdefghijklmnopqrstuvwxyz',
    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789',
    symbols: '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
  };
  let pool = '';
  for (const k of Object.keys(sets)) if (sets[k]) pool += pools[k];
  if (!pool) throw new Error('No charset');
  // Rejection sampling removes modulo bias
  const limit = Math.floor(0x100000000 / pool.length) * pool.length;
  const buf = new Uint32Array(1);
  let out = '';
  for (let i = 0; i < length; i++) {
    do { crypto.getRandomValues(buf); } while (buf[0] >= limit);
    out += pool[buf[0] % pool.length];
  }
  return out;
}
Python (secrets)
import secrets

def random_password(length=16, lower=True, upper=True, digits=True, symbols=True):
    pools = {
        'lower': 'abcdefghijklmnopqrstuvwxyz',
        'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits': '0123456789',
        'symbols': '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    }
    pool = ''.join(v for k, v in pools.items() if locals()[k])
    if not pool:
        raise ValueError('No charset')
    return ''.join(secrets.choice(pool) for _ in range(length))
PHP (random_int)
function random_password($length = 16, $sets = ['lower'=>true,'upper'=>true,'digits'=>true,'symbols'=>true]) {
    $pools = [
        'lower' => 'abcdefghijklmnopqrstuvwxyz',
        'upper' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits' => '0123456789',
        'symbols' => '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    ];
    $pool = '';
    foreach ($sets as $k => $on) if ($on) $pool .= $pools[$k];
    if ($pool === '') throw new Exception('No charset');
    $out = '';
    for ($i = 0; $i < $length; $i++) {
        $out .= $pool[random_int(0, strlen($pool)-1)];
    }
    return $out;
}
Go (crypto/rand)
package main

import (
  "crypto/rand"
  "math/big"
)

func RandomPassword(length int, pool string) (string, error) {
  out := make([]byte, length)
  for i := 0; i < length; i++ {
    nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(pool))))
    if err != nil { return "", err }
    out[i] = pool[nBig.Int64()]
  }
  return string(out), nil
}
Java (SecureRandom)
import java.security.SecureRandom;

public class Pw {
  static final String POOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
  static final SecureRandom SR = new SecureRandom();
  static String randomPassword(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
      int idx = SR.nextInt(POOL.length());
      sb.append(POOL.charAt(idx));
    }
    return sb.toString();
  }
}
C# (.NET RandomNumberGenerator)
using System;
using System.Security.Cryptography;

public static class Pw {
  public static string RandomPassword(int length, string pool) {
    // GetInt32 draws an unbiased value in [0, pool.Length)
    var chars = new char[length];
    for (int i = 0; i < length; i++) {
      chars[i] = pool[RandomNumberGenerator.GetInt32(pool.Length)];
    }
    return new string(chars);
  }
}
Rust (rand + getrandom)
use rand::rngs::OsRng;
use rand::Rng;

fn random_password(length: usize, pool: &str) -> String {
    // gen_range is uniform, so there is no modulo bias
    let chars: Vec = pool.chars().collect();
    (0..length)
        .map(|_| chars[OsRng.gen_range(0..chars.len())])
        .collect()
}

fn main() {
    let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
    let pw = random_password(16, pool);
    println!("{}", pw);
}