Проверка надежности пароля
Анализ в реальном времени с движком zxcvbn: распространенные пароли, последовательности клавиш, ряды, повторяющиеся символы и даты снижают показатель — это гораздо более точная оценка безопасности, чем подсчет количества строчных, прописных букв, цифр и символов. Все вычисления происходят локально; ваш пароль никогда не покидает браузер.
- Движок
- zxcvbn
- Оценка
- Шкала от 0 до 4
- Конфиденциальность
- Н never загружается на сервер
- Словарь
- Встроенные распространенные пароли
Расширенные настройки политики
Разделены запятой или переводом строки, нечувствительны к регистру. zxcvbn автоматически учитывает вариации регистра, замены лексики (например, Pa$$w0rd) и инверсии.
Сравнить два пароля
ПОЧЕМУ ЭТО ВАЖНО
Почему «верхний + нижний регистр + цифра + символ» — не гарантия безопасности
P@ssw0rd! соответствует всем четырем требованиям к символам, но все равно входит в топ реальных списков утечек. Надежность зависит от сложности подбора, а не от суммы классов символов.
Проверка слабых паролей
Встроенный словарь распространенных паролей и слов строго штрафуется — password, 123456 и P@ssw0rd корректно получают оценку «очень слабый».
Обнаружение закономерностей
Проходы по клавиатуре, прямые последовательности, повторы, даты и распространенные слова сокращают эффективное пространство для подбора.
Эффективная, а не теоретическая энтропия
Оценка основана на реальных предположениях о подборе по найденным структурам, а не на перемножении размера набора символов на длину.
Два сценария атак
Разделенные оценки для офлайн-взлома на GPU и онлайн-подбора с ограничением скорости помогают понять затраты злоумышленника.
Пользовательская политика и черный список
Установите минимальную длину и требования к классам символов; добавьте названия компаний или кодовые названия проектов для соответствия корпоративным правилам паролей.
Полностью локально
Ваш пароль никогда не покидает браузер и не попадает на сервер; настройки хранятся только в вашем localStorage.
Понимание надежности пароля
Как работает система оценки, что означают времена взлома и что действительно делает пароль хорошим.
Как вычисляется оценка zxcvbn по шкале от 0 до 4?
Сначала zxcvbn разбивает пароль на части: слова из словаря (распространенные пароли, английские слова), проходы по клавиатуре, последовательности, повторы, даты и фрагменты подбором перебора.
Он оценивает количество попыток подбора для каждой части, объединяет их в общее количество и сопоставляет с оценкой от 0 до 4. Распространенные трансформации учитываются автоматически — инверсия регистра, замены лексики (@→a, 0→o), суффиксы годов — поэтому P@ssw0rd получает низкую оценку, несмотря на разнообразие символов.
В чем разница между эффективной энтропией и размером набора символов?
Размер набора символов получается перемножением размера алфавита на длину — это теоретический потолок, при условии что каждый символ полностью случайный, что в реальных пар virtually никогда не бывает.
Эффективная энтропия (показанный здесь битовый счет) — это реальное пространство для подбора, которое оценивает zxcvbn после поиска слов из словаря и закономерностей. При одинаковой длине iloveyou2024 имеет гораздо меньшую эффективную энтропию, чем случайная строка.
Как оцениваются времена взлома — надежны ли они?
Взломоустойчивость = примерное число подборов ÷ подборов в секунду. Показаны две скорости: ~10 миллиардов/сек для офлайн-фермы GPU (атакующий получил хэш) и ~100/час для онлайн-логина с ограничением по скорости. Сравнивайте их как порядки величин, а не прогнозы: реальная скорость зависит от алгоритма хэширования (bcrypt/Argon2 в разы медленнее, чем MD5), оборудования и качества словаря. Отклонение в 10× ничего не меняет, а разрыв в миллион раз – уже критичен.
Какой пароль считается хорошим?
Два надежных варианта: случайная строка из 16+ символов в менеджере паролей, уникальная для каждого сайта; или фраза из 4+ не связанных слов (например, correct-horse-battery-staple) – длинная и бессмысленная. Какой бы вариант вы ни выбрали, используйте двухфакторную аутентификацию (MFA) и никогда не повторяйте пароль на разных сайтах.
Мой сайт требует верхний/нижний регистр, цифры, символы – почему такой низкий балл?
Корпоративные правила (длина, типы символов) – это минимальный обязательный порог. Балл zxcvbn показывает, можно ли легко подобрать пароль. Эти два параметра не связаны. Добавление восклицательного знака и года к обычному слову (password!2024) пройдет большинство проверок правил, но будет взломан словарной атакой за несколько секунд.
Мой пароль загружается куда-то?
Нет. Все операции происходят в вашем браузере через JavaScript – нет сетевых запросов, отправляющих пароль, и инструмент работает офлайн. Только ваши индивидуальные правила (правила длины, список запрещенных слов) хранятся локально; там никогда не будет пароля.
Проверка надежности пароля в коде
Чтобы добавить проверку надежности пароля в свою форму регистрации или смены пароля, используйте порт zxcvbn для вашего языка:
<!-- 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}"),
}
}
Баллы и оценки шаблонов могут незначительно отличаться от этой страницы в зависимости от версии библиотеки, но принципы остаются теми же. Для проверок на стороне сервера также установите максимальную длину ввода и ограничение по скорости, чтобы крупные данные не могли нагрузить процессор.
Часто задаваемые вопросы
Как работает этот проверщик надежности паролей?
Он использует zxcvbn – алгоритм с открытым исходным кодом от Dropbox: пароль сравнивается со словарями распространенных паролей, списками английских слов, клавиатурными маршрутами, последовательностями, датами и повторяющимися шаблонами. Примерное среднее число подборов, необходимых атакующему, сопоставляется с баллом от 0 до 4 и оценкой времени взлома.
P@ssw0rd выглядит сложно – почему он «очень слабый»?
Это один из самых узнаваемых слабых паролей в базах утечек. Он напрямую присутствует в словарях zxcvbn, а использование верхнего регистра и замен символов (a→@, o→0) распознается автоматически. Пароль с разными символами и полностью предсказуемой структурой – это именно то, с чего атакующие начинают словарные подборы по правилам.
Какой должна быть длина пароля?
При случайной генерации пароль длиной от 12 символов обычно выдерживает онлайн-атаки, а пароль длиной от 16 символов – офлайн-атаки с использованием GPU в течение многих лет. Длина важнее сложности символов: случайная строка из 20 строчных символов лучше защищает, чем 10-символьный пароль из всех четырех типов символов.
Почему показываются разные времена взлома для офлайн и онлайн атак?
Сценарии атак отличаются: после утечки базы данных атакующий может подбирать хэши локально на GPU со скоростью миллиардов подборов в секунду; против действующего логина ограничение по скорости позволяет сделать лишь несколько подборов в секунду. Один и тот же пароль может выдерживать атаку в триллион раз дольше в одном случае, чем в другом – поэтому оба показателя отображаются.
Мои данные ввода хранятся где-то?
Нет. Ваш пароль находится только в памяти браузера и исчезает при обновлении страницы. Только ваши индивидуальные настройки правил (правила длины, список запрещенных слов) хранятся в локальном хранилище – там никогда не будет пароля.