Kontrola síly hesla
Analýza v reálném čase s motorem zxcvbn: slovníky běžných hesel, posloupnosti na klávesnici, sekvence, opakování a data vám snižují body – mnohem přesnější měřítko zabezpečení než počítání tříd velkých/malých písmen, číslic a symbolů. Vše běží lokálně; vaše heslo nikdy neopustí prohlížeč.
- Motor
- zxcvbn
- Skóre
- Stupnice 0–4
- Ochrana soukromí
- Nikdy nahráváno
- Slovník
- Vestavěná běžná hesla
Pokročilá nastavení pravidel
Odděleno čárkou nebo novým řádkem, nerozlišuje velká a malá písmena. zxcvbn automaticky detekuje variace písmen, nahrazování číslicemi (např. Pa$$w0rd) a zpětná zapsání.
Porovnat dvě hesla
PROČ NA TOM ZÁLEŽÍ
Proč kombinace „velká + malá písmena + číslice + symbol“ nezaručuje bezpečnost
Heslo P@ssw0rd! splňuje všechny čtyři požadavky na znaky a přesto se nachází v horních seznamech uniknutých hesel. Síla spočívá v těkosti uhodnutí, nikoli v součtu tříd znaků.
Porovnávání slabých hesel
Vestavěný slovník běžných hesel a slov je přísně hodnocen – heslo „password“, „123456“ a „P@ssw0rd“ jsou správně ohodnocena jako velmi slabá.
Detekce vzorců
Cesty po klávesnici, rovné posloupnosti, opakování, data a běžná slova snižují efektivní prostor pro uhodnutí.
Efektivní, nikoli teoretická entropie
Skóre odhaduje skutečné pokusy o uhodnutí z nalezených struktur – nikoli jako součet velikosti znakové sály a délky.
Dva scénáře útoku
Oddělené odhady pro offline útoky pomocí GPU a online útoky s omezením rychlosti pomáhají pochopit náklady útočníka.
Vlastní pravidla a blokovaná slova
Nastavte minimální délku a požadavky na třídy znaků; přidejte názvy společností nebo kódová jména projektů pro splnění firemních pravidel pro hesla.
Plně lokální
Vaše heslo nikdy neopustí prohlížeč a nedostane se na server; nastavení jsou uložena pouze ve vašem localStorage.
Pochopení síly hesla
Jak funguje bodovací systém, co znamenají časy prolomení a co vlastně tvoří dobré heslo.
Jak se počítá skóre zxcvbn v rozsahu 0–4?
zxcvbn nejprve rozdělí heslo na části: slovníková slova (běžná hesla, anglická slova), cesty po klávesnici, posloupnosti, opakování, data a fragmenty hrubé síly.
Odhadne počet pokusů o uhodnutí pro každou část, spojí je do celkového počtu pokusů a převede je na skóre v rozsahu 0–4. Běžné transformace jsou automaticky započteny – velikost písmen, nahrazování číslicemi (@→a, 0→o), přípony let – proto má P@ssw0rd špatné skóre navzdory rozmanitosti znaků.
Jaký je rozdíl mezi efektivní entropií a velikostí znakové sály?
Velikost znakové sály násobí velikost abecedy délkou – to je teoretický strop, který předpokládá, že každý znak je plně náhodný, což skutečná hesla téměř nikdy nejsou.
Efektivní entropie (zde zobrazený počet bitů) je skutečný prostor pro uhodnutí, který zxcvbn odhadne po nalezení slovníkových slov a vzorců. Při stejné délce má iloveyou2024 mnohem nižší efektivní entropii než náhodný řetězec.
Jak se odhadují časy prolomení – jsou spolehlivé?
Čas prolomení = odhadovaný počet pokusů ÷ počet pokusů za sekundu. Zobrazují se dvě rychlosti: ~10 miliard/sekundu pro offline farmu GPU (útočník má hash) a ~100/hodinu pro online přihlášení s omezením rychlosti.
Berte je jako řády velikosti, ne jako předpovědi: skutečná rychlost závisí na hashovacím algoritmu (bcrypt/Argon2 jsou o mnoho řádů pomalejší než MD5), hardwaru a kvalitě slovníku. Odchylka o 10× nic nezmění; záleží na rozdílu v řádu milionů.
Co vlastně tvoří dobré heslo?
Dvě osvědčené možnosti: náhodný řetězec o délce 16+ znaků ve správci hesel, jedinečný pro každý web; nebo heslo složené z 4+ nesouvisejících slov (například correct-horse-battery-staple) – dlouhé a nesmyslné.
Ať si vyberete cokoliv, používejte vícefaktorové ověření (MFA) a nikdy nepoužívejte stejné heslo na více webech.
Můj web požaduje velká/malá písmena/číslice/symboly – proč nízké skóre?
Firemní zásady (délka, znakové třídy) představují minimální požadavek: odpovídají na otázku „vyhovuje?“. Skóre zxcvbn odpovídá na otázku „lze uhádnout?“. Obě věci jsou nezávislé.
Přidání vykřičníku a roku k běžnému slovu (heslo!2024) projde většinou kontrolami zásad, ale v okamžicích selže na slovníkový útok.
Je moje heslo někde nahráno?
Ne. Vše běží ve vašem prohlížeči přes JavaScript – neprobíhá žádné síťové připojení, které by heslo odesílalo, a nástroj funguje i offline. Pouze vaše vlastní zásady (pravidla délky, blokovaná slova) jsou uloženy lokálně; nikdy v nich není heslo.
Kontrola síly hesla v kódu
Chcete-li přidat živé kontroly síly do svého registračního formuláře nebo formuláře pro změnu hesla, použijte port zxcvbn pro váš jazyk:
<!-- 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}"),
}
}
Skóre a odhady vzorů se mohou mírně lišit od této stránky v závislosti na verzích knihoven, ale principy jsou stejné. Pro kontroly na straně serveru také vynucte maximální délku a omezení rychlosti, aby se příliš velké vstupy nemohly použít k zatížení CPU.
Často kladené otázky
Jak tento kontrolor síly hesel funguje?
Používá zxcvbn, open-source algoritmus od Dropboxu: heslo se porovnává se slovníky často používaných hesel, seznamy anglických slov, stupy na klávesnici, posloupnosti, data a opakující se vzory. Odhadovaný průměrný počet pokusů, které útočník potřebuje, je mapován na skóre v rozsahu 0–4 a odhady času prolomení.
P@ssw0rd vypadá komplexně – proč je „velmi slabé“?
Je to jedno z nejznámějších slabých hesel v databázích úniků. Přímě se objevuje ve slovnících zxcvbn a velká písmena spolu s leetovými substitucemi (a→@, o→0) jsou automaticky rozpoznány. Rozmanité znaky s plně předvídatelnou strukturou jsou přesně to, co útočenské slovníky založené na pravidlech zkoušejí jako první.
Jak dlouhé má být heslo?
Při náhodném generování 12+ znaků typicky odolá online útokům, zatímco 16+ znaků odolá offline prolomení na GPU po mnoho let. Délka záleží více než složitost znaků: náhodný řetězec malých písmen o délce 20 znaků je silnější než 10 znaků kombinace všech čtyř tříd.
Proč oddělit offline a online časy prolomení?
Scénáře útoků se liší: po úniku databáze může útočník zkoušet hashe lokálně na GPU s miliardami pokusů za sekundu; na živé přihlášení umožňuje omezení rychlosti jen několik pokusů za sekundu. Stejné heslo může v jednom scénáři přežít bilionkrát déle než v druhém – proto se oba časy zobrazují.
Jsou moje vstupy někde uloženy?
Ne. Vaše heslo zůstává pouze v paměti prohlížeče a po obnovení stránky zmizí. Pouze vaše vlastní nastavení zásad (pravidla délky, blokovaná slova) jsou uložena v lokálním úložišti – nikdy v nich není heslo.