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.
- Motor
- zxcvbn
- Pontszám
- 0–4 skála
- Adatvédelem
- Sosem kerül feltöltésre
- Szótár
- Beépített gyakori jelszavak
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.
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.
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.
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.
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.
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.
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:
<!-- 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>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
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'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
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)
}
# 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.