业界 | 信息 | 基础 | 配置 | 安全 | 系统 | 方案 | 协议 | 硬件 | 下载 | 制度 | 漏洞 | 解密 | 群集 | 论文 | 导购 | 数据库 | 反病毒 | 反黑客 | 白皮书 | 负载均衡 | Windows | Linux | Unix |
热门搜索:  安全  ?务器  IIS  VMWare  微软  企业  网络  黑客  win  sql RSS订阅
服务器安全资讯网

Unix BSD Linux的口令机制初探

来源:服安资讯   时间:2009-11-30  作者:fuancn  点击:次  责任编辑:Flyfox
TAG:   Unix Linux 机制 口令 BSD   服务器安全应急处理中心:让您的服务器更安全!  进入安全讨论社区 

摘要:
1.概述 早期U N I X系统把用户口令保存在一个纯文本可读的口令文件中,这可能在系统管理员注意不到的情况下被截取

 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口令看起来如下:

顶一下
(0)
0%
踩一下
(0)
0%
服务器安全维护网:为您的服务器安全、稳定运行助航,提供服务器全方面的技术支持服务! 服务器安全资讯网(Fuancn.CN)登载此文仅为传递更多信息之目的,并不意味着赞同其观点或证实其描述。
  • 本文引用地址:双击复制发送给您的朋友!
  • 上一篇:FreeBSD安全连接方式SSL 下一篇:没有了

    - 关于本站 - 网站地图 - 百度新闻 - 版权申明 - 合作伙伴 - 安全服务 - 服安公告 - 常见问题 - 技术Q群 - 在线留言 - 联系我们 -