为什么OpenWrt的根密码最大长度为8个字符?


29

当我尝试设置root的密码时:

root@OpenWrt:~# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.

似乎最大长度为8。如果我尝试设置的密码长于8,则仅前8个字符有效。如何设置更长的密码root

我的OpenWrt版本:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux

Answers:


35

这是因为基于DES的crypt(AKA'descrypt')将密码截断为8个字节,并且仅出于密码验证的目的检查前8个字节。

这是您直接问题的答案,但是以下是您的上下文所暗示的一些一般性建议:

  • 幸运的是,我的阅读,MD5/etc/login.defs实际上是md5crypt($ 1 $),它们虽然有点过时,并宣布其作者过时,仍然是远远优于基于DES-crypt(已经和肯定好得多不是像普通的原料,不加盐哈希MD5!可以以数十亿每秒的速度在商品GPU上破解大多数未盐化的哈希值)

  • 看起来SHA256(实际上sha256crypt)和SHA512(实际上sha512crypt)也在那里。我会选择其中之一。

  • 如果password在每种方案下都将密码设置为或,则可以直观地验证我的结论是-crypt变体是否正确(此处的示例摘自hashcat示例hash,全部为'hashcat',有些为可读性):

不推荐-无盐或旧式哈希类型,对于密码存储而言太“快”了(破解率):

MD5         - 8743b52063cd84097a65d1633f5c74f5
SHA256      - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512      - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
              9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt    - 48c/R8JAv757A

还行-比未加盐,没有截断要好得多,但不再足以抵抗现代硬件上的蛮力:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

更好-具有较大盐分和工作因子的相对较现代的哈希值:

sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/

其中,只有解密在8处截断。最后两个是最好的选择。

(附带说明:上面的md5crypt和sha512crypt示例中的仅数字盐仅是hashcat如何创建示例哈希的副作用;真实,健康的盐通常是从更大的键空间中提取的)。

还要注意,我只列出了该平台上/etc/login.defs支持的哈希类型。对于一般用途,甚至sha256crypt和sha512crypt也已被取代-首先由bcrypt取代,然后由scrypt和Argon2系列之类的真正抗并行攻击的哈希取代。(但是请注意,对于应该在一秒钟之内完成的交互式登录,bcrypt实际上比后者更具抵抗力)


20

我在修改这个/etc/login.defs

PASS_MAX_LEN            8

问题已解决。


重要补充:

更改上述参数后,尽管可以设置大于8位的密码,但由于实际密码仅是前8位,因此它仍然无效。我不知道这是否是我的问题。

我的最终解决方案是设置

# ENCRYPT_METHOD DES

ENCRYPT_METHOD MD5

在中/etc/login.defs

现在,我终于可以设置一个真正大于8的root密码了。


16
好的修补程序,但是对于系统默认值却是错误的原始选择...
HBruijn

8
我假设您现在已将密码更改为超过8个字符的密码。如果仅使用较长密码的前8个字符登录就可以尝试吗?因为它可能...
marcelm

9
您可能会考虑将其更改为SHA256或SHA512或受支持-如今,MD5被认为已损坏。
PhilippNagel

8
实际上sha256和sha512本身并没有比md5好多少。您需要添加盐,然后使用这些算法的crypt版本。
SnakeDoc

4
@PhilippNagel具有高熵密码,还算不错。虽然可以肯定地认为MD5已损坏,但当前已知的弱点不会影响它进行密码哈希处理。什么密码散列的一个问题是速度; 非迭代的MD5是如此之快,因此对于许多密码而言,强行实施是非常可行的。
marcelm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.