信息安全工程师 · 高频练习

密码已经加盐,为什么还要使用 Argon2、scrypt 或 PBKDF2?

中级 单选题 第 908 题 中等 信息安全工程师密码存储KDF盐值离线破解
题目

某系统为每个用户生成独立随机盐,并准备保存 `KDF(password, salt)`。与直接使用一次快速 SHA-256 相比,选择带可调工作因子的密码 KDF,主要是为了()。

A 让服务器无需保存盐值
B 提高攻击者每次离线猜测密码的时间或内存成本
C 保证相同密码在任何系统中都生成相同摘要
D 把用户密码变成可以解密恢复的密文
题目类型:原创高频练习题 用途:用于帮助理解信息安全工程师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

随机盐主要阻止彩虹表复用,并让相同密码产生不同结果;密码 KDF 的迭代次数或内存成本则用于拖慢每一次猜测。两者配合,才能更好抵抗数据库泄露后的离线穷举。

选项分析

A

错误。盐通常与摘要一起保存,验证密码时仍需要使用。

B

正确。可调时间和内存成本用于降低大规模离线猜测速度。

C

错误。独立随机盐就是要让相同密码得到不同结果。

D

错误。密码 KDF 是单向派生,不用于恢复明文密码。

本题为什么容易错

只写“加盐哈希”还不够。快速哈希即使带盐,攻击者仍可针对每个账户高速枚举常见密码;盐不负责把单次计算变慢。

先看结论

简短答案

密码已经加盐,为什么还要使用 Argon2、scrypt 或 PBKDF2,正确答案是 B(提高攻击者每次离线猜测密码的时间或内存成本)。随机盐主要阻止彩虹表复用,并让相同密码产生不同结果;密码 KDF 的迭代次数或内存成本则用于拖慢每一次猜测。两者配合,才能更好抵抗数据库泄露后的离线穷举。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
让服务器无需保存盐值 本题干扰项 错误。盐通常与摘要一起保存,验证密码时仍需要使用。 看到该词不要急着选,先判断是否真正解决题干问题
提高攻击者每次离线猜测密码的时间或内存成本 本题正确答案 正确。可调时间和内存成本用于降低大规模离线猜测速度。 看到题干核心场景时优先联想到它
保证相同密码在任何系统中都生成相同摘要 本题干扰项 错误。独立随机盐就是要让相同密码得到不同结果。 看到该词不要急着选,先判断是否真正解决题干问题
把用户密码变成可以解密恢复的密文 本题干扰项 错误。密码 KDF 是单向派生,不用于恢复明文密码。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 让服务器无需保存盐值:错误。盐通常与摘要一起保存,验证密码时仍需要使用。
  • 保证相同密码在任何系统中都生成相同摘要:错误。独立随机盐就是要让相同密码得到不同结果。
  • 把用户密码变成可以解密恢复的密文:错误。密码 KDF 是单向派生,不用于恢复明文密码。
复习

知识点详解

Argon2、scrypt、bcrypt 和 PBKDF2 都可用于密码派生,但成本模型不同。现代系统通常优先考虑具有内存成本的方案,并为每个账户保存算法版本和参数,以便用户下次登录时逐步升级旧摘要。登录限速仍然必要,因为它防的是在线猜测,与 KDF 的离线防护互补。

备考速记

盐让每个目标不同,KDF 让每一猜都更贵。

KDF 在离线破解场景中的作用

KDF在本题中的核心价值,是解决“某系统为每个用户生成独立随机盐,并准备保存 `KDF(password, salt)`。与直接使用一次快速 SHA-256 相比,选择带可调工作因子的密码 KDF,主要是为了()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 比较普通哈希、加盐哈希和密码 KDF。
  • 分析数据库泄露后彩虹表与离线暴力破解风险。
KDF 在信息安全工程师软考中的考法

软考选择题通常不会只考概念定义,还会把KDF放到离线破解场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这题要把两道防线分开。盐像每个用户独有的题号,让攻击者不能拿一张现成彩虹表通吃所有账号;KDF 的工作因子则把每次试密码变贵。数据库一旦泄露,攻击者可以在自己机器上反复猜,不受登录限速约束,所以一次极快的 SHA-256 恰恰方便了他。

考点定位

盐值不需要保密,工作因子也不是加密密钥。盐解决预计算复用,慢哈希或内存困难算法提高单次猜测成本。

易错提醒

  • 所有用户共用一个固定盐,失去跨账户隔离效果。
  • 把盐当成秘密,一旦盐泄露就认为摘要完全失效。
  • 长期不调整工作因子,忽略硬件性能增长。

备考提示

  • 把盐、Pepper、工作因子分开记:盐公开且每用户不同,Pepper由服务端另行保护,工作因子控制成本。
  • 算法选择和参数应根据当前硬件压测,并保留未来升级方案。

你可能还想了解

  • 盐值需要保密吗?
  • 密码为什么不能只做一次 SHA-256?
  • Argon2 工作因子应该怎样选择?

本文小结

随机盐让相同密码产生不同摘要,防止预计算结果跨账户复用;密码KDF通过时间或内存工作因子抬高每次猜测成本。两者作用不同,必须配合。