密码相似度


9

我想在UNIX机器上更改密码。我输入了正常的“ passwd”并输入了旧密码和新密码。

然后机器返回以下消息给我:

BAD PASSWORD: is too similar to the old one

那让我开始想...这是否意味着机器在某处以明文形式显示了我的密码?否则,它应该无法比较新旧密码,对吗?还是有一个散列函数可以启用该功能?

Answers:


6

好的,所以我按照迈克尔·汉普顿的建议去了,看了看pam_cracklib.c的代码,似乎pam_cracklib通过一个函数调用从PAM获取了旧的(又名当前的)密码(我认为完全可以,因为我只是输入该当前密码进行身份验证),然后在该旧密码和我刚输入的新密码之间执行相似性分析(距离功能)。

但是,它不会对历史记录中的所有旧密码进行此分析。这将是不可能的,因为它们仅存储为散列。对于它们,只能检查它们是否相同。因此,一切似乎都井井有条,就像我期望的那样,但是现在我确实明白了为什么……谢谢大家。


3

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

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

PAM配置示例:

password required pam_unix.so sha512 remember=12 use_authtok

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

有关更多详细信息,请参见使用pam_cracklib的Linux密码安全性


嗯...好吧,它绝对不是我以前使用过的密码...所以它必须检查字符是否更改为旧密码。但是,如果保存的只是该密码的哈希值,那么它如何完成比较?密码安全散列的主要功能之一是不允许在不同的明文之间进行比较吗?
dertoni 2012年

你让我在那里。我认为您必须阅读源代码才能确定答案。
迈克尔·汉普顿

我希望它会对密码进行更改,并且如果这些更改的任何哈希值与旧密码的哈希值匹配,则该密码太相似了。这样,仅存储散列。当然,我也没有在源代码中对此进行检查……
Ladadadada 2012年

好的,阅读代码...添加了有关我的发现的答案。+1可以帮助我找到答案;-) thx。
dertoni 2012年

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.