Сходство пароля

Я хотел изменить свой пароль на Unix-машине. Я сделал обычный "passwd" и набрал свой старый и новый пароль.

Затем машина вернулась ко мне со следующим сообщением:

BAD PASSWORD: is too similar to the old one

Это заставило меня задуматься... Значит ли это, что у машины где-то есть мой пароль в виде открытого текста? В противном случае он не сможет сравнивать старый и новый пароль, верно? Или есть хеш-функция, которая позволяет это?

3 ответа

Решение

Итак, я последовал предложению Michael Hampton и пошел посмотреть на код файла pam_cracklib.c, и кажется, что pam_cracklib получает старый (или текущий) пароль от PAM через вызов функции (который я считаю абсолютно нормальным, так как Я только что ввел этот текущий пароль для аутентификации), а затем провел анализ сходства (функция расстояния) между тем старым паролем и новым, который я только что ввел.

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

Ваши старые пароли не хранятся в виде обычного текста.

Вместо этого ваши старые хэши паролей хранятся в /etc/security/opasswd PAM. Затем выполняется сравнение, когда вы переходите к смене пароля, основываясь на том, что было указано в конфигурации PAM.

Пример конфигурации PAM:

password required pam_unix.so sha512 remember=12 use_authtok

Вот, remember заставляет его запомнить 12 предыдущих паролей.

Для получения более подробной информации смотрите Linux Password Security с pam_cracklib.

Некоторые системы могут хранить / вычислять энтропию (сложность пароля) и сравнивать их, я не знаю, относится ли это к PAM.

Другие вопросы по тегам