Инструменты безопасности

Проверка надежности пароля

Анализ в реальном времени с движком zxcvbn: распространенные пароли, последовательности клавиш, ряды, повторяющиеся символы и даты снижают показатель — это гораздо более точная оценка безопасности, чем подсчет количества строчных, прописных букв, цифр и символов. Все вычисления происходят локально; ваш пароль никогда не покидает браузер.

На основе zxcvbn Словарь слабых паролей 100% на стороне клиента Результаты в реальном времени
Вычисляется только на вашем устройстве — никогда не загружается на сервер
k-анонимность: только первые 5 символов SHA-1 хеша покидают ваш браузер
Надежность /100
Очень слабый Отличный
Длина
Эффективная энтропия
бит
Размер набора символов
Взлом в офлайн-режиме (ферма GPU, ~10 миллиардов попыток в секунду)
Взлом в онлайн-режиме (ограничение скорости, ~100 попыток в час)
Расширенные настройки политики

Разделены запятой или переводом строки, нечувствительны к регистру. zxcvbn автоматически учитывает вариации регистра, замены лексики (например, Pa$$w0rd) и инверсии.

Сравнить два пароля

ПОЧЕМУ ЭТО ВАЖНО

Почему «верхний + нижний регистр + цифра + символ» — не гарантия безопасности

P@ssw0rd! соответствует всем четырем требованиям к символам, но все равно входит в топ реальных списков утечек. Надежность зависит от сложности подбора, а не от суммы классов символов.

01

Проверка слабых паролей

Встроенный словарь распространенных паролей и слов строго штрафуется — password, 123456 и P@ssw0rd корректно получают оценку «очень слабый».

02

Обнаружение закономерностей

Проходы по клавиатуре, прямые последовательности, повторы, даты и распространенные слова сокращают эффективное пространство для подбора.

03

Эффективная, а не теоретическая энтропия

Оценка основана на реальных предположениях о подборе по найденным структурам, а не на перемножении размера набора символов на длину.

04

Два сценария атак

Разделенные оценки для офлайн-взлома на GPU и онлайн-подбора с ограничением скорости помогают понять затраты злоумышленника.

05

Пользовательская политика и черный список

Установите минимальную длину и требования к классам символов; добавьте названия компаний или кодовые названия проектов для соответствия корпоративным правилам паролей.

06

Полностью локально

Ваш пароль никогда не покидает браузер и не попадает на сервер; настройки хранятся только в вашем 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 для вашего языка:

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

Баллы и оценки шаблонов могут незначительно отличаться от этой страницы в зависимости от версии библиотеки, но принципы остаются теми же. Для проверок на стороне сервера также установите максимальную длину ввода и ограничение по скорости, чтобы крупные данные не могли нагрузить процессор.

Часто задаваемые вопросы

Как работает этот проверщик надежности паролей?

Он использует zxcvbn – алгоритм с открытым исходным кодом от Dropbox: пароль сравнивается со словарями распространенных паролей, списками английских слов, клавиатурными маршрутами, последовательностями, датами и повторяющимися шаблонами. Примерное среднее число подборов, необходимых атакующему, сопоставляется с баллом от 0 до 4 и оценкой времени взлома.

P@ssw0rd выглядит сложно – почему он «очень слабый»?

Это один из самых узнаваемых слабых паролей в базах утечек. Он напрямую присутствует в словарях zxcvbn, а использование верхнего регистра и замен символов (a→@, o→0) распознается автоматически. Пароль с разными символами и полностью предсказуемой структурой – это именно то, с чего атакующие начинают словарные подборы по правилам.

Какой должна быть длина пароля?

При случайной генерации пароль длиной от 12 символов обычно выдерживает онлайн-атаки, а пароль длиной от 16 символов – офлайн-атаки с использованием GPU в течение многих лет. Длина важнее сложности символов: случайная строка из 20 строчных символов лучше защищает, чем 10-символьный пароль из всех четырех типов символов.

Почему показываются разные времена взлома для офлайн и онлайн атак?

Сценарии атак отличаются: после утечки базы данных атакующий может подбирать хэши локально на GPU со скоростью миллиардов подборов в секунду; против действующего логина ограничение по скорости позволяет сделать лишь несколько подборов в секунду. Один и тот же пароль может выдерживать атаку в триллион раз дольше в одном случае, чем в другом – поэтому оба показателя отображаются.

Мои данные ввода хранятся где-то?

Нет. Ваш пароль находится только в памяти браузера и исчезает при обновлении страницы. Только ваши индивидуальные настройки правил (правила длины, список запрещенных слов) хранятся в локальном хранилище – там никогда не будет пароля.

Связанные инструменты