15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
14.10.2024

Как определить надёжность пароля: техническое руководство по энтропии, устойчивости к взлому и безопасному управлению учётными данными

Надёжность пароля — это количественная мера его устойчивости к несанкционированному обнаружению посредством атак методом перебора, словарных атак, подстановки учётных данных и статистического угадывания. Она определяется тремя взаимосвязанными переменными: длиной, разнообразием символов и непредсказуемостью (энтропией). Пароль, набирающий более 60 бит энтропии Шеннона и содержащий не менее 16 символов из смешанного набора, считается криптографически стойким по действующим стандартам NIST SP 800-63B.

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

Что на самом деле измеряет надёжность пароля

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

H = L × log₂(N)

Где H — энтропия в битах, L — длина пароля в символах, а N — размер пула символов (количество различных символов, которые должен перебрать злоумышленник).

Более высокое значение энтропии означает экспоненциально большую работу по угадыванию. Разница между 40 битами и 80 битами — это не двойная сложность, а сложность в 2^40 раз выше, что соответствует примерно одному триллиону дополнительных попыток угадывания.

Пул символов и его влияние на энтропию

Набор символовРазмер пула (N)Энтропия на символ
Только строчные буквы (a–z)264,70 бит
Строчные + прописные буквы525,70 бит
Буквенно-цифровые (a–z, A–Z, 0–9)625,95 бит
Полный печатный ASCII (со спецсимволами)956,57 бит
Парольная фраза Diceware (большой список EFF)7 776 слов12,92 бит на слово

Эта таблица иллюстрирует, почему добавление даже одного спецсимвола к чисто буквенному паролю даёт измеримый прирост энтропии, и почему парольная фраза Diceware из четырёх слов может превзойти сложный, но короткий пароль.

Ключевые факторы, определяющие надёжность пароля

Длина пароля

Длина — это единственная наиболее значимая переменная в формуле энтропии. Удвоение длины пароля возводит в квадрат пространство поиска при фиксированном пуле символов. Рассмотрим контраст:

  • 8-символьный пароль с использованием полного печатного ASCII: H = 8 × 6.57 = ~52.6 bits
  • 16-символьный пароль с использованием того же набора символов: H = 16 × 6.57 = ~105 bits

При 52,6 битах современные GPU-ускоренные взломщики, работающие с Hashcat на хешах MD5, могут исчерпать пространство за несколько часов. При 105 битах то же оборудование потребовало бы геологических временных масштабов. NIST SP 800-63B рекомендует минимум 8 символов для паролей, выбираемых пользователями, однако администраторы, ориентированные на безопасность, должны устанавливать минимум в 12–16 символов без искусственного верхнего предела.

Разнообразие символов и сложность

Смешение классов символов расширяет N и, следовательно, увеличивает энтропию на символ. Надёжный пароль должен включать:

  • Прописные буквы (A–Z)
  • Строчные буквы (a–z)
  • Цифры (0–9)
  • Специальные символы (!, @, #, $, %, ^, &, * и т. д.)

Однако есть важный нюанс, который многие руководства упускают: обязательные правила сложности могут парадоксальным образом ослаблять пароли. Когда пользователей вынуждают включать спецсимвол, они предсказуемо добавляют ! или 1 в конец слова. Этот шаблон хорошо известен взломщикам и закодирован в наборах правил, используемых такими инструментами, как Hashcat. Истинная сложность достигается за счёт случайности, а не за счёт выполнения формальных требований.

Непредсказуемость и устойчивость к атакам на основе шаблонов

Современный взлом паролей — это не просто перебор. Такие инструменты, как Hashcat и John the Ripper, используют атаки на основе правил, которые применяют преобразования к словарным словам: написание первой буквы с заглавной, замена a на @, добавление годов и т. д. Пароль вроде P@ssw0rd!23 выглядит сложным, но тривиально взламывается, поскольку следует хорошо известному шаблону подстановки.

Истинная непредсказуемость означает:

  • Никаких словарных слов, даже с заменами в стиле лит-спик
  • Никаких «клавиатурных дорожек» (qwerty, zxcvbn)
  • Никакой личной информации (имена, даты рождения, клички питомцев)
  • Никаких предсказуемых шаблонов в начале или конце (суффикс !, префикс 1)

Наиболее надёжным источником непредсказуемости является криптографически стойкий генератор случайных чисел (CSPRNG), который используется внутри авторитетных менеджеров паролей.

Уникальность для каждой учётной записи

Повторное использование учётных данных превращает единственную утечку в системную компрометацию. Когда взламывается сервис, хранящий пароли в открытом виде или с использованием слабого MD5, злоумышленники немедленно проверяют эти учётные данные на других высокоценных целях — техника, называемая подстановкой учётных данных. Основными целями являются такие сервисы, как Gmail, банковские порталы и панели управления хостингом.

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

Методы оценки надёжности пароля

Вычисление энтропии

Формула энтропии H = L × log₂(N) является наиболее объективной мерой. Вот справочные значения для практической оценки:

Пример пароляДлинаПул символовЭнтропия (биты)Устойчивость
`password`826~37,6Пренебрежимо мала
`P@ssw0rd`895~52,6Часы (GPU)
`Tr0ub4dor&3`1195~72,3Месяцы
`correct-horse-battery-staple`2826+1~130+Столетия
Случайный 16-символьный полный ASCII1695~105Астрономически велика

Обратите внимание, что correct-horse-battery-staple — знаменитая парольная фраза из комикса XKCD — достигает исключительной энтропии за счёт длины, несмотря на использование только строчных букв и дефисов. В этом и заключается преимущество длины над сложностью.

Инструменты взлома паролей, используемые специалистами по безопасности

Инженеры по безопасности и тестировщики на проникновение используют следующие инструменты для эмпирической проверки политик паролей:

Hashcat — отраслевой стандарт GPU-ускоренного инструмента восстановления паролей. Он поддерживает более 300 типов хешей и может выполнять словарные, перебором, на основе правил и гибридные атаки. На современном RTX 4090 Hashcat может проверять приблизительно 164 миллиарда хешей MD5 в секунду — контекст, который делает приведённые выше цифры энтропии наглядно реальными.

John the Ripper — взломщик на основе CPU с мощными возможностями атак на основе правил и широкой поддержкой форматов хешей. Широко используется в криминалистических и аудиторских контекстах.

zxcvbn — клиентский оценщик надёжности паролей, разработанный Dropbox. В отличие от простых калькуляторов энтропии, он моделирует реалистичное поведение злоумышленника, проверяя словари, распространённые шаблоны, последовательности клавиатуры и форматы дат. Это наиболее точный измеритель надёжности для пользовательских приложений.

Для тестирования хеша пароля в автономном режиме с помощью Hashcat в режиме бенчмарка:

hashcat -b -m 0

Для выполнения словарной атаки с правилами против файла хешей MD5:

hashcat -a 0 -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Онлайн-инструменты для проверки паролей

Несколько браузерных инструментов обеспечивают быструю оценку надёжности:

  • Have I Been Pwned (HIBP) Password Check — проверяет SHA-1 хеш-префикс пароля по базе данных, содержащей более 800 миллионов скомпрометированных паролей, используя модель k-анонимности, что означает, что полный пароль никогда не передаётся.
  • Bitwarden Password Strength Tester — использует zxcvbn для реалистичной оценки времени взлома.
  • Kaspersky Password Checker — обеспечивает анализ длины, сложности и шаблонов.

Критическое операционное предупреждение: никогда не вводите реальный, используемый пароль в какой-либо онлайн-инструмент. Используйте структурно похожие, но отличающиеся тестовые учётные данные. Даже инструменты, использующие модели k-анонимности, не должны получать ваши реальные рабочие пароли.

Измерители надёжности паролей в приложениях

Встроенные измерители надёжности существенно различаются по качеству. Многие используют упрощённые эвристики (пороги длины, наличие классов символов), которые можно обойти. Измеритель, оценивающий P@ssw0rd1! как «Надёжный», вводит в заблуждение — эта строка присутствует в каждом крупном словаре взломанных паролей. Отдавайте предпочтение приложениям, интегрирующим zxcvbn или аналогичные оценщики с учётом шаблонов.

Векторы атак на пароли: от чего вы на самом деле защищаетесь

Понимание модели угроз делает каждое решение о политике паролей более осознанным.

Атаки методом перебора систематически перебирают все возможные комбинации в пределах символьного пространства. Они ограничены вычислительными ресурсами и становятся нецелесообразными при энтропии выше ~80 бит на современном оборудовании.

Словарные атаки используют списки слов, составленные из реальных паролей, утечки которых произошли в результате взломов. Набор данных RockYou (14 миллионов паролей) и его преемники охватывают подавляющее большинство паролей, выбранных людьми. Если ваш пароль встречается в естественном языке, он есть в словаре.

Атаки на основе правил применяют правила преобразования к словарным словам: написание с заглавной буквы, добавление цифр, замена символов. Они взламывают большинство «сложных» паролей, которые пользователи создают, модифицируя простые слова.

Подстановка учётных данных использует пары имя пользователя/пароль из одной утечки для атаки на другие сервисы. Полностью нейтрализуется уникальностью паролей.

Атаки с использованием радужных таблиц используют предварительно вычисленные соответствия хеш-открытый текст. Нейтрализуются правильным хешированием паролей с уникальной солью (bcrypt, Argon2, scrypt) на стороне сервера — это ответственность приложения, а не пользователя.

Социальная инженерия и фишинг полностью обходят надёжность пароля. Основной защитой здесь является многофакторная аутентификация.

Лучшие практики создания и управления надёжными паролями

Используйте менеджер паролей

Менеджер паролей — это единственное наиболее эффективное улучшение безопасности, доступное большинству пользователей и администраторов. Такие инструменты, как Bitwarden (с открытым исходным кодом, прошедший аудит), 1Password и KeePassXC (офлайн, локальное хранилище), генерируют криптографически случайные пароли и хранят их в зашифрованном хранилище. Это устраняет когнитивную нагрузку запоминания и делает уникальные случайные пароли длиной 20+ символов практичными для каждой учётной записи.

Для системных администраторов, управляющих учётными данными на серверах — включая среды VPS Хостинга и Выделенных серверов — командно-ориентированный менеджер паролей с управлением доступом на основе ролей (например, Bitwarden Teams или HashiCorp Vault) является необходимой инфраструктурой.

Генерируйте пароли с помощью CSPRNG

Никогда не создавайте пароли вручную. Используйте генератор вашего менеджера паролей или в Linux/macOS:

# Generate a 20-character random password using /dev/urandom
LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^&*()-_=+' < /dev/urandom | head -c 20; echo
# Generate a Diceware-style passphrase using OpenSSL
openssl rand -base64 32

Внедрите многофакторную аутентификацию (MFA)

MFA является обязательным уровнем защиты для любой учётной записи со значительной ценностью. Даже скомпрометированный пароль не может предоставить доступ без второго фактора. Отдавайте предпочтение приложениям-аутентификаторам TOTP (Authy, Google Authenticator, Aegis) перед SMS-аутентификацией, которая уязвима для атак с подменой SIM-карты. Для сред с высокими требованиями к безопасности используйте аппаратные ключи безопасности (YubiKey, FIDO2), которые по своей конструкции устойчивы к фишингу.

На серверах, работающих с веб-приложениями или панелями управления — включая среды, управляемые через Панели управления VPS — обеспечьте MFA на уровне приложения и рассмотрите аутентификацию SSH на основе ключей как замену входу по паролю через SSH.

Обеспечьте соблюдение строгих политик паролей на системном уровне

Для администраторов, управляющих серверами Linux, PAM (Pluggable Authentication Modules) обеспечивает детальное применение политики паролей. Установите и настройте libpam-pwquality:

apt install libpam-pwquality

Затем отредактируйте /etc/security/pwquality.conf:

minlen = 16
minclass = 3
maxrepeat = 2
gecoscheck = 1
dictcheck = 1

Это обеспечивает минимальную длину в 16 символов, требует символов из не менее чем 3 классов, запрещает более 2 последовательных одинаковых символов и проверяет наличие словарных слов и поля GECOS пользователя (имени).

Для политики устаревания паролей отредактируйте /etc/login.defs:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   14

Отслеживайте утечки учётных данных

Интегрируйте мониторинг утечек в ваши операции по безопасности. Have I Been Pwned предлагает бесплатный API для проверки адресов электронной почты по известным базам данных утечек. Для корпоративного использования такие сервисы, как SpyCloud или Enzoic, обеспечивают мониторинг учётных данных в реальном времени и могут инициировать принудительный сброс пароля, когда учётные данные сотрудника появляются в наборе данных об утечке.

Безопасное хеширование паролей на стороне сервера

Если вы управляете веб-приложениями, хранящими учётные данные пользователей — будь то на Общем веб-хостинге или выделенной среде — никогда не храните пароли в открытом виде или с использованием слабых алгоритмов хеширования (MD5, SHA-1, SHA-256 без соли). Используйте специализированную функцию хеширования паролей:

  • Argon2id — победитель конкурса Password Hashing Competition; рекомендован OWASP для новых приложений
  • bcrypt — широко поддерживается, проверен временем; используйте рабочий коэффициент 12 или выше
  • scrypt — требователен к памяти; хорошая устойчивость к GPU-атакам

Пример с использованием библиотеки Python argon2-cffi:

from argon2 import PasswordHasher

ph = PasswordHasher(time_cost=2, memory_cost=65536, parallelism=2)
hash = ph.hash("user_supplied_password")
# Verify:
ph.verify(hash, "user_supplied_password")

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

Для паролей, которые необходимо запомнить (мастер-пароль менеджера паролей, ключ полного шифрования диска), парольная фраза Diceware предлагает наилучший баланс между энтропией и запоминаемостью. Бросьте физический кубик пять раз, чтобы выбрать каждое слово из большого списка слов EFF. Пять слов дают приблизительно 64,6 бит энтропии; шесть слов — 77,5 бит.

Example: "clam-unmasked-revival-stunt-dagger"
Entropy: ~64.6 bits (5 words × 12.92 bits)

Это надёжнее большинства «сложных» паролей, выбираемых пользователями, и значительно легче запоминается.

Защита учётных данных в вашей хостинговой инфраструктуре

Безопасность паролей распространяется за пределы отдельных учётных записей на весь стек инфраструктуры. Администраторы, управляющие хостинговыми средами, должны применять многоуровневый контроль учётных данных:

  • SSH-доступ: полностью отключите аутентификацию по паролю; используйте пары ключей Ed25519 или RSA-4096. Храните закрытые ключи с надёжной парольной фразой.
  • Учётные данные базы данных: используйте длинные, случайно сгенерированные пароли для пользователей базы данных. Никогда не используйте корневые учётные записи базы данных для подключений приложений.
  • Учётные записи панели управления: обеспечьте надёжные пароли и MFA для всех входов в панель управления. На платформах, доступных через VPS с cPanel, минимальный показатель надёжности пароля в cPanel должен быть установлен на уровне 65.
  • Учётные записи электронной почты: слабые пароли электронной почты являются основным вектором атаки для захвата учётных записей. Если вы управляете Почтовым хостингом, обеспечьте соблюдение строгих политик паролей на уровне почтового сервера и включите DMARC, DKIM и SPF для снижения подверженности фишингу.
  • Закрытые ключи SSL/TLS: защищайте закрытые ключи, связанные с SSL-сертификатами, с помощью разрешений файловой системы (chmod 600) и, где возможно, храните их в аппаратном модуле безопасности (HSM) или менеджере секретов.

Надёжность пароля и политика паролей: сравнение

ИзмерениеОтветственность пользователяОтветственность администратора
Генерация паролейИспользовать менеджер на основе CSPRNGОбеспечить минимальные требования к энтропии
ХранениеЗашифрованное хранилище (менеджер паролей)Argon2id/bcrypt с уникальными солями
Предотвращение повторного использованияУникальный пароль для каждой учётной записиОбеспечить через параметр PAM `remember`
Обнаружение утечекМониторинг HIBPИнтегрировать API утечек в процесс аутентификации
MFAВключить для всех учётных записейОбеспечить на уровне приложения/сервера
РотацияМенять при подозрении на компрометациюУстановить срок действия по политике (90–180 дней)
SSH-доступИспользовать пары ключейОтключить `PasswordAuthentication yes` в `sshd_config`

Матрица решений и ключевые технические выводы

Используйте этот контрольный список для оценки и усиления вашей текущей защиты паролей:

  • Целевая энтропия: стремитесь к минимуму 80 бит для обычных учётных записей; 100+ бит для привилегированного доступа (root сервера, мастер-пароль менеджера паролей, ключи шифрования).
  • Минимальная длина: никогда не принимайте пароли короче 12 символов в любой системе, которой вы управляете; предпочтительно 16–20 для пользовательских учётных записей, 32+ для сервисных учётных записей и API-ключей.
  • Пул символов: используйте полный печатный ASCII для случайно сгенерированных паролей; используйте Diceware для запоминаемых парольных фраз.
  • Уникальность: нулевая терпимость к повторному использованию учётных данных. Внедрите менеджер паролей, чтобы сделать это операционно осуществимым.
  • Алгоритм хеширования: Argon2id является текущим золотым стандартом для хранения паролей на стороне сервера. Переходите с bcrypt только если Argon2id доступен в вашем стеке.
  • Уровень MFA: минимум TOTP; FIDO2/WebAuthn для привилегированных и административных учётных записей.
  • Усиление SSH: отключите вход по паролю через SSH на всех серверах. Используйте PasswordAuthentication no в /etc/ssh/sshd_config.
  • Мониторинг утечек: подпишитесь на уведомления HIBP для всех корпоративных почтовых доменов.
  • Периодичность аудита: ежеквартально проводите аудит паролей по собственной базе данных хешей с помощью Hashcat, чтобы выявлять слабые учётные данные раньше злоумышленников.
  • Применение политики: используйте PAM pwquality на системах Linux; обеспечивайте эквивалентный контроль в Windows через групповую политику (детализированные политики паролей).

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

Какова минимальная длина пароля, рекомендованная NIST в 2024 году?

NIST SP 800-63B устанавливает абсолютный минимум в 8 символов для паролей, выбираемых пользователями, но явно рекомендует, чтобы верификаторы допускали пароли длиной не менее 64 символов. Специалисты по безопасности должны устанавливать практический минимум в 12–16 символов и поощрять использование парольных фраз длиной 20+ символов для конфиденциальных учётных записей.

Является ли 12-символьный пароль со спецсимволами более надёжным, чем 20-символьная парольная фраза из строчных букв?

Не обязательно. Случайно сгенерированная 20-символьная парольная фраза из строчных букв имеет приблизительно 94 бита энтропии (20 × 4,70), тогда как 12-символьный пароль из смешанного ASCII имеет приблизительно 78,8 бит (12 × 6,57). Более длинная парольная фраза выигрывает по энтропии, несмотря на использование меньшего пула символов — длина накапливается быстрее, чем разнообразие символов.

В чём разница между словарной атакой и атакой методом перебора?

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

Следует ли мне регулярно менять пароли, даже если утечки не было?

Текущие рекомендации NIST (SP 800-63B) явно не рекомендуют обязательную периодическую ротацию паролей без свидетельств компрометации, поскольку принудительная ротация приводит к тому, что пользователи делают предсказуемые, постепенные изменения (например, Password1 на Password2). Меняйте пароли немедленно при подтверждённой или предполагаемой утечке и ротируйте учётные данные сервисных учётных записей по определённому расписанию (90–180 дней) как практику управления рисками.

Как проверить, не был ли мой пароль уже раскрыт в результате утечки данных, не отправляя его на сторонний сервер?

Используйте API Pwned Passwords сервиса Have I Been Pwned с его реализацией k-анонимности. Ваш клиент вычисляет SHA-1 хеш пароля, отправляет в API только первые 5 символов этого хеша и получает обратно все совпадающие суффиксы хешей. Полный хеш — и, следовательно, пароль — никогда не покидает вашу машину. Это можно автоматизировать напрямую:

PASSWORD="YourTestPassword"
HASH=$(echo -n "$PASSWORD" | sha1sum | awk '{print toupper($1)}')
PREFIX="${HASH:0:5}"
SUFFIX="${HASH:5}"
curl -s "https://api.pwnedpasswords.com/range/$PREFIX" | grep "$SUFFIX"

Если команда возвращает результат, пароль был замечен в утечке и не должен использоваться.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать