文档 技术细节 PIM

# PIM

PIM代表“个人迭代乘数”。它是VeraCrypt 1.12版本引入的一个参数，其值控制头部密钥推导函数使用的计算参数。该值可以通过密码对话框或命令行指定。

PIM的确切含义取决于所使用的密钥推导函数（KDF）：

### PBKDF2-HMAC密钥推导

使用PBKDF2-HMAC时，PIM值按如下方式控制迭代次数：

- 对于不使用SHA-512或Whirlpool的系统加密：迭代次数 = PIM x 2048
- 对于使用SHA-512或Whirlpool的系统加密：迭代次数 = 15000 + (PIM x 1000)
- 对于非系统加密和文件容器：迭代次数 = 15000 + (PIM x 1000)

### Argon2id密钥推导

使用Argon2id时，PIM值同时控制内存成本和时间成本参数：

- 内存成本（m_cost），单位MiB：
  m_cost(pim) = min(64 MiB + (pim - 1) * 32 MiB, 1024 MiB)
  内存成本从64 MiB开始，每增加1个PIM增加32 MiB；当PIM达到31或更高时，上限为1024 MiB。
- 时间成本（t_cost），以迭代计：
  如果PIM ≤ 31：t_cost(pim) = 3 + floor((pim - 1) / 3)
  如果PIM > 31：t_cost(pim) = 13 + (pim - 31)
  当PIM ≤ 31时，每增加3个PIM，时间成本增加1次迭代；当PIM > 31时，每增加1个PIM，时间成本增加1次迭代。
- 并行度：所有情况下固定为1个线程。

Argon2id示例：

- PIM = 12：内存成本 = 416 MiB，时间成本 = 6 次迭代
- PIM = 31：内存成本 = 1024 MiB，时间成本 = 13 次迭代
- PIM = 32：内存成本 = 1024 MiB，时间成本 = 14 次迭代

如果未指定PIM值，VeraCrypt将对PBKDF2-HMAC使用1.12版本之前的默认参数（请参阅 头部密钥推导）。对于Argon2id，默认参数相当于PIM = 12：

- PBKDF2-HMAC默认值：

- 对于使用SHA-256、BLAKE2s-256或Streebog的系统分区加密（引导加密），使用200000次迭代，这相当于PIM值为98。
- 对于使用SHA-512或Whirlpool的系统加密，使用500000次迭代，这相当于PIM值为485。
- 对于使用PBKDF2-HMAC的非系统加密和文件容器，使用500000次迭代，这相当于PIM值为485。

- Argon2id默认值：内存成本 = 416 MiB，时间成本 = 6 次迭代（相当于PIM = 12）

在1.12版本之前，VeraCrypt卷的安全性仅基于密码强度，因为VeraCrypt使用固定的迭代次数。
随着PIM的引入，VeraCrypt卷基于（密码，PIM，密钥推导函数）组合形成多维安全空间，可在控制挂载/引导操作性能的同时更灵活地调整所需的安全级别。

### PIM的使用

不强制要求指定PIM。
在创建卷或更改密码时，用户可以通过选中“使用PIM”复选框来指定PIM值，这样GUI中会显示一个PIM字段，用户可以输入PIM值。
PIM被视为一个秘密值，每次用户都必须与密码一起输入。如果指定了错误的PIM值，挂载/引导操作将失败。
使用较高的PIM值可以通过提高KDF成本参数来增强安全性，但会导致挂载/引导时间变慢。
使用较小的PIM值，挂载/引导速度会更快，但如果使用弱密码，可能会降低安全性。
在创建卷或对系统进行加密时，当密码长度小于20个字符时，VeraCrypt会强制PIM值大于或等于某个最小值。进行此检查是为了确保对于短密码，安全级别至少等于空PIM提供的默认级别。
对于短密码，Argon2id卷的PIM最小值为12，不使用SHA-512或Whirlpool的系统加密为98，其他使用PBKDF2-HMAC的情况为 485。对于长度为20个字符及以上的密码，PIM最小值为 1。在所有情况下，将PIM留空或将其值设置为0将使VeraCrypt使用如 头部密钥推导部分所述的默认KDF参数。
使用自定义PIM值的动机可能包括：

- 添加一个额外的秘密参数（PIM），使攻击者必须猜测
- 通过使用较大的PIM值来提高安全级别，以抵御未来暴力攻击技术的发展。
- 通过使用较小的PIM值（对于Argon2id卷小于12，对于不使用SHA-512或Whirlpool的系统加密小于98，对于其他使用PBKDF2-HMAC的情况小于485）来加快引导或挂载速度

以下屏幕截图展示了使用PIM值为231挂载卷的步骤：

### 更改/清除PIM

可以使用更改密码功能来更改或清除卷或系统加密的PIM。以下屏幕截图展示了一个将PIM从空默认值更改为值为3的示例（由于密码长度超过20个字符，这是可行的）。为此，用户必须首先在“新”部分中勾选“使用PIM”复选框以显示PIM字段。

普通卷情况

#####

系统加密情况

下一部分 >>