比较密码短语和密码.part 1

信息安全引发了一些有趣的争论。争论的问题涉及重要的领域,而且所有争论还在不断加剧和升级。我想总结其中一部分争论的焦点,并提出我自己的观点。首先,我将涉足有关密码问题的争论,并解决有关密码短语与密码的对比问题。

好的,“比较密码短语和密码”可能是“另一项大论战”或“没多少人关心的无聊的”争论。无论如何,哪个更安全,密码短语还是密码?看上去答案并不那么明确。

为了周密地分析有关比较密码短语和密码的问题,我决定将本文分成三个部分。在第一部分中,我将介绍有关密码短语和密码的基本原理以及存储方法等内容。下个月,我将讨论密码短语和密码各自的强度,并运用一些数学方法来确定哪个更强大?在最后一部分中,我将进行总结,并提供有关如何选择密码和配置密码策略的指导信息。

一些基本原理

首先,了解密码和密码短语之间的差别很重要。大多数人在挑选密码时,会选择一个词语(比如:“Password”)或一串随机符号(比如:“X2!aZ@<dF:”),或者同时结合两者(比如:“P@s$w0rd”)。密码短语是一个句子(比如:“This is a really complex pass phrase.”)密码短语通常比密码长的多,并且包含空格。一些人可能通过将一个句子中的每个词的首字母串在一起来组成一个密码。这种密码不属于密码短语;它是由有趣的逻辑构成的密码。相反,密码短语是基于助记符号的密码的另一种形式,其中的助记符号是单词而不是来自某个字符集的符号。密码短语不一定是一个正确的句子,其中拼写无误,或者不包含任何字符(比如刚才所举的那个例子)。

密码短语和密码的主要区别是:

(1) 密码短语通常包含空格;而密码则没有空格

(2) 密码短语比绝大部分词语要长的多,而且,更重要的是,比普通人所能记忆的随机字母串的长度更长。

虽然可以将密码短语看作是一个非常长的密码,但其通常由一系列词语(或类似词语的符号)构成。另外,此处所说的密码短语适用于 Windows 2000 及更高版本的操作系统。其他产品使用不同机制的密码短语,或者可能完全不支持这类密码。

其次,您需要了解密码猜测和密码破解之间的区别。密码猜测指某人坐在控制台前或远程机器前不断尝试密码。本文不涉及密码猜测的内容,因为如果某个帐户拥有相对复杂的密码,是不可能猜对密码的。如果猜对了,那么原因可能是攻击者撞上大运,或者密码太简单了。

让我们来看一个例子。首先,密码支持四类符号:大写字母、小写字母、数字以及非字母数字符号。非字母数字符号包括键盘上的所有符号,以及键盘上未标出的任何符号(比如:Unicode 字符)。一些人认为 Unicode 字符和键盘上标出的符号属于不同的类别,但是在以后的文章中,我们将把二者归到相同的定义下。另外,根据我们的目的,术语“字符(character)”将指所有这四个类别。例如,假设有一些密码是由 8 个字符(至少来自这四类字符中的三类)组成的非字典单词,并在 70 天后到期。对于不了解这类密码的攻击者来说,在密码到期前猜对其中之一将需要计算机拥有 53,000 T-3 (44.736 Mbps) 的网络带宽。这只是发送身份验证流量用以尝试一半可能的密码的要求(想想猜测每个密码都有相同的要求)。

如果我们对用于猜测密码的字符集加以限制,并假设从 76 个最常见的符号中随机选取密码(或者对攻击者来说是如此),那么由 8 个字符组成的密码有 1.11 x 10^15 种可能。如果攻击者每秒猜测 300 个(即便借助经过最佳优化的程序也不过如此),将需要花 58,783 年才能猜对一个密码。如果攻击者只采用了“net use”语句,那么他/她每秒只能猜两到三次,这就表示需要花 5,878,324 年才能猜对一个密码。

另一方面,破解是在攻击者获得原始哈希值后采取的行为。(哈希值是用于存储密码的数学表达。我们将在后面进行详细讨论。)攻击者会生成测试密码,进行哈希处理,然后将得到的结果与存储的哈希值进行比较。破解比猜测要快地多。即便使用中档的硬件,攻击者也可以在一秒钟内生成并测试 3,000,000 个密码。根据这种测试速度,对所有采用 76 字符集组成的 8 字符密码的破解攻击只需 6 年的时间就能成功。当然,找到其中许多密码所需的时间要短的多,而且根据统计,花一半的时间就能找到任何给定的密码。如果密码仅由 7 个子符组成,那么破解全部密码大约只需要 28 天。

与是否应该主要关注于破解的问题一样,攻击者如何获得原始哈希值是一个悬而未决的问题。在 Windows 中,攻击者需要系统级访问权限,才能访问域控制器来破解域密码。如果攻击者已经占领了一台域控制器,那么破解密码只是一个次要问题。但是,多数攻击者都会破解密码。为什么呢?大致上是因为攻击者系统希望在另一个域的不同系统中的用户设置了相同的用户名和密码。这就是管理依存关系。该主题将在日后的文章中进行介绍。此外,由于“问询-应答”协议中仅对密码进行哈希运算,破解密码严格来说是多余的事情,因为攻击者只要哈希来访问帐户。然而,攻击者通常会破解密码,而且他们成功率构成了一个严重的问题。

记住,当今的操作系统通常不会存储纯文本密码或密码短语。一般,所存储的值是单向函数的运算结果(比如:哈希)。在基于 Windows NT 的操作系统(包括 Windows 2000、XP 和 Server 2003)上,密码通过不同的方式进行保存。主要的表达方法为 LM 哈希和 NT 哈希。出于本文的目的,您不必了解它们的工作原理。您只需知道三件事:

LM 哈希不分大小写,而 NT 哈希则分大小写。

LM 哈希有一个仅含 142 个字符的有限字符集,而 NT 哈希几乎可以支持含 65,536 个字符的整个 Unicode 字符集。

NT 哈希根据用户输入的整个密码来计算哈希。LM 哈希将密码分成两半,各由 7 个字符组成(根据需要填充)。

这两类哈希都会生成一个 128 位的存储值。目前,多数密码破解程序会先破解 LM 哈希,然后再通过简单尝试由 LM 哈希破解得来的不分大小写的密码的所有大小写组合,来破解 NT 哈希。

LM 哈希是用于存储密码的非常脆弱的单向函数。最初,LM 哈希是针对 LAN Manager 操作系统而发明的,其包含在 Windows NT 中用于实现向后的兼容。它现在仍然用以实现向后的兼容。出于 LM 哈希德计算方法,结合 LM 哈希的密码并不比从 142-字符字符集中挑选的 7 字符密码更强大。

删除 LM 哈希

有几种方法可用以确保 LM 哈希不被保存;其一是使用长于 14 个字符的密码或密码短语。也可以使用 NoLMHash 开关——在 Windows Server 2003 和 Windows XP 的组策略中显示为“Network security:Do not store LAN Manager hash value on next password change.(网络安全:在下次更改密码时,不要保存 LAN Manager 哈希值。)”使用该开关将从全局上对所有帐户禁止存储 LM 哈希的操作。在下一次更改密码时,此修改将生效。只是应用该开关,还无法完全删除当前和之前任何密码的现有的 LM 哈希。另外,该开关不能马上生效,这表示不能立即发现任何因停止存储 LM 哈希所造成的潜在的互操作性问题。参见知识库文章 KB299656 以了解更多相关信息。该知识库文章还提供了有关在 Windows 2000 中使用 NoLMHash 开关的信息。

还可以在密码中使用某些字符来删除 LM 哈希。人们普遍认为,在密码中使用“ALT 字符”可防止生成 LM 哈希。实际上,只有某些 Unicode 字符才能让 LM 哈希消失。例如,在 0128 和 0159 之间的 Unicode 字符不会导致生成 LM 哈希。一些 Unicode 字符在进行哈希处理之前,会转化为其他字符。

删除 LM 哈希需要考虑一件事——这么做会中断某些东西!默认保留 LM 哈希的原因之一是:将其删除会中断任何对 RPC 使用基于 UDP 的身份验证的应用程序。其中包括 Windows Cluster Services、Real Time Communications Server 以及其他应用程序。通过开启 NtlmMinClientSec 设置(在 Windows Server 2003 的组策略中显示为“Network security:Minimum session security for NTLM SSP based (including secure RPC) clients(网络安全:基于 NTLM SSP(包括安全的 RPC)的客户端的最低会话安全性)”),可以解决这些问题。在设置 NtlmMinClientSec 时,至少要求达到消息完整性和 NTLMv2 会话安全性 (0x80010) 的要求。当对运用 NTLMv2 身份验证(使用 NT 哈希)的 RPC 设置 NtlmMinClientSec 时(参见 KB 文章828861 了解有关当没有 LM 哈希时所遇到的群集问题的更多信息。),其他应用程序在没有 LM 哈希的情况下也会出现中断。例如,用于 Macintosh 的 Outlook 2001 要求其所用的每个帐户都有一个 LM 哈希。在没有 LM 哈希 的情况下,Windows 3.x 必定会中断,而 Windows 95 和 98 也会在某些情况下中断。另外,一些第三方产品(比如:网络附加存储设备)可能需要 LM 哈希。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值