Выпуск passwdqc 2.0.0 с поддержкой внешних фильтров
Выпущена новая версия passwdqc — набора инструментов для контроля сложности паролей и парольных фраз, включающего модуль pam_passwdqc, программы pwqcheck, pwqfilter (добавлена в этой версии) и pwqgen для использования вручную или из скриптов, а также библиотеку libpasswdqc. Поддерживаются как системы с PAM (большинство Linux, FreeBSD, DragonFly BSD, Solaris, HP-UX), так и без PAM (поддерживается интерфейс passwordcheck в OpenBSD, прилагается обвязка для использования pwqcheck из PHP, существует платная версия для Windows, а программы и библиотека также могут быть использованы и на других системах).
По сравнению с прошлыми версиями, добавлена поддержка внешних файлов фильтрации паролей, в том числе двоичных, которые на данный момент являются реализацией улучшенного кукушкиного фильтра. Такой фильтр гарантированно не пропустит ни один из запрещенных паролей, но может изредка приводить к ложным срабатываниям, вероятность которых при используемых в passwdqc настройках и алгоритме пренебрежимо мала. Проверка пароля на наличие в фильтре требует не более двух доступов случайного чтения с диска, что очень быстро и, как правило, не создает чрезмерной загрузки сервера.
Для создания и работы с двоичными фильтрами в passwdqc добавлена программа pwqfilter. Она может создать фильтр как из списка самих паролей, так и из их хешей MD4 или NTLM. Поддержка хешей NTLM позволяет импортировать пароли из списка HIBP (Pwned Passwords), распространяемого в такой форме. Было вложено много труда в оптимизацию pwqfilter по быстродействию, компактности получаемых фильтров, а также уровню ложных срабатываний. Например, создание кукушкиного фильтра с коэффициентом загрузки 98% из файла pwned-passwords-ntlm-ordered-by-hash-v7.txt размером 21 GiB (22 GB) и содержащего более 613 миллионов строк занимает около 8 минут на процессоре Core i7–4770K. Получающийся фильтр занимает 2.3 GiB (2.5 GB) и имеет уровень ложных срабатываний около 1 на 1.15 миллиардов. С меньшим целевым коэффициентом загрузки, фильтр может быть создан гораздо быстрее и будет иметь уровень ложных срабатываний еще ниже, но его размер получится больше.
passwdqc очень хорошо справляется с задачей не пропускать слабые пароли и без использования внешних файлов. Их использование может дополнительно повысить эффективность passwdqc при этом почти не причиняя пользователям дополнительного неудобства, либо может позволить ослабить другие ограничения. Подобная проверка выбираемых пользователями паролей по известным утечкам рекомендуется NIST. А для проекта Openwall это потенциальная возможность финансирования разработки passwdqc (и не только) через продажу готовых фильтров, при этом не ограничивая пользователей в возможности создавать фильтры самостоятельно используя выпущенную под свободной лицензией программу pwqfilter.
Программа pwqfilter работает с произвольными строками и может быть применена вместо grep для многих целей, даже не относящихся к паролям и безопасности. С учетом этого, pwqfilter имеет несколько опций, аналогичных имеющимся в grep, избегает использования названий опций, которые бы противоречили имеющимся в grep, и использует такие же коды возврата как в grep.
Для задач где ложные срабатывания крайне нежелательны, их уровень может быть снижен, например, до одной на квинтиллион (миллиард миллиардов) при коэффициенте загрузки до 44%. (Классический кукушкин фильтр не даёт столь значительного снижения уровня ложных срабатываний при снижении коэффициента загрузки. В passwdqc это достигается благодаря улучшениям алгоритма).
>>> Анонс от Openwall на английском