内部网中的密钥管理

/ns/wz/net/data/20020808014423.htm




内部网中的密钥管理

http://www.ccw.com.cn 中国矿业大学机电系计算机教研室 于宁


黑客攻击口令的手段 


在现实中,黑客攻击Intranet目标的时候,90%会把破译普通用户的口令作为第一步。先用“finger 远端主机名”找出主机上的用户账号,然后用字典穷举法进行攻击。因为事实上,很多用户都把自己常用的英文单词或者自己的姓名作为口令。通过一些程序,自动地从计算机字典里面去找单词作为用户的口令输入给远端的主机,尝试进入系统。这个破译过程是由程序来完成的。大概十几个小时就可以把字典里的单词都完成。这类程序的典型代表是LetMeIn version 2.0。  
如果这种方法不能奏效,黑客就会仔细地寻找目标的薄弱环节和漏洞,伺机夺取目标中存放口令的文件shadow或者passwd。在现代的Unix系统中,用户的基本信息都是存放在passwd文件中的,所有的口令都经过DES加密后专门放在shadow文件中,处于严密的保护下。老版本的Unix的口令都在passwd文件中。一旦获得了这个文件,就可以用专用的破解DES加密算法的程序来解析口令。  
 
口令的取值范围 
在Unix下,可以当作口令来用的字符一共有:  
10(数字)+33(标点符号)+26×2(大小写字母) =95个 
 
如果口令取任意5个字母+1 位数字或符号的可能性是:  
 
52×52×52/×52×52×43=163亿。  
 
但是如果5个字母是常用的词,那么假设常用的词是5000个,考虑到大小写,可能性将有:  
 
5000×(2+2+2+2+2)×43= 688万种可能性。  
 
这已经可以利用微机来进行穷举了,这样的简单口令用不了3分钟就能破译,如果有人用P200进行攻击,那么一周内可以进行200次攻击,所以6位的口令都是很不安全的。  
 
遗憾的是许多用户都是这么设定的,而黑客不需要破解所有用户的口令,他们只需要一个普通用户的口令就足够了,只要潜入系统,就可以利用系统的漏洞而获得系统的控制权,所以使用简单口令是对整个主机安全的不负责任,这是首先我们应该重视的问题。  
 
为什么口令的解密是相对容易的事呢?这是因为目前广泛使用口令加密算法是完全公开的DES 算法,这种算法之所以公开,是因为一直没有人能找到一种方法逆向解开它加密的信息。  
 
DES现在的加密算法在Unix下的生成程序叫Crypt,它的源码在标准GUN分布式系统C库中可以找到。  
 
Crypt的版本可能不同,但是它的一般过程如下:  
 
・以明码正文(或密码术语)形式取出口令。  
 
・把口令作为关键字,用一系列的“0”进行加密(共64位),编码结果成为加密正文。  
 
某些Crypt版本,尤其是Crypt (3),采用将上述结果再进行加密,可以说是相当坚固的。  
 
密码算法(DES)把一个64位的二进制值转变成以56位变量为基础的、唯一的64位二进制值。如果只用全64位输入,并且如果56位变量是随机选取的,则除了用已知的DES输入输出值去尝试所有可能的关键字外,是没有什么技术能够发现DES选择的关键字的,因为56位的关键字存在超过 7×1016种可能性。  
 
虽然DES加密算法如此坚固,但是想要解开它并不是很难,因为它可以通过比较法解开:  
 
・获得一个字典文件,该文件是一个真正的单词明码正文列表。  
 
・把这些单词用所有的加密程序进行解密,这种加密符合DES标准。  
 
・把每个加密的单词与目标口令比较,如果匹配,则该目标口令被破解的可能性超过90%。  
 
令人惊异的是,现在的很多解密程序都采用了相当好的规则来处理字表中的每一个单词,比如:  
 
・大小写交替使用。  
 
・把单词的正向、反向拼写后,接在一起。  
 
・在每个单词开头或者结尾加数字或符号。  
 
・交替使用字母和数字。  
 
这些很好的规则虽然延长了破解的时间,但是破解成功的可能性也增大了。  
 
结论 
系统管理员必须要注意所有密码的管理,要点是:  
・不要把口令写下来。  
 
・最好用8位的口令。  
 
・不要选取显而易见的信息做口令。  
 
・不要在不同系统上使用同一口令。  
 
・输入口令时应在无人的情况下进行。  
 
・口令中最好要有大小写字母、字符、数字。  
 
・定期改变自己的口令。  
 
・定期用破解口令程序来检测shadow文件是否安全。