SHA 哈希值

来自 ArchWiki

安全散列算法 (SHA) 是一组哈希函数,常用于各种用途

在 Arch Linux 中使用 SHA 哈希函数的一些例子包括:

SHA 密码哈希值

默认情况下,Arch Linux 对密码使用 SHA-512,软件包 shadow 版本从 4.1.4.3-3(参见 bug 13591)到 4.14.0(参见 yescrypt )。它取代了旧的 MD5 哈希函数,该函数已被发现存在 碰撞漏洞。有关更多信息,请参阅 wikipedia:安全散列算法#SHA 函数的比较

配置

SHA-512 密码哈希可以使用 rounds=N 选项进行配置,以提高密钥加强。例如,rounds=65536 意味着攻击者必须为他们针对 /etc/shadow 密码文件中的哈希值测试的每个密码计算 65536 个哈希值。

因此,攻击者将被延迟 65536 倍。这也意味着您的计算机每次登录时都必须计算 65536 个哈希值,但即使在较慢的计算机上,这也只需不到一秒钟的时间。

pam 版本 1.6.0 起,SHA-512 rounds 选项可以通过编辑 /etc/login.defs 文件并为 SHA_CRYPT_MAX_ROUNDS 参数设置一个值,或者编辑 /etc/pam.d/passwd 并添加具有适当值的 rounds 来配置。[1]

如果您不使用 rounds 选项,PAM 将使用与 /etc/login.defs 中注释的 5000 rounds 示例不同的默认值

例如

/etc/pam.d/passwd
password	required	pam_unix.so sha512 shadow nullok rounds=65536
警告: 在上面的示例中显式配置哈希值(如 sha512)会覆盖后续 passwd 调用的默认 yescrypt 哈希值。

有关 /etc/pam.d/passwd 密码选项的更详细说明,请查看 pam_unix(8) 手册页。

用法

即使您已更改加密设置,您的密码也不会自动重新哈希。为了解决这个问题,您必须重置所有用户密码,以便可以重新哈希它们。

以 root 身份执行以下命令,

# passwd username

其中 username 是您要更改密码的用户的名称。然后重新输入他们的当前密码,它将被重新哈希。

要验证您的密码是否已重新哈希,请以 root 身份检查 /etc/shadow 文件。使用 SHA-256 哈希的密码以 $5 开头,使用 SHA-512 哈希的密码以 $6 开头,yescrypt 哈希的密码以 $y 开头。