技术的进步使密码越来越起不了防护作用

来源:岁月联盟 编辑:zhuzhu 时间:2007-07-06

其实密码就是某种形式的授权,或者认证,人们用它来限制对给定资源的访问。密码应当是保密的,这样才能限制人们对重要信息的获取。但是由于当今社会技术的不断进步,密码的功能已经越来越弱了。现在情况已经演变成:如果你用密码作为唯一的授权方法,那么就等于没有使用任何保护措施。现在破译密码的时间已经成为缩短成几分钟,而不再是几周或者几个月。现在即使最普通的数字财产,人们也需要使用额外的保护措施了。

为什么密码存在风险

密码是用来识别身份并提供访问你计算机中资源的权限的。这是一种在系统中确定你的权限的必要的认证形式。数字认证通常可以分为如下3种:

你了解的一些东西:密码,密令或者PIN码。

你拥有的一些东西:安全随机验证码或者智能卡。

你的一些特征:生理的(比如指纹或者视网膜扫描)。

一旦只用这其中的一种认证方式,那么这些密码都是最弱的认证工具。为什么呢?我们得面对一个现实,很多人都懒于在他们的密码上花心思:

他们编造很简单的密码,比如用宠物的名字或者最喜欢的球队的名字作密码。他们还在很多系统中都用同样的密码。他们把密码写在便签纸上放在电脑旁边。一旦你的密码不再保密,你就不能用它唯一的识别你自己的方法了——这就是说它不能保护你那些有用的信息了。不幸的是,就算你很谨慎地保管你的密码,黑客们可以用很多方法来获得它。

截获你的信息

那些坏家伙们能够在你上网传输密码的时候,使用特殊硬件或者软件——用这些工具他们可以读取存网络传输——来窃取你的密码。

如果在网络中传输的密码未经过加密,那么黑客们就可以直接截获你的密码。目前,仍然还有很多技术、应用以及协议,它们直接用文本格式传输密码,根本没有任何保护措施。比如:

·网站(HTTP)

·电子邮件(POP)

·Telnet和Ftp

用纯文本发送验证,那么黑客们可以毫不费力地发起攻击。

加密:用暗语说话

给密码加密是保护密码的方法之一,加密后,黑客无法直接解读它。加密的方法有很多种,都有一定的安全保护功效。比如:

·Windows LAN Manager以及NT LAN Manager 哈希表(LM和NTLM):NTLM是微软的一种认证协议,它使用challenge-response序列要求客户端与服务器端发送3种信息。

·NTLM v2:NTLM的升级版,解决了NTLM实现起来会出现的弱点。

·Kerberos:一种网络认证协议,允许人们通过不安全的网络互相通信,从而用安全的方式互相证明身份。

以上每种方法都只对密码应用了单向加密算法,建立加密的哈希表。简单说来,算法就是一种非常复杂的数学算式,系统用它来给创建加密后的密码(密码哈希表)。一般人们认为,我们是无法用数学的方法对加密的哈希表进行逆运算来获得原始密码的,因此它被看作是一种单向的过程。黑客们仍然可以截获该加密的哈希表,但是他们无法使用加密形式的密码。

一般密码是储存在本地系统数据库中的。只有这样做,当用户希望访问系统的时候,系统才能够验证用户的权限。这些密码通常都是用前面讨论过的加密哈希表加密的。不幸的是,对那些想要访问你的信息系统的人来说,该数据库就相当于打开系统之门的金钥匙。

很多操作系统都将密码保存在一些众所周知的标准路径中。Unix操作系统将密码存储在/etc/passwd中,而Windows则将密码存储在本地安全帐户管理(SAM)数据库中。如果攻击者能够获得此类文件,那么为了获得(或者破解)密码,他们很容易就可以攻击这些信息的高速缓存。

用词库或者穷举方式攻击

密码攻击的形式多种多样,最简单的大概就是猜密码了吧。通常使用这种方法的话,攻击者会努力猜出密码,然后手动登陆进计算机系统。很多人为了方便记忆,使用很简单的密码——这就使其他人也很容易猜出这个密码。

人们还经常忘了修改默认系统或者帐户的密码。使用Google大概搜索就可以获得一大堆各种系统的默认密码。人工猜密码非常慢并且很枯燥,并且很多系统会在你尝试失败一定次数后锁定,这使情况变得更复杂。

那么自动猜密码如何?请看如下2个常用的自动猜密码的方法:


词库式攻击
穷举攻击
 

词库式攻击使用常用词语和名字的词库作为猜密码的参考。那么那些选容易记的简单密码的人,他们可能选择常用词语、名字、地方等等做密码。词库攻击就是利用这些常用词语来进行攻击的,这些词库下载下来就能用。

穷举攻击要相对复杂一些,它执行起来时间相对长一些。简单说起来,穷举攻击会尝试所有的字母组合,直到找到正确的密码。这些组合的综合被称为密钥空间。为了算出这种所有组合的数量,我们把可用字符的数量记为y,把密码长度记为x,那么所有可能的组合的数量就是y的x次方。例如,让我们来算算只用大写字母来创建8位的密码这种情况下,可能的组合的数量是多少。如下的例子就计算了26的8次方是多少:


大写字母
 26
密码长度
8
 
keyspace (268)
 208,827,064,576
 

那么,如果我们把可选字符的范围扩大到标准键盘上的所有字符呢?那么一共就有96个字符:


所有96个字母
 96

密码长度
 8

keyspace (968)
 7,213,895,789,838,340
 

随着可用字符的增多,可能的字母组合的数量也按几何级数的规律增长。这就意味着破解这些密码所需要的计算时间也成比例地增长了。NIST特刊800-63出色地讨论了密码安全性以及密码属性(长度和可用字符)对其的影响。

那么,使用穷举攻击来破解这些密码到底需要多少时间呢?这里我就不再重复所有的数学公式以及情景了,你可以参考《破解密码需要多久?》这本书,该书针对这个问题进行了详细解说。根据这篇文章的观点,最高可能需要210年来尝试8位密码的所有可能组合(可用字符是键盘上的所有字符)。对任何人来说,花两个世纪来破解一个密码是没有任何意义的。这就是穷举攻击的明显弱点,因此那些黑客们开发了新的技术,包括分布式计算处理技术以及Cryptanalytic Time-Memory Trade-Off技术。

分布式处理技术让破解更快捷

黑客们对开发更快攻击手段的尝试开始于使用分布式处理模型。我们可以找到很多该技术的典型例子,比如SETI@Home还有Folding@Home。这些工程利用睡眠状态计算机的屏幕保护程序来进行复杂计算。这种概念也在被称为分布式john或者djohn的分布式密码破解机中使用。那个站点的一位专家解释了该过程:

“有了分布式John(djohn)你就可以使用多台机器来破解密码,这样就比用一台机器快得多。具体的破解工作由每台机器自己完成,而djohn的服务器(djohnd)则将工作划分成工作包,并协调客户端的工作(djohn),这些客户端也就是负责具体工作的那些机器。”这种方法让黑客们获得了几乎是不受限制的破解能力。似乎唯一的限制就在于他们能够获得多少台计算机来完成这项工作。

Cryptanalytic Time-Memory Trade-off更有效

最终,人们发现我们没有必要重复进行这些冗长的计算。换句话说,为什么要反复做同样的事情呢?为什么不就做一次然后把结果保存下来,以供下次使用呢?这个想法最终导致了 Cryptanalytic Time-Memory Trade-Off概念的诞生。由于篇幅有限,在此我就不赘述该概念了,不过需要指出的是,该概念接着引出了密码破解用的Rainbow Tables的实现。Rainbow tables使用存储在一个查询表格中的已经生成好的密码哈希表。因此,人们只需要创建一次,然后就可以把它存储起来备用。但是,这种方法也有些难点:

创建这些表格仍然需要很多时间。Rainbow Tables还是用分布式处理的应用程序来解决的这个问题。该项工程需要的存储量非常大(数百G)。以前,这么大容量的硬盘非常昂贵,但是现在,500GB的硬盘只要100多美元就可以了。

未来还可能出现哪些威胁?

随着技术的进步以及众多新点子的诞生,我们面临的风险也随之升级。一些比较严重的威胁包括:

摩尔定律:摩尔定律指出,芯片上晶体管的数量每两年翻一番。这就导致CPU越来越快、计算处理能力越来越强。我们还有了双核处理器,这又将cpu的处理能力提升了数倍。Intel甚至宣称他们正在进行80核cpu的实验。尽管现在我们还用不上80核的cpu,但是有人预计5年之内人们就可以用上它了。

高端显卡:如今的显卡都是用双核处理器的,并且都是自带RAM的。ATI和nVidia都发布了一些开发套件,用这些套件人们可以开发利用这些强大的处理器的程序。

游戏主机:比高端显卡功能更强大的就是PS3游戏主机了。PS3可以联接到网络并且处理器的能力更强。 Folding@home已经使用了这种技术。我们可以从性能比较的结果中看到这一点。它简略显示了这两个平台与各种PC平台处理能力的对比。黑客们把这些技术用于破解密码或者其他破解工作只是时间问题。

如何防御?

我认为下一步我们显然应当实现某种形式双重验证。尽管有很多实现的方法,成本最低而且性价比最高的方法就是分发随机验证码,比如RSA securID。这是比较著名的一种解决方案但对那些小的组织来说,这种方案的性价比可能不是很高。但是,Paypal最近实现了一种类似的解决方案(Paypal安全密钥),他们向用户收取的一次性费用是5美元。

还有一些其他的方法和产品,企业和政府也应当开始评估他们的选择。现在危机每天都在增长,并且很快单用密码就无法提供足够的保护功能了。