Сходство пароля
Я хотел изменить свой пароль на 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.