Narzędzia bezpieczeństwa

Sprawdzanie siły hasła

Analiza w czasie rzeczywistym za pomocą silnika zxcvbn: słowniki popularnych haseł, sekwencje na klawiaturze, ciągi, powtórzenia i daty kosztują Cię punkty — to znacznie bardziej miarodajny miernik bezpieczeństwa niż liczenie klas małych/wielkich liter, cyfr lub symboli. Wszystko działa lokalnie; Twoje hasło nigdy nie opuszcza przeglądarki.

Zasilane przez zxcvbn Słownik słabych haseł W 100% po stronie klienta Wyniki w czasie rzeczywistym
Obliczane wyłącznie na Twoim urządzeniu — nigdy nie przesyłane
K-anonimowość: do Twojej przeglądarki dociera tylko pierwsze 5 znaków skrótu SHA-1
Siła /100
Bardzo słabe Wyśmienite
Długość
Efektywna entropia
bity
Rozmiar zbioru znaków
Atak offline (farma GPU, ~10 miliardów prób/s)
Atak online (z limitem prędkości, ~100 prób/godz)
Zaawansowane ustawienia polityki

Oddzielone przecinkami lub nowymi liniami, bez uwzględniania wielkości liter. Narzędzie zxcvbn automatycznie wychwytuje warianty wielkości liter, zamiany na znaki podobne (np. Pa$$w0rd) oraz odwrócenia.

Porównaj dwa hasła

DLACZEGO TO WAŻNE

Dlaczego „wielkie + małe litery + cyfra + symbol” nie oznacza bezpieczeństwa

P@ssw0rd! spełnia wszystkie cztery warunki dotyczące znaków, a mimo to znajduje się na górze rzeczywistych list naruszeń bezpieczeństwa. Siła zależy od przewidywalności, a nie od sumy klas znaków.

01

Dopasowywanie słabych haseł

Wbudowany słownik popularnych haseł i słów surowo karane – hasło, 123456 i P@ssw0rd są poprawnie oceniane jako bardzo słabe.

02

Wykrywanie wzorców

Chodniki po klawiaturze, proste sekwencje, powtórzenia, daty i popularne słowa zmniejszają efektywną przestrzeń zgadywania.

03

Efektywna, a nie teoretyczna entropia

Wynik szacuje rzeczywiste próby zgadywania na podstawie znalezionych struktur – a nie rozmiar zbioru znaków pomnożony przez długość.

04

Dwa scenariusze ataków

Oddzielne szacunki dla ataków offline przy użyciu karty graficznej oraz ataków online z ograniczeniami szybkości budują intuicję dotyczącą kosztów atakującego.

05

Niestandardowa polityka i czarna lista

Ustaw minimalną długość i wymagania dotyczące klas znaków; dodaj nazwy firm lub kody projektów, aby spełnić reguły haseł w organizacji.

06

W pełni lokalne działanie

Twoje hasło nigdy nie opuszcza przeglądarki ani nie dotyka serwera; ustawienia znajdują się wyłącznie w Twoim localStorage.

Zrozumienie siły hasła

Jak działa ocenianie, co oznaczają czasy złamań i co właściwie tworzy dobre hasło.

Jak obliczany jest wynik 0–4 narzędzia zxcvbn?

zxcvbn najpierw dzieli hasło na części: słowniki (popularne hasła, słowa angielskie), chodniki po klawiaturze, sekwencje, powtórzenia, daty i fragmenty brute-force.

Szacuje liczbę prób zgadywania na część, łączy je w całkowitą liczbę prób zgadywania i mapuje na wynik 0–4. Popularne przekształcenia są uwzględniane automatycznie – odwracanie wielkości liter, zamiany na znaki podobne (@→a, 0→o), przyrostki lat – dlatego P@ssw0rd ma słaby wynik pomimo różnorodności znaków.

Jaka jest różnica między efektywną entropią a rozmiarem zbioru znaków?

Rozmiar zbioru znaków mnoży wielkość alfabetu przez długość – to teoretyczna granica zakładająca, że każdy znak jest w pełni losowy, co w rzeczywistych hasłach prawie nigdy nie występuje.

Efektywna entropia (pokazana liczba bitów) to rzeczywista przestrzeń zgadywania, którą zxcvbn szacuje po znalezieniu słów i wzorców z słownika. Przy tej samej długości hasło iloveyou2024 ma znacznie mniejszą efektywną entropię niż losowy ciąg znaków.

Jak szacowane są czasy złamań – czy są wiarygodne?

Czas złamania = szacowana liczba prób ÷ liczba prób na sekundę. Wyświetlane są dwie prędkości: ~10 miliardów/sek dla farmy GPU w trybie offline (atakujący posiada hasz) oraz ~100/godzin dla logowania z ograniczeniami prędkości w trybie online.

Traktuj je jako rzędy wielkości, a nie prognozy: rzeczywista prędkość zależy od algorytmu haszującego (bcrypt/Argon2 są rzędów wielkości wolniejsze niż MD5), sprzętu i jakości słownika. Błąd o czynnik 10 nic nie zmieni – liczy się dopiero wielokrotna przepaść.

Co właściwie sprawia, że hasło jest dobre?

Dwa solidne podejścia: losowy ciąg znaków o długości 16+ pobrany z menedżera haseł, unikalny dla każdej witryny; lub fraza hasłowa składająca się z 4+ niepowiązanych słów (np. poprawny-konik-bateria-szpilka) – długa i bez znaczenia.

Niezależnie od wyboru, łącz ją z uwierzytelnianiem wieloskładnikowym (MFA) i nigdy nie używaj tego samego hasła w różnych witrynach.

Moja witryna wymaga wielkich/małych liter/cyfr/symboli – dlaczego niska ocena?

Polityka firmy (długość, klasy znaków) to minimum zgodności: odpowiada na pytanie "czy to się zgadza?". Ocena z zxcvbn odpowiada na pytanie "czy można to odgadnąć?". Te dwa są niezależne.

Dodanie wykrzyknika i roku do wspólnego słowa (hasło!2024) przechodzi większość kontroli polityki, ale spada w ataku słownikowym w ciągu kilku sekund.

Czy moje hasło jest gdzieś przesyłane?

Nie. Wszystko działa w Twojej przeglądarce za pomocą JavaScript – nie ma żądania sieciowego, które wysyłałoby hasło, a narzędzie działa również offline. Tylko Twoja niestandardowa polityka (reguły długości, lista blokowanych haseł) jest przechowywana lokalnie; nigdy nie zawiera hasła.

Sprawdzanie siły hasła w kodzie

Aby dodać aktywną ocenę siły do własnego formularza rejestracji lub zmiany hasła, użyj portu zxcvbn dla swojego języka:

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}"),
    }
}
            

Oceny i szacunki wzorców mogą nieznacznie różnić się od tej strony w zależności od wersji bibliotek, ale zasady są takie same. W przypadku kontroli po stronie serwera również wymuś maksymalną długość i ograniczenie prędkości, aby zbyt duże dane wejściowe nie mogły obciążyć procesora.

Często zadawane pytania

Jak działa ten sprawdzacz siły hasła?

Wykorzystuje zxcvbn, algorytm open-source z Dropboxa: hasło jest porównywane ze słownikami słabych haseł, listami słów w języku angielskim, sekwencjami na klawiaturze, sekwencjami, datami i powtarzającymi się wzorcami. Szacowana średnia liczba prób potrzebnych atakującemu jest mapowana na ocenę 0–4 oraz szacunki czasu złamania.

P@ssw0rd wygląda skomplikowanie – dlaczego jest "bardzo słaby"?

Jest to jedno z najbardziej ikonicznych słabych haseł w bazie naruszeń. Pojawia się bezpośrednio w słownikach zxcvbn, a wielkość liter oraz podstawienia leet (a→@, o→0) są automatycznie rozpoznawane. Różnorodne znaki w całkowicie przewidywalnej strukturze są dokładnie tym, co atakujące stosujący słowniki oparte na regułach próbują jako pierwsze.

Jak długie powinno być hasło?

W przypadku generacji losowej 12+ znaków zwykle chroni przed atakami online, podczas gdy 16+ wytrzymuje złamanie offline na GPU przez wiele lat. Długość ma większe znaczenie niż złożoność znaków: losowy ciąg małych liter o długości 20 znaków pokonuje 10-znakową mieszankę wszystkich czterech klas.

Jak długie powinno być hasło?

Scenariusze ataków różnią się: po naruszeniu bazy danych atakujący może próbować hasze lokalnie na GPU w tempie miliardów prób na sekundę; w przypadku aktywnego logowania ograniczenie prędkości pozwala na zaledwie kilkanaście prób na sekundę. To samo hasło może przetrwać bilion razy dłużej w jednym scenariuszu niż w drugim – dlatego wyświetlane są oba.

Czy moje dane wejściowe są gdzieś przechowywane?

Nie. Twoje hasło znajduje się tylko w pamięci przeglądarki i znika po odświeżeniu. Tylko ustawienia Twojej niestandardowej polityki (reguły długości, lista blokowanych haseł) są przechowywane w local storage – nigdy nie zawierają hasła.

Powiązane narzędzia