[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 安全技术 > 系统 > 正文
FreeBSD 的DES, MD5, 以及 Crypt
http://www.fanqiang.com (2001-04-30 12:31:00)

   Contributed by Garrett Wollman 
   24 September 1995.

   缘起

   为了保护 在 UNIX 系统 password 的安全性, 在传统上 password 用了许
   多方法去扰乱,使其不被容易的显露出来。由贝尔实验室第七版的 Unix
   开始,password 用了"one-way hash fuction" 弗K。这仍N是说, passowrd
   被上述的方法转换使原来的 password 不能被解出,除非使用
   暴力方法搜寻所有可能的 password。不幸地,唯一可以由 AT&T
   得到的安全的方法是 DES (Data Encryption Standard)。这对商业版的
   贩售商的影响不大,然而对 FreeBSD 这种原始码自由公开的作业系统
   却是一个很严重的问题,因为许多国家的政府限制 DES 和其他弗K软体出口。

   因此, FreeBSD 小组面对一个两难问题:我们如何提供在美国以外的 所有
   UNIX 系统的相容性而不会违法?我们决定采用双轨制:
   我们希望将发行的版本只包含一个非正式的 password 扰乱器,并提
   供一个分开来的附巨&w(DES-based password hash)。这个将 password
   扰乱的函式从 C 的函式库分离到另一个函式库叫`libcrypt'而其 中 C
   的函式叫`crypt'。在 FreeBSD 1.x 和一些2.0的试用版中,
   这个非正规的扰乱器使用了一个由 Nate Williams所写不安全的函式;往
   後的的版本中这个函数被使用由 RSA Data Security公司的MD5 one-way hash
   fuction 的机制所替代。因为以上这两个函式都没有弗K的功能,
   所以可以由美国输出或是输入到一些国家。

   在这期间,DES-based 密码 hash 函式依然在进行中,首先一个在美国
   以外发展的`crypt' 函式被输入,因此美国版与非美国版有了一
   致性。然後,弗K方面的函式库被修改并拆成两个,一为 DES `libcrypt'
   只包含 one-way password hash,另一个函式库 `libcipher'
   包含真正的弗K函式,这些函式库之所以被分离出来
   ,是为了可以容易的取得编译函式库的出口执照。

   了解你的 `crypt' 方法

   分办 DES-based 或 MD5-based hash 函式所产生的密码字串是很容易的。 MD5
   密码字串的启始字元总是`$1$'. 而 DES密码字
   串则没有任何特殊的字元,但是这些字串比 MD5所产生的较短,而且
   被编成64个不包含`$' 的字元,因此比较短且不含钱字号 的字串就很有可能是
   DES 的密码。

   在大部分程式中,要决定你的系统是使用那一个函式库是相当容易的。
   除了那些像是静态连结的`init'((对那些程式而言,唯一的方法
   是用一个已知的密码去试看看并自己去看)用`crypt' 的程式
   靠`libcrypt'所连结的,每一个函式库都连结到适当的地方。
   举个例子,在使用 DES 的系统中:


$ cd /usr/lib
$ ls -l /usr/lib/libcrypt*
lrwxr-xr-x  1 bin  bin  13 Sep  5 12:50 libcrypt.a -> libdescrypt.a
lrwxr-xr-x  1 bin  bin  18 Sep  5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0
lrwxr-xr-x  1 bin  bin  15 Sep  5 12:50 libcrypt_p.a -> libdescrypt_p.a



   在一个使用植基於 MD5 函式库的系统,一样有连结存在,但是它是连
   结到`libscrypt' 而不是`libdescrypt'.
     _________________________________________________________________
(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
 

★  樊强制作 欢迎分享  ★