|
精明的NT口令解密者打开一个八个字符的口令将比打开七个字符串要快。但是在复杂程度上,七个字符怎能与八个字符相比? . ^0 T- l) z# g& S; _, ]
证明这一点的最佳途径是利用理想口令。让我们考虑口令“567890Zxcvbn”:12个字符,有数字、有字母、大小写都有;. n: v: u. l% X7 [- z4 H
从哪种角度看来,都是一种难解的NT口令。这就是说,除非NT的LanManager(LM)口令散列算法才可能掌握它。
$ _1 P& f' Y) z4 nNT 在注册表的安全帐户管理程序(SAM)部分中存储两种独立的加密用户口令版本:一种是LM版,7 Z8 c+ r7 r0 W6 L
另一种是更加强大的加密NT版。LM版是这种情况下的致命弱点。
; n0 X. k: l. Z' f' [. x; T+ F. v/ f为了理解原因,你需要理解LM算法在加密口令时要做些什么。
4 v, v3 Y: S' m; q' [你可以在www.10pht. com/10phtcrack/rant.html找到很精彩的技术讨论。+ d) S" M5 C7 i7 i% K7 n/ k
就我们的目的而言,要提到的重要一点是,LM将所有字符转变成大写,将口令扩充为14个字符(使用无意义的暗码)," r9 x' _# p, o, D. S
然后,将这个字符串分成由七个字符组成的两部分,再分别进行加密。
( F- R a! i# O9 r: o* V最后,将两组加密字符串连成一串,设置成最终的口令散列。 - q. g# ?6 E/ [7 s2 `
在肉眼看来,这个由两部分构成的字符串似乎是一个,但是, 8 n8 Q; m! T6 y+ ^# b) ~8 y! P" d
L0phtcrack (www. l0pht.com)等NT口令反向设计软件却能独立地推断口令的每一个部分。) g9 \8 j* n' k1 Q1 T; M
比如一个在包含名称为dboies的用户NT SAM文件上工作的L0phtcrack,其口令为“???????XCVBN”,! D1 T, r- p4 |2 s+ {8 u: k/ t
与我们理想的56780Zxcvbn一样。由于口令的最后五个字符是ASCII 文本(“XCVBN”),6 M2 F8 |3 A$ x* Q1 H# ^
L0phtcrack在一台P II机上几秒内就能破译出来。
i: @8 A4 ]2 t# M! I, J) r我们假设,我们的口令解密者注意到在他利用L0phtcrack进行努力之后,得出的结果中记录了字符串“XCVBN”,
8 F, _% ?( }' u" n% o3 b# @并作出猜测:用户是根据键盘上的键的顺序来选择口令。他停止使用L0phtcrack,向自定义字典文件添加了一些可计算的推测,
& J* t' ~( u4 h8 l% f/ }2 {' T1 Y# D5 }并用这个字典进行新一轮解密,dboies的口令当即出现在屏幕上。 , u5 S+ _# T* A7 }( s# R8 y, m, W
当然,如果时间充足,任何口令最终都会被解密。
7 e% `9 v. p) y; s. Q+ N: T+ l5 }9 z0 a长度为八个和九个字符的口令威胁性最小。但至少理论上说,任何长度不是刚好七个或十四个字符的口令都是不够安全的。 |