Перейти к основному содержимому

zxcvbn. Оценщик надежности пароля

В исходном дистрибутиве установлено по умолчанию: да.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

Библиотека zxcvbn предоставляет альтернативный к синтаксическим (например, количество символов, количество заглавных букв) проверкам способ проверки сложности пароля. Основные задачи библиотеки:

  • отсечь простые для подбора пароли, которые могут пройти классические методы оценки сложности пароля;
  • принять пароли, сложные для подбора, но которые не пройдут классически методы оценки сложности пароля, а также просты для запоминания.

Библиотека использует:

  • словарь самых распространенных паролей.
  • частотный словарь имен и фамилий США.
  • словарь английского языка.

Библиотеку можно использовать совместно с другими механизмами проверки пароля.

Параметры конфигурации​

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюАналог в pg_pp_policy
password_policy.use_password_strength_estimatorВключение использования библиотеки zxcvbn для оценки сложности пароляbooleanon/offon/offonusepasswordstrengthestimator
password_policy.password_strength_estimator_scoreМинимальная оценка сложности пароляinteger[0-4]0-43passwordstrengthestimatorscore

Алгоритм работы библиотеки zxcvbn​

  1. Из введенного пароля выделяются словарные слова или популярные парольные фразы. При этом учитываются возможные замены символов (o → 0, A → 4, l → |).

  2. Вычисляется, что может быть известно злоумышленнику, укравшему кеш пароля. Рассматривается комбинация словарных слов и оставшихся символов. Примеры:

    • rrrrr – нужно перебрать 26 вариантов повторяющейся буквы.
    • correcthorsebatterystaple – нужно перебрать все варианты фраз из 4 слов общей длинной 25 символов.
    • Tr0ub4dour&3 – нужно перебрать все варианты слов длинной 10 символов + 2 случайных символа.
  3. Количество попыток делится пополам, для получения среднего количества слов из словаря, которые нужно проверить злоумышленнику.

  4. Вычисляется сложность пароля.

Проверка сложности пароля с использованием библиотеки zxcvbn​

Для проверки сложности пароля требуется включить функциональность проверки пароля и использование библиотеки zxcvbn.

Сложность пароля оценивается количеством итераций, необходимых для подбора пароля:

СложностьОписание
0Слишком простой пароль (< 10310^{3})
1Скорее подбираемый (< 10610^{6})
2Возможно подбираемый (< 10810^{8})
3Надежный пароль (< 101010^{10})
4Очень надежный пароль (>= 101010^{10})

Минимальная сложность пароля для парольной политики указывается в поле passwordstrengthestimatorscore таблицы pg_pp_policy и в параметре password_policy.password_strength_estimator_score (подробнее смотрите раздел «Парольные политики» документа «Руководство администратора»).

Недостатки библиотеки zxcvbn​

К недостаткам библиотеки zxcvbn относятся:

  • малое количество используемых словарей, общеупотребимых фраз, индексов;
  • нет обработки опечаток.

Доработка​

Доработка не проводилась.

Ограничения​

Ограничения отсутствуют.

Установка​

Установка не требуется.

Настройка​

Настройка выполняется посредством параметров конфигурации, применяемых для парольных политик.

Использование модуля​

Добавление политики, проверяющей сложность пароля с помощью библиотеки zxcvbn:

  1. Создайте парольную политику с использованием библиотеки:

    SELECT * FROM set_role_policies('user1', use_password_strength_estimator('1'), password_strength_estimator_score(1), check_syntax('1'), policy_enable('1'));
  2. Задайте пароль пользователю не соответствующий созданной политике:

    ALTER USER user1 WITH ENCRYPTED PASSWORD '12345679';

    При попытке создания пользователя с паролем, не проходящим проверку, выводится сообщение:

    ERROR: Syntax check fail: minimum number of special characters for password is 1
    Syntax check fail: minimum number of uppercase characters for password is 1
  3. Задайте надежный пароль пользователю:

    ALTER USER user1 WITH ENCRYPTED PASSWORD '165A!@qwert';

    Команда проходит успешно

    ALTER ROLE

Ссылки на документацию разработчика​

Дополнительно поставляемый модуль zxcvbn: https://github.com/dropbox/zxcvbn.