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

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

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

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

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

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

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

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

  • словарь самых распространенных паролей.

  • частотный словарь имен и фамилий США.

  • словарь английского языка.

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

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

Параметр

Описание

Тип

POSIX шаблон

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

Значение по умолчанию

Аналог в pg_pp_policy

password_policy.use_password_strength_estimator

Включение использования библиотеки zxcvbn для оценки сложности пароля

boolean

on/off

on/off

on

usepasswordstrengthestimator

password_policy.password_strength_estimator_score

Минимальная оценка сложности пароля

integer

[0-4]

0-4

3

passwordstrengthestimatorscore

Алгоритм работы библиотеки 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.