上一篇                     
               
			  Linux密码加密机制如何?
- Linux
- 2025-06-29
- 2119
 Linux用户密码经哈希算法(如SHA-512)加密后存储在/etc/shadow文件中,原始密码不可恢复。
 
密码存储位置与历史演变
-  /etc/shadow文件- 所有用户密码的加密哈希值存储于此(仅root可读)。
- 示例条目:
 user1:$6$s4lt1234...:19485:0:99999:7:::
 $6表示SHA-512算法,s4lt1234为盐值(salt),后续长字符串为加密后的密码哈希。
 
-  从 /etc/passwd到/etc/shadow的演进
 早期密码存于/etc/passwd(全局可读),易受暴力破解,现代Linux系统改用/etc/shadow隔离存储,增强安全性。
加密机制详解
-  加盐哈希(Salted Hash) - 盐值(Salt):系统为每个密码随机生成12字符的字符串(如 $6$s4lt1234)。
- 作用:即使相同密码,因盐值不同也会产生完全不同的哈希值,抵御彩虹表攻击。
 
- 盐值(Salt):系统为每个密码随机生成12字符的字符串(如 
-  加密算法 
 通过$X标识算法(X为数字):- $1:MD5(已淘汰)
- $5:SHA-256
- $6:SHA-512(现代Linux默认算法)
- $y:Yescrypt(部分新版系统支持)
 加密过程:- 哈希值 = 算法(盐值 + 用户密码)
 
系统配置与工作流程
-  算法选择配置 
 文件/etc/login.defs定义默认加密方式: ENCRYPT_METHOD SHA512 # 指定SHA-512为默认算法 
-  密码设置流程 
 用户执行passwd命令时:- 步骤1:系统生成随机盐值。
- 步骤2:将盐值与用户输入的明文密码组合。
- 步骤3:使用指定算法(如SHA-512)生成哈希值。
- 步骤4:将$算法ID$盐值$哈希值存入/etc/shadow。
 
安全验证过程
用户登录时:
- 输入明文密码。
- 系统从/etc/shadow提取该用户的盐值和算法类型。
- 重新计算哈希:用相同盐值+输入密码生成新哈希。
- 比对结果:新哈希与存储的哈希一致则验证通过。
关键安全实践
-  强制强密码策略 
 使用pam_pwquality模块设置复杂度规则(最小长度、混合字符等)。
-  定期更新算法 
 检查/etc/login.defs中的ENCRYPT_METHOD,优先使用SHA-512或Yescrypt。 
-  拒绝弱加密 
 禁用DES($1)等老旧算法:authconfig --passalgo=sha512 --update # CentOS/RHEL 
查看与验证方法
-  检查用户加密类型: sudo grep 'user1' /etc/shadow | cut -d':' -f2 | awk -F'$' '{print $2}'输出 6代表SHA-512。
-  手动生成哈希值(验证原理):  openssl passwd -6 -salt "s4lt1234" "你的密码" # -6指定SHA-512 
Linux通过加盐哈希(如SHA-512)和隔离存储(/etc/shadow)保障密码安全,其核心优势在于: 
- 单向加密:哈希不可逆推明文。
- 唯一盐值:相同密码产生不同结果。
- 算法可升级:随技术发展替换更安全的加密方式。
 用户应启用强密码策略并定期更新系统,以应对日益复杂的攻击手段。
引用说明:本文内容基于Linux内核文档(kernel.org)、
shadow-utils源码包及NIST密码学标准(SP 800-132)综合整理。
 
  
			