Active Directory;用户以前的密码列表?

Active Directory;用户以前的密码列表?

我知道有些公司能够在用户登录网络时拦截用户密码。我还知道这些公司创建了一个巨大的密码数据库,这些密码无法再次使用;他们是如何做到这一点的?

答案1

这是 Active Directory 的原生功能,无需以某种方式“捕获”密码。“记住”的密码数量由系统管理员通过系统范围的安全策略设置。

通常,此功能的实现方式是,只需一个所谓的“哈希” 的密码哈希值会被存储。当您作为用户选择新密码时,系统会确保新密码的哈希值不会出现在与过去密码相对应的记忆哈希值集合中。这样就可以避免重复使用同一个密码。

请注意,哈希实际上是使用加密函数(本质上是复杂的数学公式)从输入数据(即您的密码)计算得出的非常大的数字。关于哈希,一个重要的事情是没有相当简单和快速的方法来逆转该过程,即仅知道其哈希值就猜出实际密码。因此,系统可以非常安全,防止泄露过去的密码。

答案2

这是一项名为“强制密码历史记录”的域级帐户策略,域管理员可以配置该策略。Microsoft 有关于设置的文档这里

另外,需要明确的是,不是存储明文密码。他们存储的是密码的哈希值。以明文形式存储密码是一个严重的安全问题。

答案3

Active Directory 为应用程序提供了拦截密码更改调用的接口。为此,驱动程序必须在发生密码更改的域控制器 (DC) 上运行(通常是所有域控制器)。一旦密码被加密并存储在 AD 中,就无法逆转哈希值(哈希值是在 DC 之间存储和复制的)。

一个例子是 Novell Identity Manager (IDM)。为了将密码与 Active Directory 同步,您必须在域中的所有 DC 上安装一个名为 Password Sync 的应用程序,该应用程序执行我上面描述的操作。然后,IDM 会在设置密码时拦截密码,并可以对密码执行任何您想做的事情 - 将其转储到文本文件、将其存储在 SQL 数据库中或与另一个目录 eDirectory 同步。

其他系统(例如 Microsoft Forefront IM)具有类似的功能,编写一个将密码转储到数据库的简单应用程序可能并不困难(但只有在密码更改时才能这样做)。

答案4

根据安全类型和所使用的登录或服务器系统,这个答案会有很大差异。

正如其他人所指出的,如果您使用 Active Directory 系统进行域登录,并且已将选项设置为不允许使用以前的密码,则密码的哈希值将存储一定数量的密码更改,并且任何匹配的新密码哈希值(这意味着密码本身匹配)都将被拒绝。这允许系统跟踪旧密码,而无需系统实际上“知道”密码本身。

如果您正在处理网站登录,则正确的密码存储方法是使用哈希,就像 Windows 和 Active Directory 一样(以及所有其他安全且正确配置的安全系统,不仅仅是 Windows 的事情)。

然而,正确的方法并不总是被使用。被黑客入侵的网站和黑市上出售的用户密码通常都是以我们所谓的“纯文本”形式存储密码的网站或系统的例子。这意味着系统中的某个地方实际上有一个您可以实际读取的密码列表,而不是必须比较的令人困惑的哈希值。

密码管理系统除了接受用户输入的密码并将其与存储的密码进行比较之外,不会进行任何“捕获”。安全系统和非安全系统都会这样做。

比较哈希的系统(安全系统)与比较纯文本密码的系统(不安全系统)之间的区别在于,安全系统在与其存储的内容进行比较之前添加了创建哈希的步骤。

相关内容