UNIX® 系统上的每个用户都有一个与其帐户关联的口令。 很显然, 密码只需要被这个用户和操作系统知道。 为了保证口令的私密性, 采用了一种称为 “单向散列” 的方法来处理口令, 简单地说, 很容易从口令推算出散列值, 反之却很难。 其实, 刚才那句话可能并不十分确切: 因为操作系统本身并不 真的 知道您的口令。 它只知道口令 经过加密的形式。 获取口令对应 “明文” 的唯一办法是采用暴力在口令可能的区间内穷举。
不幸的是,当 UNIX® 刚刚出现时,安全地加密口令的唯一方法基于DES, 数据加密标准 ( the Data Encryption Standard )。 于是这给那些非美国居民带来了问题, 因为 DES 的源代码在当时不能被出口到美国以外的地方, FreeBSD 必须找到符合美国法律,但又要与其他那些使用 DES 的 UNIX® 版本兼容的办法。
解决方案是把加密函数库分割为两个, 于是美国的用户可以安装并使用 DES 函数库, 而国际用户则使用另外一套库提供的一种可以出口的加密算法。 这就是 FreeBSD 为什么使用 MD5 作为它的默认加密算法的原因。 MD5 据信要比 DES 更安全,因此,安装 DES 更多地是出于兼容目的。
现在这个库支持 DES、 MD5 和 Blowfish 散列函数。默认情况下, FreeBSD 使用 MD5 来加密口令。
可以很容易地识别 FreeBSD 使用哪种加密方法。
检查 /etc/master.passwd
文件中的加密密码是一种方法。
用 MD5 散列加密的密码通常要比用
DES 散列得到的长一些, 并且以
$1$
字符开始。 以
$2a$
开始的口令是通过
Blowfish 散列函数加密的。 DES 密码字符没有任何可以用于鉴别的特征,
但他们要比 MD5 短, 并且以不包括 $
在内的
64 个可显示字符来表示,
因此相对比较短的、没有以美元符号开头的字符串很可能是一个 DES 口令。
新口令所使用的密码格式是由 /etc/login.conf
中的 passwd_format
来控制的, 可供选择的算法包括
des
, md5
和
blf
。 请参考 login.conf(5) 联机帮助以获得更进一步的详情。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.