密码相似度

密码相似度

我想在 unix 机器上更改密码。我执行了常规“passwd”,然后输入了旧密码和新密码。

然后机器回复了我以下信息:

BAD PASSWORD: is too similar to the old one

这让我开始思考...这是否意味着机器在某处以明文形式保存了我的密码?否则它就无法比较旧密码和新密码,对吧?或者是否存在可以实现这一点的哈希函数?

答案1

好的,所以我按照迈克尔·汉普顿然后去查看了pam_cracklib.c并且似乎 pam_cracklib 通过函数调用从 PAM 获取旧密码(即当前密码)(我认为这完全没问题,因为我刚刚输入了当前密码进行身份验证),然后在旧密码和我刚刚输入的新密码之间执行相似度分析(距离函数)。

但是它不会对历史记录中的所有旧密码进行这种分析。这是不可能的,因为它们仅以哈希形式存储。对于它们,只能检查它们是否相同。所以一切似乎都井然有序,就像我预期的那样,但现在我明白了为什么会这样......谢谢大家。

答案2

您的旧密码不会以纯文本形式存储。

相反,你的旧密码哈希存储在/etc/security/opasswdPAM 中。然后,当您更改密码时,它会根据 PAM 配置中指定的内容进行比较。

PAM 配置示例:

password required pam_unix.so sha512 remember=12 use_authtok

这里,remember让它记住12个以前的密码。

有关详细信息,请参阅使用 pam_cracklib 实现 Linux 密码安全

答案3

有些系统可以存储/计算熵(密码复杂性)并进行比较,我不知道 PAM 是否也是如此。

相关内容