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

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Слишком простой пароль (< 10^3)
1Скорее подбираемый (< 10^6)
2Возможно подбираемый (< 10^8)
3Надежный пароль (< 10^10)
4Очень надежный пароль (>= 10^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.