文档 技术细节 PIM

# PIM

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

当指定了PIM值时，迭代次数的计算方式如下：

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

如果未指定PIM值，VeraCrypt将使用1.12版本之前的默认迭代次数（请参阅 头部密钥推导）。这可以总结如下：

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

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

### PIM的使用

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

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

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

### 更改/清除PIM

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

普通卷情况

#####

系统加密情况

下一部分 >>