当仅存储哈希码时,“您的新密码必须与之前的密码至少相差 n 个字符”如何工作?

当仅存储哈希码时,“您的新密码必须与之前的密码至少相差 n 个字符”如何工作?

我想知道密码策略“你的新密码必须至少不同n旧密码中的字符”有效。

我的理解是,操作系统实际上从来没有商店旧密码他们自己,但他们的哈希码而是。如果你有只有它们的哈希码

我猜想只有当passwd程序明确地问你同时也您的旧密码

结果是,如果用户更改他人密码时,“不同字符数”策略简单地不能可以在这里应用吗?

答案1

此类策略通常是通过在询问旧密码时应用它们来实现的。

另一种选择是暴力破解旧密码。当您输入新密码时,现代计算机可以毫无问题地暴力破解所有与新密码相差 2 个字符的密码。据我所知,这在典型的 Linux 发行版中的正常身份验证中并不使用,但可能有些 PAM 模块实现了这一点。

更改 root 密码的常用方法是假设超级用户知道自己在做什么。passwd 程序不会要求输入旧密码,并允许您自行决定是否允许更改密码长度等规则,但风险自负。

答案2

你说得对。如果密码以哈希形式存储,操作系统根本无法知道新密码与旧密码有何不同。

策略检查是由工具完成的,并且它有效,因为该工具还会要求您输入旧密码,然后根据一组策略规则检查差异。

答案3

结果是,如果 root 用户更改了其他人的密码,“不同字符数”策略根本就无法在此应用吗?

管理用户通常可以直接操作密码数据库,因此该用户可以忽略所有密码策略。例如,root 可以提供将逐字设置的
哈希密码(使用),或者在那里编辑和设置哈希密码。usermod -p/etc/shadow

这就是为什么管理用户应该遵守更高的标准并在为用户分配密码时训练自己使用密码生成器的另一个原因。

相关内容