密码学
PBKDF2
别称: Password-Based KDF 2, PKCS #5 v2.1
定义
由 PKCS #5 / RFC 8018 定义的基于口令的密钥派生函数,使用可配置迭代次数和盐反复调用一个伪随机函数。
PBKDF2(Password-Based Key Derivation Function 2)在 PKCS #5 v2.1 / RFC 8018 中定义,通过对口令和盐反复应用一个伪随机函数(通常是 HMAC-SHA-256 或 HMAC-SHA-512)指定次数,来派生出加密密钥。慢速迭代加上按用户唯一的盐显著提高了预计算表与暴力破解的代价。PBKDF2 被广泛部署(WPA2、iOS/macOS、TLS、LUKS、1Password 等)并仍获 FIPS 批准,但它只是 CPU 密集型,GPU 与 ASIC 攻击者相对于内存密集型函数仍具明显优势。新系统应优先选择 Argon2id 或 scrypt;2025 年 OWASP 建议 PBKDF2-HMAC-SHA-256 至少 60 万次迭代。
示例
- WPA2 使用 PBKDF2-HMAC-SHA-1(SSID 与口令、4096 次迭代)派生成对主密钥 PMK。
- 1Password 和 LastPass 历史上使用 PBKDF2-HMAC-SHA-256 从主口令派生保险库密钥。
相关术语
密钥派生函数(KDF)
从口令、共享密钥或主密钥等秘密素材派生出一个或多个强加密密钥的密码学函数。
Argon2
现代的内存密集型口令哈希与密钥派生函数,在 2015 年口令哈希竞赛中胜出,并由 RFC 9106 标准化。
scrypt
由 Colin Percival 于 2009 年设计、由 RFC 7914 标准化的基于口令的内存密集型 KDF,用于口令哈希,也作为部分加密货币的工作量证明算法。
bcrypt
基于 Blowfish 密钥编排、带可调成本参数的自适应口令哈希函数,由 Provos 与 Mazières 于 1999 年提出。
HMAC
基于密码学哈希函数的带密钥消息认证码结构,由 RFC 2104 与 FIPS 198-1 定义。
盐(Salt)
在口令哈希之前与之拼接的唯一随机值,用于抵御彩虹表并使每个用户的哈希都不同。