Unix/BSD/Linux的口令机制初探

2009-05-13 12:59:02来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


Freebird
1.概述
早期U N I X系统把用户口令保存在一个纯文本可读的“口令文件”中,这可能在系统管理员注意不到的情况下被截取并暴露。它也可能在一次偶然事件中泄露。
从AT&T UNIX版本6开始,Thompson 等决定采用一个不同的方式: U N I X口令采用以美国军方M - 2 0 9密码机为模型的基于旋转的算法来进行编码。这种快速算法被证明对穷尽纯文本搜索有弱点并被AT&T UNIX版本7中出现的更先进的crypt ( )库代替。
现在Unix/Linux将口令以不可读的方式保存在机器中。系统使用名为cryptographic hash的算法将口令转换成文本字符串。这个串即称为散列或者散列值。使用的算法可以有多种,但它们都是不可逆的,也就是说不能从散列值中恢复出原始口令。不同的系统,所使用的密码文件以及加密算法都可能不同。管理、维护好这些密码文件是保证系统安全的首要任务。(未特别说明,本文所有命令均在csh下以root身份运行。)
2.加密算法简介
2.1---crypt()简介---key 和 salt
在Unix/Linux下存在多种散列算法。可以通过库函数crypt()调用这些系统支持的算法。crypt()有key和salt两个参数,并返回相应的散列值。salt亦即我们常说的“盐”,它只是简单的字符串,它的长度取决于所使用的算法,不同的散列算法它有不同的取值范围。所以,即使是相同的算法,相同的原始口令,使用不同的salt,也会得到不同的加密口令。salt的目的也就是为了加大口令破解的难度,当我们使用passwd命令来修改密码时,它会随机选择一个salt. s a l t使得使用预编译字典对加密口令进行攻击变得更困难。代替为字典中每个单词做一次单独加密,攻击者现在不得不对字典中每个单词的4 0 9 6种排列进行加密和储存。在2 0年前,s a l t是作为本质上的资源障碍引入的,但现在1 2位s a l t不再被认为是一种有效的防御方法。
crypt()可以在C程序中直接调用,甚至可以用perl直接调用,(详细信息请man 3 crypt),如下例:
%perl -e 'print crypt("mypass","s1"),"\n"'
s1tROevFyi.yQ
%perl -e 'print crypt("mypass","s2"),"\n"'
s2JQ85JElCMeU
以上两例中s1、s2分别为salt 值,可以看到,相同的口令(上例中为mypass)使用不同的salt将得到不同的散列值。 以上两例使用的都是DES算法,加密后的散列值将salt值作为其前缀。
2.2DES算法
由美国政府和IBM研制。所有的Linux版本和几乎所有的Unix系统都支持DES.DES实际上为一个加密算法,但是crypt(3)将之做为散列算法。普通的DES算法容许的原始口令长度为8个字符,多余的口令也接受,但是多余部分会被系统自动摒弃。但有些系统(例如HP-UX)使用DES的多次迭代来解决此问题,这样就可以使用任意长度的密码。但是使用DES加密后的口令为13个字符长。
2.3MD5算法
它是真正的散列算法。允许无限长的口令。它使用的salt空间也别DES算法大得多,所以两口令相同的可能性更小。它也通过调用crypt(3)函数实现。MD5算法使用的 salt必须以$1$开头,并以$结尾。且salt长度为8个字符。例如要用abcdef为salt 散列mypass,那么如下:
%perl -e 'print crypt("mypass","\$1\$abcdef\$"),"\n"'
$1$abcdef$nRHvewzGzJoYskdQAIEQr
注:上例中的"\n"均为转义字符。salt值为$1$abcdef$,原始密码为mypass,散列值为:$1$abcdef$nRHvewzGzJoYskdQAIEQr
MD5算法得到的散列值为31个字符长,并且都以$1$开头。
2.4其他算法:
BSDI风格的DES和Blowfish使用也比较广泛,本文将在后面会有讨论。
2.5 BSD使用的加密机制:
各种D E S很长一段时间内一直是U N I X口令加密的主要算法,但还有其他算法可以代替D E S。现代B S D系统提供了一些其他算法的应用范例。缺省情况下, FreeBSD默认使用MD5加密机制,因为MD5没有出口限制,同时也更安全于DES。DES仍然可用,只不过DES存在的目的仅仅是为了和其他UNIX系统所用的密码的向后兼容性。并且使用DES的系统也能鉴别出MD5,因为MD5所用的Hash也在DES中被使用。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD 5.2.1 boot0(启动扇区代码分析)

下一篇:隐藏 qmail 的 SMTP help 信息保护你的系统