虽然现在可以选用多种方式进行用户身份验证,如使用生物统计学、智能卡和一次性密码等非常安全的技术,但在实际应用中,多数用户仍然通过用户名和密码的验证方式来使用计算机和上网,并会在未来数年内维持现状。用户常常拥有许多不同帐户,为简化密码的记忆任务,经常在多个系统中使用相同或相似的密码,而且多数用户会在允许的情况下选择简单易记的密码,例如自己的生日、姓名或亲戚的姓名。对于攻击者来说,简短密码相对容易破解。攻击者用以破解受害者密码的部分常用方法包括:
(1) 猜测
攻击者企图通过反复猜测可能的字词(例如用户子女的姓名、电话等)来试探用户的密码。
(2) 联机字典攻击
攻击者使用字典中的字词,通过反复联机尝试登录目标系统。
(3) 脱机字典攻击
类似于联机字典攻击,攻击者首先获得存储有经过哈希处理或加密处理后的用户帐户与密码的文件,然后脱机利用字典来破解每个帐户的密码。
(4) 脱机蛮力攻击
尽管可以在联机状态下尝试蛮力攻击,但出于网络带宽和网络等待时间,一般是在脱机状态下使用目标系统密码文件的副本来实施蛮力攻击。此类攻击是字典攻击的变体,使用自动程序生成所有可能的密码的哈希值或加密值,然后将这些值与密码文件中的值进行比较,这样能够在一定程度上弥补利用字典攻击时可能遗漏的密码。
为了使密码更加难于破解,在设计密码时有以下通用的原则:
不要使用任何易于猜测的字串例如“password”、“1234”、“asdf”、“!@#$%^”、用户名或者字典中的单词作为密码。其中“asdf”和“!@#$%^”看上去很古怪,其实由于他们在键盘上排列的规律,早就被攻击者编入了攻击字典,这是最容易被破解的密码!
不要用使用个人信息如自己的名字、亲友的名字、昵称、街道地址、生日、电话、汽车牌照或者其他易于识别或猜测的单词作为密码。
务必使用字母和数字的混合模式,如果允许还可使用大、小写字母和特殊字符的组合形式。
在不影响使用、便于记忆前提下,尽量使用更长的密码。
通过使用强密码,可以显著降低这些攻击方法的速度,甚至击退这些攻击。Windows NT、Windows 2000、Windows XP 和 Windows Server2003都支持强密码。在 Windows系列操作系统中,如果一个密码中的字符来自下面“字符类别”表格中五组中的至少三组,该密码即为强密码。
(1) 小写字母
a、b、c …… z
(2) 大写字母
A、B、C …… Z
(3) 数字
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
(4) 非字母数字字符(符号)
( ) ` ~ ! @ # $ % ^ & * - + = | / { } [ ] : ; " ' < > , . ? /
(5) Unicode 字符
€、Γ、? 和 λ
强密码应由四组甚至全部五组中的字符组成,但密码必须易于记忆,遗失系统管理员帐户的密码也会造成严重的后果。为使设计的强密码便于记忆,可以通过采用密码短语(而非单词密码)来克服。支持强密码的每个 Windows 版本都支持在帐户密码中使用空格和标点符号。例如,“Wo Ai Bei Jing Tian An Men(1949.10.1),Ye Ai Yi He Yuan(2008-08-08)”即为一个有效密码短语。该密码是一个超长的密码短语,且包含的字符来自 5 个可能的组中的 4 个。而且该密码短语也易于记忆。多数密码破解工具假设密码不会超过 14 个字符,而这也是 DOS 网络启动磁盘、Microsoft 远程安装服务 (RIS) 预执行环境 (PXE) 启动磁盘和更老的 LAN 管理器客户端 (Win9x) 必须使用的一种限制。即使并不复杂,超长密码(大于 14 个字符,最多 128 个字符)也可能可以十分有效地防止密码被破解。该密码可以简化为“Wabjtam1949,Yayhy2008”,通过取密码短语的各单词的首字母,配合变换大小写构成一个既简单又容易记忆的强密码。
大多数用户要找到易于记忆的密码短语应该没有问题,但对于拥有域管理员权限的高度机密帐户,强烈建议使用 Alt 键组合 Unicode 字符从而使密码中包含 Unicode 字符。通过按住 Alt 键(或多数便携式计算机上的 FN 键和 Alt 键),然后在数字键盘(或便携式计算机上的数字重叠小键盘)上键入三位或四位数字,即可输入Unicode字符。使用Unicode字符可在两个方面大大加固密码:第一,密码破解工具常常无法测试这种类型的字符。第二,使用Unicode字符可极大地扩展密码中出现的字符的范围,从而将密码的潜在复杂性提高了多个数量级。
用户通常都很注意密码设计时的安全问题,但忽略了密码使用中的安全问题,使用中一定要注意:
(1) 最好不要把密码写在纸上或是存储在计算机里。如果密码很复杂,遗失密码会造成很严重的后果,有必要把密码记录下来,务必保存在一个安全的地方。
(2) 务必对保存密码的文件进行加密。
(3) 避免在多个系统中使用同一个密码,如果其中某个系统被攻破,与之相关的系统都无安全性可言。
(4) 务必定期修改一次密码。即使长而强的密码难于破解,但仍然是可破解的。只要拥有足够的时间和计算能力,攻击者最终可以破解任何密码。一般情况下,密码应在 42 天内进行更改,而旧密码应永远不再重用。
(5) 防止黑客利用社会工程学获取密码。当接到电话或是收到邮件声称需要进行系统维护或是安全检查,要求提供某个系统的密码时,千万要去确定事件的真实性,很可能是黑客在骗取密码。