PBKDF2
PBKDF2(Password-Based Key Derivation Function 2)是 PKCS#5 标准的 KDF,通过多次 HMAC 迭代从密码派生密钥,广泛用于密码哈希与密钥派生。
用途
从低熵密码派生高熵密钥,通过迭代次数放大暴力破解成本。
机制
DK = T1 || T2 || ...,其中 Ti = U1 ⊕ U2 ⊕ ... ⊕ Uc,U1 = HMAC(P, salt || i),Uj = HMAC(P, U_{j-1})。迭代次数 c 通常 ≥ 100000。仅 CPU 困难,不抵御 GPU/ASIC 并行。
用例
- Wi-Fi WPA2/3 密钥派生
- iOS/Android 密码备份
- 1Password 密钥派生
- PKCS#12 密钥存储
示例
- 输入
password, salt, c=600000输出256-bit derived keyOWASP 2023 recommends ≥ 600000
常见错误
- Iteration count too low (e.g., 1000)
- Use at least 600000 (OWASP 2023)
相关词条
scrypt
scrypt 是 Colin Percival 设计的内存困难 KDF,通过大量内存需求抵御 GPU/ASIC 并行暴力破解,用于密码哈希与密钥派生。 词汇表
Key Derivation
密钥派生是从低熵密码或高熵主密钥生成加密密钥的过程,使用 KDF(如 PBKDF2、scrypt、Argon2)增加暴力破解成本。 词汇表
Salt
Salt 是密码哈希时加入的随机值,使相同密码产生不同哈希,抵御彩虹表与相同密码检测。 词汇表
HMAC
HMAC(Hash-based Message Authentication Code)是结合哈希函数与密钥的消息认证码,提供完整性与认证。 词汇表