密码短语与密码 part 3

密码建议

使用密码短语好还是使用密码好?这似乎是个人偏好问题。一个包含 9 个单词的密码短语肯定比一个仅包含 9 个字符的密码更安全,但是,如果您无法准确地键入这么多单词,使用密码短语就会麻烦得多。另外,如果用户键入密码短语时无意地将其说出来,则使用密码短语的好处就荡然无存了。最后,在开展进一步的研究之前,究竟哪种方法更好仍无定论。不过,有一个关键因素需要注意。为使密码熵的评估有效,必须使用一个包含完全随机的 9 个字符的密码。而对词熵的评估足以解释为什么使用具有实际意义的句子。这可能是密码短语优于密码的第二大论据:密码短语更容易记忆。如果您同意密码短语更容易记忆的观点,那么请您使用密码短语。使用密码短语不会比使用密码多什么坏处。

使密码短语更安全

还有一个问题需要考虑,即,您可以轻松地为密码短语增加熵。有时候,在创建密码时,您可以用符号 @ 代替 a,用符号 $ 代替 s,用 ! 代替 I 或 1 等。您并不是第一个使用这种做法的人。实际上,每一位比较专业的密码破解者都知道如何查找这些可替换部分。它们给密码增加的强度很有限。此外,密码的熵计算假定那 9 个字符是从 72 个符号中随机选择的,而密码短语的熵计算并没有做这样的假定。如果我们在密码短语的单词中使用了一些替换,则通常应将它们从字典中删除,这就大大增加了破解的难度。增加多少?使用了替换的密码短语增大的破解难度的上限取决于字符集的固有熵。如果向包含 26 个字符的字符集添加 10 个符号,那么就可以得到一个具有 5.17 位熵的、包含 36 个字符的字符集。现在,密码短语中的 29 个符号中的任何一个都是 5.17 位,这样密码短语的熵就是 150 位。由于实际上用于哈希的熵大于 128 位,我们已获得了可能实现的最高熵。若要评估下限,我们可以使用 Shannon 预测,为密码短语分配 66.7 位的熵。这是个很广的范围,很显然大大增加了破解密码短语的难度。

还有一个评估通过替换增加的安全性的方法。http://www.ukradioamateur.org/extra/morse/html/c28.htm 这一网页上提供了评估的英文字母使用频率。该评估表明,我们可能会在包含 25 个字符的短语中使用 21 个不同的字母(其中不包括空格),其中最常用的是 E (3.25)、T (2.3)、N (1.98)、R (1.9) 和 O (1.88)。我不知道 N 和 R(或其对应的小写形式)的任何常用替换字符,但我知道通常用 3 替换 E,7 替换 T,0 替换 O。密码 (|3.25|+|2.3|+|1.88|) 中最多有 7 个这样的字符,用户可能已替换了任意字符组合。因此,此密码短语有 2^7=128 种不同的组合。这样,如果我们让一个或多个字母转换成替换符号,即使使用最常用的替换符号,密码短语的强度也会增强到原来的 128 倍。如果用户使用不常用的替换符号或误拼形式,密码短语的强度就会更高。

实施密码策略

读完这一系列文章之后,您可能会决定将您的密码策略改为仅实施密码短语,或者改为其他方法。如何进行更改呢?首先,您应在组策略中确定一个密码策略,具体操作可以参考以下提示。

第一,最好为您的密码策略创建一个单独的组策略对象。这样,万一出现错误,就很容易回退。转到 Active Directory 用户和计算机工具,右键单击域,然后单击“属性”。接着单击“组策略”选项卡,再单击“新建”按钮。操作完成后,编辑新的组策略对象,然后在“计算机配置”>“Windows 设置”>“安全设置”>“帐户策略”>“密码策略”节点中配置您的策略。

第二,请注意密码策略只能应用于域级别,它将对域中的所有用户都有效。您不可以让一组用户另外使用一种策略,甚至也不可以让一个组织单元 (OU) 另外使用一种策略。如果您为一个 OU 创建了一个密码策略,则它只对该 OU 中的计算机上的本地帐户有效。

第三,您可能注意到了密码策略选项不算多:只有六个。对于大多数系统来说,适合按照 Windows Server 2003 Security Guide(Windows Server 2003 安全指南)中的建议操作:

强制密码历史 – 此设置禁止用户重用旧密码。推荐设置:24

最长密码期限 – 确保经常更换密码,从而增加破解或猜测密码的难度。推荐设置:42(默认值)到 90 之间

最短密码期限 – 确保用户不会因循环使用密码而使用旧密码。推荐设置:2

最短密码长度 – 确保密码达到最小长度要求,使之更难以破解。请注意,最低限度要求是存储包含 7 到 8 个字符的 LM 哈希。有关详细信息,请参见本系列文章中的第一篇。推荐设置:8

密码必须满足复杂性要求 – 确保密码达到某种最低复杂性要求。此设置确保了密码至少包括四个类别(大写字母、小写字母、数字、非字母符号)中的三个符号,但不包含用户的名或姓,或者用户名的任一部分。请注意,仅满足这些要求并不意味着密码的安全性强。例如,密码“Password1”就满足这些要求。推荐设置:是。

用可还原的加密来存储密码 – 在应用程序需要访问明文密码的系统中,使用可还原的加密。通常不需要此项设置。推荐设置:否。

为什么不能使用帐户锁定?

虽然指南中建议将帐户配置为在 50 次尝试后锁定,我还是建议您不要配置帐户锁定。首先,正如本系列文章第一篇中所述,一个合理的密码被攻击者猜到的可能性很小,因而没有必要配置帐户锁定。其次,攻击者很有可能会获得您的帐户锁定设置,然后将其转变为一种拒绝服务攻击 — 锁定系统中的所有帐户。再次,大多数漏洞评估工具会锁定您域中的所有帐户。最后,是否使用帐户锁定属于安全策略问题,应当考虑使用帐户锁定是否有价值。不过,请记住,帐户锁定问题属于 Microsoft 支持服务中存在的最常见的技术支持问题,重置一个帐户的平均成本为每个事件 70 美元。如果您的安全策略非常严密以至于您相信这些数字是可以接受的,而且您的策略仍无法实施合理的密码,则您仍可以选择配置帐户锁定。否则,就请体谅您的服务台并考虑着节省预算,而不要配置帐户锁定。

强迫实施唯一要求

现在您可能已经意识到了,组策略中的密码策略设置不是很灵活,甚至可能无法保证设置高质量的密码。例如,除非您也转到“计算机配置”>“Windows 设置”>“安全设置”>“本地策略”>“安全选项”,并配置“网络安全: 不要在下次更改密码时存储 LAN Manager 的哈希值”,否则存储的仍然是较弱的 LM 哈希。此外,仅仅要求复杂性并不能保证密码不会被猜测或破解。最后,由于组策略中的用户界面限制,您无法要求密码长度大于 14 个字符。

有一种方法可以解决这些问题,但需要使用编程技术。您可以编写一个自定义密码筛选器。密码筛选器就是一个在用户更改其密码时接收密码明文副本的 DLL。它随后可以处理接收到的密码,确保其满足密码唯一性要求。它将在字典中查找密码,确保包含 8 个字符的密码的第 8 个位置上没有符号,并确保其中没有公司特定的字词等。对您可检查的元素的限制仅仅在于您可以编程什么以及您需要让它处理多快。例如,一些组织用密码筛选器来确保管理员拥有的密码比用户的密码更强大。

关于如何编写密码筛选器的详细讨论超出了本文的范围。有关全部详细信息,请参考以下资源:

MSDN Library 中关于 PasswordChangeNotify、InitializeChangeNotify 和 PasswordFilter 等函数的文档
http://msdn.microsoft.com

示例密码筛选器
http://msdn.microsoft.com/library/en-us/secmgmt/security/sample_password_filter.asp

如何安装和注册您自己的密码筛选器 DLL
http://msdn.microsoft.com/library/en-us/secmgmt/security/installing_and_registering_a_password_filter_dll.asp

密码筛选器编程注意事项
http://msdn.microsoft.com/library/en-us/secmgmt/security/password_filter_programming_considerations.asp

关于密码筛选器,最后还有一点您需要弄清楚。尽管密码筛选器的功能很强大,但大多数是用 C/C++ 编写的字符串处理函数,包含筛选器的 DLL 会被加载到域控制器上的 LSA 进程中。这是一个会发生缓冲区溢出的可怕位置。如果您编写程序时不是非常小心,就会面临极大的缓冲区溢出风险。

结论

在本文中,我针对密码短语是否优于密码这个老生常谈的话题进行了一些理论研究和实践研究。不过,在得出任何结论之前,您应当将其视为理论性讨论,这一点很重要。如果攻击者拥有破解您的密码哈希的权限,她/他早已攻击了您的域,而您的网络的安全性已经化为乌有。此外,如果攻击者能够获取一种直接消耗密码哈希的工具,就不必破解密码了。同时,如果您的用户不理解密码安全,则任何密码方案都不起作用 — 您应该相信这一点。

尽管没有人能够最终回答密码短语是否优于密码这一问题,但从数学和逻辑学的角度来看,包含 5 或 6 个单词的密码短语与包含完全随机的 9 个字符的密码在安全强度上大致相当。与包含完全随机的 9 个字符的密码相比,大多数人更容易记住包含 6 个单词的密码短语。因此,密码短语似乎优于密码。此外,通过向密码短语添加一些替换字符和误拼形式,用户可以显著增强它的安全性,而使用包含完全随机的 9 个字符的密码则无法做到这一点。与小学老师的叮嘱正好相反,错拼的单词也具有实际用途!

最后,如果您选择使用密码短语,请参考下面提供的关于如何使用密码短语的几点提示。第一,密码短语的长度必须超过 4 个单词(最好是至少 6 个)才能等效于完全随机的密码。第二,所用的单词不应太短。一流的密码破解者可以迅速破解较短的单词。第三,使用替换字符或误拼形式或者兼用这两种手段可以大大增强密码短语的安全性。通过添加一些空格而排除另外一些空格,也可以获得同样的安全强度。第四,不需要让句子的含义明白易懂。实际上,如果密码短语的含义令人费解,则可增加破解难度。第五,密码短语必须用大小写混拼形式并包括数字和符号,这一点极其重要。最好不要选用键盘数字键上的数字上面的符号,因为攻击者会首先试用这些符号进行破解。

如果您从本系列文章开头一直读到这里,并且在考虑使用密码短语,请您再配合一下。请设计一个新的密码短语(而不是您当前使用的那个),并通过 [email protected]* 发送给我们。我们将使用您提交的密码短语来研究密码短语的编写和强度,以便能够更好地理解如何使用密码短语。等到积累了足够的结果后,我可能会接着再写一篇专栏文章讨论这些结果。

这个专栏永远是为您提供的。如果您想讨论某个内容,或者您认为有什么方式能让我们更好地帮助您保护系统安全,请告诉我们。单击下面的“评论”按钮,即可向我们发送您的评论。

*我们只保留您发送给我们的密码短语,用于进行分析研究。我们不会存储您的电子邮件地址或任何其他与密码短语一起发送的个人信息。您发送的密码短语将会与我们收到的其他密码短语放在一起,它不会与您的电子邮件中发送的任何个人数据有任何关联。

你可能感兴趣的:(乱七八糟)