Что измеритель силы пароля может сказать, а что нет

Измеритель силы читает строку. А выживет ли пароль, зависит от того, чего в строке нет: от того, как её получили. Почти всё, что измерители понимают неверно, растёт из этого разрыва.

Энтропия принадлежит процессу, а не символам

Введите correct horse battery staple в чекер силы пароля — он напечатает 165 бит и высший вердикт, Очень сильный: 28 символов из пула в 59, потому что видит он только строчные буквы и пробел между словами.

Теперь спросите, откуда взялась эта строка.

Одни и те же 28 символов, разные ответы, и измеритель не различает, на какую из историй он смотрит. Честное чтение его числа — это потолок: сколько пароль стоил бы, если бы каждый символ выбирали случайно.

Список распространённых паролей бьёт правила по классам символов

В Password123! есть прописная буква, строчные, цифра и символ, а длина — двенадцать: он удовлетворяет любому правилу состава, какое когда-либо печатала парольная политика. Арифметика пула согласна: 12 × log2(95) = 78,8 бита.

Чекер печатает 20 бит, Очень слабый, потому что первым отрабатывает список распространённых паролей и срезает всё, что узнаёт.

Узнавание — не буквальное совпадение. Пароль проверяется как набран, как основа, остающаяся после срезания хвостовых цифр и знаков ! @ # $ % ., и как обе эти формы с развёрнутым обратно leet-написанием. Поэтому Password1!, Password123! и P@ssw0rd! сводятся к password и все три читаются как 20 бит, Очень слабый: около часа перебора онлайн, мгновенно офлайн.

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

Замены — первое, что атакующий автоматизирует

Разворот — фиксированная таблица, применяемая к строке в нижнем регистре: @→a, $→s, 0→o, 1→i, 3→e, 4→a, 5→s, 7→t, !→i. Это не хитрость чекера: такие замены — первые строки в любом наборе правил для взлома, поэтому развернуть их обратно — минимум, необходимый, чтобы увидеть то же, что видит атакующий.

Порядок важнее, чем кажется. p@ssw0rd2024 разворачивается в password2o2a — цифры 0 и 4 внутри года становятся буквами, и никакое правило суффиксов уже не найдёт там года. Поэтому хвостовые цифры срезаются и до разворота, и после. Целиком P@ssw0rd2024! читается как 14 бит, помеченных как известный пароль и как год внутри: минута перебора онлайн.

Длина против размера набора символов

Биты — это длина, умноженная на log2(пула), и два входа тянут неодинаково.

Форма Пул Биты
8 символов, только строчные 26 37,6
8 символов, полная клавиатура 95 52,6
12 символов, только строчные 26 56,4
12 символов, полная клавиатура 95 78,8
16 символов, только строчные 26 75,2
16 символов, полная клавиатура 95 105,1

Прочитайте первые три строки подряд. Перевод восьми строчных символов на полную клавиатуру покупает 15,0 бита. Добавление ещё четырёх строчных символов — тот же алфавит, запоминать нечего нового — покупает 18,8 бита. Размер пула сидит внутри логарифма, а длина умножает результат целиком.

По той же причине Tr0ub4d! и J7#pL2mZ читаются одинаково: 53 бита, Средний. Насколько может судить строка, восемь символов полной клавиатуры — это восемь символов полной клавиатуры. Первый сгенерирован, и чтение примерно верное; второй собран из слова, и словарная атака с правилами замен доберётся до него задолго до того, что обещают 53 бита.

Полосы, которые печатает чекер

Биты, после штрафов Вердикт
меньше 28 Очень слабый
от 28 до 40 Слабый
от 40 до 60 Средний
от 60 до 80 Сильный
80 и выше Очень сильный

Несущая часть здесь — «после штрафов»: известный пароль обрезает итог до 20, клавиатурный или алфавитный ряд из четырёх символов вычитает 10, символ, повторённый трижды, вычитает 8, год внутри вычитает 6. qwerty123 собирает и обрезание, и ряд, и падает до 10 бит — пять секунд перебора онлайн.

Два времени взлома — это одно пространство ключей на двух скоростях, с ожидаемой точкой на половине: сотня попыток в секунду против логина с лимитом и десять миллиардов против украденного хеша на ферме GPU. Офлайн-колонка предполагает быстрый хеш без соли. Сайт, хранящий пароли через bcrypt, scrypt или Argon2, медленнее на порядки, так что читайте её как нижнюю границу, а не как прогноз.

Что остаётся делать измерителю

Менеджер паролей, генерирующий случайные строки, закрывает все вопросы выше раньше, чем их зададут. Процесс известен — значит, известна и энтропия: она равна тому, что дают длина и алфавит, выбранные в генераторе паролей, и оценивать её измерителем не нужно. Чекер силы существует для другого случая — для пароля, который человек придумал сам, где строка и есть всё доступное свидетельство, а число на полосе — самое оптимистичное её прочтение.