首页/安全/安全加固速查/口令哈希算法收敛(SHA-512/yescrypt)
口令与认证策略55 条

口令哈希算法收敛(SHA-512/yescrypt)

确认新改口令使用强哈希(SHA-512 或 yescrypt),并把 ENCRYPT_METHOD 固化到 login.defs,避免历史 DES/MD5 残留。

安全加固速查安全更新于 2026-10-13

口令哈希算法为什么要收敛

系统里存放的不是口令本身而是哈希:算法越弱,拿到 shadow 文件后的离线破解成本越低。现代 Linux 默认使用 SHA-512 或 yescrypt,但历史遗留账号可能仍保留 MD5 甚至 DES 格式的哈希。核查新策略与存量残留是两件事。

基本信息

适用平台Linux(crypt 与 shadow 体系)
策略配置/etc/login.defs 的 ENCRYPT_METHOD
判读方式shadow 第二列的前缀:$6$ 为 SHA-512,$y$ 为 yescrypt
基线无弱哈希残留,新口令使用强算法

典型使用场景

  • 基线核查:确认新口令使用强哈希算法
  • 历史账号清理:发现 MD5 或 DES 残留,安排强制改密
  • 迁移评估:跨系统同步认证时确认算法兼容性
  • 审计举证:说明口令存储在算法层面符合要求

核查与配置

核查与配置
# 查看策略与当前哈希算法分布
grep '^ENCRYPT_METHOD' /etc/login.defs
awk -F: '{print substr($2,1,3)}' /etc/shadow | sort | uniq -c
# 期望看到 $6$(SHA-512)或 $y$(yescrypt);
# 出现非 $ 前缀说明存在弱哈希,需要强制改密重算

哈希前缀读法

前缀算法处理建议
$6$SHA-512主流可接受
$y$yescrypt较新发行版默认,强度更高
$5$SHA-256可接受,建议随改密升级
$1$MD5弱,应强制改密
无前缀或 13 位DES严重弱哈希,优先处置
历史弱哈希需要强制改密重算:用 chage -d 0 <账号> 让口令立即过期,或按流程批量重置后通知用户,仅修改策略并不会重算存量哈希。
某些老旧认证系统(如旧的目录同步或跨平台认证)不兼容 yescrypt:跨系统环境要先确认互操作性,再调整算法,否则会出现无法登录。
算法升级建议与改密周期绑定:等用户自然改密时逐步淘汰弱哈希,比一次性批量重置的扰动小,残留比例也能按季度复查。
核查脚本要同时输出「策略值」与「哈希前缀分布」两组结果:只看策略无法证明存量已收敛,只看分布又无法判断新口令是否走强算法,两份数据一起看才是完整结论。

易错点

  • 只改 ENCRYPT_METHOD 就认为达标:存量哈希不会重算,残留弱哈希仍在
  • 忽略服务账号:无法改密的服务账号长期保留老哈希,需要单独评估
  • 批量强制过期不做通知:用户集中反馈无法登录,运维被迫临时放开
  • 跨系统认证不做兼容性验证:算法调整后部分系统认证失败,影响面难以预估

数据来源与参考

  • man 5 crypt(哈希格式)
  • CIS Benchmark:口令存储条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌