选择安全密码的原理和策略

简介

  尽管现在可以选用许多方法进行用户身份验证,但多数用户仍然通过在键盘上结合输入用户名和密码来登录自己的计算机和远程计算机。某些产品使用了生物统计学、智能卡和一次性密码等更加安全的技术,而这些技术对于所有常用操作系统都可用;但实际情况是许多组织仍旧依赖于密码,并会在未来数年内维持现状。用户常常拥有许多不同的计算机帐户,分别用在工作、手机、银行、保险公司等各个方面。为简化密码的记忆任务,用户经常在每个系统中使用相同或相似的密码,而且多数用户会在允许的情况下选择简单易记的密码,例如自己的生日、母亲的娘家姓名或亲戚的姓名。对于攻击者来说,简短密码相对容易破解。攻击者用以破解受害者密码的部分常用方法包括:

  · 猜测 - 攻击者企图通过反复猜测可能的字词(例如用户子女的姓名、用户的出生城市和当地运动队等)来使用用户帐户完成登录。

  · 联机字典攻击 - 攻击者使用包括字词文本文件的自动程序。通过每次尝试时使用文本文件中的不同字词,该程序反复尝试登录目标系统。

  · 脱机字典攻击 - 类似于联机字典攻击,攻击者获得存储哈希处理或加密处理后的用户帐户与密码的文件的副本,然后使用自动程序来破解每个帐户的密码。如果攻击者已经设法获得了密码文件的副本,此类攻击便可迅速完成。

  · 脱机蛮力攻击 - 此类攻击是字典攻击的变体,但此类攻击的宗旨是破解字典攻击所用文本文件中可能没有包括的密码。尽管可以在联机状态下尝试蛮力攻击,但出于网络带宽和网络等待时间,一般是在脱机状态下使用目标系统密码文件的副本来实施此类攻击。在蛮力攻击中,攻击者将使用自动程序生成所有可能的密码的哈希值或加密值,然后将这些值与密码文件中的值进行比较。

  通过使用强密码,可以显著降低所有这些攻击方法的速度,或甚至击退这些攻击。因此只要可能,对于自己的计算机帐户,计算机用户都应使用强密码。运行基于 Microsoft?Windows NT?的 Windows 版本(包括 Windows NT 4.0、Windows 2000、Windows XP 和 Windows Server2003)的计算机都支持强密码。在 Windows 中,如果某个密码中的字符来自下面“字符类别”表格中五组中的至少三组,该密码即为强密码。

字符类别

示例

小写字母

a、b、c...

大写字母

A、B、C...

数字

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

非字母数字字符(符号)

( ) ` ~ ! @ # $ % ^ & * - + = | \ { } [ ] : ; " ' < > , . ? /

Unicode 字符

€、Γ、? 和 λ

  注意:空格字符不属于这五组字符中的任何一组,也不能提高密码复杂性。

  高度机密帐户(例如管理员或高级管理者使用的帐户)的密码或者用以运行重要网络服务的密码应由四组甚至全部五组中的字符组成。而另一方面,由人类使用的密码必须易于记忆,丢失高级管理人员或关键管理员帐户的密码将造成严重后果。本文档说明 Windows 系列操作系统中如何存储密码,并为管理员就如何最大程度地提高密码安全性提供了指导。

  这些矛盾的要求可以通过采用密码短语(而非单词密码)来克服。支持强密码的每个 Windows 版本都支持在帐户密码中使用空格和标点符号。例如,“I re@lly want to buy 11 Dogs!”即为一个有效密码短语。该密码的字符数超过了二十个,是一个超长的密码短语,且包含的字符来自 5 个可能的组中的 4 个。而且该密码短语也易于记忆!多数密码破解工具假设密码绝不会超过 14 个字符,而这也是 DOS 网络启动磁盘、Microsoft 远程安装服务 (RIS) 预执行环境 (PXE) 启动磁盘和更老的 LAN 管理器客户端 (Win9x) 必须使用的一种限制。即使并不复杂,超长密码(大于 14 个字符,最多 128 个字符)也可能可以十分有效地防止高度机密密码被破解。

  注意:请不要将本文档中的示例密码用作您的密码。尽管上面讨论的密码“I re@lly want to buy 11 Dogs!”特别长和复杂,但攻击者可能会将该密码及本文档中的其他样例密码添加到他们的攻击工具中。

  如果管理员须遵循旧版系统、RIS 或类似要求,或管理员仅仅是不喜欢处理过于长的密码,使用相对较短但包含复杂字符的密码也能提供不错的保护作用。但请注意,密码长度越大,其破解难度也越高。同时增加复杂程度和长度可以使密码成为最难以破解的密码。建立贵组织的密码策略可帮助保护用户免于被攻击者冒充,从而避免贵组织机密信息的丢失、暴露或破坏。

  本文档说明 Windows 系列操作系统中如何存储密码,并为管理员就如何最大程度地提高密码安全性提供了指导,还向用户解释了如何新建既满足复杂性要求又易于记忆的密码。

  本文档包括下列主题的相关信息和指导:

·

有关密码破解的其他详细信息。

·

Windows 如何存储包含有关 LAN 管理器 (LM) 哈希与 NTLM 哈希的信息的密码。

·

Unicode 字符及通过输入 Alt 键组合来使用 Unicode 字符的相关说明。

·

Windows 98 等旧系统的要求。

·

创建组织的密码策略。

·

向最终用户通告密码复杂性,包括可进行自定义或转发给组织内部工作人员的文本。

·

有关其他信息的资源,包括指向一些网站(提供了可帮助在组织中创建强密码策略的相关信息)的链接。

 准备工作

  在继续讨论密码策略的创建之前,很有必要真正明白密码哈希如何创建以及如何由 Windows 系列操作系统存储。另外,还有必要完全弄清楚 Entropy、Unicode 字符和 Alt 字符等其他与密码复杂性相关的概念。

  Windows 中的密码存储

  默认情况下,Windows NT 4.0、Windows 2000、Windows XP 和 Windows Server 2003 绝不会使用纯文本格式保存密码。而是使用两种不同的密码表示方法(一般称为“哈希”)保存密码。第一种方法是 LAN 管理器 (LM) 哈希,其安全性远不及第二种方法,即 NTLM 哈希。同时存储两种表示方法的原因在于需要考虑与旧版应用程序和 Windows 98 等旧版操作系统的后向兼容性。

  LAN 管理器 (LM) 哈希

  在技术层面上,LM 哈希根本不是哈希。其计算方法如下:

  1.

将密码中的所有小写字符转换为大写字符

2.

使用空字符加长密码,直至密码长度恰为 14 个字符

3.

将密码拆分为两个分别包含 7 个字符的字符块

4.

分别使用各字符块作为 DES 密钥来加密特定字符串

5.

将两个密码文本连接为一个 128 位字符串,然后存储结果

  LM 哈希算法所产生的哈希非常易于破解。首先,即使对于长度大于 8 个字符的密码,也可在两个单独的字符块中对其进行破解。其次,整个小写字符集可被忽略。因此,多数密码破解工具将首先破解 LM 哈希,然后只需改变已破解密码中的字母字符,以生成区分大小写的密码。请注意,无论是本地登录还是远程登录运行 Windows 2000 的计算机,都将需要使用保留大小写的密码。

  NTLM 哈希

  因为支持整个 Unicode 字符集,NTLM 哈希又称为 Unicode 哈希。NTLM 哈希的计算方法是首先获得纯文本密码,然后生成该密码的消息摘要 4 (MD4) 哈希。MD4 哈希实际存储在 Active Directory 数据库或本地安全帐户管理器 (SAM) 数据库中。NTLM 哈希抵御蛮力攻击的能力远远胜过 LM 哈希的抵御能力。蛮力破解 NTLM 哈希所需的时间长度相对于蛮力破解 LM 哈希的时间长度高出数个数量级。

  Entropy

  Entropy 是系统中无序程度的度量标准。密码中的 Entropy 级别由其中字符的涵盖范围与排列顺序的随机程度确定。在选择抵御破解能力较强的密码时,请务必仔细选择 Entropy 及其在密码中的出现位置。多数蛮力密码破解工具首先搜索常用键盘上的字母数字字符和符号,例如 ` ~ ! @ # $ % ^ & * ( ) _ - + =(因为出现在多数美式键盘的顶行,这些符号有时称为“上行符号”)。了解这一点,即可以使用 [ ] { } < > 等不同的符号来提高密码抵御破解的能力。还可使用 Alt 键组合进一步提高其抵御破解的能力。请注意,出于 LM 哈希的创建方式,在八字符密码的第八位上放置一个符号作为唯一的 Entropy 对密码复杂性的影响不大。要获得最大程度的 Entropy 和复杂性,非字母数字字符需贯穿于整个密码。

 在 Alt 键组合中使用 Unicode 字符

  大多数用户要找到易于记忆的密码短语应该没有问题,但对于拥有域管理员权限的帐户等高度机密帐户,强烈建议在使用 Alt 键组合的密码中包含 Unicode 字符。某些字符在标准美式键盘上并不出现。通过按住 Alt 键(或多数便携式计算机上的 FN 键和 Alt 键),然后在数字键盘(或便携式计算机上的数字重叠小键盘)上键入三位或四位数字,即可输入这些字符。

  使用这几类字符可在两个方面大大加固密码:第一,密码破解工具常常无法测试绝大多数这些类型的字符。第二,使用这些字符可极大扩展密码中出现的字符的范围,从而将密码的潜在复杂性提高了数个数量级。在使用 Alt 键组合的过程中,如果存在前导零,请务必注意,因为遗漏前导零将会变成另一个字符。例如,Alt+128 表示 _,而 Alt+0128 表示 €。本节其余部分将集中讨论四位代码(访问整个 Unicode 字符集),而会忽略三位代码(仅访问 ASCII 扩展字符集)。

  下表列出了可用作 Alt 键组合的数值。建议值范围是 0128 到 1024。下表中的每个单元都显示了单个数值或一系列数值。例如,第一个单元显示“0128-0159”。这表示您可以使用从 0128 到 0159 之间的任何值,例如 Alt+0135(对应于 Unicode 字符“_”)。

  推荐用于 Alt 键组合的 Alt 代码

0128-0159

0306-0307

0312

0319-0320

0329-0331

0383

0385-0406

0408-0409

0411-0414

0418-0424

0426

0428-0429

0433-0437

0439-0447

0449-0450

0452-0460

0477

0480-0483

0494-0495

0497-0608

0610-0631

0633-0696

0699

0701-0707

0709

0711

0716

0718-0729

0731

0733-0767

0773-0775

0777

0779-0781

0783-0806

0808-0816

0819-0893

0895-0912

0914

0918-0919

0921-0927

0929-0930

0933

0935-0936

0938-0944

0947

0950-0955

0957-0959

0961-0962

0965

0967-1024

  

  

分享到