SHA 哈希值
在 Arch Linux 中使用 SHA 哈希函数的一些例子包括:
- 验证 Arch Linux ISO 和软件包的完整性,
- 使用 git 锁定软件版本,
- 保护和验证加密密钥,例如磁盘加密,
- 文件系统的数据完整性和资源管理,例如 btrfs,以及
- 密码验证,在安全性#密码哈希和本文中针对 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
开头。