Что измеритель силы пароля может сказать, а что нет
Измеритель силы читает строку. А выживет ли пароль, зависит от того, чего в строке нет: от того, как её получили. Почти всё, что измерители понимают неверно, растёт из этого разрыва.
Энтропия принадлежит процессу, а не символам
Введите correct horse battery staple в
чекер силы пароля — он напечатает
165 бит и высший вердикт, Очень сильный: 28 символов из пула в 59, потому
что видит он только строчные буквы и пробел между словами.
Теперь спросите, откуда взялась эта строка.
- Если её набрали как четыре слова из длинного списка EFF — 7.776 слов, то есть log2(7776) = по 12,92 бита на слово — она несёт 51,7 бита. Против того, кто знает рецепт и перемалывает украденный быстрый хеш со скоростью десять миллиардов попыток в секунду, это два дня.
- Если её набрали потому, что читали комикс, она не несёт почти ничего. Эта фраза десять лет лежит в словарях для взлома. Это одна попытка, и арифметика пулов к ней не относится.
Одни и те же 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, медленнее на порядки, так что читайте её как нижнюю границу, а не как прогноз.
Что остаётся делать измерителю
Менеджер паролей, генерирующий случайные строки, закрывает все вопросы выше раньше, чем их зададут. Процесс известен — значит, известна и энтропия: она равна тому, что дают длина и алфавит, выбранные в генераторе паролей, и оценивать её измерителем не нужно. Чекер силы существует для другого случая — для пароля, который человек придумал сам, где строка и есть всё доступное свидетельство, а число на полосе — самое оптимистичное её прочтение.