Перебор как арифметика
Brute force, «грубая сила», это способ угадывания пароля перебором вариантов, пока не найдётся подходящий. В самом чистом виде программа пробует все комбинации подряд: сначала короткие, потом длиннее. Никакой хитрости здесь нет, и весь вопрос сводится к арифметике: сколько вариантов нужно перебрать и как быстро это можно делать.
Число вариантов растёт с длиной степенно. Если каждый символ выбирается из множества в несколько десятков знаков, то добавление одного символа умножает работу перебора в десятки раз. Поэтому пароль из шести символов исчерпывается очень быстро, а пароль из шестнадцати случайных символов остаётся недостижимым при разумных ресурсах.
Онлайн и офлайн: две разные ситуации
Перебор бывает онлайн, когда атакующий пробует пароли на живом сервисе, и офлайн, когда у него на руках похищенная база хэшей и подбор идёт на его собственном оборудовании. Эти сценарии принципиально различаются скоростью.
Онлайн-перебор упирается в ограничения сервиса: задержки после неудачной попытки, временное отключение входа после нескольких ошибок, проверка на человека. Офлайн-перебор ничем не сдерживается, кроме вычислительной мощности, и графические ускорители способны проверять огромное число вариантов в секунду для быстрых хэш-функций. Именно поэтому базы паролей хранят через специальные медленные алгоритмы с солью, а не через простой быстрый хэш.
Словари и маски: перебор с умом
Полный перебор редко бывает выгоден, поэтому реальные инструменты сначала проверяют вероятное. Атака по словарю берёт список часто встречающихся паролей и слов, а также утёкшие ранее реальные пароли людей. Правила мутации добавляют к слову цифры в конце, заменяют «о» на ноль, делают первую букву заглавной. Атака по маске задаёт шаблон вроде «слово и четыре цифры».
Отсюда следует вывод, который многие упускают: пароль «Sunshine2024!» формально содержит все типы символов, но угадывается быстро, потому что описывается шаблоном. Стойкость даёт не формальная сложность, а непредсказуемость и длина. Об этом подробнее рассказывает страница про парольную фразу и про энтропию пароля.
Что останавливает перебор
Со стороны сервиса действуют ограничение частоты попыток, временное отключение входа, задержка, растущая с каждой ошибкой, проверка капчей после серии неудач и оповещение владельца о подозрительных входах. Самой сильной мерой остаётся второй фактор: даже угаданный пароль сам по себе перестаёт открывать доступ.
Со стороны пользователя работают длинный уникальный пароль или парольная фраза, менеджер паролей и включённая двухфакторная защита. Уникальность важна и по другой причине: если пароль повторяется на нескольких сервисах, его не нужно перебирать вовсе, достаточно взять из утечки, как в атаке подстановки учётных данных.
Как заметить подбор у себя
Если вы администрируете собственный сервер, журналы входа покажут признаки: сотни неудачных попыток с одного адреса или с множества адресов подряд, часто на стандартные имена вроде admin. Для SSH такие записи обычно лежат в журнале аутентификации, и их наличие само по себе нормально: интернет-сканеры проверяют доступные серверы постоянно.
Защитой служит вход по ключам вместо паролей, смена стандартного порта как вспомогательная мера, ограничение по адресам и инструменты автоматического отключения входа после серии ошибок. Для аккаунтов в сервисах смотрите раздел с историей входов и уведомления о новых устройствах.
Что учитывают при хранении паролей
Стойкость к офлайн-переборам зависит и от того, как сервис хранит пароли. Правильная схема не записывает пароль как есть и не ограничивается быстрой хэш-функцией. Используются специальные алгоритмы, намеренно требующие времени и памяти, например bcrypt, scrypt или Argon2, а к каждому паролю добавляется уникальная случайная соль. Соль делает бесполезными заранее подготовленные таблицы и заставляет перебирать каждый пароль отдельно.
Пользователь не может проверить это снаружи, но может выбирать сервисы, которые публично описывают свою практику, и всегда подстраховываться собственной длиной и уникальностью пароля. Чем медленнее вычисляется хэш, тем меньше вариантов в секунду доступно тому, у кого утекла база, и тем ценнее длинный пароль.
На практике полезно включить уведомления о неудачных попытках входа и о входах с новых устройств. Если письма о подозрительной активности приходят регулярно, это повод проверить, не повторяется ли пароль где-то ещё, и усилить его.