现代Unix/Linux系统上的密码是否仍限于8个字符?

Chi*_*ael 22 unix linux security passwords

多年以前,Unix密码限制为8个字符,或者如果你的密码长度超过8个字符,那么额外的密码就不会有任何区别.

大多数现代Unix/Linux系统仍然如此吗?

如果是这样,在大多数系统上何时可以使用更长的密码?

是否有一种简单的方法可以判断给定的系统是否支持更长的密码,如果是,那么有效最大值(如果有的话)是多少?

我已经对这个主题进行了一些网络搜索,并且找不到任何确定的内容; 所提出的大部分内容来自于21世纪初,当时我认为8个字符的限制仍然很常见(或者通常足以保证坚持这个限制).

mar*_*k4o 14

尽管最初的基于DES的算法仅使用密码的前8个字符,但Linux,Solaris和其他较新的系统现在还支持其他密码哈希算法,例如没有此限制的MD5.如果您的网络包含较旧的系统并且使用了NIS,则有时需要继续使用旧算法.如果只输入> 8个字符密码的前8个字符,系统将登录,您可以确定仍在使用旧的基于DES的算法.

因为它是哈希算法,所以MD5没有内在限制.然而,各种接口通常会施加至少72个字符的限制.

尽管最初加密的密码存储在世界可读的文件(/etc/passwd)中,但它现在通常存储在单独的影子数据库(例如/etc/shadow)中,该数据库仅可由root读取.因此,算法的强度不再像以前那么重要.但是,如果MD5不合适,可以在某些系统上使用Blowfish或SHA.Solaris支持可插拔密码加密模块,允许您使用任何疯狂的方案.当然,如果您使用的是LDAP或其他共享用户数据库,则需要选择所有系统都支持的算法.


jmb*_*jmb 14

glibc2的(任何现代的Linux发行版)的密码加密功能,可以使用MD5/SHA-XXX(通过一个神奇的盐前缀挑起),然后将其视为显著所有输入的字符(见男子3隐窝).要对您的系统进行简单测试,您可以尝试以下方法:

#!/bin/perl -w
my $oldsalt = '@@';
my $md5salt = '$1$@@$';
print crypt("12345678",  $oldsalt) . "\n";
print crypt("123456789", $oldsalt) . "\n";
print crypt("12345678",  $md5salt) . "\n";
print crypt("12345678extend-this-as-long-as-you-like-0", $md5salt) . "\n";
print crypt("12345678extend-this-as-long-as-you-like-1", $md5salt) . "\n";
Run Code Online (Sandbox Code Playgroud)

(在我的系统上给出)

@@nDzfhV1wWVg
@@nDzfhV1wWVg
$1$@@$PrkF53HP.ZP4NXNyBr/kF.
$1$@@$4fnlt5pOxTblqQm3M1HK10
$1$@@$D3J3hluAY8pf2.AssyXzn0
Run Code Online (Sandbox Code Playgroud)

其他*ix变体支持类似 - 例如crypt(3),因为至少Solaris 10.但是,它是一个非标准的扩展 - POSIX没有定义它.


Kei*_*ler 5

不适用于Linux.如果你禁用MD5 Hashing,它只有8.

http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

您还可以管理强制执行更长和更复杂密码的策略.

这里讨论全长:

http://www.ratliff.net/blog/2007/09/20/password-length/

  • 对于使用散列密码,MD5没有"破坏"; 逆转短输入的MD5哈希仍然没有比蛮力更好的方法; 可以可行地构建用于较大文件的MD5哈希冲突,但这并不意味着它对任何应用程序都不安全. (2认同)
  • 现在,某些系统也支持Blowfish和基于SHA的哈希. (2认同)

S.L*_*ott 5

你在问这个crypt算法吗?

http://linux.die.net/man/3/crypt

"通过获取密钥的前八个字符中每个字符的最低7位......"

"这个函数的glibc2版本具有以下附加功能....这里的整个键很重要(而不是前8个字节)."

这是一个关于多久以前这种变化发生的提示.

Glibc 2 HOWTO
  Eric Green, ejg3@cornell.edu
  v1.6, 22 June 1998
Run Code Online (Sandbox Code Playgroud)