我有一台嵌入式 Linux 设备,它有一个相当现代的 Linux 内核。然而,上次更新时发生了一件奇怪的事情:当使用 修改passwd
任何用户的密码时, 中的盐值/etc/shadow
将被替换为rounds=65536
,因此条目将看起来像root:$6$rounds=65536$6mA...
。我怀疑是 PAM 做的。有人知道 PAM 的什么问题会导致这种行为吗?
我有一台嵌入式 Linux 设备,它有一个相当现代的 Linux 内核。然而,上次更新时发生了一件奇怪的事情:当使用 修改passwd
任何用户的密码时, 中的盐值/etc/shadow
将被替换为rounds=65536
,因此条目将看起来像root:$6$rounds=65536$6mA...
。我怀疑是 PAM 做的。有人知道 PAM 的什么问题会导致这种行为吗?
您的更新可能已更改 PAM 配置以加强影子文件中密码哈希的安全性。另请参阅此强化指南和 crypt 函数的文档:
如果攻击者获得影子文件的访问权,他们可以尝试通过暴力破解从盐和哈希中恢复密码,但这比默认的 5000 轮要困难 13 倍。
该信息需要与算法、盐和哈希一起存储,以便登录函数知道如何在将来验证该帐户的密码。
65536 这个数字应该与嵌入式设备的计算能力相匹配,如果太高,则需要很长时间来验证密码,如果太低,一些拥有大量计算能力的攻击者(例如:ASIC)可以轻松地强行破解哈希值来找到密码。
更新:
/etc/login.defs
自 pam 版本 1.6.0 以来,可以通过编辑文件并设置值SHA_CRYPT_MAX_ROUNDS parameter
,或编辑/etc/pam.d/passwd
并添加rounds
适当的值来配置 SHA-512 轮次选项。(来源: https ://wiki.archlinux.org/title/SHA_hashes - 他们也提到了 65536,但它的来源尚不清楚,有关更多信息,另请参阅基于密码的密钥派生函数的相关概念:https://en.wikipedia.org/wiki/PBKDF2)