服安最新信息资讯

服安资讯热点推荐
服安资讯阅览排行
信息安全法律法规
- 信息安全等级保护管理办法
- 广东省计算机信息系统安全保护条
- 中国国家信息安全等级保护制度开
- 欧盟网络和信息安全法律规制及其
- 互联网电子公告服务管理规定
- 互联网上网服务营业场所管理条例
- 浪潮服务器安全技术要求成为国家
- 计算机信息网络国际联网安全保护
服务器安全技术资讯
- 深入挖掘Oracle内部SQL注入
- 什么是MPLS中的FEC?
- 如何让域控DC的AD更加安全
- 实例:Linux中如何查看服务及监听端
- 服务器安全检查十大要素
- 什么叫0day?0day是什么?
- Windows 2003下如何提高FSO安全性
- 计算机网络安全的六大指标详述
服安解决方案
Unix BSD Linux的口令机制初探
来源:服安资讯 时间:2009-11-30 作者:fuancn 点击:次 责任编辑:Flyfox
TAG:
Unix
Linux
机制
口令
BSD
服务器安全应急处理中心:让您的服务器更安全! 进入安全讨论社区

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中被使用。
O p e n B S D走得更远。其开发小组在加拿大,这样就不受美国的出口限制。O p e n B S D可以被配置成使用传统的UNIX crypt () 、比如“扩充加密”、M D 5或B l o w f i s h。M D 5由Ronald L.Rivest开发,它在RFC 1321中描述。F r e e B S D和O p e n B S D中基于M D 5的crypt ( ) 产生的口令条目包含版本号、s a l t和哈希口令,彼此之间用“ $”符号分隔。一个M D 5口令看起来如下:
上一篇:FreeBSD安全连接方式SSL 下一篇:没有了


RSS订阅
