Biztonsági Eszközök

Jelszóerősség-ellenőrző

Valós idejű elemzés a zxcvbn motorral: a gyakori jelszavas szótárak, billentyűzetes sorozatok, szekvenciák, ismétlések és dátumok pontot vonnak le tőled — ez sokkal valóságosabb biztonsági mutató, mint a kis-/nagybetűk, számjegyek és szimbólumok számolása. Minden lokálisan fut; a jelszavad soha nem hagyja el a böngészőt.

A zxcvbn motor hajtja Gyenge jelszavakat tartalmazó szótár 100%-ban kliensoldali Valós idejű eredmények
Csak a te eszközödön számítódik ki — soha nem kerül feltöltésre
k-animitás: a SHA-1 kivonatnak csak az első 5 karaktere hagyja el a böngészőt
Erősség /100
Nagyon gyenge Kiváló
Hossz
Hatékony entrópia
bit
Karakterkészlet mérete
Offline támadás (GPU farm, ~10 milliárd találat/mp)
Online támadás (korlátott, ~100 találat/óra)
Haladó szabályzatbeállítások

Vesszővel vagy sortöréssel elválasztva, nem számít a kis- és nagybetű. A zxcvbn automatikusan felismeri a változásokat, a leet helyettesítéseket (pl. Pa$$w0rd) és a visszafordításokat.

Két jelszó összehasonlítása

MIÉRT SZÁMÍT EZ

Miért nem jelent biztonságot a „nagybetű + kisbetű + szám + szimbólum” kombináció

A P@ssw0rd! minden karaktertípusnak megfelel, mégis szerepel a valódi adatszivárgások listáinak élén. Az erősség a kitalálhatóságról szól, nem a karaktertípusok számtani összegzéséről.

01

Gyenge jelszavak illesztése

A gyakori jelszavakból és szavakból álló beépített szótár erősen büntetve van – a password, 123456 és a P@ssw0rd helyesen nagyon gyengének számít.

02

Mintázatok felismerése

A billentyűzeten haladó sorok, egyenes szekvenciák, ismétlések, dátumok és gyakori szavak mind csökkentik a tényleges kitalálási lehetőségek számát.

03

Tényleges, nem elméleti entrópia

A pontszám a szerkezetek alapján becsüli a valódi kísérletek számát – nem a karakterkészlet méretének és a hosszának szorzatát.

04

Két támadási forgatókönyv

Különböző becslések a offline GPU-s feltöréshez és az online sebességkorlátozott kitaláláshoz segítenek megérteni a támadó költségeit.

05

Egyedi irányelvek és tiltólist

Állítsd be a minimális hosszt és a karaktertípusokra vonatkozó követelményeket; adj hozzá cégneveket vagy projektkódneveket a vállalati jelszós szabályokhoz.

06

Teljesen helyi működés

A jelszavad soha nem hagyja el a böngészőt, és nem érintkezik szerverrel; a beállítások csak a saját localStorage-ben tárolódnak.

A jelszóerősség megértése

Hogyan működik a pontszámozás, mit jelent a feltörési idő, és mi teszi igazán jó jelszót?

Hogyan számítja ki a zxcvbn a 0–4 közötti pontszámot?

A zxcvbn először darabokra bontja a jelszót: szótári szavakra (gyakori jelszavak, angol szavak), billentyűzetes sétákra, szekvenciákra, ismétlésekre, dátumokra és brute-force töredékekre.

Minden darabhoz becsüli a kísérletek számát, összeadja őket, és hozzárendeli a 0–4 pontszámhoz. A gyakori átalakításokat automatikusan figyelembe veszi – kis- és nagybetű megfordítása, leet helyettesítések (@→a, 0→o), évszám utótagok – ezért szerepel rosszul a P@ssw0rd a változatosság ellenére.

Mi a különbség a tényleges entrópia és a karakterkészlet mérete között?

A karakterkészlet mérete az ábécé méretének és a hosszának szorzata – ez egy elméleti felső korlát, amely feltételezi, hogy minden karakter teljesen véletlenszerű, amire a valódi jelszavak szinte soha nem képesek.

A tényleges entrópia (itt megjelenő bitmennyiség) az a tényleges kitalálási lehetőség, amelyet a zxcvbn becsül a szótári szavak és mintázatok megtalálása után. Ugyanazon hosszúság esetén az iloveyou2024 sokkal kisebb tényleges entrópiával rendelkezik, mint egy véletlenszerű karakterlánc.

Hogyan becsüli a zxcvbn a feltörési időt – megbízhatóak ezek az adatok?

Törési idő = becsült találati szám ÷ másodpercenkénti találatok száma. Két sebesség van feltüntetve: ~10 milliárd/mp egy offline GPU farmnál (a támadó birtokolja a kivonatot), és ~100/óra egy online sebességkorlátos bejelentkezésnél.

Ezeket nagyságrendnek tekintsd, nem előrejelzésnek: a valós sebesség a kivonat algoritmustól (a bcrypt/Argon2 nagyságrendekkel lassabb, mint az MD5), a hardvertől és a szójegyzék minőségétől függ. A 10-szeres eltérés számít; az egymilliárdszoros különbség már nem.

Mi teszi igazán jó jelszót?

Két jól bevált módszer: egy 16+ karakteres véletlenszerű karakterlánc jelszókezelőből, mely minden oldalon egyedi; vagy egy 4+ egymáshoz nem kapcsolódó szóból álló jelszó (pl. correct-horse-battery-staple) – hosszú és értelmetlen.

Bármelyiket is választod, párosítsd többfaktoros hitelesítéssel (MFA), és soha ne használd újra ugyanazt a jelszót oldalakon keresztül.

Az oldalam nagybetűt/kisbetűt/számot/szimbólumot igényel – miért alacsony a pontszám?

A vállalati szabályzat (hossz, karakterosztályok) egy megfelelőségi alsó küszöböt jelent: erre a kérdésre válaszol: "megfelel-e?". A zxcvbn pontszám erre válaszol: "meg tudják-e fejteni?". A kettő független egymástól.

Egy közszóhoz csillagozás és egy év hozzáadása (pl. jelszó!2024) megfelel a legtöbb szabályzatnak, de másodpercek alatt bukik egy szójegyzékes támadáson.

Feltöltődik a jelszavam valahova?

Nem. Minden a te böngésződben fut JavaScript segítségével – nincs hálózati kérés, ami elküldené a jelszót, és offline is működik. Csak a te egyéni szabályzatod (hosszbeli szabályok, tiltott lista) van tárolva helyben; ez soha nem tartalmazza a jelszót.

Jelszóerősség ellenőrzése kódban

Ha élő erősségellenőrzést szeretnél adni a saját regisztrációs vagy jelszóváltoztatási űrlapodhoz, használj egy zxcvbn portot a te nyelvedhez:

JavaScript
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
  const res = zxcvbn('P@ssw0rd!');
  console.log(res.score, res.crack_times_display);
</script>
            
Node.js
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';

const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
            
PHP
composer require bjeavons/zxcvbn-php
            
<?php
require __DIR__ . '/vendor/autoload.php';

use ZxcvbnPhp\Zxcvbn;

$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
            
Python
pip install zxcvbn
            
from zxcvbn import zxcvbn

res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
            
Go
go get github.com/nbutton23/zxcvbn-go
            
package main

import (
  "fmt"
  zxcvbn "github.com/nbutton23/zxcvbn-go"
)

func main() {
  res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
  fmt.Println(res.Score, res.Guesses)
}
            
Rust
# Add dependency
cargo add zxcvbn
            
use zxcvbn::zxcvbn;

fn main() {
    match zxcvbn("P@ssw0rd!", &[]) {
        Ok(estimate) => {
            println!("score: {}", estimate.score()); // 0..4
            if let Some(times) = estimate.crack_times() {
                println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
            }
        }
        Err(err) => eprintln!("zxcvbn error: {err}"),
    }
}
            

A pontszámok és mintabecslések kissé eltérhetnek ettől az oldaltól a könyvtárverzióktól függően, de az alapelvek ugyanazok. Szerveroldali ellenőrzéshez érvényesíts egy hosszkorlátot és sebességkorlátot is, hogy a túlméretes bemenetek ne használhassanak fel túl sok CPU-t.

Gyakran ismételt kérdések

Hogyan működik ez a jelszóerősség-ellenőrző?

A zxcvbn-t használja, a Dropbox nyílt forráskódú algoritmusát: a jelszót összeveti gyakori jelszavak szójegyzékeivel, angol szavak listáival, billentyűzeti futásokkal, sorozatokkal, dátumokkal és ismétlődő mintákkal. A becsült átlagos találati szám, amire a támadónak szüksége van, le van képezve egy 0–4 pontszámra és a törési idő becslésekre.

A P@ssw0rd összetettnek tűnik – miért "nagyon gyenge"?

Ez az egyik legikonikusabb gyenge jelszó a jogsértési korpuszokban. Közvetlenül szerepel a zxcvbn szójegyzékeiben, és a nagybetűzés és a leet helyettesítések (a→@, o→0) automatikusan felismerésre kerülnek. A változó karakterek teljesen kiszámítható szerkezettel pontosan az, amit a szabályalapú támadói szójegyzékek először kipróbálnak.

Mennyire hosszúnak kell lennie egy jelszónak?

Ha véletlenszerűen generáljuk, a 12+ karakter jellemzően legyőzi az online támadásokat, míg a 16+ sok évig ellenáll az offline GPU-s feltörésnek. A hosszabb jobb, mint a karakterek összetettsége: egy véletlenszerű 20 karakteres kisbetűs karakterlánc jobb, mint egy 10 karakteres, mind a négy osztályt tartalmazó keverék.

Miért különválasztani az offline és online törési időket?

A támadási forgatókönyvek eltérőek: adatbázis-jogsértés után a támadó helyben próbálkozhat a kivonatokkal GPU-kon másodpercenként milliárdos találatszámmal; egy élő bejelentkezés ellen a sebességkorlát csak néhányat tesz lehetővé másodpercenként. Ugyanaz a jelszó egy forgatókönyvben egy billiószor tovább bírja, mint a másikban – ezért van mindkettő feltüntetve.

El vannak tárolva a bemeneteim valahol?

Nem. A jelszavad csak a böngésződ memóriájában él, és frissítéskor eltűnik. Csak a te egyéni szabályzat beállításaid (hosszbeli szabályok, tiltott lista) maradnak a helyi tárhelyen – soha nem tartalmaznak jelszót.

Kapcsolódó eszközök