这是否意味着我的大学不安全地存储密码?

时间:2010-12-05 11:35:35

标签: security encryption passwords

我的大学要求您定期更改密码。如果我尝试使用当前密码的任何变体,我会收到消息:

  

您输入的新密码是   以下情况不予接受   原因:密码太相似了   对旧的!请再试一次   请回去再试一次。

现在我不是密码学家,但是如果他们可以计算新密码和旧密码之间的相似性度量,这是不是意味着密码存储不安全,甚至是纯文本?

编辑:我可能是个白痴。他们确实要求您输入当前密码。

4 个答案:

答案 0 :(得分:6)

更改密码时是否必须输入当前密码?也许他们正在验证当前密码是否正确值,以及将明文与新密码进行比较。

答案 1 :(得分:2)

不完全。他们可以获取您输入的新密码,更改字符并根据存储的哈希检查更改密码的哈希值。重复此操作以进行一系列微小改动,例如:修改/插入/删除单个字符,如果生成的任何哈希值等于存储的哈希值,则给出您看到的错误。

示例:假设您的旧密码为“密码”,并尝试更改为“pssword”。在“p”之后插入“a”,为您提供“密码”,其密码与旧密码相同。因此,在不知道旧密码但只知道哈希的情况下,我们确定密码是相似的。

对于长度为N的密码,这会生成并比较O(3N)= O(N)个哈希值。假设散列需要O(N)来计算,总体复杂度将为O(N ^ 2),这对于密码一直非常可行,最多可达1,000个字符。

哈希冲突的可能性非常小,而且他们认为的更改次数越多,这个机会就越高。但它仍然很少见。

请注意,这并不能保证密码的安全存储。这只是意味着你不能断定他们安全存储。

答案 2 :(得分:1)

在Linux(以及其他类Unix系统)上,有两个PAM身份验证模块负责:

(1)对pam_unix PAM认证模块使用remember =选项。它以散列形式存储了许多过去的密码,因此您无法重复使用旧密码而无需更改。这些旧哈希的通常位置是/ etc / security / opasswd。

(2)pam_cracklib PAM模块在您输入时使用旧密码以执行更改,并检查与您输入的新密码相比是否有足够的字符(请参阅difok = pam_cracklib选项) )。

在任何情况下,旧密码都不会以可恢复的形式存储......

任何半职业系统管理员都会使用类似的东西,而不是重新发明轮子,这可能(但不一定)意味着你不必担心。

答案 3 :(得分:0)

  

这是不是意味着密码存储不安全,甚至是明文?

可能。基于纯哈希的存储方法将无法比较相似性:只有完全相同的密码才能找到。

他们可以使用类似SOUNDEX的算法来检查相似性 - 这不会像存储明文密码那样糟糕,但仍然是一件可怕的事情。

但是,当然,密码可能以纯文本形式存储。你必须要问。