文档 密钥推导算法 PBKDF2

# PBKDF2

PBKDF2（Password-Based Key Derivation Function 2）是一种广泛使用的 KDF，会重复应用伪随机函数（HMAC）以减缓密码猜测。在 VeraCrypt 中，PBKDF2 可与多种 HMAC 哈希函数配合使用，并用于派生解密卷头所需的密钥。

### VeraCrypt 支持的 PBKDF2-HMAC 变体

- PBKDF2-HMAC-SHA-512
- PBKDF2-HMAC-SHA-256
- PBKDF2-HMAC-Whirlpool
- PBKDF2-HMAC-BLAKE2s-256
- PBKDF2-HMAC-Streebog

### VeraCrypt 中的参数

#### 盐值

存储在卷头中的 512 位随机盐值会混入密码，以防止预计算和彩虹表攻击。

#### 迭代次数

PBKDF2 迭代次数取决于所选 HMAC 哈希、使用场景（例如系统加密或非系统加密）以及 PIM 值。提高 PIM 会增加迭代次数，从而增加派生密钥所需的时间。精确值和公式请参阅 头密钥推导、盐值和迭代次数。

#### 输出长度

派生并使用的卷头密钥材料量取决于所选加密算法或级联。在当前 XTS 卷中，VeraCrypt 同时使用主卷头密钥和辅助卷头密钥；例如，AES-256-XTS 总共使用 512 位（两个 256 位密钥），AES-Twofish-Serpent-XTS 级联总共使用 1536 位（六个 256 位密钥）。

### 优点和注意事项

- 兼容性广：PBKDF2 在多种平台和环境中得到广泛支持。
- 内存需求低：适合资源受限的系统。
- 不是内存困难型：与 Argon2id 相比，PBKDF2 对使用大规模并行硬件（GPU/ASIC）的攻击抵抗力较弱。如果必须使用 PBKDF2，请考虑提高 PIM。

### 相关主题

- 密钥推导算法（概述）
- Argon2id
- 头密钥推导、盐值和迭代次数
- 个人迭代乘数（PIM）