VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

  • 主页
  • 源代码
  • 下载
  • 文档
  • 捐赠
  • 论坛

目录

本文档不保证无错误，且按“原样”提供，不附带任何形式的保证。有关更多信息，请参阅 免责声明。

  • 前言
  • 简介
  • 初学者教程
  • VeraCrypt 卷
    • 创建新的 VeraCrypt 卷
    • 常用卷
    • 系统常用卷
  • 系统加密
    • 隐藏操作系统
    • 支持系统加密的操作系统
    • VeraCrypt 救援盘
  • 似是而非的否认
    • 隐藏卷
      • 保护隐藏卷免受损坏
      • 隐藏卷的安全要求和预防措施
    • 隐藏操作系统
  • 主程序窗口
    • 程序菜单
    • 挂载 VeraCrypt 卷
  • 正常卸载与强制卸载
  • 避免使用第三方文件扩展名
  • 并行处理
  • 流水线处理
  • 硬件加速
  • 热键
  • 密钥文件
  • 安全令牌和智能卡
  • EMV 智能卡
  • 便携模式
  • TrueCrypt 支持
  • 转换 TrueCrypt 卷和分区
  • 1.26 及更高版本转换指南
  • 默认挂载参数
  • 语言包
  • 加密算法
    • AES
    • Camellia
    • Kuznyechik
    • Serpent
    • Twofish
    • 密码级联
  • 哈希算法
    • BLAKE2s - 256
    • SHA - 256
    • SHA - 512
    • Whirlpool
    • Streebog
  • 支持的操作系统
  • 命令行使用方法
  • 安全模型
  • 安全要求和预防措施
    • 数据泄露
      • 分页文件
      • 内存转储文件
      • 休眠文件
    • RAM 中的未加密数据
    • VeraCrypt RAM 加密
    • VeraCrypt 内存保护
    • 物理安全
    • 恶意软件
    • 多用户环境
    • 真实性和完整性
    • 选择密码和密钥文件
    • 更改密码和密钥文件
    • Trim 操作
    • 损耗均衡
    • 重新分配的扇区
    • 磁盘碎片整理
    • 日志文件系统
    • 卷克隆
    • 额外的安全要求和预防措施
  • 如何安全备份
  • 杂项
    • 在无管理员权限下使用 VeraCrypt
    • 网络共享
    • VeraCrypt 后台任务
    • 作为可移动介质挂载的卷
    • VeraCrypt 系统文件和应用程序数据
    • 如何移除加密
    • 卸载 VeraCrypt
    • 数字签名
  • 故障排除
  • 不兼容性
  • 已知问题和限制
  • 常见问题解答
  • 技术细节
    • 符号说明
    • 加密方案
    • 操作模式
    • 头密钥推导、盐值和迭代次数
    • 随机数生成器
    • 密钥文件
    • 个人迭代乘数 (PIM)
    • VeraCrypt 卷格式规范
    • 符合标准和规范情况
    • 源代码
    • 从源代码构建 VeraCrypt
      • Windows 构建指南
      • Linux 构建指南
  • 联系我们
  • 法律信息
  • 版本历史
  • 致谢
  • 参考文献


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

  • 文档
  • 捐赠
  • 论坛

文档 >> 前言

前言

请注意，尽管本文档的大多数章节普遍适用于所有版本的VeraCrypt，但某些部分主要针对VeraCrypt Windows版本的用户。因此，这些部分可能包含与VeraCrypt Mac OS X和Linux版本不相关的信息。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 简介

简介

VeraCrypt是一款用于创建和维护实时加密卷（数据存储设备）的软件。实时加密意味着数据在保存之前会自动加密，在加载之后会自动解密，无需用户干预。如果没有使用正确的密码/密钥文件或正确的加密密钥，存储在加密卷上的任何数据都无法被读取（解密）。整个文件系统都会被加密（例如，文件名、文件夹名、每个文件的内容、空闲空间、元数据等）。
可以像将文件复制到任何普通磁盘或从任何普通磁盘复制文件一样，将文件复制到已挂载的VeraCrypt卷或从该卷复制文件（例如，通过简单的拖放操作）。当从加密的VeraCrypt卷读取或复制文件时，文件会在内存（RAM）中实时自动解密。同样，当将文件写入或复制到VeraCrypt卷时，文件会在内存（RAM）中实时自动加密（就在写入磁盘之前）。请注意，这 并不 意味着要加密/解密的 整个 文件必须先存储在RAM中才能进行加密/解密。VeraCrypt没有额外的内存（RAM）要求。有关如何实现这一点的说明，请参阅以下段落。

假设在VeraCrypt卷上存储了一个.avi视频文件（因此，该视频文件是完全加密的）。用户提供正确的密码（和/或密钥文件）并挂载（打开）VeraCrypt卷。当用户双击视频文件的图标时，操作系统会启动与该文件类型关联的应用程序 — 通常是一个媒体播放器。然后，媒体播放器开始从VeraCrypt加密卷将视频文件的一小部分初始数据加载到RAM（内存）中以进行播放。在加载这部分数据时，VeraCrypt会在RAM中自动对其进行解密。然后，媒体播放器会播放存储在RAM中的已解密视频部分。在播放这部分视频时，媒体播放器会开始从VeraCrypt加密卷将视频文件的另一小部分数据加载到RAM（内存）中，这个过程会不断重复。这个过程称为实时加密/解密，它适用于所有文件类型（不仅仅适用于视频文件）。

请注意，VeraCrypt永远不会将任何已解密的数据保存到磁盘 — 它只会将其临时存储在RAM（内存）中。即使在挂载卷时，存储在卷中的数据仍然是加密的。当你重启Windows或关闭计算机时，卷将被卸载，存储在其中的文件将无法访问（并且是加密的）。即使在电源突然中断（没有正确关闭系统）的情况下，存储在卷中的文件也是无法访问的（并且是加密的）。要再次访问这些文件，你必须挂载该卷（并提供正确的密码和/或密钥文件）。有关快速入门指南，请参阅“初学者教程”章节。


VeraCrypt - 新手教程

文档 >> 新手教程

新手教程

如何创建和使用 VeraCrypt 容器

本章包含了如何创建、挂载和使用 VeraCrypt 卷的详细步骤说明。我们强烈建议您也阅读本手册的其他部分，因为其中包含了重要信息。

步骤 1：

如果您还没有这样做，请下载并安装 VeraCrypt。然后通过双击 VeraCrypt.exe 文件或点击 Windows 开始菜单中的 VeraCrypt 快捷方式来启动 VeraCrypt。

步骤 2：

应该会出现 VeraCrypt 主窗口。点击 创建卷（为了清晰起见，用红色矩形标记）。

步骤 3：

应该会出现 VeraCrypt 卷创建向导窗口。

在这一步中，您需要选择要将 VeraCrypt 卷创建在哪里。VeraCrypt 卷可以存在于文件（也称为容器）、分区或驱动器中。在本教程中，我们将选择第一个选项，并在文件中创建 VeraCrypt 卷。

由于该选项是默认选中的，您只需点击 下一步。

注意：在接下来的步骤中，截图将只显示向导窗口的右侧部分。

步骤 4：

在这一步中，您需要选择是创建标准的还是隐藏的 VeraCrypt 卷。在本教程中，我们将选择前者并创建一个标准的 VeraCrypt 卷。

由于该选项是默认选中的，您只需点击 下一步。

步骤 5：

在这一步中，您必须指定要将 VeraCrypt 卷（文件容器）创建在哪里。请注意，VeraCrypt 容器就像任何普通文件一样。例如，它可以像任何普通文件一样被移动或删除。它还需要一个文件名，您将在下一步中选择。

点击 选择文件。

应该会出现标准的 Windows 文件选择器（而 VeraCrypt 卷创建向导窗口将在后台保持打开状态）。

步骤 6：

在本教程中，我们将在文件夹 D:\Data\ 中创建我们的 VeraCrypt 卷，并且卷（容器）的文件名将是 MyVolume.hc （如上图所示）。当然，您可以选择任何其他您喜欢的文件名和位置（例如，在 USB 闪存驱动器上）。请注意，文件 MyVolume.hc 还不存在 - VeraCrypt 将创建它。

重要提示：请注意，VeraCrypt 在创建 VeraCrypt 文件容器时 不会 加密任何现有文件。如果您在这一步中选择了一个现有文件，它将被覆盖并被新创建的卷替换，因此被覆盖的文件将 丢失，而不是被加密。您可以在以后将现有文件移动到我们现在正在创建的 VeraCrypt 卷中来加密它们。*

在文件选择器中选择所需的路径（即您希望创建容器的位置）。在 文件名 框中输入所需的容器文件名。

点击 保存。

文件选择器窗口应该会消失。

在接下来的步骤中，我们将回到 VeraCrypt 卷创建向导。

* 请注意，在将现有的未加密文件复制到 VeraCrypt 卷后，您应该安全地擦除（清除）原始的未加密文件。有一些软件工具可以用于安全擦除（其中许多是免费的）。

步骤 7：

在卷创建向导窗口中，点击 下一步。

步骤 8：

在这里，您可以为卷选择一种加密算法和一种哈希算法。如果您不确定在这里选择什么，您可以使用默认设置并点击 下一步（有关更多信息，请参阅 加密算法 和 哈希算法 章节）。

步骤 9：

在这里，我们指定希望我们的 VeraCrypt 容器的大小为 250 兆字节。当然，您可以指定不同的大小。在输入字段（用红色矩形标记）中输入所需的大小后，点击 下一步。

步骤 10：

这是最重要的步骤之一。在这里，您必须选择一个好的卷密码。仔细阅读向导窗口中显示的关于什么是好密码的信息。

选择一个好的密码后，在第一个输入字段中输入它。然后在第一个输入字段下方的输入字段中再次输入它，然后点击 下一步。

注意：下一步 按钮将被禁用，直到两个输入字段中的密码相同。

步骤 11：

在卷创建向导窗口内尽可能随机地移动鼠标，至少直到随机性指示器变为绿色。移动鼠标的时间越长越好（建议至少移动 30 秒）。这将显著提高加密密钥的加密强度（从而提高安全性）。

点击 格式化。

卷创建应该开始。VeraCrypt 现在将在文件夹 F:\Data\ 中创建一个名为 MyVolume.hc 的文件（如我们在步骤 6 中指定的）。这个文件将是一个 VeraCrypt 容器（它将包含加密的 VeraCrypt 卷）。根据卷的大小，卷创建可能需要很长时间。完成后，将出现以下对话框：

点击 确定 关闭对话框。

步骤 12：

我们刚刚成功创建了一个 VeraCrypt 卷（文件容器）。在 VeraCrypt 卷创建向导窗口中，点击 退出。

向导窗口应该会消失。

在剩下的步骤中，我们将挂载我们刚刚创建的卷。我们将回到 VeraCrypt 主窗口（它应该仍然是打开的，但如果不是，请重复步骤 1 以启动 VeraCrypt，然后从步骤 13 继续）。

步骤 13：

从列表中选择一个驱动器号（用红色矩形标记）。这将是 VeraCrypt 容器将被挂载到的驱动器号。

注意：在本教程中，我们选择了驱动器号 M，但您当然可以选择任何其他可用的驱动器号。

步骤 14：

点击 选择文件。

应该会出现标准的文件选择器窗口。

步骤 15：

在文件选择器中，浏览到我们在步骤 6 - 12 中创建的容器文件并选择它。点击 打开（在文件选择器窗口中）。

文件选择器窗口应该会消失。

在接下来的步骤中，我们将回到 VeraCrypt 主窗口。

步骤 16：

在 VeraCrypt 主窗口中，点击 挂载。应该会出现密码提示对话框窗口。

步骤 17：

在密码输入字段（用红色矩形标记）中输入您在步骤 10 中指定的密码。

步骤 18：

选择在创建卷时使用的伪随机函数（PRF）算法（SHA - 512 是 VeraCrypt 使用的默认 PRF）。如果您不记得使用了哪个 PRF，只需将其设置为“自动检测”，但挂载过程将需要更多时间。输入密码后点击 确定。

VeraCrypt 现在将尝试挂载该卷。如果密码不正确（例如，如果您输入错误），VeraCrypt 将通知您，您需要重复上一步（再次输入密码并点击 确定）。如果密码正确，该卷将被挂载。

最后一步：

我们刚刚成功将容器挂载为虚拟磁盘 M:。

该虚拟磁盘是完全加密的（包括文件名、分配表、空闲空间等），并且行为就像一个真实的磁盘。您可以将文件保存（或复制、移动等）到这个虚拟磁盘，它们将在写入时即时加密。

例如，如果您在媒体播放器中打开存储在 VeraCrypt 卷上的文件，该文件将在读取时自动即时解密到随机存取存储器（RAM）中。

重要提示：请注意，当您打开存储在 VeraCrypt 卷上的文件（或向/从 VeraCrypt 卷写入/复制文件）时，您将不会再次被要求输入密码。您只需要在挂载卷时输入正确的密码。

您可以通过在列表中选择挂载的卷（如上图所示的蓝色选择），然后双击所选项目来打开它。

您也可以像浏览任何其他类型的卷一样浏览到挂载的卷。例如，通过打开“此电脑”（或“我的电脑”）列表并双击相应的驱动器号。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密工具

文档 >> VeraCrypt 卷

VeraCrypt 卷

有两种类型的VeraCrypt卷：

  • 文件托管（容器）
  • 分区/设备托管（非系统）

注意：除了创建上述类型的虚拟卷之外，VeraCrypt还可以对安装了Windows的物理分区/驱动器进行加密（有关更多信息，请参阅 系统加密 章节）。

VeraCrypt文件托管卷是一个普通文件，可以位于任何类型的存储设备上。它包含（托管）一个完全独立的加密虚拟磁盘设备。

VeraCrypt分区是使用VeraCrypt加密的硬盘分区。您还可以对整个硬盘、USB硬盘、USB闪存驱动器和其他类型的存储设备进行加密。

下一章节 >>


文档 >> VeraCrypt卷 >> 创建新卷

创建新的VeraCrypt卷

要创建新的VeraCrypt文件托管卷或加密分区/设备（需要管理员权限），请在主程序窗口中点击“创建卷”。此时应会弹出VeraCrypt卷创建向导。向导一旦出现，便会开始收集用于生成新卷的主密钥、次密钥（XTS模式）和盐值的数据。收集的数据应尽可能随机，包括你的鼠标移动、按键操作以及从系统获取的其他值（更多信息，请参阅 随机数生成器 部分）。向导会提供成功创建新VeraCrypt卷所需的帮助和信息。不过，有几个项目值得进一步说明：

哈希算法

允许你选择VeraCrypt将使用的哈希算法。所选的哈希算法由随机数生成器用作伪随机混合函数，用于生成主密钥、次密钥（XTS模式）和盐值（更多信息，请参阅 随机数生成器 部分）。它还用于派生新卷的头密钥和次头密钥（请参阅 头密钥派生、盐值和迭代次数 部分）。

有关已实现的哈希算法的信息，请参阅 哈希算法 章节。

请注意，哈希函数的输出 绝不会 直接用作加密密钥。更多信息，请参考 技术细节 章节。

加密算法

这允许你选择用于加密新卷的加密算法。请注意，卷创建后无法更改加密算法。更多信息，请参阅 加密算法 章节。

快速格式化

如果不勾选此选项，新卷的每个扇区都将被格式化。这意味着新卷将 完全 用随机数据填充。快速格式化速度更快，但安全性可能较低，因为在整个卷被文件填满之前，有可能判断出它包含多少数据（如果之前未用随机数据填充空间）。如果你不确定是否启用或禁用快速格式化，建议不勾选此选项。请注意，快速格式化仅在加密分区/设备时可用，在Windows系统上创建文件容器时也可用。

重要提示：如果要在分区/设备内创建隐藏卷，请不要勾选此选项。

动态

动态VeraCrypt容器是预分配的NTFS稀疏文件，其物理大小（实际使用的磁盘空间）会随着向其中添加新数据而增长。请注意，当在VeraCrypt卷上删除文件时，容器的物理大小（容器实际使用的磁盘空间）不会减小。容器的物理大小只能 增加 到用户在创建卷时指定的最大值。达到指定的最大值后，容器的物理大小将保持不变。

请注意，稀疏文件只能在NTFS文件系统中创建。如果在FAT文件系统中创建容器，动态 选项将被禁用（变灰）。

请注意，Windows和VeraCrypt报告的动态（稀疏文件托管）VeraCrypt卷的大小始终等于其最大大小（创建卷时指定）。要查看容器的当前物理大小（实际使用的磁盘空间），请右键单击容器文件（在Windows资源管理器窗口中，而不是在VeraCrypt中），然后选择 属性 并查看“占用空间”值。

警告：动态（稀疏文件托管）VeraCrypt卷的性能明显低于常规卷。动态（稀疏文件托管）VeraCrypt卷的安全性也较低，因为可以判断出哪些卷扇区未使用。此外，如果在动态卷的宿主文件系统中没有足够的可用空间时写入数据，加密文件系统可能会损坏。

簇大小

簇是分配单元。例如，在FAT文件系统中，一个字节的文件会分配一个簇。当文件增长超过簇边界时，会分配另一个簇。从理论上讲，簇大小越大，浪费的磁盘空间就越多；但性能会更好。如果你不知道使用哪个值，请使用默认值。

CD和DVD上的VeraCrypt卷

如果你想将VeraCrypt卷存储在CD或DVD上，请先在硬盘上创建一个文件托管的VeraCrypt容器，然后使用任何CD/DVD刻录软件将其刻录到CD/DVD上（或者在Windows XP或更高版本中，使用操作系统提供的CD刻录工具）。请记住，如果你需要在Windows 2000下挂载存储在只读介质（如CD/DVD）上的VeraCrypt卷，则必须将VeraCrypt卷格式化为FAT。原因是Windows 2000无法在只读介质上挂载NTFS文件系统（Windows XP及更高版本的Windows可以）。

硬件/软件RAID、Windows动态卷

VeraCrypt支持硬件/软件RAID以及Windows动态卷。

Windows Vista或更高版本：动态卷在“选择设备”对话框窗口中显示为 \Device\HarddiskVolumeN。

Windows XP/2000/2003：如果你打算将Windows动态卷格式化为VeraCrypt卷，请记住，在使用Windows磁盘管理工具创建Windows动态卷后，必须重启操作系统，该卷才能在VeraCrypt卷创建向导的“选择设备”对话框窗口中显示。另外请注意，在“选择设备”对话框窗口中，Windows动态卷不会显示为单个设备（项目）。相反，会显示Windows动态卷包含的所有卷，你可以选择其中任何一个来格式化整个Windows动态卷。

卷创建的附加说明

在卷创建向导窗口（最后一步）中点击“格式化”按钮后，系统会短暂延迟以收集更多随机数据。之后，将生成新卷的主密钥、头密钥、次密钥（XTS模式）和盐值，并显示主密钥和头密钥的内容。

为了提高安全性，可以通过取消相应字段右上角的复选框来防止显示随机性池、主密钥和头密钥的部分内容：

请注意，仅显示池/密钥的前128位（而非全部内容）。

你可以创建FAT（FAT12、FAT16或FAT32会根据簇的数量自动确定）或NTFS卷（不过，只有具有管理员权限的用户才能创建NTFS卷）。已挂载的VeraCrypt卷可以随时重新格式化为FAT12、FAT16、FAT32或NTFS。它们的行为与标准磁盘设备相同，因此你可以右键单击已挂载的VeraCrypt卷的驱动器号（例如在“此电脑”或“我的电脑”列表中）并选择“格式化”。

有关创建VeraCrypt卷的更多信息，请参阅 隐藏卷 部分。

下一部分 >>


文档 >> VeraCrypt 卷 >> 常用卷

常用卷

常用卷在以下情况特别有用：

  • 您有一个卷，需要始终挂载到特定的驱动器号。
  • 您有一个卷，当它的宿主设备连接到计算机时（例如，位于USB闪存驱动器或外部USB硬盘上的容器），需要自动挂载。
  • 您有一个卷，在您登录操作系统时需要自动挂载。
  • 您有一个卷，需要始终以只读或可移动介质的方式挂载。

注意： 请参考 已知问题和限制 部分，了解在启用Windows “快速启动” 功能时可能影响常用卷的问题。

要将VeraCrypt卷配置为常用卷，请按照以下步骤操作：

  1. 挂载该卷（挂载到您希望每次都挂载到的驱动器号）。
  2. 在VeraCrypt主窗口的驱动器列表中，右键单击已挂载的卷，然后选择 “添加到常用卷”。
  3. 此时应会出现 “常用卷管理器” 窗口。在该窗口中，您可以为该卷设置各种选项（见下文）。
  4. 单击 “确定”。
常用卷可以通过多种方式挂载： 要挂载所有常用卷，请选择 “常用卷” > “挂载常用卷”，或按下 “挂载常用卷” 热键（“设置” > “热键”）。要仅挂载一个常用卷，请从 “常用卷” 菜单中的列表中选择它。执行此操作时，系统会要求您输入其密码（和/或密钥文件）（除非已缓存），如果密码正确，该卷将被挂载。如果该卷已经挂载，则会为其打开一个资源管理器窗口。

选定的或所有常用卷可以在您登录Windows时自动挂载

要进行此设置，请按照以下步骤操作：

  1. 挂载您希望在登录时自动挂载的卷（挂载到您希望每次都挂载到的驱动器号）。
  2. 在VeraCrypt主窗口的驱动器列表中，右键单击已挂载的卷，然后选择 “添加到常用卷”。
  3. 此时应会出现 “常用卷管理器” 窗口。在该窗口中，启用 “登录时挂载选定卷” 选项，然后单击 “确定”。

然后，当您登录Windows时，系统会要求您输入卷的密码（和/或密钥文件），如果密码正确，该卷将被挂载。

注意：如果您启用了预启动身份验证密码的缓存（“设置” > “系统加密”），并且这些卷使用与系统分区/驱动器相同的密码，VeraCrypt将不会提示您输入密码。

选定的或所有常用卷可以在其宿主设备连接到计算机时自动挂载。要进行此设置，请按照以下步骤操作：

  1. 挂载该卷（挂载到您希望每次都挂载到的驱动器号）。
  2. 在VeraCrypt主窗口的驱动器列表中，右键单击已挂载的卷，然后选择 “添加到常用卷”。
  3. 此时应会出现 “常用卷管理器” 窗口。在该窗口中，启用 “宿主设备连接时挂载选定卷” 选项，然后单击 “确定”。

然后，当您将包含VeraCrypt卷的USB闪存驱动器插入USB端口时，系统会要求您输入卷的密码（和/或密钥文件）（除非已缓存），如果密码正确，该卷将被挂载。

注意：如果您启用了预启动身份验证密码的缓存（“设置” > “系统加密”），并且该卷使用与系统分区/驱动器相同的密码，VeraCrypt将不会提示您输入密码。

可以为每个常用卷分配一个特殊标签。此标签与文件系统标签不同，它会在VeraCrypt用户界面中显示，而不是显示卷的路径。要分配此类标签，请按照以下步骤操作：

  1. 选择 “常用卷” > “管理常用卷”。
  2. 此时应会出现 “常用卷管理器” 窗口。在该窗口中，选择您要编辑标签的卷。
  3. 在 “选定常用卷的标签” 输入字段中输入标签，然后单击 “确定”。

请注意，“常用卷管理器” 窗口（“常用卷” > “管理常用卷”）允许您 为每个常用卷设置各种其他选项。例如，可以将其中任何一个卷以只读或可移动介质的方式挂载。要设置这些选项，请按照以下步骤操作：

  1. 选择 “常用卷” > “管理常用卷”。
  2. 此时应会出现 “常用卷管理器” 窗口。在该窗口中，选择您要设置选项的卷。
  3. 设置选项，然后单击 “确定”。

“常用卷管理器” 窗口（“常用卷” > “管理常用卷”）中显示的系统常用卷的顺序 就是您选择 “常用卷” > “挂载常用卷” 或按下 “挂载常用卷” 热键（“设置” > “热键”）时挂载卷的顺序。您可以使用 “上移” 和 “下移” 按钮更改卷的顺序。

注意，常用卷也可以是 在不进行预启动身份验证的情况下挂载的系统加密密钥范围内的分区（例如，位于未运行的另一个操作系统的加密系统驱动器上的分区）。当您挂载此类卷并将其添加到常用卷时，您将不再需要选择 “系统” > “不进行预启动身份验证挂载” 或启用 “使用系统加密不进行预启动身份验证挂载分区” 挂载选项。您可以直接挂载常用卷（如上所述），而无需设置任何选项，因为卷的挂载模式会保存在包含常用卷列表的配置文件中。

警告：当分配给常用卷的驱动器号（保存在配置文件中）不可用时，该卷将不会被挂载，且不会显示错误消息。

要从常用卷列表中移除一个卷，请选择 “常用卷” > “管理常用卷”，选择该卷，单击 “移除”，然后单击 “确定”。

下一部分 >>


文档 >> VeraCrypt 卷 >> 系统常用卷

系统常用卷

系统常用卷在以下情况下非常有用：

  • 您有一些卷需要在系统和应用程序服务启动之前以及用户登录之前挂载。
  • 在VeraCrypt卷上存在网络共享文件夹。如果将这些卷配置为系统常用卷，您可以确保每次操作系统重启时，操作系统都会自动恢复这些网络共享。
  • 您需要每次操作系统启动时，每个这样的卷都挂载到相同的驱动器号。

请注意，与常规（非系统）常用卷不同，系统常用卷使用预启动身份验证密码，因此需要对系统分区/驱动器进行加密（也请注意，不需要启用预启动身份验证密码的缓存）。此外，由于预启动密码是使用美式键盘布局输入的（BIOS要求），因此在创建系统常用卷时，必须使用美式键盘布局输入其密码，即输入与您输入预启动身份验证密码时相同的键盘按键。如果系统常用卷的密码在美式键盘布局下与预启动身份验证密码不相同，则该卷将无法挂载。

在创建以后想设为系统常用卷的卷时，您必须明确将VeraCrypt关联的键盘布局设置为美式布局，并且输入与您输入预启动身份验证密码时相同的键盘按键。

系统常用卷可以配置为仅对具有管理员权限的用户在VeraCrypt中可用（选择“设置”>“系统常用卷”>“仅允许管理员在VeraCrypt中查看和卸载系统常用卷”）。在服务器上应启用此选项，以确保没有管理员权限的用户无法卸载系统常用卷。在非服务器系统上，此选项可用于防止常规的VeraCrypt卷操作（如“全部卸载”、自动卸载等）影响系统常用卷。此外，当VeraCrypt以非管理员权限运行时（Windows Vista及更高版本的默认设置），系统常用卷将不会显示在VeraCrypt主应用程序窗口的驱动器号列表中。

要将VeraCrypt卷配置为系统常用卷，请按照以下步骤操作：

  1. 挂载该卷（挂载到您希望每次都挂载到的驱动器号）。
  2. 在VeraCrypt主窗口的驱动器列表中右键单击已挂载的卷，然后选择“添加到系统常用卷”。
  3. 此时应会出现“系统常用卷管理器”窗口。在该窗口中，启用“Windows启动时挂载系统常用卷”选项，然后单击“确定”。

“系统常用卷管理器”窗口（“常用卷”>“组织系统常用卷”）中显示的系统常用卷的顺序就是这些卷的挂载顺序。您可以使用“上移”和“下移”按钮来更改卷的顺序。

可以为每个系统常用卷分配一个特殊标签。此标签与文件系统标签不同，它会在VeraCrypt用户界面中显示，而不是显示卷的路径。要分配这样的标签，请按照以下步骤操作：

  1. 选择“常用卷”>“组织系统常用卷”。
  2. 此时应会出现“系统常用卷管理器”窗口。在该窗口中，选择您要编辑标签的卷。
  3. 在“所选常用卷的标签”输入字段中输入标签，然后单击“确定”。

请注意，“系统常用卷管理器”窗口（“常用卷”>“组织系统常用卷”）允许您为每个系统常用卷设置各种选项。例如，任何一个卷都可以以只读方式或可移动介质方式挂载。

警告：当分配给系统常用卷的驱动器号（保存在配置文件中）不可用时，该卷将不会被挂载，并且不会显示任何错误消息。

请注意，Windows需要在挂载系统常用卷之前使用一些文件（如分页文件、Active Directory文件等）。因此，此类文件不能存储在系统常用卷上。但是，请注意，它们可以存储在系统加密密钥范围内的任何分区上（例如，在系统分区上或在由VeraCrypt完全加密的系统驱动器的任何分区上）。

要从系统常用卷列表中移除一个卷，请选择“常用卷”>“组织系统常用卷”，选择该卷，单击“移除”，然后单击“确定”。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 系统加密

系统加密

VeraCrypt可以对系统分区或整个系统驱动器进行即时加密，即安装Windows并从中启动的分区或驱动器。
系统加密提供了最高级别的安全和隐私保护，因为所有文件，包括Windows和应用程序在系统分区上创建的任何临时文件（通常在您不知情或未同意的情况下）、休眠文件、交换文件等，始终处于永久加密状态（即使电源突然中断）。Windows还会记录大量潜在的敏感数据，例如您打开的文件的名称和位置、您运行的应用程序等。所有这些日志文件和注册表项也始终处于永久加密状态。
关于SSD和TRIM的注意事项： 在SSD上使用系统加密时，重要的是要考虑TRIM操作的影响，该操作可能会泄露有关驱动器上哪些扇区未使用的信息。有关TRIM与VeraCrypt如何配合工作以及如何管理其设置以增强安全性的详细指南，请参阅 TRIM操作 文档。
系统加密涉及预启动身份验证，这意味着任何想要访问和使用加密系统、读取和写入存储在系统驱动器上的文件等的人，每次在Windows启动之前都需要输入正确的密码。预启动身份验证由VeraCrypt引导加载程序处理，该加载程序位于引导驱动器的第一个磁道以及 VeraCrypt救援磁盘（见下文） 上。
请注意，VeraCrypt可以在操作系统运行时对现有的未加密系统分区/驱动器进行就地加密（在系统加密过程中，您可以像往常一样正常使用计算机，没有任何限制）。同样，VeraCrypt加密的系统分区/驱动器也可以在操作系统运行时进行就地解密。您可以随时中断加密或解密过程，使分区/驱动器部分未加密，重启或关闭计算机，然后继续该过程，该过程将从停止的点继续。
用于系统加密的操作模式是 XTS（请参阅 操作模式 部分）。有关系统加密的更多技术细节，请参阅 技术细节 章节中的 加密方案 部分。
要加密系统分区或整个系统驱动器，请选择 系统 > 加密系统分区/驱动器，然后按照向导中的说明操作。要解密系统分区/驱动器，请选择 系统 > 永久解密系统分区/驱动器。
由于BIOS要求，预启动密码需使用 美国键盘布局 输入。在系统加密过程中，VeraCrypt会自动透明地将键盘切换到美国布局，以确保输入的密码值与预启动模式下输入的密码值匹配。然而，从剪贴板粘贴密码可能会覆盖此保护措施。为防止因这种差异而产生的任何问题，VeraCrypt在系统加密向导中禁用了从剪贴板粘贴密码的选项。因此，在设置或输入密码时，务必手动使用与创建系统加密时相同的按键进行输入，以确保能够一致地访问您的加密系统。

注意：默认情况下，Windows 7及更高版本从一个特殊的小分区启动。该分区包含启动系统所需的文件。Windows只允许具有管理员权限的应用程序在系统运行时写入该分区。在EFI启动模式（现代PC的默认模式）下，VeraCrypt无法加密此分区，因为它必须保持未加密状态，以便BIOS可以从中加载EFI引导加载程序。这反过来意味着在EFI启动模式下，VeraCrypt仅提供对安装Windows的系统分区进行加密（用户以后可以使用VeraCrypt手动加密其他数据分区）。在MBR传统启动模式下，只有当您选择加密整个系统驱动器（而不是仅选择加密安装Windows的分区）时，VeraCrypt才会对该分区进行加密。

下一部分 >>


文档 >> 系统加密 >> 隐藏操作系统

隐藏操作系统

可能会出现有人强迫您对操作系统进行解密的情况。在许多情况下，您无法拒绝这样做（例如，受到敲诈勒索）。VeraCrypt允许您创建一个隐藏操作系统，在遵循某些准则的情况下，其存在应该是无法被证明的。因此，您无需对隐藏操作系统进行解密或透露其密码。有关更多信息，请参阅 隐藏操作系统章节中关于 似是而非的否认的部分。

下一部分 >>


文档 >> 系统加密 >> 系统加密支持的操作系统

系统加密支持的操作系统

VeraCrypt目前可以加密以下操作系统：
  • Windows 11
  • Windows 10
注意：以下操作系统（以及其他一些系统）不受支持：Windows RT、Windows 2003 IA - 64、Windows 2008 IA - 64、Windows XP IA - 64以及Windows的嵌入式/平板电脑版本。
另请参阅 支持的操作系统 部分
下一部分 >>


文档 >> 系统加密 >> VeraCrypt救援盘

VeraCrypt救援盘

在准备对系统分区/驱动器进行加密的过程中，VeraCrypt要求您创建一个所谓的VeraCrypt救援盘（EFI启动模式下为USB盘，MBR传统启动模式下为CD/DVD），其用途如下：
  • 如果您启动计算机后VeraCrypt引导加载程序界面未出现（或者Windows无法启动），则VeraCrypt引导加载程序可能已损坏。VeraCrypt救援盘可让您恢复它，从而重新访问您的加密系统和数据（不过，请注意，您仍然需要输入正确的密码）。对于EFI启动模式，在救援盘界面中选择将VeraCrypt加载程序二进制文件恢复到系统磁盘。对于MBR传统启动模式，请选择修复选项 > 恢复VeraCrypt引导加载程序。然后按“Y”确认操作，从USB端口或CD/DVD驱动器中取出救援盘，然后重新启动计算机。
  • 如果VeraCrypt引导加载程序频繁损坏（例如，由于设计不当的激活软件），或者如果您不希望VeraCrypt引导加载程序驻留在硬盘上（例如，如果您想为其他操作系统使用替代的引导加载程序/管理器），您可以直接从VeraCrypt救援盘启动（因为它也包含VeraCrypt引导加载程序），而无需将引导加载程序恢复到硬盘。对于EFI启动模式，只需将救援盘插入USB端口，从它启动计算机，然后在救援盘界面上选择从救援盘启动VeraCrypt加载程序。对于MBR传统启动模式，您需要将救援盘插入CD/DVD驱动器，然后在救援盘界面中输入您的密码。
  • 如果您多次输入正确的密码，但VeraCrypt仍提示密码错误，则可能是主密钥或其他关键数据已损坏。VeraCrypt救援盘可让您恢复它们，从而重新访问您的加密系统和数据（不过，请注意，您仍然需要输入正确的密码）。对于EFI启动模式，在救援盘界面中选择恢复操作系统头密钥。对于MBR传统启动模式，请选择修复选项 > 恢复VeraCrypt引导加载程序。然后输入您的密码，按“Y”确认操作，从USB端口或CD/DVD驱动器中取出救援盘，然后重新启动计算机。

    注意：此功能不能用于恢复驻留有隐藏操作系统的隐藏卷的头（请参阅隐藏操作系统部分）。要恢复此类卷头，请点击选择设备，选择诱饵系统分区后面的分区，点击确定，选择工具 > 恢复卷头，然后按照说明操作。

    警告：使用VeraCrypt救援盘恢复密钥数据时，您也会恢复创建VeraCrypt救援盘时有效的密码。因此，每当您更改密码时，您应该销毁您的VeraCrypt救援盘并创建一个新的（选择系统 -> 创建救援盘）。否则，如果攻击者知道您的旧密码（例如，通过键盘记录器捕获），并且他随后找到了您的旧VeraCrypt救援盘，他可以使用它来恢复密钥数据（用旧密码加密的主密钥），从而解密您的系统分区/驱动器。
  • 如果Windows损坏且在VeraCrypt密码提示中输入正确密码后无法启动，VeraCrypt救援盘可让您在Windows启动前永久解密分区/驱动器。对于EFI启动，在救援盘界面中选择解密操作系统。对于MBR传统启动模式，请选择修复选项 > 永久解密系统分区/驱动器。输入正确的密码，等待解密完成。然后，您可以例如启动您的MS Windows安装CD/DVD来修复您的Windows安装。请注意，此功能不能用于解密驻留有隐藏操作系统的隐藏卷（请参阅隐藏操作系统部分）。

    注意：或者，如果Windows损坏（无法启动）并且您需要修复它（或访问其上的文件），您可以通过以下步骤避免解密系统分区/驱动器：如果您的计算机上安装了多个操作系统，请启动不需要预启动身份验证的操作系统。如果您的计算机上没有安装多个操作系统，您可以启动WinPE或BartPE CD/DVD或Linux Live CD/DVD/USB。您还可以将系统驱动器作为辅助或外部驱动器连接到另一台计算机，然后启动该计算机上安装的操作系统。启动系统后，运行VeraCrypt，点击选择设备，选择受影响的系统分区，点击确定，选择系统 > 无需预启动身份验证挂载，输入您的预启动身份验证密码，然后点击确定。该分区将作为常规VeraCrypt卷挂载（数据将在访问时在RAM中进行即时解密/加密，如往常一样）。
  • 在MBR传统启动模式下，您的VeraCrypt救援盘包含第一个驱动器磁道原始内容的备份（在将VeraCrypt引导加载程序写入该磁道之前制作），并允许您在必要时恢复它。第一个磁道通常包含系统加载程序或引导管理器。在救援盘界面中，选择修复选项 > 恢复原始系统加载程序。
请注意，即使你丢失了VeraCrypt救援盘，且攻击者找到了它，在没有正确密码的情况下，他/她也无法解密系统分区或驱动器。
要启动VeraCrypt救援盘，请根据其类型将其插入USB端口或CD/DVD驱动器，然后重启计算机。如果VeraCrypt救援盘屏幕未出现（或者在MBR传统启动模式下，如果你在屏幕的“键盘控制”部分未看到“修复选项”项），可能是你的BIOS配置为优先从硬盘启动，而不是从USB驱动器和CD/DVD驱动器启动。如果是这种情况，请重启计算机，在看到BIOS启动屏幕后立即按F2或Delete键，等待BIOS配置屏幕出现。如果没有出现BIOS配置屏幕，请再次重启（重置）计算机，并在重启（重置）计算机后立即反复按F2或Delete键。当BIOS配置屏幕出现时，将你的BIOS配置为优先从USB驱动器和CD/DVD驱动器启动（有关如何操作的信息，请参考你的BIOS/主板文档，或联系计算机供应商的技术支持团队寻求帮助）。然后重启计算机。此时VeraCrypt救援盘屏幕应该会出现。注意：在MBR传统启动模式下，你可以通过按键盘上的F8键在VeraCrypt救援盘屏幕上选择“修复选项”。

如果你的VeraCrypt救援盘损坏，你可以通过选择系统 > 创建救援盘来创建一个新的救援盘。要确定你的VeraCrypt救援盘是否损坏，请将其插入USB端口（在MBR传统启动模式下插入CD/DVD驱动器），然后选择系统 > 验证救援盘。

适用于USB闪存驱动器的MBR传统启动模式的VeraCrypt救援盘

如果你的计算机没有CD/DVD驱动器，也可以在USB驱动器上创建适用于MBR传统启动模式的VeraCrypt救援盘。请注意，你必须确保不会覆盖USB闪存驱动器上的数据！如果你丢失了USB驱动器或数据损坏，在出现问题时你将无法恢复系统！
要创建可引导的VeraCrypt救援USB驱动器，你需要创建一个能够启动ISO镜像的可引导USB驱动器。像Unetbootin这样试图将ISO镜像内的数据复制到USB驱动器的解决方案目前还不可行。在Windows系统上，请按照以下步骤操作：
  • 从VeraCrypt的官方SourceForge仓库下载所需文件： https://sourceforge.net/projects/veracrypt/files/Contributions/VeraCryptUsbRescueDisk.zip
  • 插入一个USB驱动器。
  • 使用FAT16或FAT32格式格式化USB驱动器：
    • 以管理员身份运行usb_format.exe（右键单击“以管理员身份运行”）。
    • 在设备列表中选择你的USB驱动器。
    • 选择FAT作为文件系统，并勾选“快速格式化”。点击“开始”。
  • 创建一个能够启动ISO镜像的引导加载程序：
    • 运行grubinst_gui.exe。
    • 勾选“磁盘”，然后在列表中选择你的USB驱动器。
    • 点击“分区列表”前的“刷新”按钮，然后选择“整个磁盘（MBR）”。
    • 保持所有其他选项不变，然后点击“安装”。
    • 你应该会看到一个控制台窗口显示“MBR/BS已成功安装。按<回车>继续...”
    • 关闭该工具。
  • 将文件“grldr”复制到USB驱动器的根目录（例如，如果驱动器盘符为I:，则应将其复制到I:\grldr）。此文件用于加载Grub4Dos。
  • 将文件“menu.lst”复制到USB驱动器的根目录（例如，如果驱动器盘符为I:，则应将其复制到I:\menu.lst）。此文件用于配置显示的菜单及其选项。
  • 将救援盘文件“VeraCrypt Rescue Disk.iso”复制到USB驱动器的根目录，并将其重命名为“veracrypt.iso”。另一种方法是修改“menu.lst”文件中的链接。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 似是而非的否认

似是而非的否认

若对手迫使您透露密码，VeraCrypt提供并支持两种似是而非的否认方式：
  1. 隐藏卷（请参阅 隐藏卷 部分）和隐藏操作系统（请参阅 隐藏操作系统 部分）。
  2. 在解密之前，VeraCrypt分区/设备看起来仅仅是由随机数据组成（它不包含任何类型的“签名”）。因此，应该不可能证明一个分区或设备是VeraCrypt卷，或者它已被加密（前提是遵循 安全要求和预防措施 章节中列出的安全要求和预防措施）。对于一个仅包含随机数据的分区/设备的存在，一个可能看似合理的解释是，您使用了一种通过用随机数据覆盖来擦除数据的工具，对该分区/设备的内容进行了擦除（安全擦除）（实际上，VeraCrypt也可用于通过在其中创建一个空的加密分区/设备托管卷来安全擦除分区/设备）。但是，您需要防止数据泄露（请参阅 数据泄露 部分），并且还需注意，对于 系统加密，第一个磁盘轨道包含（未加密的）VeraCrypt引导加载程序，它可以很容易地被识别出来（更多信息，请参阅 系统加密 章节）。在使用 系统加密 时，可以通过创建一个隐藏操作系统来实现似是而非的否认（请参阅 隐藏操作系统 部分）。

    尽管文件托管的VeraCrypt卷（容器）也不包含任何类型的“签名”（在解密之前，它们看起来仅由随机数据组成），但它们无法提供这种似是而非的否认，因为实际上没有合理的解释可以说明一个仅包含随机数据的文件的存在。但是，通过在文件托管的VeraCrypt卷（容器）中创建一个隐藏卷，仍然可以实现似是而非的否认（见上文）。

注意事项

  • 将硬盘分区格式化为VeraCrypt卷（或对分区进行原地加密）时，分区表（包括分区类型）绝不会 被修改（不会向分区表写入任何VeraCrypt“签名”或“ID”）。
  • 有一些方法可以找到包含随机数据的文件或设备（如VeraCrypt卷）。但是请注意，这不应 以任何方式影响似是而非的否认。对手仍然应该无法证明 该分区/设备是VeraCrypt卷，或者该文件、分区或设备包含隐藏的VeraCrypt卷（前提是您遵循 安全要求和预防措施 章节以及 隐藏卷的安全要求和预防措施 子部分中列出的安全要求和预防措施）。

下一部分 >>


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 似是而非的否认 >> 隐藏卷

隐藏卷

可能会出现有人迫使您透露加密卷密码的情况。在很多情况下，您无法拒绝透露密码（例如，受到勒索）。使用所谓的隐藏卷可以解决此类情况，而无需透露您的卷密码。
在标准VeraCrypt卷中创建隐藏卷前后的布局。

其原理是在另一个VeraCrypt卷（卷上的空闲空间内）中创建一个VeraCrypt卷。即使外部卷已挂载，也应该无法证明其中是否存在隐藏卷*，因为在创建任何VeraCrypt卷时，其空闲空间始终会用随机数据填充**，并且（未挂载的）隐藏卷的任何部分都无法与随机数据区分开来。请注意，VeraCrypt不会以任何方式修改外部卷内的文件系统（有关空闲空间等信息）。

隐藏卷的密码必须与外部卷的密码有很大不同。在（在其中创建隐藏卷之前），您应该将一些看起来敏感但实际上并不想隐藏的文件复制到外部卷。这些文件将留给任何迫使您交出密码的人。您只需透露外部卷的密码，而不是隐藏卷的密码。真正敏感的文件将存储在隐藏卷上。
隐藏卷的挂载方式与标准VeraCrypt卷相同：点击选择文件或选择设备以选择外部/宿主卷（重要提示：确保该卷未挂载）。然后点击挂载，并输入隐藏卷的密码。挂载的是隐藏卷还是外部卷取决于输入的密码（即，当您输入外部卷的密码时，将挂载外部卷；当您输入隐藏卷的密码时，将挂载隐藏卷）。
VeraCrypt首先尝试使用输入的密码解密标准卷头。如果解密失败，它会将卷中可能存储隐藏卷头的区域（即字节65536 - 131071，当卷中没有隐藏卷时，该区域仅包含随机数据）加载到RAM中，并尝试使用输入的密码对其进行解密。请注意，隐藏卷头无法被识别，因为它们看起来完全由随机数据组成。如果头成功解密（有关VeraCrypt如何确定解密成功的信息，请参阅加密方案部分），则从解密后的头（仍存储在RAM中）中检索隐藏卷的大小信息，并挂载隐藏卷（其大小也决定了其偏移量）。
可以在任何类型的VeraCrypt卷中创建隐藏卷，即文件托管卷或分区/设备托管卷（需要管理员权限）。要创建隐藏的VeraCrypt卷，请在主程序窗口中点击创建卷，然后选择创建隐藏的VeraCrypt卷。向导将提供帮助和成功创建隐藏的VeraCrypt卷所需的所有信息。
在创建隐藏卷时，对于没有经验的用户来说，设置隐藏卷的大小可能非常困难，甚至不可能确保隐藏卷不会覆盖外部卷上的数据。因此，卷创建向导会在（在其中创建隐藏卷之前）自动扫描外部卷的簇位图，并确定隐藏卷的最大可能大小***。
如果在创建隐藏卷时遇到任何问题，请参考故障排除章节以获取可能的解决方案。

请注意，还可以创建并启动驻留在隐藏卷中的操作系统（请参阅似是而非的否认章节中的隐藏操作系统部分）。

* 前提是遵循了VeraCrypt卷创建向导中的所有说明，并且遵循了隐藏卷的安全要求和预防措施子部分中列出的要求和预防措施。
** 前提是禁用了快速格式化和动态选项，并且卷不包含已在原地加密的文件系统（VeraCrypt不允许用户在这样的卷中创建隐藏卷）。有关用随机数据填充卷空闲空间的方法的信息，请参阅技术细节章节中的VeraCrypt卷格式规范部分。
*** 向导扫描簇位图以确定连续空闲空间区域的大小（如果有），该区域的末尾与外部卷的末尾对齐。该区域用于容纳隐藏卷，因此该区域的大小限制了隐藏卷的最大可能大小。在Linux和Mac OS X上，向导实际上并不扫描簇位图，而是驱动程序检测写入外部卷的任何数据，并按上述方式使用其位置。

下一部分 >>


文档 >> 似是而非的否认 >> 隐藏卷 >> 隐藏卷的保护

保护隐藏卷免受损坏

如果您挂载一个包含 隐藏卷 的VeraCrypt卷，您可以 读取 （外部）卷上存储的数据，而不会有任何风险。但是，如果您（或操作系统）需要 保存 数据到外部卷，就存在隐藏卷被损坏（覆盖）的风险。为防止这种情况，您应该按照本节所述的方法保护隐藏卷。
挂载外部卷时，输入其密码，在点击 确定 之前，点击 挂载选项：
在 挂载选项 对话框中，启用选项 '保护隐藏卷免受写入外部卷造成的损坏 '。在 '隐藏卷密码' 输入字段中，输入隐藏卷的密码。点击 确定，然后在主密码输入对话框中，点击 确定。

两个密码都必须正确；否则，外部卷将无法挂载。启用隐藏卷保护时，VeraCrypt 不会 实际挂载隐藏卷。它只会（在内存中）解密其头文件，并从解密后的头文件中获取有关隐藏卷大小的信息。然后，外部卷将被挂载，任何向隐藏卷区域保存数据的尝试都将被拒绝（直到外部卷被卸载）。 请注意，VeraCrypt绝不会以任何方式修改外部卷内的文件系统（例如，有关已分配簇的信息、可用空间量等）。一旦卷被卸载，保护就会失效。 当该卷再次挂载时，无法确定该卷是否使用了隐藏卷保护。只有提供隐藏卷正确密码（和/或密钥文件）的用户（每次挂载外部卷时）才能激活隐藏卷保护。

一旦对隐藏卷区域的写入操作被拒绝/阻止（以保护隐藏卷），整个宿主卷（包括外部卷和隐藏卷）在卸载之前将变为写保护状态（每次尝试向该卷写入数据时，VeraCrypt驱动程序会向系统报告“无效参数”错误）。这保留了似是而非的否认性（否则，文件系统内的某些不一致情况可能表明该卷使用了隐藏卷保护）。当隐藏卷的损坏被阻止时，会显示一条警告信息（前提是启用了VeraCrypt后台任务 - 请参阅章节 VeraCrypt后台任务）。此外，主窗口中显示的已挂载外部卷的类型会变为 '外部(!) ':

此外，卷属性 对话框窗口中的 隐藏卷受保护 字段显示为：
'是（损坏已阻止！）'.

请注意，当隐藏卷的损坏被阻止时，不会将有关该事件的任何信息写入该卷。当外部卷卸载并再次挂载时，卷属性不会显示字符串“损坏已阻止”。

有几种方法可以检查隐藏卷是否正在受到保护以免受损坏：
  1. 外部卷挂载后，会显示一个确认消息框，表明隐藏卷正在受到保护（如果未显示，则隐藏卷未受保护！）。
  2. 在 卷属性 对话框中， 隐藏卷受保护 字段显示为 '是':
  3. 已挂载外部卷的类型为 外部:

重要提示：只有您自己可以挂载启用了隐藏卷保护的外部卷（因为没有其他人知道您的隐藏卷密码）。当对手要求您挂载外部卷时，您当然 不能以启用隐藏卷保护的方式挂载它。您必须将其作为普通卷挂载（然后VeraCrypt将不会显示卷类型为“外部”，而是“普通”）。原因是，在外部卷以启用隐藏卷保护的方式挂载期间，对手可以发现外部卷内存在隐藏卷（直到该卷卸载，甚至在计算机关机后的一段时间内，他/她都有可能发现 - 请参阅 RAM中的未加密数据）。

警告：请注意，挂载选项 对话框窗口中的 '保护隐藏卷免受因写入外部卷而造成的损坏' 选项在挂载尝试完成后会自动禁用，无论挂载是否成功（当然，所有已经受到保护的隐藏卷将继续受到保护）。因此，如果您希望隐藏卷受到保护，则每次尝试挂载外部卷时都需要勾选该选项：

VeraCrypt GUI

如果您想使用缓存的密码挂载外部卷并保护其中的隐藏卷，请按照以下步骤操作：在点击 挂载 时按住 Control （Ctrl）键（或从 卷 菜单中选择 带选项挂载）。这将打开 挂载选项 对话框。启用 '保护隐藏卷免受因写入外部卷而造成的损坏' 选项，并将密码框留空。然后点击 确定。

如果您需要挂载外部卷，并且知道不需要向其中保存任何数据，那么保护隐藏卷免受损坏的最便捷方法是将外部卷作为只读卷挂载（请参阅 挂载选项 部分）。

下一部分 >>


文档 >> 合理否认性 >> 隐藏卷 >> 隐藏卷的安全要求

与隐藏卷相关的安全要求和预防措施

如果您使用 VeraCrypt 隐藏卷，则必须遵循本节列出的安全要求和预防措施。免责声明：本节不保证包含可能对 VeraCrypt 保护隐藏 VeraCrypt 卷中存储的数据的能力以及提供合理否认性的能力产生不利影响或限制的 所有 安全问题和攻击列表。
  • 如果对手在不同时间点多次访问（未挂载的）VeraCrypt 卷，他可能能够确定该卷中哪些扇区正在发生变化。如果您更改 隐藏卷 的内容（例如，创建/复制新文件到隐藏卷，或修改/删除/重命名/移动隐藏卷上存储的文件等），隐藏卷区域中扇区（密文）的内容将会改变。在获得外部卷的密码后，对手可能会要求解释这些扇区为何发生变化。如果您无法提供合理的解释，可能会表明外部卷中存在隐藏卷。

    请注意，类似上述描述的问题也可能在以下情况下出现：
    • 存储文件型 VeraCrypt 容器的文件系统已进行碎片整理，并且 VeraCrypt 容器（或其片段）的副本仍保留在宿主卷的空闲空间中（在已碎片整理的文件系统中）。为防止这种情况发生，请执行以下操作之一：
      • 使用分区/设备型 VeraCrypt 卷代替文件型。
      • 在碎片整理后，安全擦除宿主卷（在已碎片整理的文件系统中）的空闲空间。在 Windows 系统上，可以使用 Microsoft 免费实用工具SDelete。在Linux系统中，可以使用GNU coreutils软件包中的shred实用工具来达到此目的。
      • 不要对存储VeraCrypt卷的文件系统进行碎片整理。
    • 文件托管的VeraCrypt容器存储在日志文件系统（如NTFS）中。VeraCrypt容器的副本（或其片段）可能会保留在主机卷上。为防止这种情况发生，请采取以下操作之一：
      • 使用分区/设备托管的VeraCrypt卷，而不是文件托管的。
      • 将容器存储在非日志文件系统（例如，FAT32）中。
    • VeraCrypt卷位于使用损耗均衡机制的设备/文件系统（例如，闪存SSD或USB闪存驱动器）上。VeraCrypt卷的副本（或片段）可能会保留在设备上。因此，请勿将隐藏卷存储在此类设备/文件系统上。 有关损耗均衡的更多信息，请参阅 损耗均衡章节，该章节位于 安全要求和预防措施部分。
    • VeraCrypt卷位于保存数据的设备/文件系统上（或位于由保存数据的系统/设备控制或监控的设备/文件系统上）（例如，计时器或计数器的值），这些数据可用于确定一个块的写入时间早于另一个块，和/或确定一个块被写入/读取的次数。因此，请勿将隐藏卷存储在此类设备/文件系统上。要了解设备/系统是否保存此类数据，请参阅设备/系统附带的文档或联系供应商/制造商。
    • VeraCrypt卷位于容易损耗的设备上（可以确定一个块的写入/读取次数比另一个块多）。因此，请勿将隐藏卷存储在此类设备/文件系统上。要了解设备是否容易出现此类损耗，请参阅设备附带的文档或联系供应商/制造商。
    • 您通过克隆隐藏卷的主机卷来备份隐藏卷的内容，或者通过克隆其主机卷来创建新的隐藏卷。因此，您绝对不能这样做。请遵循 如何安全备份章节和 卷克隆部分中的说明。
  • 在加密打算创建隐藏卷的分区/设备时，请确保禁用快速格式化。
  • 在Windows系统中，确保您没有删除打算创建隐藏卷的卷内的任何文件（簇位图扫描器无法检测到已删除的文件）。
  • 在Linux或Mac OS X系统中，如果您打算在文件托管的VeraCrypt卷内创建隐藏卷，请确保该卷不是稀疏文件托管的（Windows版本的VeraCrypt会验证这一点，并禁止在稀疏文件内创建隐藏卷）。
  • 当隐藏卷挂载时，操作系统和第三方应用程序可能会将有关隐藏卷中存储的数据的未加密信息（例如，最近访问文件的文件名和位置、文件索引工具创建的数据库等）、未加密形式的数据本身（临时文件等）、有关隐藏卷中文件系统的未加密信息（例如，可用于识别文件系统并确定它是否是外部卷中的文件系统）、隐藏卷的密码/密钥或其他类型的敏感数据写入非隐藏卷（通常是未加密的系统卷）。因此，必须遵循以下安全要求和预防措施：
    • Windows：创建一个隐藏操作系统（有关如何操作的信息，请参阅 隐藏操作系统部分），并仅在隐藏操作系统运行时挂载隐藏卷。 注意：当隐藏操作系统运行时，VeraCrypt会确保所有本地未加密文件系统和非隐藏VeraCrypt卷为只读（即无法向此类文件系统或VeraCrypt卷写入文件）。* 允许将数据写入 隐藏VeraCrypt卷内的文件系统。 或者，如果无法使用隐藏操作系统，请使用“实时CD” Windows PE系统（完全存储在CD/DVD上并从其启动），该系统可确保写入系统卷的任何数据都写入RAM磁盘。 仅在运行此类“实时CD”系统时挂载隐藏卷（如果无法使用隐藏操作系统）。此外，在这样的“实时CD”会话期间，只有隐藏VeraCrypt卷中的文件系统可以以读写模式挂载（外部或未加密的卷/文件系统必须以只读模式挂载，或者根本不挂载/不可访问）；否则，您必须确保应用程序和操作系统在“实时CD”会话期间不会将任何敏感数据（见上文）写入非隐藏卷/文件系统。
    • Linux：下载或创建您的操作系统的“实时CD”版本（即完全存储在CD/DVD上并从其启动的“实时” Linux系统），该系统可确保写入系统卷的任何数据都写入RAM磁盘。 仅在运行此类“实时CD”系统时挂载隐藏卷。在会话期间，只有隐藏VeraCrypt卷中的文件系统可以以读写模式挂载（外部或未加密的卷/文件系统必须以只读模式挂载，或者根本不挂载/不可访问）。如果您无法满足此要求，并且无法确保应用程序和操作系统不会将任何敏感数据（见上文）写入非隐藏卷/文件系统，则不得在Linux系统下挂载或创建隐藏VeraCrypt卷。
    • Mac OS X：如果您无法确保应用程序和操作系统不会将任何敏感数据（见上文）写入非隐藏卷/文件系统，则不得在Mac OS X系统下挂载或创建隐藏VeraCrypt卷。
  • 当外部卷以启用 隐藏卷保护的方式挂载时（请参阅 隐藏卷防损坏保护部分），您必须遵循与隐藏卷挂载时相同的安全要求和预防措施（见上文）。原因是操作系统可能会将隐藏卷的密码/密钥泄露到非隐藏或未加密的卷中。
  • 如果您使用 隐藏卷内的操作系统（请参阅 隐藏操作系统 部分），那么，除上述内容外，您还必须遵循以下安全要求和预防措施：
    • 您应该像使用计算机一样频繁地使用诱饵操作系统。理想情况下，您应该将其用于所有不涉及敏感数据的活动。否则，隐藏操作系统的合理否认性可能会受到不利影响（如果您向对手透露了诱饵操作系统的密码，他可能会发现该系统使用频率不高，这可能表明您的计算机上存在隐藏操作系统）。请注意，您可以随时将数据保存到诱饵系统分区，而不会有损坏隐藏卷的风险（因为诱饵系统 未 安装在外层卷中）。
    • 如果操作系统需要激活，则必须在克隆之前激活（克隆是创建隐藏操作系统过程的一部分 —— 请参阅 隐藏操作系统 部分），并且隐藏操作系统（即克隆体）绝不能重新激活。原因是隐藏操作系统是通过将系统分区的内容复制到隐藏卷来创建的（因此，如果操作系统未激活，隐藏操作系统也不会激活）。如果您激活或重新激活了隐藏操作系统，激活的日期和时间（以及其他数据）可能会记录在 Microsoft 服务器上（以及隐藏操作系统上），但不会记录在 诱饵操作系统 上。因此，如果对手可以访问服务器上存储的数据或拦截您向服务器发出的请求（并且如果您向他透露了诱饵操作系统的密码），他可能会发现诱饵操作系统在不同的时间被激活（或重新激活），这可能表明您的计算机上存在隐藏操作系统。

      出于类似的原因，任何需要激活的软件都必须在开始创建隐藏操作系统之前安装并激活。
    • 当您需要关闭隐藏系统并启动诱饵系统时，不要 重启计算机。相反，关闭或休眠计算机，然后在打开计算机并启动诱饵系统之前，至少让其断电几分钟（时间越长越好）。这是为了清除可能包含敏感数据的内存。有关更多信息，请参阅 RAM 中的未加密数据 部分，该部分位于 安全要求和预防措施 章节中。
    • 计算机仅在诱饵操作系统运行时才可连接到网络（包括互联网）。当隐藏操作系统运行时，计算机不应连接到任何网络，包括互联网（最可靠的方法之一是，如果有网络电缆，拔掉它）。请注意，如果从远程服务器下载或上传数据，连接的日期和时间以及其他数据通常会记录在服务器上。各种数据也会记录在操作系统上（例如，Windows 自动更新数据、应用程序日志、错误日志等）。因此，如果对手可以访问服务器上存储的数据或拦截您向服务器发出的请求（并且如果您向他透露了诱饵操作系统的密码），他可能会发现连接不是从诱饵操作系统内发起的，这可能表明您的计算机上存在隐藏操作系统。

      还要注意，如果隐藏操作系统下有任何通过网络共享的文件系统（无论该文件系统是远程的还是本地的），您也会遇到类似的问题。因此，当隐藏操作系统运行时，绝不能有通过网络共享的文件系统（任何方向）。
    • 任何可能被对手检测到的操作（或任何修改已挂载隐藏卷之外任何数据的操作）必须仅在诱饵操作系统运行时执行（除非您有合理的替代解释，例如使用“Live-CD”系统执行此类操作）。例如，“自动调整夏令时”选项只能在诱饵系统上启用。
    • 如果 BIOS、EFI 或任何其他组件记录关机事件或任何其他可能表明使用了隐藏卷/系统的事件（例如，通过将此类事件与 Windows 事件日志中的事件进行比较），您必须要么禁用此类记录，要么确保每次会话后安全擦除日志（或以其他适当的方式避免此类问题）。

此外，您还必须遵循以下章节中列出的安全要求和预防措施：
  • 安全要求和预防措施
  • 如何安全备份

下一部分 >>

* 这不适用于 CD/DVD 类介质以及自定义、不常见或非标准设备/介质上的文件系统。


文档 >> 似是而非的否认性 >> 隐藏操作系统

隐藏操作系统

如果您使用VeraCrypt对系统分区或系统驱动器进行了加密，在打开或重启计算机后，需要在VeraCrypt引导加载程序屏幕中输入预启动身份验证密码。可能会出现有人强迫您解密操作系统或透露预启动身份验证密码的情况。在许多情况下，您无法拒绝这样做（例如，受到勒索）。VeraCrypt允许您创建一个隐藏操作系统，只要遵循某些准则（详见下文），其存在应该是无法被证明的。这样，您就不必解密隐藏操作系统或透露其密码。
在继续阅读本节之前，请确保您已经阅读了隐藏卷部分，并且理解了什么是隐藏的VeraCrypt卷。
隐藏操作系统是安装在隐藏的VeraCrypt卷中的系统（例如，Windows 7或Windows XP）。只要遵循某些准则（更多信息请参阅隐藏卷部分），应该无法证明隐藏的VeraCrypt卷的存在，因此也无法证明隐藏操作系统的存在。
然而，为了引导由VeraCrypt加密的系统，必须在系统驱动器或 VeraCrypt救援盘。因此，仅仅存在VeraCrypt引导加载程序就可能表明计算机上存在由VeraCrypt加密的系统。所以，为了给VeraCrypt引导加载程序的存在提供一个合理的解释，在创建隐藏操作系统的过程中，VeraCrypt向导会帮助你创建第二个加密的操作系统，即所谓的 诱饵操作系统。诱饵操作系统绝不能包含任何敏感文件。它的存在不是秘密（它不是安装在 隐藏卷中）。可以安全地向任何强迫你透露预启动认证密码的人透露诱饵操作系统的密码。
你应该像使用计算机一样频繁地使用诱饵操作系统。理想情况下，你应该将其用于所有不涉及敏感数据的活动。否则，隐藏操作系统的似是而非的否认性可能会受到不利影响（如果你向对手透露了诱饵操作系统的密码，他可能会发现该系统使用频率不高，这可能表明你的计算机上存在隐藏操作系统）。请注意，你可以随时将数据保存到诱饵系统分区，而不会有损坏隐藏卷的风险（因为诱饵系统不是安装在外层卷中 —— 见下文）。
将会有两个预启动认证密码 —— 一个用于隐藏系统，另一个用于诱饵系统。如果你想启动隐藏系统，只需在VeraCrypt引导加载程序屏幕（在你打开或重启计算机后出现）中输入隐藏系统的密码。同样，如果你想启动诱饵系统（例如，当对手要求你这样做时），只需在VeraCrypt引导加载程序屏幕中输入诱饵系统的密码。
注意：当你输入预启动认证密码时，VeraCrypt引导加载程序首先尝试使用输入的密码解密系统驱动器第一个逻辑磁道的最后512字节（非隐藏加密系统分区/驱动器的加密主密钥数据通常存储在此处）。如果解密失败，并且活动分区后面有一个分区，VeraCrypt引导加载程序（即使驱动器上实际上没有隐藏卷）会自动再次尝试使用相同的输入密码解密活动分区后面第一个分区中可能存在隐藏卷加密头的区域（但是，如果活动分区的大小小于256 MB，则从活动分区后面的第二个分区读取数据，因为Windows 7及更高版本默认不会从其安装的分区启动）。请注意，VeraCrypt事先永远不知道是否存在隐藏卷（隐藏卷头无法识别，因为它看起来完全由随机数据组成）。如果头被成功解密（有关VeraCrypt如何确定解密成功的信息，请参阅 加密方案部分），则从解密后的头（仍存储在RAM中）中检索隐藏卷的大小信息，并挂载隐藏卷（其大小也决定了其偏移量）。有关更多技术细节，请参阅 技术细节章节中的 加密方案部分。
运行时，隐藏操作系统看起来像是安装在与原始操作系统（诱饵系统）相同的分区上。然而，实际上，它安装在该分区后面的一个隐藏卷中。所有读写操作都会从系统分区透明地重定向到隐藏卷。操作系统和应用程序都不会知道写入和读取系统分区的数据实际上是写入和读取到后面的分区（到/从隐藏卷）。任何此类数据都会像往常一样动态加密和解密（使用与诱饵操作系统不同的加密密钥）。
请注意，还会有第三个密码 —— 用于 外层卷的密码。它不是预启动认证密码，而是常规的VeraCrypt卷密码。可以安全地向任何强迫你透露包含隐藏操作系统的隐藏卷所在加密分区密码的人透露此密码。这样，隐藏卷（和隐藏操作系统）的存在将保持秘密。如果你不确定是否理解这是如何实现的，或者外层卷是什么，请阅读 隐藏卷部分。外层卷应该包含一些看起来敏感但你实际上不想隐藏的文件。
总结一下，总共会有三个密码。其中两个可以透露给攻击者（用于诱饵系统和外层卷）。第三个密码，用于隐藏系统，必须保密。
Example Layout of System Drive Containing Hidden Operating System
包含隐藏操作系统的系统驱动器示例布局

隐藏操作系统的创建过程

要开始创建隐藏操作系统的过程，请选择 系统 > 创建隐藏操作系统，然后按照向导中的说明操作。
最初，向导会验证系统驱动器上是否有适合隐藏操作系统的分区。请注意，在创建隐藏操作系统之前，你需要在系统驱动器上为其创建一个分区。该分区必须是系统分区后面的第一个分区，并且其大小必须比系统分区大至少5%（系统分区是当前运行的操作系统所在的分区）。但是，如果外层卷（不要与系统分区混淆）格式化为NTFS，则隐藏操作系统的分区必须比系统分区大至少110%（2.1倍）（原因是NTFS文件系统总是将内部数据精确地存储在卷的中间，因此，要包含系统分区克隆的隐藏卷只能位于分区的后半部分）。
在接下来的步骤中，向导将在系统分区后面的第一个分区内创建两个VeraCrypt卷（外层和隐藏）。 隐藏卷将包含隐藏操作系统。隐藏卷的大小始终与系统分区的大小相同。原因是隐藏卷需要包含系统分区内容的克隆（见下文）。请注意，克隆将使用与原始内容不同的加密密钥进行加密。在你开始将一些看起来敏感的文件复制到外层卷之前，向导会告诉你这些文件应占用的最大建议空间大小，以便外层卷上有足够的可用空间用于隐藏卷。
备注：在你将一些看起来敏感的文件复制到外层卷后，将扫描该卷的簇位图，以确定连续可用空间区域的大小，该区域的末尾与外层卷的末尾对齐。该区域将 ### 隐藏卷大小的确定 为了容纳隐藏卷，系统会对其最大可能的大小进行限制。系统会确定隐藏卷的最大可能大小，并验证该大小是否大于系统分区的大小（这是必需的，因为系统分区的全部内容都需要复制到隐藏卷中 —— 详见下文）。这样可以确保外部卷上存储的数据不会被写入隐藏卷区域的数据覆盖（例如，当系统被复制到隐藏卷时）。隐藏卷的大小始终与系统分区的大小相同。 ### 创建隐藏操作系统 然后，VeraCrypt会通过将系统分区的内容复制到隐藏卷来创建隐藏操作系统。复制的数据将在传输过程中使用与用于伪装操作系统的加密密钥不同的加密密钥进行加密。系统复制过程在预启动环境（Windows启动之前）中执行，可能需要很长时间才能完成；可能需要数小时甚至数天（具体取决于系统分区的大小和计算机的性能）。您可以中断该过程，关闭计算机，启动操作系统，然后恢复该过程。但是，如果您中断了该过程，则整个系统复制过程必须从头开始（因为在克隆过程中系统分区的内容不得更改）。隐藏操作系统最初将是您启动向导时所在操作系统的克隆。 ### 安全擦除原系统分区 Windows通常会在您不知情或未同意的情况下，在系统分区上创建各种日志文件、临时文件等。它还会将RAM的内容保存到位于系统分区上的休眠和分页文件中。因此，如果对手分析存储原始系统（隐藏系统是其克隆）的分区上的文件，他可能会发现，例如，您使用了VeraCrypt向导的隐藏系统创建模式（这可能表明您的计算机上存在隐藏操作系统）。为了防止此类问题，VeraCrypt会在隐藏系统创建完成后安全擦除原始系统所在分区的全部内容。之后，为了实现似是而非的否认，VeraCrypt会提示您在该分区上安装新系统并使用VeraCrypt对其进行加密。这样，您将创建伪装系统，整个隐藏操作系统的创建过程将完成。 ### 关于擦除分区内容的说明 注意：VeraCrypt会通过用随机数据完全填充来擦除原始系统所在分区的内容。如果您向对手透露了伪装系统的密码，而他问您为什么（伪装）系统分区的可用空间包含随机数据，您可以回答，例如：“该分区以前包含一个由VeraCrypt加密的系统，但我忘记了预启动身份验证密码（或者系统损坏并停止启动），所以我不得不重新安装Windows并再次对该分区进行加密。” ### 似是而非的否认和数据泄露保护 出于安全原因，当隐藏操作系统运行时，VeraCrypt确保所有本地未加密文件系统和非隐藏的VeraCrypt卷为只读（即不能向此类文件系统或VeraCrypt卷写入文件）。仅允许将数据写入任何位于 隐藏VeraCrypt卷 内的文件系统（前提是隐藏卷不位于存储在未加密文件系统或任何其他只读文件系统上的容器中）。 实施这些对策主要有三个原因： 1. 它为挂载隐藏VeraCrypt卷创建了一个安全的平台。请注意，我们官方建议仅在隐藏操作系统运行时挂载隐藏卷。有关更多信息，请参阅 隐藏卷的安全要求和预防措施 小节。 2. 在某些情况下，可以通过分析和比较文件系统日志、文件时间戳、应用程序日志、错误日志等来确定在某个时间，特定文件系统未在特定操作系统实例下挂载（或者该文件系统上的特定文件未在该操作系统实例中保存或访问）。这可能表明计算机上安装了隐藏操作系统。这些对策可以防止此类问题。 3. 它可以防止数据损坏并允许安全休眠。当Windows从休眠状态恢复时，它假定所有挂载的文件系统与系统进入休眠状态时的状态相同。VeraCrypt通过对从伪装系统和隐藏系统都可访问的任何文件系统进行写保护来确保这一点。如果没有这种保护，当一个系统挂载文件系统而另一个系统处于休眠状态时，文件系统可能会损坏。 ### 从伪装系统向隐藏系统安全传输文件的步骤 如果您需要从伪装系统向隐藏系统安全传输文件，请遵循以下步骤： 1. 启动伪装系统。 2. 将文件保存到未加密卷或外部/普通VeraCrypt卷。 3. 启动隐藏系统。 4. 如果您将文件保存到VeraCrypt卷，请挂载它（它将自动以只读方式挂载）。 5. 将文件复制到隐藏系统分区或另一个隐藏卷。 ### 单个驱动器上存在两个VeraCrypt分区的可能解释 对手可能会问，为什么您在单个驱动器上创建了两个VeraCrypt加密分区（一个系统分区和一个非系统分区），而不是使用单个加密密钥对整个磁盘进行加密。有很多可能的原因。但是，如果您不知道任何原因（除了创建隐藏操作系统），您可以提供以下解释之一： 如果系统驱动器上有两个以上的分区，而您只想加密其中两个分区（系统分区和其后的一个分区），并让其他分区保持未加密状态（例如，为了在向此类未加密分区读写非敏感数据时获得最佳性能），那么唯一的方法是分别对这两个分区进行加密（请注意，使用单个加密密钥，VeraCrypt可以对整个系统驱动器和 所有 分区进行加密，但它不能只加密其中两个分区 —— 只能使用单个密钥加密一个或所有分区）。结果，系统驱动器上会有两个相邻的VeraCrypt分区（第一个将是系统分区，第二个将是非系统分区），每个分区都使用不同的密钥进行加密（这与创建隐藏操作系统时的情况相同，因此可以这样解释）。 如果您根本不知道系统驱动器上为什么应该有多个分区： 为了容纳隐藏卷，系统会限制其最大可能的大小。系统会确定隐藏卷的最大可能大小，并验证该大小是否大于系统分区的大小（这是必需的，因为系统分区的全部内容都需要复制到隐藏卷中 —— 详见下文）。这样可以确保外部卷上存储的数据不会被写入隐藏卷区域的数据覆盖（例如，当系统被复制到隐藏卷时）。隐藏卷的大小始终与系统分区的大小相同。
然后，VeraCrypt会通过将系统分区的内容复制到隐藏卷来创建隐藏操作系统。复制的数据将在传输过程中使用与用于伪装操作系统的加密密钥不同的加密密钥进行加密。系统复制过程在预启动环境（Windows启动之前）中执行，可能需要很长时间才能完成；可能需要数小时甚至数天（具体取决于系统分区的大小和计算机的性能）。您可以中断该过程，关闭计算机，启动操作系统，然后恢复该过程。但是，如果您中断了该过程，则整个系统复制过程必须从头开始（因为在克隆过程中系统分区的内容不得更改）。隐藏操作系统最初将是您启动向导时所在操作系统的克隆。
Windows通常会在您不知情或未同意的情况下，在系统分区上创建各种日志文件、临时文件等。它还会将RAM的内容保存到位于系统分区上的休眠和分页文件中。因此，如果对手分析存储原始系统（隐藏系统是其克隆）的分区上的文件，他可能会发现，例如，您使用了VeraCrypt向导的隐藏系统创建模式（这可能表明您的计算机上存在隐藏操作系统）。为了防止此类问题，VeraCrypt会在隐藏系统创建完成后安全擦除原始系统所在分区的全部内容。之后，为了实现似是而非的否认，VeraCrypt会提示您在该分区上安装新系统并使用VeraCrypt对其进行加密。这样，您将创建伪装系统，整个隐藏操作系统的创建过程将完成。
注意：VeraCrypt会通过用随机数据完全填充来擦除原始系统所在分区的内容。如果您向对手透露了伪装系统的密码，而他问您为什么（伪装）系统分区的可用空间包含随机数据，您可以回答，例如：“该分区以前包含一个由VeraCrypt加密的系统，但我忘记了预启动身份验证密码（或者系统损坏并停止启动），所以我不得不重新安装Windows并再次对该分区进行加密。”

似是而非的否认和数据泄露保护

出于安全原因，当隐藏操作系统运行时，VeraCrypt确保所有本地未加密文件系统和非隐藏的VeraCrypt卷为只读（即不能向此类文件系统或VeraCrypt卷写入文件）。† 仅允许将数据写入任何位于 隐藏VeraCrypt卷 内的文件系统（前提是隐藏卷不位于存储在未加密文件系统或任何其他只读文件系统上的容器中）。
实施这些对策主要有三个原因：
  1. 它为挂载隐藏VeraCrypt卷创建了一个安全的平台。请注意，我们官方建议仅在隐藏操作系统运行时挂载隐藏卷。有关更多信息，请参阅 隐藏卷的安全要求和预防措施 小节。
  2. 在某些情况下，可以通过分析和比较文件系统日志、文件时间戳、应用程序日志、错误日志等来确定在某个时间，特定文件系统未在特定操作系统实例下挂载（或者该文件系统上的特定文件未在该操作系统实例中保存或访问）。这可能表明计算机上安装了隐藏操作系统。这些对策可以防止此类问题。
  3. 它可以防止数据损坏并允许安全休眠。当Windows从休眠状态恢复时，它假定所有挂载的文件系统与系统进入休眠状态时的状态相同。VeraCrypt通过对从伪装系统和隐藏系统都可访问的任何文件系统进行写保护来确保这一点。如果没有这种保护，当一个系统挂载文件系统而另一个系统处于休眠状态时，文件系统可能会损坏。

如果您需要从伪装系统向隐藏系统安全传输文件，请遵循以下步骤：

  1. 启动伪装系统。
  2. 将文件保存到未加密卷或外部/普通VeraCrypt卷。
  3. 启动隐藏系统
  4. 如果您将文件保存到VeraCrypt卷，请挂载它（它将自动以只读方式挂载）。
  5. 将文件复制到隐藏系统分区或另一个隐藏卷。

单个驱动器上存在两个VeraCrypt分区的可能解释

对手可能会问，为什么您在单个驱动器上创建了两个VeraCrypt加密分区（一个系统分区和一个非系统分区），而不是使用单个加密密钥对整个磁盘进行加密。有很多可能的原因。但是，如果您不知道任何原因（除了创建隐藏操作系统），您可以提供以下解释之一：
  • 如果系统驱动器上有两个以上的分区，而您只想加密其中两个分区（系统分区和其后的一个分区），并让其他分区保持未加密状态（例如，为了在向此类未加密分区读写非敏感数据时获得最佳性能），那么唯一的方法是分别对这两个分区进行加密（请注意，使用单个加密密钥，VeraCrypt可以对整个系统驱动器和 所有 分区进行加密，但它不能只加密其中两个分区 —— 只能使用单个密钥加密一个或所有分区）。结果，系统驱动器上会有两个相邻的VeraCrypt分区（第一个将是系统分区，第二个将是非系统分区），每个分区都使用不同的密钥进行加密（这与创建隐藏操作系统时的情况相同，因此可以这样解释）。

    如果您根本不知道系统驱动器上为什么应该有多个分区：

    如果向导中的所有说明都已遵循，并且遵循了小节 与隐藏卷相关的安全要求和预防措施 中列出的安全要求和预防措施，那么即使在挂载外部卷或解密、启动诱饵操作系统时，也应该无法证明隐藏卷和隐藏操作系统的存在。

* 在嵌入到单个分区中的两个 VeraCrypt 卷中安装操作系统是不实际的（因此也不支持），因为使用外部操作系统通常需要将数据写入隐藏操作系统所在的区域（如果使用 隐藏卷保护 功能来阻止此类写入操作，这本质上会导致系统崩溃，即出现“蓝屏”错误）。
† 这不适用于类似 CD/DVD 的媒体以及自定义、非典型或非标准设备/媒体上的文件系统。

另请参阅：系统加密， 隐藏 卷


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 主程序窗口

主程序窗口

选择文件

允许您选择一个由文件托管的VeraCrypt卷。选择后，您可以对其执行各种操作（例如，点击“挂载”来挂载它）。也可以通过将其图标拖到“VeraCrypt.exe”图标（此时VeraCrypt将自动启动）或主程序窗口来选择一个卷。

选择设备

允许您选择一个VeraCrypt分区或存储设备（如USB记忆棒）。选择后，您可以对其执行各种操作（例如，点击“挂载”来挂载它）。

注意：有一种更便捷的挂载VeraCrypt分区/设备的方法 - 有关更多信息，请参阅自动挂载设备部分。

挂载

点击“挂载”后，VeraCrypt将尝试使用缓存的密码（如果有）来挂载所选卷，如果这些密码都不起作用，会提示您输入密码。如果您输入了正确的密码（和/或提供了正确的密钥文件），卷将被挂载。

重要提示：请注意，当您退出VeraCrypt应用程序时，VeraCrypt驱动程序将继续运行，且不会卸载任何VeraCrypt卷。

自动挂载设备

此功能允许您无需手动选择（通过点击“选择设备”）即可挂载VeraCrypt分区/设备。VeraCrypt会逐个扫描系统中所有可用分区/设备的头部（DVD驱动器和类似设备除外），并尝试将每个分区/设备作为VeraCrypt卷进行挂载。请注意，无法识别VeraCrypt分区/设备，也无法确定其加密所用的密码。因此，程序无法直接“找到”VeraCrypt分区。相反，它必须尝试使用所有加密算法和所有缓存的密码（如果有）来挂载每个（甚至是未加密的）分区/设备。因此，请做好准备，在慢速计算机上此过程可能需要很长时间。

如果您输入的密码错误，将尝试使用缓存的密码（如果有）进行挂载。如果您输入空密码且未选中使用密钥文件，则在尝试自动挂载分区/设备时仅使用缓存的密码。如果您不需要设置挂载选项，可以在点击自动挂载设备时按住Shift键来绕过密码提示（如果有缓存密码，将仅使用这些密码）。

驱动器号将从主窗口的驱动器列表中所选的驱动器号开始分配。

卸载

此功能允许您卸载主窗口驱动器列表中所选的VeraCrypt卷。卸载VeraCrypt卷意味着关闭它，并使其无法进行读写操作。

全部卸载

注意：本节中的信息适用于所有具有相同或相似标题的菜单项和按钮（例如，也适用于系统托盘菜单项全部卸载）。

此功能允许您卸载多个VeraCrypt卷。卸载VeraCrypt卷意味着关闭它，并使其无法进行读写操作。此功能将卸载所有已挂载的VeraCrypt卷，但以下情况除外：

  • 处于活动系统加密密钥范围内的分区/驱动器（例如，由VeraCrypt加密的系统分区，或位于由VeraCrypt加密的系统驱动器上的非系统分区，在加密的操作系统运行时挂载）。
  • 用户账户无法完全访问的VeraCrypt卷（例如，从另一个用户账户中挂载的卷）。
  • 未显示在VeraCrypt应用程序窗口中的VeraCrypt卷。例如，当启用“仅允许管理员在VeraCrypt中查看和卸载系统收藏卷”选项时，无管理员权限的VeraCrypt实例尝试卸载的系统收藏卷。

清除缓存

清除驱动程序内存中缓存的所有密码（其中可能还包含已处理的密钥文件内容）。当缓存中没有密码时，此按钮将禁用。有关密码缓存的信息，请参阅 在驱动程序内存中缓存密码部分。

从不保存历史记录

如果此选项禁用，将把最后二十个尝试作为VeraCrypt卷挂载的文件/设备的文件名和/或路径保存到历史记录文件中（通过点击主窗口中的卷组合框可以显示其内容）。

当此选项启用时，VeraCrypt将清除Windows文件选择器为VeraCrypt创建的注册表项，并在通过Windows文件选择器选择容器或密钥文件时，将“当前目录”设置为用户的主目录（在便携模式下，设置为启动VeraCrypt的目录）。因此，Windows文件选择器将不会记住最后挂载的容器（或最后选择的密钥文件）的路径。但是，请注意，本段中描述的操作不能保证可靠和安全地执行（例如，请参阅 安全要求和预防措施），因此我们强烈建议您对系统分区/驱动器进行加密，而不是依赖这些操作（请参阅 系统加密）。

此外，如果此选项启用，每当您隐藏VeraCrypt时，VeraCrypt主窗口中的卷路径输入字段将被清除。

注意：您可以通过选择工具 -> 清除卷历史记录来清除卷历史记录。

退出

终止VeraCrypt应用程序。驱动程序将继续运行，且不会卸载任何VeraCrypt卷。在“便携”模式下运行时，当不再需要VeraCrypt驱动程序时（例如，当主应用程序和/或卷创建向导的所有实例都关闭且没有挂载任何VeraCrypt卷时），将卸载该驱动程序。但是，如果您在VeraCrypt以便携模式运行时强制卸载VeraCrypt卷，或者在Windows Vista或更高版本上挂载可写的NTFS格式卷，则在退出VeraCrypt时，VeraCrypt驱动程序可能不会被卸载（只有在关闭或重启系统时才会卸载）。这可以防止因Windows中的一个错误而导致的各种问题（例如，只要有应用程序正在使用已卸载的卷，就无法再次启动VeraCrypt）。

卷工具

更改卷密码

请参阅 卷 -> 更改卷密码部分。

设置卷头密钥推导算法

请参阅 卷 -> 设置卷头密钥推导算法部分。

备份卷头

请参阅 工具 -> 备份卷头部分。

恢复卷头

请参阅 工具 -> 恢复卷头部分。

下一部分 >>


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 主程序窗口 >> 程序菜单

程序菜单

注意：为节省篇幅，本文档仅描述非自解释性的菜单项。

卷 -> 自动挂载所有设备托管的卷

请参阅 自动挂载设备 部分。

卷 -> 卸载所有已挂载的卷

请参阅 全部卸载 部分。

卷 -> 更改卷密码

允许更改当前选定的VeraCrypt卷的密码（无论该卷是隐藏卷还是标准卷）。仅更改头密钥和辅助头密钥（XTS模式），主密钥保持不变。此功能会使用

从新密码派生的头加密密钥重新加密卷头。请注意，卷头包含用于加密卷的主加密密钥。因此，使用此功能后，存储在卷上的数据不会丢失（密码更改仅需几秒钟）。

要更改VeraCrypt卷的密码，请点击 选择文件 或 选择设备，然后选择卷，再从 卷 菜单中选择 更改卷密码。

注意：有关如何更改用于预启动身份验证的密码的信息，请参阅 系统 -> 更改密码 部分。

另请参阅 安全要求和预防措施 章节。

PKCS - 5伪随机函数

在此字段中，您可以选择用于派生新卷头密钥的算法（有关更多信息，请参阅 头密钥派生、盐值和迭代次数 部分）以及用于生成新盐值的算法（有关更多信息，请参阅 随机数生成器 部分）。

注意：当VeraCrypt重新加密卷头时，原始卷头首先会被多次（根据用户选择为3次、7次、35次或256次）用随机数据覆盖，以防止对手使用诸如磁力显微镜或磁力扫描隧道显微镜 [17] 等技术恢复被覆盖的头（不过，另请参阅 安全要求和预防措施 章节）。

卷 -> 设置头密钥派生算法

此功能允许您使用不同的伪随机函数（PRF）派生的头密钥重新加密卷头（例如，您可以使用HMAC - Whirlpool而不是HMAC - BLAKE2S - 256）。请注意，卷头包含用于加密卷的主加密密钥。因此，使用此功能后，存储在卷上的数据不会丢失。有关更多信息，请参阅 头密钥派生、盐值和迭代次数 部分。

注意：当VeraCrypt对卷头进行重新加密时，原始卷头首先会被多次（根据用户选择，次数可为3、7、35或256次）用随机数据覆盖，以防止攻击者使用诸如磁力显微镜或磁力扫描隧道显微镜等技术[17]来恢复被覆盖的卷头（不过，另请参阅章节 安全要求和预防措施）。

卷 -> 向卷添加/从卷移除密钥文件

卷 -> 从卷移除所有密钥文件

请参阅章节 密钥文件。

收藏夹 -> 将已挂载的卷添加到收藏夹 收藏夹 -> 组织收藏卷 收藏夹 -> 挂载收藏卷

请参阅章节 收藏卷。

收藏夹 -> 将已挂载的卷添加到系统收藏夹

收藏夹 -> 组织系统收藏卷

请参阅章节 系统收藏卷。

系统 -> 更改密码

更改用于预启动认证的密码（请参阅章节 系统加密）。警告：您的VeraCrypt救援盘可让您在密钥数据损坏时恢复它。通过这样做，您也会恢复VeraCrypt救援盘创建时有效的密码。因此，每当您更改密码时，您应该销毁您的VeraCrypt救援盘并创建一个新的（选择 系统 -> 创建救援盘）。否则，攻击者可以使用旧密码解密您的系统分区/驱动器（如果他找到旧的VeraCrypt救援盘并使用它来恢复密钥数据）。另请参阅章节 安全要求和预防措施。

有关更改密码的更多信息，请参阅上述 卷 -> 更改卷密码 部分。

系统 -> 无需预启动认证进行挂载

如果您需要在不进行预启动认证的情况下挂载位于系统加密密钥范围内的分区，请选中此选项。例如，如果您需要挂载位于另一个未运行的操作系统的加密系统驱动器上的分区。当您需要备份或修复由VeraCrypt加密的操作系统（从另一个操作系统内）时，这可能会很有用。

注意1：如果您需要一次挂载多个分区，请点击 ‘自动挂载设备’，然后点击 ‘挂载选项’ 并启用 ‘使用系统加密挂载分区而无需预启动认证’ 选项。

请注意，您不能使用此功能来挂载位于完全加密的系统驱动器上的扩展（逻辑）分区。

工具 -> 清除卷历史记录

清除包含最后二十个成功挂载的卷的文件名（如果是文件托管的）和路径的列表。

工具 -> 移动磁盘设置

请参阅章节 便携模式。

工具 -> 密钥文件生成器

请参阅章节 密钥文件 中的 工具 -> 密钥文件生成器 部分。

工具 -> 备份卷头

工具 -> 恢复卷头

如果VeraCrypt卷的卷头损坏，在大多数情况下，该卷将无法挂载。因此，VeraCrypt创建的每个卷（系统分区除外）都包含一个嵌入式备份卷头，位于卷的末尾。为了额外的安全，您还可以创建外部卷头备份文件。为此，请点击 选择设备 或 选择文件，选择卷，选择 工具 -> 备份卷头，然后按照说明操作。

注意：对于系统加密，卷的末尾没有备份卷头。对于非系统卷，首先会进行收缩操作，以确保所有数据都放在卷的开头，将所有空闲空间留在末尾，以便我们有地方放置备份卷头。对于系统分区，在Windows运行时我们无法执行此必要的收缩操作，因此无法在分区末尾创建备份卷头。在系统加密的情况下，替代方法是使用 救援盘。

注意：备份卷头（嵌入式或外部）不是 原始卷头的副本，因为它是使用从不同盐派生的不同卷头密钥进行加密的（请参阅章节 卷头密钥派生、盐和迭代次数）。当卷密码和/或密钥文件更改时，或者当从嵌入式（或外部）卷头备份恢复卷头时，卷头和（卷中嵌入式的）备份卷头都会使用从新生成的盐派生的卷头密钥进行重新加密（卷头的盐与备份卷头的盐不同）。每个盐都是由VeraCrypt随机数生成器生成的（请参阅章节 随机数生成器）。

两种类型的卷头备份（嵌入式和外部）都可用于修复损坏的卷头。为此，请点击 选择设备 或 选择文件，选择卷，选择 工具 -> 恢复卷头，然后按照说明操作。

警告：恢复卷头也会恢复备份创建时有效的卷密码和PIM。此外，如果在创建备份时需要密钥文件来挂载卷，那么在恢复卷头后，再次挂载该卷时也需要相同的密钥文件。有关更多信息，请参阅章节 技术细节 中的 加密方案 部分。

创建卷头备份后，只有在更改卷密码和/或密钥文件，或者更改PIM值时，您才可能需要创建一个新的备份。否则，卷头保持不变，因此卷头备份仍然是最新的。

注意：除了盐（它是一系列随机数）之外，外部卷头备份文件不包含任何未加密的信息，并且在不知道正确密码和/或提供正确密钥文件的情况下无法解密。有关更多信息，请参阅章节 技术细节。

当您创建外部卷头备份时，标准卷头和可存储隐藏卷头的区域都会被备份，即使卷中没有隐藏卷（以保留隐藏卷的合理否认性）。如果卷中没有隐藏卷，备份文件中为隐藏卷头保留的区域将填充随机数据（以保留合理否认性）。

当 恢复 卷头时，您需要选择要恢复其卷头的卷的类型（标准卷或隐藏卷）。一次只能恢复一个卷头。要恢复两个卷头，您需要使用该功能两次（工具 -> 恢复卷头）。您需要输入备份卷头创建时有效的正确密码（和/或提供正确的密钥文件）以及非默认的PIM值（如果适用）。密码（和/或密钥文件）和PIM也将自动确定要恢复的卷头的类型，即标准卷头或隐藏卷头（请注意，VeraCrypt通过试错过程确定类型）。

注意：如果用户在尝试挂载卷时连续两次未能提供正确的密码（和/或密钥文件）和/或正确的非默认PIM值，VeraCrypt将在用户随后每次尝试挂载卷时（直到他或她点击 取消），除了尝试使用主卷头挂载卷之外，还会自动尝试使用嵌入式备份卷头挂载卷。如果VeraCrypt无法解密主卷头，但同时成功解密了嵌入式备份卷头，则卷将被挂载，并且会警告用户卷头已损坏（并告知如何修复它）。

设置 -> 性能和驱动程序选项

调用性能对话框窗口，您可以在其中启用或禁用AES硬件加速和基于线程的并行化。您还可以更改以下驱动程序选项：

启用扩展磁盘控制代码支持

如果启用，VeraCrypt驱动程序将支持通过IOCTL_STORAGE_QUERY_PROPERTY控制代码返回有关已挂载卷的扩展技术信息。物理驱动器始终支持此控制代码，并且某些应用程序可能需要此控制代码来获取有关驱动器的技术信息（例如，Windows的fsutil程序使用此控制代码来获取驱动器的物理扇区大小）。
启用此选项后，VeraCrypt 卷的行为将更接近物理磁盘；如果禁用此选项，应用程序可以轻松区分物理磁盘和 VeraCrypt 卷，因为向 VeraCrypt 卷发送此控制代码将导致错误。
如果遇到稳定性问题（如卷访问问题或系统蓝屏死机），可禁用此选项，这些问题可能由编写不佳的软件和驱动程序引起。

设置 -> 首选项

调用“首选项”对话框窗口，在其中您可以更改以下选项（包括但不限于）：

退出时清除缓存的密码

如果启用此选项，当 VeraCrypt 退出时，驱动程序内存中缓存的密码（可能还包含已处理的密钥文件内容）和 PIM 值将被清除。

在驱动程序内存中缓存密码

选中此选项后，最多会缓存最后四个成功挂载的 VeraCrypt 卷的密码和/或已处理的密钥文件内容。如果在“首选项”中启用了“缓存密码时包含 PIM”选项，则非默认的 PIM 值将与密码一起缓存。这样可以在挂载卷时无需反复输入密码（和选择密钥文件）。VeraCrypt 从不将任何密码或 PIM 值保存到磁盘（不过，请参阅 安全要求和预防措施 章节）。密码缓存可以在“首选项”（设置 -> 首选项）和密码提示窗口中启用/禁用。如果系统分区/驱动器已加密，则可以在系统加密设置（设置 > ‘系统加密’）中启用或禁用预启动身份验证密码的缓存。

“挂载常用卷”操作期间临时缓存密码

当此选项未选中时（这是默认设置），在执行“挂载常用卷”操作时，VeraCrypt 将为每个常用卷显示密码提示窗口，并且每个密码在卷挂载后即被擦除（除非启用了密码缓存）。

如果选中此选项且有两个或更多常用卷，那么在“挂载常用卷”操作期间，VeraCrypt 将首先尝试前一个常用卷的密码，如果密码无效，则会显示密码提示窗口。此逻辑从第二个常用卷开始适用。所有常用卷处理完毕后，密码将从内存中擦除。

当常用卷使用相同的密码时，此选项非常有用，因为密码提示窗口仅会为第一个常用卷显示一次，VeraCrypt 将自动挂载所有后续的常用卷。

请注意，由于我们不能假设所有常用卷都使用相同的 PRF（哈希）或相同的 TrueCrypt 模式，VeraCrypt 会对后续常用卷的 PRF 进行自动检测，并尝试两种 TrueCryptMode 值（false、true），这意味着与手动选择正确的 PRF 和正确的 TrueCryptMode 分别挂载每个卷相比，总挂载时间会更长。

为成功挂载的卷打开资源管理器窗口

如果选中此选项，在 VeraCrypt 卷成功挂载后，将自动打开一个显示该卷根目录（例如，T:\）的资源管理器窗口。

有挂载卷时使用不同的任务栏图标

如果启用此选项，在 VeraCrypt 卷挂载时，VeraCrypt 任务栏图标（显示在系统托盘通知区域）的外观会有所不同，但以下情况除外：

  • 活动系统加密密钥范围内的分区/驱动器（例如，由 VeraCrypt 加密的系统分区，或位于由 VeraCrypt 加密的系统驱动器上的非系统分区，在加密操作系统运行时挂载）。
  • 用户账户无法完全访问的 VeraCrypt 卷（例如，从另一个用户账户挂载的卷）。
  • 未在 VeraCrypt 应用程序窗口中显示的 VeraCrypt 卷。例如，当启用“仅允许管理员在 VeraCrypt 中查看和卸载系统常用卷”选项时，没有管理员权限的 VeraCrypt 实例尝试卸载系统常用卷。

VeraCrypt 后台任务 – 已启用

请参阅 VeraCrypt 后台任务 章节。

VeraCrypt 后台任务 – 无挂载卷时退出

如果选中此选项，一旦没有挂载的 VeraCrypt 卷，VeraCrypt 后台任务将自动且无声地退出。有关更多信息，请参阅 VeraCrypt 后台任务 章节。请注意，当 VeraCrypt 以便携模式运行时，此选项无法禁用。

在卷无读写操作 n 分钟后自动卸载

在 VeraCrypt 卷在 n 分钟内没有进行读写操作后，该卷将自动卸载。

即使卷包含打开的文件或目录也强制自动卸载

此选项仅适用于自动卸载（不适用于常规卸载）。如果自动卸载的卷包含打开的文件或目录（即系统或应用程序正在使用的文件/目录），此选项将强制卸载（无需提示）。

下一部分 >>


文档 >> 主程序窗口 >> 挂载卷

挂载 VeraCrypt 卷

如果您尚未这样做，请阅读 主程序窗口 章节中的 ‘挂载’ 和 ‘自动挂载设备’ 部分。

在驱动程序内存中缓存密码

此选项可在密码输入对话框中设置，以便仅应用于该特定挂载尝试。也可以在首选项中设置为默认值。有关更多信息，请参阅 设置 -> 首选项，子部分 在驱动程序内存中缓存密码。

挂载选项

挂载选项会影响正在挂载的卷的参数。可以通过点击密码输入对话框中的 挂载选项 按钮来打开 挂载选项 对话框。当正确的密码被缓存后，点击 挂载 后卷将自动挂载。如果您需要更改使用缓存密码挂载的卷的挂载选项，请在点击 挂载 或 收藏夹 菜单中的收藏卷时按住 Control（Ctrl）键，或者从 卷 菜单中选择 使用选项挂载。

默认挂载选项可以在主程序首选项（设置 -> 首选项）中配置。

以只读方式挂载卷

选中此选项后，将无法向挂载的卷写入任何数据。

将卷作为可移动介质挂载

请参阅 作为可移动介质挂载的卷 部分。

如果可用，使用卷中嵌入的备份头

所有由 VeraCrypt 创建的卷都包含一个嵌入的备份头（位于卷的末尾）。如果您选中此选项，VeraCrypt 将尝试使用嵌入的备份头挂载卷。请注意，如果卷头损坏，您无需使用此选项。相反，您可以通过选择 工具 > 恢复卷头 来修复头。

使用系统加密但不进行预启动身份验证来挂载分区

如果您需要在不进行预启动身份验证的情况下挂载位于系统加密密钥范围内的分区，请选中此选项。例如，如果您需要挂载位于另一个未运行的操作系统的加密系统驱动器上的分区。当您需要从另一个操作系统备份或修复由 VeraCrypt 加密的操作系统时，这可能会很有用。请注意，在使用 ‘自动挂载设备’ 或 ‘自动挂载所有设备托管卷’ 功能时，也可以启用此选项。

隐藏卷保护

请参阅 保护隐藏卷免受损坏 部分。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密软件

文档 >> 正常卸载与强制卸载的对比

正常卸载与强制卸载的对比

了解“正常卸载”和“强制卸载”操作之间的区别非常重要，因为这可能会对用户数据产生影响。

正常卸载过程

在正常卸载过程中，VeraCrypt会执行以下步骤：

  1. 请求Windows操作系统锁定该卷，禁止进一步的I/O操作。
  2. 请求Windows从系统中正常弹出该卷。此步骤类似于用户通过系统托盘手动弹出设备。
  3. 指示Windows挂载管理器卸载该卷。
  4. 删除驱动器号与该卷的虚拟设备之间的链接。
  5. 删除该卷的虚拟设备，包括从RAM中清除加密密钥。

在这个流程中，如果该卷上有打开的文件，步骤1和2可能会失败。值得注意的是，即使所有访问该卷上文件的用户应用程序都已关闭，在I/O缓存完全刷新之前，Windows可能仍然会保持文件处于打开状态。

强制卸载过程

强制卸载过程与正常卸载过程有所不同，但大体相似。它基本上遵循相同的步骤，但会忽略步骤1和2中可能出现的任何失败情况，并继续执行其余的操作。然而，如果用户打开了文件或者卷的I/O缓存尚未刷新，这可能会导致潜在的数据丢失。这种情况类似于在Windows仍显示USB设备正在使用时强行将其从计算机中拔出。

如果所有使用已挂载卷上文件的应用程序都已成功关闭，并且I/O缓存已完全刷新，那么执行“强制卸载”时既不会导致数据丢失，也不会导致数据/文件系统损坏。与正常卸载一样，“强制卸载”成功完成后，加密密钥会从RAM中清除。

如何触发强制卸载

在VeraCrypt中，有三种方法可以触发强制卸载：

  1. 如果正常卸载尝试失败，会弹出一个窗口，通过该窗口触发。
  2. 通过“首选项”，在“自动卸载”部分选中“强制自动卸载”选项。
  3. 使用命令行，在 /u 或 /unmount 开关后面加上 /force 或 /f 开关。

为了避免意外的数据丢失或损坏，在卸载VeraCrypt卷时，请始终采取适当的预防措施，包括：

  1. 在开始卸载之前，确保该卷上的所有文件都已关闭。
  2. 在关闭所有文件后，等待一段时间，以确保Windows已完全刷新I/O缓存。
  3. 请注意，某些防病毒软件在扫描后可能会保持对卷上文件句柄的打开状态，从而阻碍正常卸载的成功执行。如果遇到此问题，您可以考虑将VeraCrypt卷从防病毒扫描中排除。或者，咨询您的防病毒软件提供商，了解他们的产品如何与VeraCrypt卷进行交互，以及如何确保它不会保留打开的文件句柄。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 避免使用第三方文件扩展名

了解在 VeraCrypt 中使用第三方文件扩展名的风险

虽然 VeraCrypt 提供了强大的加密功能来保护您的数据，但为文件容器或密钥文件使用第三方文件扩展名可能会导致加密数据无法访问。
本指南将深入解释相关风险，并列出减轻这些风险的最佳实践建议。

文件容器相关风险

为文件容器使用第三方文件扩展名会使您面临以下几种风险：

  • 元数据被覆盖：第三方应用程序可能会更新其元数据，这可能会覆盖文件容器的关键部分。
  • 意外更改：不小心使用第三方应用程序打开文件容器可能会在您不知情的情况下修改其元数据。
  • 容器损坏：这些操作可能会使容器无法读取或使用。
  • 数据丢失：如果容器损坏，其中的数据可能会永久丢失。

密钥文件相关风险

密钥文件也存在类似的风险：

  • 密钥文件损坏：不小心使用第三方应用程序修改密钥文件可能会使其无法用于解密。
  • 数据被覆盖：第三方应用程序可能会覆盖 VeraCrypt 用于解密的密钥文件部分。
  • 意外更改：意外更改可能会使您无法挂载卷，除非您有未更改的密钥文件备份。

应避免使用的扩展名示例

避免使用以下类型的第三方文件扩展名：

  • 媒体文件：图片、音频和视频文件容易被各自的软件更改元数据。
  • 存档文件：Zip 文件很容易被修改，这可能会破坏加密卷。
  • 可执行文件：软件更新可能会修改这些文件，使其作为文件容器或密钥文件不可靠。
  • 文档文件：办公和 PDF 文件可能会被办公软件自动更新，使用起来有风险。

建议

为了安全使用，建议考虑以下最佳实践：

  • 为文件容器和密钥文件使用中性的文件扩展名，以减少自动文件关联的风险。
  • 将文件容器和密钥文件的安全备份存放在与网络隔离的位置。
  • 禁用您用于 VeraCrypt 文件容器和密钥文件的特定文件扩展名的自动打开设置。
  • 始终仔细检查文件关联，并在使用新设备或第三方应用程序时保持谨慎。


文档 >> 并行处理

并行处理

当您的计算机配备多核处理器（或多个处理器）时，VeraCrypt会并行使用所有核心（或处理器）进行加密和解密操作。例如，当VeraCrypt需要解密一大块数据时，它首先会将该数据块分割成若干较小的片段。片段的数量与核心（或处理器）的数量相等。然后，所有片段会并行进行解密（片段1由线程1解密，片段2由线程2解密，依此类推）。加密操作也采用相同的方法。
因此，如果您的计算机配备例如四核处理器，那么加密和解密速度将比配备同等规格单核处理器的计算机快四倍（同样，配备双核处理器的计算机速度将快两倍，依此类推）。
加密/解密速度的提升与核心和/或处理器的数量成正比。
注意：支持超线程技术的处理器会为每个物理核心提供多个逻辑核心（或为每个物理处理器提供多个逻辑处理器）。当计算机固件（如BIOS）设置中启用了超线程功能时，VeraCrypt会为每个逻辑核心/处理器创建一个线程。例如，在一个每个物理核心提供两个逻辑核心的六核处理器上，VeraCrypt会使用12个线程。

当您的计算机配备多核处理器/CPU（或多个处理器/CPU）时， 头部密钥推导 也会进行并行处理。因此，在多核处理器（或多处理器计算机）上挂载卷的速度比在配备同等规格单核处理器（或单处理器计算机）上快几倍。


文档 >> 流水线处理

流水线处理

在加密或解密数据时，VeraCrypt 使用所谓的流水线处理（异步处理）。当应用程序从 VeraCrypt 加密的卷/驱动器加载文件的一部分时，VeraCrypt 会自动在内存中对其进行解密。由于采用了流水线处理，应用程序无需等待文件的任何部分解密完成，就可以立即开始加载文件的其他部分。在向加密卷/驱动器写入数据时，加密过程也是如此。
流水线处理使得从加密驱动器读取数据和向其写入数据的速度与未加密驱动器一样快（这同样适用于文件托管和分区托管的 VeraCrypt 卷）。*
注意：流水线处理仅在 VeraCrypt 的 Windows 版本中实现。

* 一些固态硬盘会在内部对数据进行压缩，当数据可压缩时（例如文本文件），这似乎会提高实际的读写速度。然而，加密数据无法被压缩（因为它看起来完全由随机的“噪声”组成，没有任何可压缩的模式）。这可能会产生各种影响。例如，读取或写入可压缩数据（如零序列）的基准测试软件在加密卷上报告的速度会比在未加密卷上低（为避免这种情况，请使用读取/写入随机或其他不可压缩数据的基准测试软件）。.


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 硬件加速

硬件加速

一些处理器（CPU）支持硬件加速的 高级加密标准（AES） 加密*，其速度通常比同一处理器上的纯软件实现的加密速度快4 - 8倍。
默认情况下，VeraCrypt会在具备支持英特尔高级加密标准新指令集（AES-NI）的处理器的计算机上使用硬件加速的AES。具体而言，VeraCrypt使用执行所谓AES轮（即AES算法的主要部分）的AES-NI指令**。VeraCrypt不使用任何执行密钥生成的AES-NI指令。
注意：默认情况下，当加密的Windows系统启动或从休眠状态恢复时（前提是处理器支持英特尔AES-NI指令），VeraCrypt也会使用硬件加速的AES。
要了解VeraCrypt是否可以在您的计算机上使用硬件加速的AES，请选择 设置 > 性能/驱动程序配置，并查看标记为 '此计算机的处理器（CPU）支持AES硬件加速' 的字段。
要了解您想购买的处理器是否支持VeraCrypt用于硬件加速AES的英特尔AES-NI指令（也称为“AES新指令”），请查看处理器的文档或联系供应商/制造商。或者，点击 此处 查看支持AES-NI指令的英特尔处理器的官方列表。但是，请注意，英特尔网站列出的一些支持AES-NI的英特尔处理器，实际上仅在进行处理器配置更新后才支持AES-NI指令（例如，i7 - 2630/2635QM、i7 - 2670/2675QM、i5 - 2430/2435M、i5 - 2410/2415M）。在这种情况下，您应该联系主板/计算机制造商获取包含处理器最新处理器配置更新的BIOS更新。
如果您想禁用AES的硬件加速（例如，因为您希望VeraCrypt仅使用完全开源的AES实现），可以通过选择 设置 > 性能和驱动程序选项，并禁用选项 '使用处理器的AES指令加速AES加密/解密' 来实现。请注意，更改此设置后，需要重启操作系统以确保所有VeraCrypt组件在内部执行所请求的模式更改。另外，当您创建VeraCrypt救援磁盘时，此选项的状态会写入救援磁盘，并在您从该磁盘启动时使用（影响预启动和初始启动阶段）。要创建新的VeraCrypt救援磁盘，请选择 系统 > 创建救援磁盘。

* 在本章中，“加密”一词也指解密。
** 这些指令是 AESENC、AESENCLAST、AESDEC 和 AESDECLAST，它们执行以下AES变换：行移位（ShiftRows）、字节替换（SubBytes）、列混合（MixColumns）、逆行移位（InvShiftRows）、逆字节替换（InvSubBytes）、逆列混合（InvMixColumns） 和 轮密钥加（AddRoundKey）（有关这些变换的更多详细信息，请参阅 [3]）.


文档 >> 热键

热键

要设置系统范围的 VeraCrypt 热键，请点击“设置” -> “系统热键”。请注意，热键仅在 VeraCrypt 或 VeraCrypt 后台任务运行时有效。


文档 >> 密钥文件

密钥文件

密钥文件是一种文件，其内容会与密码相结合（有关将密钥文件与密码相结合的方法的信息，请参阅 密钥文件 章节 技术细节）。在提供正确的密钥文件之前，任何使用该密钥文件的卷都无法挂载。
您不必使用密钥文件。但是，使用密钥文件有一些优点：
  • 可能会提高对暴力破解攻击的防护能力（如果卷密码不是很强，这一点尤为重要）。
  • 允许使用安全令牌和智能卡（见下文）。
  • 允许多个用户使用不同的用户密码或PIN码挂载单个卷。只需为每个用户提供一个包含相同VeraCrypt密钥文件的安全令牌或智能卡，并让他们选择保护其安全令牌或智能卡的个人密码或PIN码。
  • 允许管理多用户 共享 访问（所有密钥文件持有者必须在挂载卷之前提供他们的密钥文件）。

请注意，VeraCrypt永远不会修改密钥文件的内容。您可以选择多个密钥文件，顺序无关紧要。您还可以让VeraCrypt生成一个包含随机内容的文件并将其用作密钥文件。为此，请选择 工具 > 密钥文件生成器。
注意：目前系统加密不支持密钥文件。
警告：如果您丢失了密钥文件，或者其前1024千字节的任何一位发生了变化，将无法挂载使用该密钥文件的卷！
警告：如果启用了密码缓存，密码缓存还会包含用于成功挂载卷的密钥文件的处理后内容。这样，即使密钥文件不可用/无法访问，也可以重新挂载卷。 为防止这种情况发生，请点击 “清除缓存” 或禁用密码缓存（有关更多信息，请参阅子部分 “设置 -> 首选项” 中的 “在驱动程序内存中缓存密码” 项，该部分位于 程序菜单 中）。
另请参阅 选择密码和密钥文件 章节 安全要求和预防措施。

密钥文件对话框窗口

如果您想在创建或挂载卷、更改密码时使用密钥文件（即 “应用” 它们），请在密码输入字段下方查找 “使用密钥文件” 选项和 “密钥文件” 按钮。
这些控制元素出现在各种对话框窗口中，并且始终具有相同的功能。选中 “使用密钥文件” 选项，然后点击 “密钥文件”。应该会出现密钥文件对话框窗口，您可以在其中指定密钥文件（为此，请点击 “添加文件” 或 “添加令牌文件”）或密钥文件搜索路径（点击 “添加路径”）。

安全令牌和智能卡

VeraCrypt可以直接使用存储在符合PKCS #11（2.0或更高版本）标准 [23] 且允许用户在令牌/卡上存储文件（数据对象）的安全令牌或智能卡上的密钥文件。要将此类文件用作VeraCrypt密钥文件，请点击 “添加令牌文件”（在密钥文件对话框窗口中）。
对存储在安全令牌或智能卡上的密钥文件的访问通常由PIN码保护，这些PIN码可以使用硬件PIN键盘或通过VeraCrypt图形用户界面输入。它也可以通过其他方式保护，如指纹识别器。
为了让VeraCrypt能够访问安全令牌或智能卡，您需要先为该令牌或智能卡安装PKCS #11（2.0或更高版本）软件库。此类库可能随设备提供，也可能可以从供应商或其他第三方的网站下载。
如果您的安全令牌或智能卡不包含任何可以用作VeraCrypt密钥文件的文件（数据对象），您可以使用VeraCrypt将任何文件导入到令牌或智能卡中（如果设备支持）。为此，请按照以下步骤操作：
  1. 在密钥文件对话框窗口中，点击 “添加令牌文件”。
  2. 如果令牌或智能卡受到PIN码、密码或其他方式（如指纹识别器）的保护，请进行身份验证（例如，使用硬件PIN键盘输入PIN码）。
  3. 应该会出现 “安全令牌密钥文件” 对话框窗口。在其中，点击 “导入密钥文件到令牌”，然后选择您要导入到令牌或智能卡的文件。
请注意，您可以导入例如由VeraCrypt生成的具有随机内容的512位密钥文件（请参阅下面的 “工具 > 密钥文件生成器”）。
要关闭所有已打开的安全令牌会话，请选择 “工具 > 关闭所有安全令牌会话”，或定义并使用热键组合（“设置 > 热键 > 关闭所有安全令牌会话”）。

EMV智能卡

VeraCrypt的Windows和Linux版本可以直接将从符合EMV标准、支持Visa、Mastercard或Maestro应用程序的智能卡中提取的数据用作密钥文件。与符合PKCS - 11标准的智能卡一样，要将此类数据用作VeraCrypt密钥文件，请点击 “添加令牌文件”（在密钥文件对话框窗口中）。卡的主账号的最后四位数字将显示出来，以便选择该卡作为密钥文件源。
提取并拼接成单个密钥文件的数据如下：ICC公钥证书、颁发者公钥证书和卡片生产生命周期（CPLC）数据。在卡片的数据管理系统中，它们分别由标签 '9F46'、'90' 和 '9F7F' 标识。这两个证书特定于部署在EMV卡上的某个应用程序，用于在银行交易期间对卡片进行动态数据认证。CPLC数据特定于卡片，而非其任何应用程序。它们包含智能卡生产过程的相关信息。因此，在任何符合EMV标准的智能卡上，这两个证书和数据都是唯一且静态的。
根据EMV标准所基于的ISO/IEC 7816标准，与EMV智能卡的通信是通过称为APDU的结构化命令完成的，这些命令允许从智能卡中提取数据。这些数据采用由ASN.1标准定义的BER - TLV格式进行编码，因此在拼接成密钥文件之前需要进行解析。访问和检索卡片中的数据不需要PIN码。为了适应市场上各种智能卡读卡器，使用了符合Microsoft个人计算机/智能卡通信标准的库。使用了Winscard库。该库在Windows系统的System32目录中是原生可用的，因此在该操作系统上无需安装。然而，在Linux系统上必须安装libpcsclite1软件包。
由于卡片是只读的，因此无法导入或删除数据。但是，用作密钥文件的数据可以导出到本地的任何二进制文件中。在挂载或创建卷的整个加密过程中，证书和CPLC数据仅存储在用户计算机的RAM中。一旦过程完成，这些RAM内存区域将被严格擦除。
需要注意的是，此功能是可选的，默认情况下处于禁用状态。可以在安全令牌首选项参数中，通过勾选提供的复选框来启用该功能。

密钥文件搜索路径

通过在密钥文件对话框窗口中添加文件夹（点击添加路径），您可以指定一个密钥文件搜索路径。在密钥文件搜索路径中找到的所有文件*都将用作密钥文件，但具有隐藏文件属性的文件除外。
重要提示：请注意，密钥文件搜索路径中的文件夹（及其包含的文件）和隐藏文件将被忽略。
密钥文件搜索路径特别有用，例如，如果您将密钥文件存储在随身携带的USB记忆棒上。您可以将USB记忆棒的驱动器号设置为默认的密钥文件搜索路径。为此，请选择设置 -> 默认密钥文件。然后点击
添加路径，浏览到分配给USB记忆棒的驱动器号，然后点击确定。现在，每次您挂载卷时（如果在密码对话框窗口中勾选了使用密钥文件选项），VeraCrypt将扫描该路径，并将在USB记忆棒上找到的所有文件用作密钥文件。
警告：当您将文件夹（而不是文件）添加到密钥文件列表中时，只会记住路径，而不会记住文件名！这意味着，例如，如果您在文件夹中创建了一个新文件或复制了一个额外的文件到该文件夹中，那么所有使用该文件夹中密钥文件的卷将无法挂载（直到您从文件夹中移除新添加的文件）。

空密码和密钥文件

使用密钥文件时，密码可以为空，因此密钥文件可能成为挂载卷所需的唯一要素（我们不建议这样做）。如果设置并启用了默认密钥文件，在挂载卷时，VeraCrypt会先自动尝试使用空密码加默认密钥文件进行挂载（不过，这不适用于自动挂载设备功能）。如果您需要为以这种方式挂载的卷设置挂载选项（例如，以只读方式挂载、保护隐藏卷等），在点击挂载时按住控制（Ctrl）键（或者从卷菜单中选择带选项挂载）。这将打开挂载选项对话框。

快速选择

可以通过以下方式快速选择密钥文件和密钥文件搜索路径：
  • 在密码输入对话框窗口中右键点击密钥文件按钮，然后选择菜单项之一。
  • 将相应的文件/文件夹图标拖到密钥文件对话框窗口或密码输入对话框中。

卷 -> 向卷添加/从卷移除密钥文件

此功能允许您使用从任意数量的密钥文件（可带或不带密码）派生的卷头加密密钥对卷头进行重新加密，也可以不使用任何密钥文件。因此，原本仅使用密码即可挂载的卷可以转换为需要密钥文件（除密码外）才能挂载的卷。请注意，卷头包含用于加密卷的主加密密钥。因此，使用此功能后，存储在卷上的数据不会丢失。
此功能还可用于更改/设置卷密钥文件（即，移除部分或所有密钥文件，并应用新的密钥文件）。
备注：此功能在内部等同于密码更改功能。

当VeraCrypt对卷头进行重新加密时，原始卷头首先会被随机数据覆盖256次，以防止攻击者使用诸如磁力显微镜或磁力扫描隧道显微镜[17]等技术恢复被覆盖的卷头（不过，另请参阅安全要求和预防措施章节）。

卷 -> 从卷中移除所有密钥文件

此功能允许您使用从密码派生且不使用任何密钥文件的卷头加密密钥对卷头进行重新加密，以便仅使用密码（无需任何密钥文件）即可挂载该卷。请注意，卷头包含用于加密卷的主加密密钥。因此，使用此功能后，存储在卷上的数据不会丢失。
备注：此功能在内部等同于密码更改功能。

当VeraCrypt对卷头进行重新加密时，原始卷头首先会被随机数据覆盖256次，以防止攻击者使用诸如磁力显微镜或磁力扫描隧道显微镜[17]等技术恢复被覆盖的卷头（不过，另请参阅安全要求和预防措施章节）。

工具 > 密钥文件生成器

您可以使用此功能生成一个或多个具有随机内容的文件，将其用作密钥文件（推荐）。此功能使用VeraCrypt随机数生成器。请注意，默认情况下，仅生成一个密钥文件，生成的文件大小为64字节（即512位），这也是VeraCrypt密码的最大可能长度。也可以生成多个文件并指定其大小（可以为所有文件指定一个固定值，也可以让VeraCrypt随机选择文件大小）。在所有情况下，文件大小必须介于64字节和1048576字节（即1MB，这是VeraCrypt处理的密钥文件字节的最大数量）之间。

设置 -> 默认密钥文件

使用此功能设置默认密钥文件和/或默认密钥文件搜索路径。此功能特别有用，例如，如果您将密钥文件存储在随身携带的USB记忆棒上。您可以将其驱动器号添加到默认密钥文件配置中。为此，请点击添加路径，浏览到分配给USB记忆棒的驱动器号，然后点击确定。现在每次您挂载卷时（如果在密码对话框中勾选了使用密钥文件），VeraCrypt将扫描该路径，并将在那里找到的所有文件用作密钥文件。

警告：当您将文件夹（而不是文件）添加到默认密钥文件列表中时，只会记住路径，而不会记住文件名！这意味着，例如，如果您在文件夹中创建了一个新文件或复制了一个额外的文件到该文件夹中，那么所有使用该文件夹中密钥文件的卷将无法挂载（直到您从文件夹中移除新添加的文件）。

重要提示：请注意，当您设置默认密钥文件和/或默认密钥文件搜索路径时，文件名和路径将以未加密的方式保存在文件Default Keyfiles.xml中。更多信息，请参阅 VeraCrypt系统文件和应用程序数据 章节。

* 在挂载卷、更改其密码或执行任何涉及重新加密卷头的操作时找到的文件。
** 但是，如果您使用MP3文件作为密钥文件，则必须确保没有程序修改MP3文件中的ID3标签（例如歌曲标题、艺术家姓名等）。否则，将无法挂载使用该密钥文件的卷。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 安全令牌与智能卡

安全令牌与智能卡

VeraCrypt支持可通过PKCS #11（2.0或更高版本）协议访问的安全（或加密）令牌和智能卡 [23]。有关更多信息，请参阅《VeraCrypt中的密钥文件》一章中的安全令牌和智能卡部分。

请注意，目前系统加密的预启动认证不支持安全令牌和智能卡。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密软件

文档 >> 便携模式

便携模式

VeraCrypt可以在所谓的便携模式下运行，这意味着它无需安装在运行它的操作系统上。不过，有两件事需要牢记：

  1. 要能够以便携模式运行VeraCrypt，您需要管理员权限（原因请参阅 在没有管理员权限的情况下使用VeraCrypt 章节）。
    注意：无论您使用何种软件，就个人隐私而言，在大多数情况下，在没有管理员权限的系统上处理敏感数据 并不 安全，因为管理员可以轻松捕获并复制您的敏感数据，包括密码和密钥。
  2. 检查注册表文件后，即使VeraCrypt是以便携模式运行的，也有可能发现它曾在Windows系统上运行过（并且挂载过VeraCrypt卷）。

注意：如果这是个问题，请参阅 常见问题解答中的这个问题 以获取可能的解决方案。

有两种方法可以在便携模式下运行VeraCrypt：

  1. 从VeraCrypt自解压包中提取文件后，您可以直接运行 VeraCrypt.exe。

    注意：要从VeraCrypt自解压包中提取文件，请运行该包，然后在VeraCrypt安装向导的第二页选择 提取（而不是 安装）。
  2. 您可以使用 移动磁盘设置 功能来准备一个特殊的移动磁盘，并从那里启动VeraCrypt。

第二种选择有几个优点，将在本章的以下部分进行描述。

注意：当以“便携”模式运行时，VeraCrypt驱动程序在不再需要时会被卸载（例如，当主应用程序和/或卷创建向导的所有实例都关闭且没有挂载VeraCrypt卷时）。但是，如果您在VeraCrypt以便携模式运行时强制卸载VeraCrypt卷，或者在Windows Vista或更高版本上挂载可写的NTFS格式卷，那么在退出VeraCrypt时，VeraCrypt驱动程序 可能不会 被卸载（只有在关闭或重启系统时才会卸载）。这是为了防止由Windows中的一个漏洞引起的各种问题（例如，只要有应用程序在使用已卸载的卷，就无法再次启动VeraCrypt）。

工具 -> 移动磁盘设置

您可以使用此功能来准备一个特殊的移动磁盘，并从那里启动VeraCrypt。请注意，VeraCrypt“移动磁盘” 不是 一个VeraCrypt卷，而是一个 未加密 的卷。一个“移动磁盘”包含VeraCrypt可执行文件，还可以选择包含“autorun.inf”脚本（请参阅下面的 自动运行配置 部分）。选择 工具 -> 移动磁盘设置 后，应该会出现 移动磁盘设置 对话框。对话框中可以设置的一些参数值得进一步说明：

包含VeraCrypt卷创建向导

如果您需要使用从即将创建的移动磁盘上运行的VeraCrypt来创建新的VeraCrypt卷，请选中此选项。取消选中此选项可以节省移动磁盘上的空间。

自动运行配置 (autorun.inf)

在此部分，您可以将“移动磁盘”配置为在插入时自动启动VeraCrypt或挂载指定的VeraCrypt卷。这是通过在移动磁盘上创建一个名为“autorun.inf”的特殊脚本文件来实现的。每次插入“移动磁盘”时，操作系统都会自动执行此文件。

但是请注意，此功能仅适用于可移动存储设备，如CD/DVD（在USB记忆棒上使用此功能需要Windows XP SP2、Windows Vista或更高版本的Windows），并且仅在操作系统中启用该功能时才有效。根据操作系统的配置，这些自动运行和自动挂载功能可能仅在移动磁盘文件创建在不可写的CD/DVD类介质上时才有效（这不是VeraCrypt的bug，而是Windows的限制）。

还要注意，“autorun.inf”文件必须位于一个 未加密 磁盘的根目录（例如 G:\、X:\ 或 Y:\ 等）中，此功能才能正常工作。


文档 >> TrueCrypt支持

TrueCrypt支持

注意：从1.26版本开始，不再支持TrueCrypt

从1.0f版本开始，VeraCrypt支持加载TrueCrypt卷和分区，包括普通卷和隐藏卷。要启用此功能，您需要在密码提示对话框中勾选“TrueCrypt模式”，如下所示。

注意： 仅支持使用TrueCrypt 6.x 和 7.x 版本创建的卷和分区。


文档 >> 转换TrueCrypt卷和分区

转换TrueCrypt卷和分区

⚠️ 警告： 转换后，挂载已转换的卷时，请确保未选中“TrueCrypt模式”复选框。由于它不再是TrueCrypt卷，使用此选项挂载将导致挂载失败。

⚠️ 重要通知： 从1.26版本开始，VeraCrypt已移除对“TrueCrypt模式”的支持。因此，使用此方法转换TrueCrypt卷和分区不再可行。请参考 此文档页面 ，以获取在VeraCrypt 1.26及更高版本中处理TrueCrypt卷的指导。

从1.0f版本到1.25.9版本，使用TrueCrypt 6.x和7.x版本（从2008年7月4日发布的6.0版本开始）创建的TrueCrypt卷和 非系统 分区，可以使用以下任何操作转换为VeraCrypt格式：

  • 更改卷密码
  • 设置头密钥推导算法
  • 添加/移除密钥文件
  • 移除所有密钥文件

如果TrueCrypt卷包含隐藏卷，则也应使用相同方法进行转换，即指定隐藏卷的密码和/或密钥文件。

🚨 文件容器转换后，文件扩展名仍将是 .tc。如果您希望VeraCrypt 1.26或更高版本自动识别，请手动将其更改为 .hc。

必须在对话框中勾选“TrueCrypt模式”，如下所示：

注意： 不支持转换使用TrueCrypt加密的系统分区。


VeraCrypt - 1.26及更高版本转换指南

文档 >> 1.26及更高版本转换指南

VeraCrypt 1.26及更高版本转换指南

1. 引言

VeraCrypt 1.26及更高版本进行了重大更改，移除了对某些功能的支持。如果您在挂载卷时遇到问题，本指南将帮助您理解并解决这些问题。

2. VeraCrypt 1.26及更高版本中弃用的功能

以下功能已被弃用：

  • TrueCrypt模式
  • HMAC - RIPEMD - 160哈希算法
  • GOST89加密算法

如果您在挂载VeraCrypt 1.25.9或更早版本创建的卷时遇到错误，请使用VeraCrypt 1.25.9检查是否使用了这些弃用的功能。在图形用户界面中突出显示该卷，然后点击“卷属性”进行检查。

3. 基于版本的修复程序

3.1 场景1：使用VeraCrypt 1.25.9或更早版本

如果您正在使用或可以升级到VeraCrypt 1.25.9，请遵循以下步骤：

  • 将TrueCrypt卷转换为VeraCrypt卷
  • 更改弃用的HMAC - RIPEMD - 160哈希算法
  • 如果使用GOST89加密算法，则重新创建VeraCrypt卷

点击 此处 下载1.25.9版本。

3.2 场景2：已升级到VeraCrypt 1.26或更高版本

如果您已经升级到VeraCrypt 1.26或更高版本，请遵循以下步骤：

  • 将TrueCrypt卷转换为VeraCrypt卷
  • 更改弃用的HMAC - RIPEMD - 160哈希算法

如果您使用的是Linux或Mac系统，请暂时降级到VeraCrypt 1.25.9。Windows用户可以使用 此处下载 的VCPassChanger工具。

  • 如果使用GOST89加密算法，则重新创建VeraCrypt卷
所有操作系统都需要暂时降级到1.25.9版本。

4. 转换和修复程序

4.1 将TrueCrypt卷转换为VeraCrypt卷

使用TrueCrypt 6.x或7.x版本创建的TrueCrypt文件容器和分区，可以使用VeraCrypt 1.25.9或Windows上的VCPassChanger工具转换为VeraCrypt卷。更多详细信息，请参考 文档。

转换后，文件扩展名仍将为 .tc。如果您希望VeraCrypt 1.26或更高版本能够自动识别，请手动将其更改为 .hc。

4.2 更改弃用的HMAC - RIPEMD - 160哈希算法

使用“设置头部密钥推导算法”功能，将HMAC - RIPEMD - 160哈希算法更改为VeraCrypt 1.26支持的算法。更多详细信息，请参考 文档。

4.3 如果使用GOST89加密算法，则重新创建VeraCrypt卷

如果您的卷使用了GOST89加密算法，您需要将数据复制到其他位置，然后使用支持的加密算法重新创建卷。更多详细信息，请参考 加密算法文档。

5. 重要说明

对使用VeraCrypt 1.17或更早版本创建卷的用户的说明：

为避免泄露您的卷是否包含隐藏卷的信息，或者如果您依赖似是而非的否认权，则必须重新创建外部和隐藏卷，包括系统加密和隐藏操作系统。请丢弃VeraCrypt 1.18a之前创建的现有卷。

更多信息，请访问：

  • TrueCrypt支持
  • 转换TrueCrypt卷和分区


文档 >> 默认挂载参数

默认挂载参数

从1.0f - 2版本开始，可以指定将在密码对话框中默认选择的PRF算法和TrueCrypt模式。

如下所示，在“设置”菜单下选择“默认挂载参数”条目：

将显示以下对话框：

进行修改，然后点击“确定”。

所选值随后会写入VeraCrypt主配置文件（Configuration.xml），使其持久化。

所有后续的密码请求对话框将使用先前选择的默认值。例如，如果在“默认挂载参数”对话框中勾选“TrueCrypt模式”并选择SHA - 512作为PRF，那么后续的密码对话框将如下所示：
使用默认值的挂载密码对话框

注意：默认挂载参数可以被命令行开关 /tc 和 /hash 覆盖，这些开关始终具有更高的优先级。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 语言包

语言包

语言包包含VeraCrypt用户界面文本的第三方翻译。请注意，目前语言包仅支持VeraCrypt的Windows版本。

安装

自1.0e版本起，所有语言包都包含在VeraCrypt Windows安装程序中，您可以在VeraCrypt安装目录中找到它们。要选择新的语言，请运行VeraCrypt，选择 设置 -> 语言，然后选择您需要的语言并点击 确定。
要恢复为英语，请选择设置 -> 语言。然后选择英语并点击 确定。
您仍然可以从 以下链接下载包含最新版本（1.26.18）所有语言包的存档文件。


文档 >> 加密算法

加密算法

VeraCrypt卷可以使用以下算法进行加密：
算法 | 设计者 | 密钥大小 （比特） | 块大小（比特） | 操作模式
AES | J. Daemen、V. Rijmen | 256 | 128 | XTS
Camellia | 日本三菱电机和日本电报电话公司（NTT） | 256 | 128 | XTS
Kuznyechik | 俄罗斯联邦国家标准 GOST R 34.12-2015 | 256 | 128 | XTS
Serpent | R. Anderson, E. Biham, L. Knudsen | 256 | 128 | XTS
Twofish | B. Schneier, J. Kelsey, D. Whiting, D. Wagner, C. Hall, N. Ferguson | 256 | 128 | XTS
AES-Twofish |  | 256; 256 | 128 | XTS
AES-Twofish-Serpent |  | 256; 256; 256 | 128 | XTS
Camellia-Kuznyechik |  | 256; 256 | 128 | XTS
Camellia-Serpent |  | 256; 256 | 128 | XTS
Kuznyechik-AES |  | 256; 256 | 128 | XTS
Kuznyechik-Serpent-Camellia |  | 256; 256; 256 | 128 | XTS
Kuznyechik-Twofish |  | 256; 256 | 128 | XTS
Serpent-AES |  | 256; 256 | 128 | XTS
Serpent-Twofish-AES |  | 256; 256; 256 | 128 | XTS
Twofish-Serpent |  | 256; 256 | 128 | XTS
有关 XTS 模式的信息，请参阅 “ 操作模式” 部分。
下一部分 >>


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 加密算法 >> 高级加密标准（AES）

高级加密标准（AES）

高级加密标准（AES）规定了一种经美国联邦信息处理标准（FIPS）批准的加密算法（Rijndael，由Joan Daemen和Vincent Rijmen设计，于1998年发布），美国联邦部门和机构可使用该算法对敏感信息进行加密保护[3]。VeraCrypt使用的是采用14轮加密和256位密钥的AES算法（即AES - 256，于2001年发布），并以 XTS模式 运行（请参阅 操作模式 部分）。
2003年6月，美国国家安全局（NSA）对AES进行了审查和分析后，美国国家安全系统委员会（CNSS）在[1]中宣布，AES - 256（以及AES - 192）的设计和强度足以保护最高机密级别的机密信息。这适用于所有正在考虑采购或使用包含高级加密标准（AES）的产品以满足与国家安全系统和/或国家安全信息保护相关的信息保障要求的美国政府部门或机构[1]。
下一部分 >>


文档 >> 加密算法 >> Camellia

Camellia

Camellia是一种128位分组密码，由日本三菱电机和日本电报电话公司（NTT）联合开发，于2000年首次发布。它已获得国际标准化组织/国际电工委员会（ISO/IEC）、欧盟NESSIE项目和日本CRYPTREC项目的使用许可。
VeraCrypt使用具有24轮加密和256位密钥的Camellia算法，并采用 XTS模式（请参阅 操作模式 部分）。
下一部分 >>


文档 >> 加密算法 >> Kuznyechik

Kuznyechik

Kuznyechik算法是一种128位分组密码算法，于2015年首次发布，定义于俄罗斯联邦国家标准 GOST R 34.12 - 2015 以及 RFC 7801 中。它取代了旧的GOST - 89分组密码算法，但并未使其过时。

VeraCrypt使用具有10轮和256位密钥的库兹涅奇克算法，采用 XTS模式 进行操作（请参阅 操作模式 部分）。

下一部分 >>


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 加密算法 >> Serpent

Serpent

由罗斯·安德森（Ross Anderson）、伊莱·比哈姆（Eli Biham）和拉斯·克努森（Lars Knudsen）设计，于1998年发布。它使用256位密钥、128位块，并以XTS模式运行（请参阅操作模式部分）。Serpent是高级加密标准（AES）的最终候选算法之一。尽管它似乎比获胜的Rijndael算法具有更高的安全裕度，但它并未被选为提议的AES算法[4]。更具体地说，Serpent似乎具有高安全裕度，而Rijndael似乎只有足够的安全裕度[4]。此外，Rijndael的数学结构也受到了一些批评，有人认为这可能会在未来导致攻击[4]。

在文献[5]中，Twofish团队给出了AES最终候选算法的安全系数表。安全系数的定义为：完整密码的轮数除以已被破解的最大轮数。因此，被破解的密码的安全系数最低，为1。在AES最终候选算法中，Serpent的安全系数最高，为3.56（适用于所有支持的密钥长度）。Rijndael - 256的安全系数为1.56。

尽管有这些情况，但由于Rijndael在安全性、性能、效率、可实现性和灵活性方面的综合表现，它被认为是AES的合适选择[4]。在最后一届AES候选算法会议上，Rijndael获得了86票，Serpent获得了59票，Twofish获得了31票，RC6获得了23票，MARS获得了13票[18, 19]。*

* 这些是赞成票。如果从赞成票中减去反对票，得到以下结果：Rijndael：76票，Serpent：52票，Twofish：10票，RC6： - 14票，MARS： - 70票[19]。

下一部分 >>


文档 >> 加密算法 >> Twofish

Twofish

由布鲁斯·施奈尔（Bruce Schneier）、约翰·凯尔西（John Kelsey）、道格·怀廷（Doug Whiting）、大卫·瓦格纳（David Wagner）、克里斯·霍尔（Chris Hall）和尼尔·弗格森（Niels Ferguson）设计；于1998年发布。它使用256位密钥和128位数据块，并以XTS模式运行（请参阅操作模式部分）。Twofish算法是高级加密标准（AES）的决赛入围算法之一。该密码算法使用依赖于密钥的S盒。Twofish算法可以被视为2^128种不同密码系统的集合，其中从256位密钥中导出的128位用于控制密码系统的选择 [4]。在文献[13]中，Twofish团队声称，依赖于密钥的S盒构成了针对未知攻击的一种安全余量 [4]。

下一部分 >>


文档 >> 加密算法 >> 密码级联

密码级联

AES - Twofish

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Twofish（256位密钥）以XTS模式进行加密，然后使用AES（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

AES - Twofish - Serpent

级联中的三个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Serpent（256位密钥）以XTS模式进行加密，然后使用Twofish（256位密钥）以XTS模式进行加密，最后使用AES（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Camellia - Kuznyechik

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Kuznyechik（256位密钥）以XTS模式进行加密，然后使用Camellia（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Camellia - Serpent

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Serpent（256位密钥）以XTS模式进行加密，然后使用Camellia（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Kuznyechik - AES

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用AES（256位密钥）以XTS模式进行加密，然后使用Kuznyechik（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Kuznyechik - Serpent - Camellia

级联中的三个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Camellia（256位密钥）以XTS模式进行加密，然后使用Serpent（256位密钥）以XTS模式进行加密，最后使用Kuznyechik（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Kuznyechik - Twofish

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Twofish（256位密钥）以XTS模式进行加密，然后使用Kuznyechik（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Serpent - AES

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用AES（256位密钥）以XTS模式进行加密，然后使用Serpent（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Serpent - Twofish - AES

级联中的三个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用AES（256位密钥）以XTS模式进行加密，然后使用Twofish（256位密钥）以XTS模式进行加密，最后使用Serpent（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。

Twofish - Serpent

级联中的两个密码算法 [15, 16] 以XTS模式运行（请参阅 操作模式 部分）。每个128位块首先使用Serpent（256位密钥）以XTS模式进行加密，然后使用Twofish（256位密钥）以XTS模式进行加密。级联中的每个密码算法使用其自己的密钥。所有加密密钥相互独立（请注意，即使头密钥是从单个密码派生而来，它们也是独立的 — 请参阅 头密钥派生、盐值和迭代次数）。有关级联中各个密码算法的信息，请参阅上文。


文档 >> 哈希算法

哈希算法

在卷创建向导、密码更改对话框窗口和密钥文件生成器对话框窗口中，您可以选择一种哈希算法。用户选择的哈希算法由VeraCrypt随机数生成器用作伪随机“混合”函数，并由头密钥推导函数（基于哈希函数的HMAC，如PKCS #5 v2.0中所规定）用作伪随机函数。在创建新卷时，随机数生成器会生成主密钥、辅助密钥（XTS模式）和盐值。有关更多信息，请参阅随机数生成器部分和头密钥推导、盐值和迭代次数部分。
VeraCrypt目前支持以下哈希算法：
  • BLAKE2s - 256
  • SHA - 256
  • SHA - 512
  • Whirlpool
  • Streebog

下一部分 >>


文档 >> 哈希算法 >> BLAKE2s - 256

BLAKE2s - 256

BLAKE2是一种基于BLAKE的加密哈希函数，由让 - 菲利普·奥马森（Jean - Philippe Aumasson）、塞缪尔·内维斯（Samuel Neves）、祖科·威尔科克斯 - 奥赫恩（Zooko Wilcox - O'Hearn）和克里斯蒂安·温纳莱因（Christian Winnerlein）创建。它于2012年12月21日发布。其设计目标是在需要软件高性能的应用程序中取代广泛使用但已被破解的MD5和SHA - 1算法。BLAKE2提供了比SHA - 2更好的安全性，与SHA - 3相当（例如，对长度扩展攻击具有免疫性，与随机预言机不可区分等）。
BLAKE2从BLAKE的轮函数中移除了消息字的常量加法，更改了两个旋转常量，简化了填充方式，添加了与初始化向量进行异或运算的参数块，并将BLAKE2b（BLAKE - 512的后继者）的轮数从16轮减少到12轮，将BLAKE2s（BLAKE - 256的后继者）的轮数从14轮减少到10轮。
BLAKE2b和BLAKE2s在RFC 7693中进行了详细说明。

VeraCrypt仅使用最大输出大小为32字节（256位）的BLAKE2s。

下一部分 >>


文档 >> 哈希算法 >> SHA - 256

SHA - 256

SHA - 256是一种由美国国家安全局（NSA）设计，并于2002年由美国国家标准与技术研究院（NIST）在FIPS PUB 180 - 2 [14]中发布的哈希算法（第一版草案于2001年发布）。该算法的输出大小为256位。
下一部分 >>


文档 >> 哈希算法 >> SHA - 512

SHA - 512

SHA - 512是一种由美国国家安全局（NSA）设计，并于2002年由美国国家标准与技术研究院（NIST）在FIPS PUB 180 - 2 [14]中发布的哈希算法（首版草案于2001年发布）。该算法的输出大小为512位。
下一部分 >>


VeraCrypt - 为偏执狂提供强大安全性的免费开源磁盘加密工具

文档 >> 哈希算法 >> Whirlpool

Whirlpool

Whirlpool哈希算法由Vincent Rijmen（AES加密算法的共同设计者）和Paulo S. L. M. Barreto设计。该算法的输出大小为512位。Whirlpool的第一个版本，现在称为Whirlpool - 0，于2000年11月发布。第二个版本，现在称为Whirlpool - T，被选入NESSIE（新欧洲签名、完整性和加密方案）密码原语组合（这是一个由欧盟组织的项目，类似于AES竞赛）。VeraCrypt使用Whirlpool的第三个（最终）版本，该版本已被国际标准化组织（ISO）和国际电工委员会（IEC）采纳，收录于ISO/IEC 10118 - 3:2004国际标准 [21]。
下一部分 >>


文档 >> 哈希算法 >> Streebog

Streebog

Streebog 是由两种哈希算法组成的家族，即 Streebog - 256 和 Streebog - 512，在俄罗斯国家标准 GOST R 34.11 - 2012《信息技术 - 密码信息安全 - 哈希函数》中定义。它也在 RFC 6986 中有所描述。它是美国国家标准与技术研究院（NIST）SHA - 3 标准的竞争对手。

VeraCrypt 仅使用输出大小为 512 位的 Streebog - 512。


文档 >> 支持的操作系统

支持的操作系统

VeraCrypt目前支持以下操作系统：
  • Windows 11
  • Windows 10
  • Windows Server 2016
  • Mac OS X 14 Sonoma
  • Mac OS X 13 Ventura
  • Mac OS X 12 Monterey
  • Linux x86、x86 - 64、ARM64（从Debian 10、Ubuntu 20.04、CentOS 7、OpenSUSE 15.1开始）
  • FreeBSD x86 - 64（从12版本开始）
  • 树莓派操作系统（32位和64位）
注意：
VeraCrypt 1.25.9是支持Windows XP、Windows Vista、Windows 7、Windows 8和Windows 8.1的最后一个版本。
VeraCrypt 1.25.9是支持从Mac OS X 10.9 Mavericks到11 Big Sur版本的最后一个版本。
VeraCrypt 1.24 - Update8是支持Mac OS X 10.7 Lion和Mac OS X 10.8 Mountain Lion的最后一个版本。

注意：以下操作系统（以及其他一些操作系统）不受支持：Windows RT、Windows 2003 IA - 64、Windows 2008 IA - 64、Windows XP IA - 64以及Windows的嵌入式/平板电脑版本。

另请参阅支持系统加密的操作系统部分。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

  • 首页
  • 源代码
  • 下载
  • 文档
  • 捐赠
  • 论坛

文档 >> 命令行使用

命令行使用

请注意，本节适用于 Windows 版本的 VeraCrypt。有关适用于 Linux 和 Mac OS X 版本的命令行使用信息，请运行：veracrypt –h

/help 或 /? | 显示命令行帮助。
/truecrypt 或 /tc | 激活 TrueCrypt 兼容模式，该模式允许挂载使用 TrueCrypt 6.x 和 7.x 系列创建的卷。
/hash | 必须后跟一个参数，指示挂载卷时要使用的 PRF 哈希算法。可能的 /hash 参数值为：sha256, sha-256, sha512, sha-512, whirlpool, blake2s 和 blake2s-256。当省略 /hash 时，VeraCrypt 将尝试所有可能的 PRF 算法，从而延长挂载操作时间。
/volume 或 /v

必须后跟一个参数，指示要挂载的 VeraCrypt 卷的文件和路径名（卸载时不要使用）或要挂载的磁盘/分区的卷 ID。
卷 ID 的语法为 ID:XXXXXX...XX，其中 XX 部分是一个 64 个十六进制字符的字符串，表示要挂载的卷的 32 字节 ID。

要挂载分区/设备托管的卷，请使用例如 /v \Device\Harddisk1\Partition3（要确定分区/设备的路径，请运行 VeraCrypt 并单击 选择设备）。您还可以使用卷名挂载分区或动态卷（例如，/v \\?\Volume{5cceb196-48bf-46ab-ad00-70965512253a}\)。要确定卷名，请使用例如 mountvol.exe。另请注意，设备路径区分大小写。

您还可以指定要挂载的分区/设备托管卷的卷 ID，例如：/v ID:53B9A8D59CC84264004DA8728FC8F3E2EE6C130145ABD3835695C29FD601EDCA。卷 ID 值可以使用卷属性对话框检索。
/letter 或 /l | 必须后跟一个参数，指示将卷挂载为的驱动器号。当省略 /l 且使用 /a 时，将使用第一个空闲的驱动器号。
/explore 或 /e | 在挂载卷后打开资源管理器窗口。
/beep 或 /b | 在成功挂载或卸载卷后发出蜂鸣声。
/auto 或 /a | 如果未指定参数，则自动挂载卷。如果将 devices 指定为参数（例如，/a devices），则自动挂载当前可访问的所有设备/分区托管的 VeraCrypt 卷。如果将 favorites 指定为参数，则自动挂载收藏的卷。请注意，如果指定了 /quit 和 /volume，则 /auto 是隐式的。如果需要防止应用程序窗口出现，请使用 /quit。
/unmount 或 /u | 卸载由驱动器号指定的卷（例如，/u x）。当未指定驱动器号时，卸载所有当前挂载的 VeraCrypt 卷。
/dismount 或 /d | 已弃用。请使用 /unmount 或 /u。
/force 或 /f | 强制卸载（如果要卸载的卷包含系统或应用程序正在使用的文件）并强制以共享模式挂载（即，不独占访问）。
/keyfile 或 /k | 必须后跟一个参数，指定密钥文件或密钥文件搜索路径。对于多个密钥文件，请指定例如：/k c:\keyfile1.dat /k d:\KeyfileFolder /k c:\kf2 要指定存储在安全令牌或智能卡上的密钥文件，请使用以下语法： token://slot/SLOT_NUMBER/file/FILE_NAME
/tryemptypass 仅当配置了默认密钥文件或在命令行中指定了密钥文件时。
如果后跟 y 或 yes 或未指定参数：在显示密码提示之前，尝试使用空密码和密钥文件挂载。
如果后跟 n 或 no：不尝试使用空密码和密钥文件挂载，并立即显示密码提示。
/nowaitdlg 如果后跟 y 或 yes 或未指定参数：在执行挂载卷等操作时不显示等待对话框。
如果后跟 n 或 no：强制显示等待对话框。
/secureDesktop 如果后跟 y 或 yes 或未指定参数：在专用安全桌面中显示密码对话框和令牌 PIN 对话框，以防止某些类型的攻击。
如果后跟 n 或 no：在普通桌面中显示密码对话框和令牌 PIN 对话框。
/tokenlib | 必须后跟一个参数，指示用于安全令牌和智能卡的 PKCS #11 库。（例如：/tokenlib c:\pkcs11lib.dll）
/tokenpin | 必须后跟一个参数，指示用于验证安全令牌或智能卡的 PIN（例如：/tokenpin 0000）。警告：输入智能卡 PIN 的这种方法可能不安全，例如，当未加密的命令提示符历史记录日志被保存到未加密的磁盘时。
/cache 或 /c 如果后跟 y 或 yes 或未指定参数：启用密码缓存；
如果后跟 p 或 pim：启用密码和 PIM 缓存（例如，/c p）。
如果后跟 n 或 no：禁用密码缓存（例如，/c n）。
如果后跟 f 或 favorites：在挂载多个收藏时临时缓存密码（例如，/c f）。
请注意，关闭密码缓存不会清除它（使用 /w 清除密码缓存）。
/history 或 /h | 如果后跟 y 或未指定参数：启用保存挂载卷的历史记录；如果后跟 n：禁用保存挂载卷的历史记录（例如，/h n）。
/wipecache 或 /w | 清除驱动程序内存中缓存的任何密码。
/password 或 /p | 必须后跟一个参数，指示卷密码。如果密码包含空格，则必须用引号括起来（例如，/p ”我的密码”）。使用 /p ”” 指定空密码。 警告：输入卷密码的这种方法可能不安全，例如，当未加密的命令提示符历史记录日志被保存到未加密的磁盘时。
/pim | 必须后跟一个正整数，指示用于卷的 PIM（个人迭代乘数）。
/quit 或 /q | 自动执行请求的操作并退出（不会显示主 VeraCrypt 窗口）。如果将 preferences 指定为参数（例如，/q preferences），则加载/保存程序设置，并且它们会覆盖命令行中指定的设置。 /q background 启动 VeraCrypt 后台任务（托盘图标），除非在首选项中禁用了它。
/silent 或 /s | 如果指定了 /q，则抑制与用户的交互（提示、错误消息、警告等）。如果未指定 /q，则此选项无效。
/mountoption 或 /m

必须后跟一个参数，该参数可以具有以下值之一。

ro 或 readonly：以只读方式挂载卷。

rm 或 removable：以可移动介质方式挂载卷（参见 作为可移动介质挂载的卷）。

ts 或 timestamp：不保留容器修改时间戳。

sm 或 system：无需预启动验证，挂载位于系统加密密钥范围内的分区（例如，位于未运行的其他操作系统的加密系统驱动器上的分区）。 例如，用于备份或修复操作。注意：如果您将密码作为 /p 的参数提供，请确保使用标准美式键盘布局键入密码（相比之下，GUI 会自动确保这一点）。这是必需的，因为密码需要在预启动环境（Windows 启动之前）中键入，而在该环境中非美式 Windows 键盘布局不可用。

bk 或 headerbak：使用嵌入式备份头挂载卷。注意：VeraCrypt 创建的所有卷都包含一个嵌入式备份头（位于卷的末尾）。

recovery：不验证存储在卷头中的任何校验和。仅当卷头损坏且即使使用挂载选项 headerbak 也无法挂载卷时，才应使用此选项。示例：/m ro

label=LabelValue：使用给定的字符串值 LabelValue 作为 Windows 资源管理器中挂载卷的标签。对于 NTFS 卷， LabelValue 的最大长度为 32 个字符，对于 FAT 卷，最大长度为 11 个字符。例如， /m label=我的驱动器 将资源管理器中的驱动器标签设置为 我的驱动器。

noattach：仅创建虚拟设备，而不实际将挂载的卷附加到选定的驱动器号。

请注意，此开关可以在命令行中出现多次，以指定多个挂载选项（例如：/m rm /m ts）
/DisableDeviceUpdate | 禁用对连接到系统的设备的定期内部检查，该检查用于处理使用 VolumeID 标识的收藏，并将其替换为按需检查。
/protectMemory | 激活一种机制，保护 VeraCrypt 进程内存不被其他非管理员进程访问。
/signalExit 必须后跟一个参数，指定当 VeraCrypt 退出时发送给阻塞的 WAITFOR.EXE 命令的信号名称。
信号名称必须与指定给 WAITFOR.EXE 命令的名称相同（例如"veracrypt.exe /q /v test.hc /l Z /signal SigName" 后跟 "waitfor.exe SigName"
如果未指定 /q，则忽略此开关

VeraCrypt Format.exe（VeraCrypt 卷创建向导）：

/create | 在命令行模式下创建基于容器的卷。必须后跟要创建的容器的文件名。
/size

（仅与 /create 一起使用）
必须后跟一个参数，指示将创建的容器文件的大小。此参数是一个指示字节大小的数字。它可以有一个后缀 'K'、'M'、'G' 或 'T'，以指示该值分别以千字节、兆字节、千兆字节或太字节为单位。例如：

  • /size 5000000：容器大小将为 5000000 字节
  • /size 25K：容器大小将为 25 千字节。
  • /size 100M：容器大小将为 100 兆字节。
  • /size 2G：容器大小将为 2 千兆字节。
  • /size 1T：容器大小将为 1 太字节。
/password （仅与 /create 一起使用）
必须后跟一个参数，指示将创建的容器的密码。
/keyfile 或 /k （仅与 /create 一起使用）
必须后跟一个参数，指定密钥文件或密钥文件搜索路径。对于多个密钥文件，请指定例如：/k c:\keyfile1.dat /k d:\KeyfileFolder /k c:\kf2 要指定存储在安全令牌或智能卡上的密钥文件，请使用以下语法： token://slot/SLOT_NUMBER/file/FILE_NAME
/tokenlib （仅与 /create 一起使用）
必须后跟一个参数，指示用于安全令牌和智能卡的 PKCS #11 库。（例如：/tokenlib c:\pkcs11lib.dll）
/tokenpin （仅与 /create 一起使用）
必须后跟一个参数，指示用于验证安全令牌或智能卡的 PIN（例如：/tokenpin 0000）。警告：输入智能卡 PIN 的这种方法可能不安全，例如，当未加密的命令提示符历史记录日志被保存到未加密的磁盘时。
/hash （仅与 /create 一起使用）
必须后跟一个参数，指示创建卷时要使用的 PRF 哈希算法。它与 VeraCrypt.exe 具有相同的语法。
/encryption （仅与 /create 一起使用）
必须后跟一个参数，指示要使用的加密算法。如果未指定此开关，则默认使用 AES。参数可以具有以下值（不区分大小写）：
  • AES
  • Serpent
  • Twofish
  • Camellia
  • Kuznyechik
  • AES(Twofish)
  • AES(Twofish(Serpent))
  • Serpent(AES)
  • Serpent(Twofish(AES))
  • Twofish(Serpent)
  • Camellia(Kuznyechik)
  • Kuznyechik(Twofish)
  • Camellia(Serpent)
  • Kuznyechik(AES)
  • Kuznyechik(Serpent(Camellia))
/filesystem （仅与 /create 一起使用）
必须后跟一个参数，指示要用于卷的文件系统。参数可以具有以下值：
  • None：不使用任何文件系统
  • FAT：使用 FAT/FAT32 格式化
  • NTFS：使用 NTFS 格式化。请注意，在这种情况下，除非进程以完全管理员权限运行，否则将显示 UAC 提示。
  • ExFAT：使用 ExFAT 格式化。此开关从 Windows Vista SP1 开始可用
  • ReFS：使用 ReFS 格式化。此开关从 Windows 10 开始可用
/dynamic （仅与 /create 一起使用）
它没有参数，表示卷将创建为动态卷。
/force （仅与 /create 一起使用）
它没有参数，表示将强制覆盖而不需要用户确认。
/silent （仅与 /create 一起使用）
它没有参数，表示不会向用户显示任何消息框或对话框。如果有任何错误，操作将静默失败。
/noisocheck 或 /n | 不验证 VeraCrypt 救援盘是否正确刻录。警告：切勿尝试使用此选项来促进重复使用先前创建的 VeraCrypt 救援盘。请注意，每次加密系统分区/驱动器时，即使使用相同的密码，也必须创建新的 VeraCrypt 救援盘。先前创建的 VeraCrypt 救援盘无法重复使用，因为它是为不同的主密钥创建的。
/nosizecheck | 不检查给定的文件容器大小是否小于可用磁盘空间。这适用于 UI 和命令行。
/quick | 执行卷的快速格式化而不是完全格式化。这适用于 UI 和命令行。
/FastCreateFile | 启用一种更快但可能不安全的方法来创建文件容器。此选项存在安全风险，因为它可以将现有磁盘内容嵌入文件容器中，如果攻击者获得访问权限，可能会暴露敏感数据。请注意，此开关会影响所有文件容器创建方法，无论是通过命令行、使用 /create 开关还是通过 UI 向导启动的。
/protectMemory | 激活一种机制，保护 VeraCrypt Format 进程内存不被其他非管理员进程访问。
/secureDesktop 如果后跟 y 或 yes 或未指定参数：在专用安全桌面中显示密码对话框和令牌 PIN 对话框，以防止某些类型的攻击。
如果后跟 n 或 no：在普通桌面中显示密码对话框和令牌 PIN 对话框。

语法

VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool |blake2s|blake2s-256}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [drive letter]] [/e] [/f] [/h [y|n]] [/k keyfile or search path] [tryemptypass [y|n]] [/l drive letter] [/m {bk|rm|recovery|ro|sm|ts|noattach}] [/p password] [/pim pimvalue] [/q [background|preferences]] [/s] [/tokenlib path] [/v volume] [/w]

"VeraCrypt Format.exe" [/n] [/create] [/size number[{K|M|G|T}]] [/p password] [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256}] [/filesystem {None|FAT|NTFS|ExFAT|ReFS}] [/dynamic] [/force] [/silent] [/noisocheck] [FastCreateFile] [/quick]

请注意，选项的指定顺序无关紧要。

示例

将卷 d:\myvolume 挂载为第一个空闲的驱动器号，使用密码提示（不会显示主程序窗口）：

veracrypt /q /v d:\myvolume

卸载挂载为驱动器号 X 的卷（不会显示主程序窗口）：

veracrypt /q /d x

使用密码 MyPassword 挂载名为 myvolume.tc 的卷，挂载为驱动器号 X。VeraCrypt 将打开资源管理器窗口并发出蜂鸣声；挂载将自动进行：

veracrypt /v myvolume.tc /l x /a /p MyPassword /e /b

使用密码 test 创建一个 10 MB 的文件容器，并使用 FAT 格式化：

"C:\Program Files\VeraCrypt\VeraCrypt Format.exe" /create c:\Data\test.hc /password test /hash sha512 /encryption serpent /filesystem FAT /size 10M /force


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 安全模型

安全模型

致安全研究人员：如果您打算报告安全问题或公布对VeraCrypt的攻击，请确保其不违反以下所述的VeraCrypt安全模型。若违反，该攻击（或安全问题报告）将被视为无效/虚假。

VeraCrypt是一款计算机软件程序，其主要目的是：

  • 在数据写入磁盘之前对其进行加密以保护数据。
  • 在从磁盘读取加密数据后对其进行解密。

VeraCrypt不能：

  • 对RAM（计算机的主内存）的任何部分进行加密或保护。
  • 如果攻击者在计算机上安装的操作系统下具有管理员权限†，则无法保护计算机上的任何数据。
  • 如果计算机包含任何恶意软件（如病毒、特洛伊木马、间谍软件）或任何其他由攻击者更改、创建或可控制的软件（包括VeraCrypt或操作系统组件），则无法保护计算机上的任何数据。
  • 如果攻击者在VeraCrypt运行之前或运行期间对计算机有物理访问权限，则无法保护计算机上的任何数据。
  • 如果攻击者在VeraCrypt关闭后到计算机连接的所有易失性内存模块（包括外围设备中的内存模块）的全部内容被永久且不可逆转地擦除/丢失之前对计算机有物理访问权限，则无法保护计算机上的任何数据。
  • 如果攻击者在VeraCrypt运行时可以远程拦截计算机硬件（如显示器或电缆）发出的辐射（或以其他方式远程直接或间接监控硬件及其使用情况），则无法保护存储在VeraCrypt卷‡中的任何数据。
  • 如果没有管理员权限的攻击者可以访问已挂载卷的内容（例如，如果文件/文件夹/卷权限不阻止此类攻击者访问），则无法保护存储在VeraCrypt卷‡中的任何数据。
  • 保留/验证加密或解密数据的完整性或真实性。
  • 在加密数据通过网络传输时防止流量分析。
  • 如果攻击者可以在数据写入之前和之后观察卷（未挂载或已挂载），或者存储介质/设备允许攻击者确定此类信息（例如，卷位于保存可用于确定数据何时写入特定扇区的元数据的设备上），则无法防止攻击者确定卷的哪些扇区内容发生了更改（以及何时更改和更改了多少次）。
  • 对使用损耗均衡或在内部重新定位数据的设备/文件系统上的任何现有未加密数据进行原地加密（或重新加密或擦除数据）。
  • 确保用户选择具有加密强度的密码或密钥文件。
  • 保护任何计算机硬件组件或整个计算机。
  • 如果未遵循安全要求和预防措施章节中列出的安全要求或预防措施，则无法保护计算机上的任何数据。
  • 执行限制部分（已知问题和限制章节）中列出的任何操作。

在Windows系统下，没有管理员权限的用户可以（假设VeraCrypt和操作系统为默认配置）：

  • 挂载任何文件托管的VeraCrypt卷，前提是容器的文件权限允许。
  • 挂载任何分区/设备托管的VeraCrypt卷。
  • 完成预启动身份验证过程，从而访问加密系统分区/驱动器上的数据（并启动加密的操作系统）。
  • 跳过预启动身份验证过程（可以通过禁用设置 > ‘系统加密’ > ‘允许通过按Esc键绕过预启动身份验证’选项来防止；请注意，此选项只能由管理员启用或禁用）。
  • 使用VeraCrypt卸载（并在VeraCrypt应用程序窗口中查看）其自己挂载的任何VeraCrypt卷的路径和属性。但是，这不适用于“系统常用卷”，无论谁挂载了这些卷，他/她都可以卸载（等操作）（可以通过启用设置 > ‘系统常用卷’ > ‘仅允许管理员在VeraCrypt中查看和卸载系统常用卷’选项来防止；请注意，此选项只能由管理员启用或禁用）。
  • 创建包含FAT或无文件系统的文件托管VeraCrypt卷，前提是相关文件夹权限允许。
  • 更改文件托管VeraCrypt卷的密码、密钥文件和头密钥派生算法，并恢复或备份其头文件，前提是文件权限允许。
  • 访问系统上由其他用户挂载的VeraCrypt卷内的文件系统（但是，可以设置文件/文件夹/卷权限来防止这种情况）。
  • 使用存储在密码缓存中的密码（和处理后的密钥文件）（请注意，可以禁用缓存；有关更多信息，请参阅设置 -> 首选项子部分在驱动程序内存中缓存密码）。
  • 在加密系统运行时查看加密系统分区/驱动器的基本属性（例如，加密区域的大小、使用的加密和哈希算法等）。
  • 运行和使用VeraCrypt应用程序（包括VeraCrypt卷创建向导），前提是VeraCrypt设备驱动程序正在运行且文件权限允许。

在Linux系统下，没有管理员权限的用户可以（假设VeraCrypt和操作系统为默认配置）：

  • 创建包含FAT或无文件系统的文件托管或分区/设备托管VeraCrypt卷，前提是相关文件夹/设备权限允许。
  • 更改文件托管或分区/设备托管VeraCrypt卷的密码、密钥文件和头密钥派生算法，并恢复或备份其头文件，前提是文件/设备权限允许。
  • 访问系统上由其他用户挂载的VeraCrypt卷内的文件系统（但是，可以设置文件/文件夹/卷权限来防止这种情况）。
  • 运行和使用VeraCrypt应用程序（包括VeraCrypt卷创建向导），前提是文件权限允许。
  • 在VeraCrypt应用程序窗口中查看其自己挂载的任何VeraCrypt卷的路径和属性。

在Mac OS X系统下，没有管理员权限的用户可以（假设VeraCrypt和操作系统为默认配置）：

  • 挂载任何文件托管或分区/设备托管的VeraCrypt卷，前提是文件/设备权限允许。
  • 使用VeraCrypt卸载（并在VeraCrypt应用程序窗口中查看）其自己挂载的任何VeraCrypt卷的路径和属性。
  • 创建文件托管或分区/设备托管的VeraCrypt卷，前提是相关文件夹/设备权限允许。
  • 更改文件托管或分区/设备托管VeraCrypt卷的密码、密钥文件和头密钥派生算法，并恢复或备份其头文件，前提是文件/设备权限允许。
  • 访问系统上由其他用户挂载的VeraCrypt卷内的文件系统（但是，可以设置文件/文件夹/卷权限来防止这种情况）。
  • 运行和使用VeraCrypt应用程序（包括VeraCrypt卷创建向导），前提是文件权限允许。

VeraCrypt不支持设置euid为root的执行模式。

有关安全模型的更多信息和详细内容包含在安全要求和预防措施章节中。

* 在本节（安全模型）中，“计算机上的数据”指连接到计算机的内部和外部存储设备/介质（包括可移动设备和网络驱动器）上的数据。

† 在本节（安全模型）中，“管理员权限”不一定指有效的管理员账户。它也可能指没有有效管理员账户但能够（例如，由于系统配置不当或利用操作系统或第三方应用程序中的漏洞）执行通常只有具有有效管理员账户的用户才能执行的任何操作（例如，读取或修改驱动器或RAM的任意部分等）的攻击者。

‡ “VeraCrypt卷”也指VeraCrypt加密的系统分区/驱动器（请参阅系统加密章节）。


文档 >> 安全要求和预防措施

安全要求和预防措施

重要提示：如果您想使用VeraCrypt，必须遵循本章列出的安全要求和安全预防措施。
本章各节规定了使用VeraCrypt的安全要求，并提供了有关会对VeraCrypt保护数据安全和提供似是而非的否认能力产生不利影响或限制的相关信息。免责声明：本章不能保证包含所有可能对VeraCrypt保护数据安全和提供似是而非的否认能力产生不利影响或限制的安全问题和攻击。
  • 数据泄露
    • 分页文件
    • 休眠文件
    • 内存转储文件
  • RAM中的未加密数据
  • VeraCrypt内存保护
  • 物理安全
  • 恶意软件
  • 多用户环境
  • 真实性和完整性
  • 选择密码和密钥文件
  • 更改密码和密钥文件
  • Trim操作
  • 损耗均衡
  • 重新分配的扇区
  • 磁盘碎片整理
  • 日志文件系统
  • 卷克隆
  • 额外的安全要求和预防措施


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 安全要求和预防措施 >> 数据泄露

数据泄露

当挂载VeraCrypt卷时，操作系统和第三方应用程序可能会将VeraCrypt卷中存储的数据的未加密信息（例如，最近访问文件的文件名和位置、文件索引工具创建的数据库等），或者以未加密形式存储的数据本身（临时文件等），或者VeraCrypt卷中文件系统的未加密信息写入未加密卷（通常是未加密的系统卷）。

请注意，Windows会自动记录大量潜在的敏感数据，例如您打开的文件的名称和位置、您运行的应用程序等。例如，Windows使用一组称为“shellbags”的注册表项来存储使用资源管理器时文件夹的名称、大小、视图、图标和位置。每次打开文件夹时，这些信息都会更新，包括访问的时间和日期。根据操作系统版本和用户配置文件的不同，Windows Shellbags可能会在几个位置找到。在Windows XP系统上，shellbags可能位于"HKEY_USERS\{用户ID}\Software\Microsoft\Windows\Shell\"和"HKEY_USERS\{用户ID}\Software\Microsoft\Windows\ShellNoRoam\"下。在Windows 7系统上，shellbags可能位于"HEKY_USERS\{用户ID}\Local Settings\Software\Microsoft\Windows\Shell\"下。更多信息请访问 https://www.sans.org/reading-room/whitepapers/forensics/windows-shellbag-forensics-in-depth-34545。

此外，从Windows 8开始，每次挂载使用NTFS格式化的VeraCrypt卷时，系统事件日志都会写入事件98，其中将包含该卷的设备名称（\\device\VeraCryptVolumeXX）。如 此处 所述，此事件日志“功能”是Windows 8中作为新引入的NTFS健康检查的一部分引入的。为避免此泄露，必须将VeraCrypt卷 作为可移动介质 挂载。非常感谢Liran Elharar发现了此泄露及其解决方法。

为防止数据泄露，您必须遵循以下步骤（可能存在替代步骤）：

  • 如果您 不需要 似是而非的否认性：
    • 加密系统分区/驱动器（有关如何操作的信息，请参阅 系统加密 章节），并确保在每次处理敏感数据的会话期间，仅挂载加密或只读文件系统。

      或者，
    • 如果您无法执行上述操作，请下载或创建操作系统的“Live CD”版本（即完全存储在CD/DVD上并从其启动的“实时”系统），以确保写入系统卷的任何数据都写入RAM磁盘。当您需要处理敏感数据时，启动此类Live CD/DVD，并确保在会话期间仅挂载加密和/或只读文件系统。
  • 如果您需要似是而非的否认性：
    • 创建隐藏操作系统。VeraCrypt将提供自动数据泄露保护。有关更多信息，请参阅 隐藏操作系统 部分。

      或者，
    • 如果您无法执行上述操作，请下载或创建操作系统的“Live CD”版本（即完全存储在CD/DVD上并从其启动的“实时”系统），以确保写入系统卷的任何数据都写入RAM磁盘。当您需要处理敏感数据时，启动此类Live CD/DVD。如果您使用隐藏卷，请遵循 隐藏卷的安全要求和预防措施 子部分中列出的安全要求和预防措施。如果您不使用隐藏卷，请确保在会话期间仅挂载非系统分区托管的VeraCrypt卷和/或只读文件系统。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 安全要求和预防措施 >> 数据泄露 >> 分页文件

分页文件

注意：如果系统分区或系统驱动器已加密（有关详细信息，请参阅 系统加密 章节），并且所有分页文件都位于 系统加密 密钥范围内的一个或多个分区上（例如，Windows 安装所在的分区，有关详细信息，请参阅本小节的第四段），则以下描述的问题不会影响您。
分页文件（也称为交换文件）由 Windows 用于存储无法放入内存的程序和数据文件部分。这意味着您认为仅存储在 RAM 中的敏感数据实际上可能会在您不知情的情况下由 Windows 以 未加密 的形式写入硬盘。

请注意，VeraCrypt 无法 阻止在 RAM 中打开的敏感文件内容以 未加密 的形式保存到分页文件中（请注意，当您在文本编辑器等软件中打开存储在 VeraCrypt 卷上的文件时，文件内容会以 未加密 的形式存储在 RAM 中）。
为防止上述问题，请对系统分区/驱动器进行加密（有关如何操作的信息，请参阅 系统加密 章节），并确保所有分页文件都位于系统加密密钥范围内的一个或多个分区上（例如，Windows 安装所在的分区）。请注意，在 Windows XP 中，默认情况下通常会满足最后一个条件。但是，Windows Vista 及更高版本的 Windows 默认配置为在任何合适的卷上创建分页文件。因此，在开始使用 VeraCrypt 之前，您必须执行以下步骤：右键单击桌面上或 开始菜单 中的“计算机”（或“我的电脑”）图标，然后选择 属性 >（在 Windows Vista 或更高版本上：> 高级系统设置 >）高级 选项卡 > 性能 部分 > 设置 > 高级 选项卡 > 虚拟内存 部分 > 更改。在 Windows Vista 或更高版本上，禁用“自动管理所有驱动器的分页文件大小”。然后确保可用于创建分页文件的卷列表中仅包含系统加密预期密钥范围内的卷（例如，Windows 安装所在的卷）。要禁用在特定卷上创建分页文件，请选择该卷，然后选择“无分页文件”并点击 设置。完成后，点击 确定 并重启计算机。

注意：您可能还需要考虑创建一个隐藏操作系统（有关详细信息，请参阅 隐藏操作系统 部分）。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 安全要求与预防措施 >> 数据泄露 >> 内存转储文件

内存转储文件

注意：如果系统分区或系统驱动器已加密（更多信息，请参阅系统加密章节），并且系统配置为将内存转储文件写入系统驱动器（通常默认如此），则以下描述的问题不会影响您。
大多数操作系统，包括Windows，都可以配置为在发生错误（系统崩溃、“蓝屏”、错误检查）时，将调试信息和系统内存内容写入所谓的内存转储文件（也称为崩溃转储文件）。因此，内存转储文件可能包含敏感数据。VeraCrypt 无法 防止缓存的密码、加密密钥以及在RAM中打开的敏感文件内容以 未加密 的形式保存到内存转储文件中。请注意，当您在文本编辑器等程序中打开存储在VeraCrypt卷上的文件时，文件内容会以 未加密 的形式存储在RAM中（并且在计算机关机之前，它可能会一直以 未加密 的形式保留在RAM中）。另外，当挂载VeraCrypt卷时，其主密钥会以 未加密 的形式存储在RAM中。因此，至少在每次处理任何敏感数据以及挂载VeraCrypt卷的会话期间，您必须禁用计算机上的内存转储文件生成功能。在Windows XP或更高版本中，您可以右键单击桌面上或 开始菜单 中的“计算机”（或“我的电脑”）图标，然后选择 属性 >（在Windows Vista或更高版本中：> 高级系统设置 >）高级 选项卡 > 启动和恢复 部分 > 设置 > 写入调试信息 部分 > 选择 (无) > 确定。
Windows XP/2003用户注意事项：由于Windows XP和Windows 2003没有提供用于加密内存转储文件的API，如果系统分区/驱动器由VeraCrypt加密，并且您的Windows XP系统配置为将内存转储文件写入系统驱动器，VeraCrypt驱动程序会自动阻止Windows向内存转储文件写入任何数据.


文档 >> 安全要求与预防措施 >> 数据泄露 >> 休眠文件

休眠文件

注意：如果系统分区或系统驱动器已加密*（有关详细信息，请参阅系统加密章节），并且休眠文件位于系统加密密钥范围内的某个分区上（通常默认情况下是这样，例如，位于安装Windows的分区上），则以下描述的问题不会影响您。当计算机进入休眠状态时，数据会在写入休眠文件之前进行实时加密。

当计算机进入休眠状态（或进入节能模式）时，其系统内存的内容会被写入硬盘上的所谓休眠文件。您可以配置VeraCrypt（设置 > 首选项 > 进入节能模式时卸载所有卷），使其在计算机进入休眠状态（或进入节能模式）之前自动卸载所有已挂载的VeraCrypt卷，擦除存储在RAM中的主密钥以及缓存的密码（如果有的话）。但是，请记住，如果您不使用系统加密（请参阅系统加密章节），VeraCrypt仍然无法可靠地防止在RAM中打开的敏感文件内容以未加密的形式保存到休眠文件中。请注意，当您在文本编辑器等程序中打开存储在VeraCrypt卷上的文件时，文件内容会以未加密的形式存储在RAM中（并且在计算机关闭之前可能一直保持未加密状态）。

请注意，当Windows进入睡眠模式时，它可能实际上被配置为进入所谓的混合睡眠模式，其中涉及休眠。此外，操作系统可能被配置为在您单击或选择“关机”时进入休眠或混合睡眠模式（有关更多信息，请参阅您的操作系统文档）。

为防止上述问题，请对系统分区/驱动器进行加密（有关如何操作的信息，请参阅系统加密章节），并确保休眠文件位于系统加密密钥范围内的某个分区上（通常默认情况下是这样，例如，位于安装Windows的分区上）。当计算机进入休眠状态时，数据会在写入休眠文件之前进行实时加密。

注意：您可能还需要考虑创建一个隐藏操作系统（有关更多信息，请参阅隐藏操作系统部分）.

或者，如果您无法使用系统加密，请至少在每次处理任何敏感数据并挂载VeraCrypt卷的会话期间禁用或防止计算机进入休眠状态。

* 免责声明：由于Windows XP和Windows 2003没有提供用于加密休眠文件的API，VeraCrypt必须修改Windows XP/2003的未记录组件，以允许用户加密休眠文件。因此，VeraCrypt不能保证Windows XP/2003的休眠文件始终会被加密。针对我们关于缺少API的公开投诉，微软开始在Windows Vista及更高版本的Windows中提供用于加密休眠文件的公共API。VeraCrypt使用了这个API，因此能够在Windows Vista及更高版本的Windows下安全地加密休眠文件。因此，如果您使用Windows XP/2003并且希望休眠文件能够安全加密，我们强烈建议您升级到Windows Vista或更高版本。


文档 >> 安全要求与预防措施 >> 内存中的未加密数据

内存中的未加密数据

需要注意的是，VeraCrypt是一款磁盘加密软件，它仅对磁盘进行加密，而不加密内存（RAM）。
请记住，大多数程序不会清除其从VeraCrypt卷加载未加密（部分）文件时所使用的内存区域（缓冲区）。这意味着，在您退出此类程序后，它所处理的未加密数据可能会保留在内存（RAM）中，直到计算机被关闭（并且，根据一些研究人员的说法，甚至在电源关闭后的一段时间内仍会保留*）。此外，如果您在文本编辑器中打开存储在VeraCrypt卷上的文件，然后对VeraCrypt卷进行强制卸载，那么该文件将在文本编辑器使用（分配）的内存区域（RAM）中保持未加密状态。这同样适用于强制自动卸载。
本质上，未加密的主密钥也必须存储在RAM中。当非系统VeraCrypt卷被卸载时，VeraCrypt会擦除存储在RAM中的主密钥。当计算机正常重启（或正常关机）时，所有非系统VeraCrypt卷会自动卸载，因此，VeraCrypt驱动程序会擦除存储在RAM中的所有主密钥（系统分区/驱动器的主密钥除外 —— 见下文）。然而，当电源突然中断、计算机被重置（非正常重启）或系统崩溃时， VeraCrypt自然会停止运行，因此无法擦除任何密钥或其他敏感数据。此外，由于微软没有提供任何用于处理休眠和关机的适当API，当计算机休眠、关机或重启时，用于系统加密的主密钥无法可靠地（实际上也不会）从RAM中擦除**。
从1.24版本开始，VeraCrypt引入了一种机制，用于加密RAM中的主密钥和缓存密码。这种RAM加密机制必须在“性能/驱动程序配置”对话框中手动激活。RAM加密会带来一定的性能开销（根据CPU速度，在5%到15%之间），并且会禁用Windows休眠功能。
此外，VeraCrypt 1.24及更高版本在使用系统加密时提供了一种额外的安全机制，当新设备连接到计算机时，该机制会使VeraCrypt从RAM中擦除主密钥。这种额外的机制可以在系统设置对话框中通过一个选项来激活。
尽管上述两种机制都为主密钥和缓存密码提供了强大的保护，但用户仍应采取与保护RAM中敏感数据相关的常规预防措施。
总结来说，VeraCrypt 无法也 不会 确保RAM中不包含敏感数据（例如密码、主密钥或解密后的数据）。因此，在每次使用VeraCrypt卷或运行加密操作系统的会话结束后，您必须关闭计算机（或者，如果 休眠文件已按照 系统加密的方式进行加密，则可以让计算机进入休眠状态），然后在再次开机之前，让计算机至少断电几分钟（时间越长越好）。这是清除RAM所必需的操作（另见 休眠文件部分）。

* 据称，在正常工作温度（26 - 44 °C）下，数据可保留1.5 - 35秒；当内存模块在计算机运行时被冷却到极低温度（例如 -50 °C）时，数据可保留长达数小时。截至2008年，新型内存模块的数据衰减时间据称比旧型内存模块短得多（例如1.5 - 2.5秒）。
** 在从RAM中擦除密钥之前，必须先卸载相应的VeraCrypt卷。对于非系统卷，这不会导致任何问题。然而，由于微软目前没有提供任何用于处理系统关机最后阶段的适当API，位于加密系统卷上且在系统关机过程中被卸载的分页文件可能仍然包含有效的换出内存页面（包括Windows系统文件的部分内容）。这可能会导致“蓝屏”错误。因此，为了防止“蓝屏”错误，VeraCrypt在系统关机或重启时不会卸载加密系统卷，因此也无法清除系统卷的主密钥。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 安全要求与预防措施 >> VeraCrypt内存加密

VeraCrypt内存加密机制

简介

VeraCrypt内存加密旨在保护存储在易失性内存中的磁盘加密密钥免受某些类型的攻击。该机制的主要目标是：

  • 防范冷启动攻击。
  • 添加一层混淆层，显著增加从内存转储（无论是实时还是离线）中恢复加密主密钥的难度。

实现概述

以下是内存加密实现方式的总结：

  1. 在Windows启动时，VeraCrypt驱动程序会分配一个1MiB的内存区域。如果分配失败，会将大小减半，直到分配成功（最小大小为8KiB）。所有这些变量都分配在非分页内核内存空间中。
  2. 然后，使用基于ChaCha20的密码学安全伪随机数生成器（CSPRNG）生成的随机字节填充该内存区域。
  3. 生成两个随机的64位整数，即 HashSeedMask 和 CipherIVMask。
  4. 对于每个卷的主密钥，内存加密算法会从内存区域和要加密的内存中提取的唯一值的组合中派生一个唯一密钥。这确保了每个加密内存区域都有一个不同的密钥。使用依赖于位置的密钥和初始化向量（IV）可防止主密钥从内存转储中轻易提取。
  5. 对于每个请求，主密钥都会被解密，这需要一个快速的解密算法。为此，使用了ChaCha12。
  6. 一旦挂载一个卷，其主密钥会立即使用上述算法进行加密。
  7. 对于卷的每个I/O请求，主密钥仅在该请求期间被解密，然后安全擦除。
  8. 卸载卷时，加密的主密钥会从内存中安全移除。
  9. 在Windows关机或重启时，启动期间分配的内存区域会被安全擦除。

防范冷启动攻击

通过使用大内存页进行密钥派生，可以减轻冷启动攻击的影响。这确保攻击者无法恢复主密钥，因为关机后这个大内存区域的部分内容可能会损坏且无法恢复。有关冷启动攻击和缓解技术的更多详细信息，请参阅参考论文：

  • 冷启动攻击（BlackHat）
  • 内存劫持

与Windows休眠和快速启动不兼容

VeraCrypt的内存加密与Windows休眠和快速启动功能不兼容。在激活内存加密之前，VeraCrypt会禁用这些功能，以确保加密机制的安全性和功能性。

算法选择

算法的选择基于安全性和性能之间的平衡：

  • t1ha2： 一种非加密哈希函数，因其令人印象深刻的速度和能够达到GiB/s的哈希速率而被选中。由于每个加密/解密请求都要从1MB的内存区域派生密钥，因此这一点至关重要。它还符合严格雪崩准则，这对于此用例至关重要。
  • ChaCha12： 出于性能原因，选择了ChaCha12而不是ChaCha20，它在保持快速加密/解密速度的同时提供了足够的加密强度。

关键算法

有两个核心算法是内存加密过程的基础：

1. VcGetEncryptionID

为要加密的内存缓冲区计算一个唯一ID。

    - 输入：pCryptoInfo，一个用于加密/解密的CRYPTO_INFO变量
    - 输出：一个64位整数，用于标识pCryptoInfo变量
    - 步骤：
      - 计算pCryptoInfo的ks和ks2字段的虚拟内存地址之和：encID = ((uint64) pCryptoInfo->ks) + ((uint64) pCryptoInfo->ks2)
      - 返回结果

2. VcProtectMemory

使用VcGetEncryptionID生成的唯一ID对内存缓冲区进行加密。

    - 输入：
      - encID，要加密的内存的唯一ID
      - pbData，指向要加密的内存的指针
      - pbKeyDerivationArea，驱动程序在启动时分配的内存区域
      - HashSeedMask和CipherIVMask，启动时生成的两个64位随机整数
    - 输出：
      - 无；pbData处的内存将在原地加密
    - 步骤：
      - 派生哈希种子：hashSeed = (((uint64) pbKeyDerivationArea) + encID) ^ HashSeedMask
      - 计算128位哈希值：hash128 = t1h2 (pbKeyDerivationArea,hashSeed)。
      - 将hash128分解为两个64位整数：hash128 = hash128_1 || hash128_2
      - 为ChaCha12创建一个256位密钥：chachaKey = hash128_1 || hash128_2 || (hash128_1 OR hash128_2) || (hash128_1 + hash128_2)
      - 使用ChaCha12以hashSeed作为IV对chachaKey本身进行加密：ChaCha256Encrypt (chachaKey, hashSeed, chachaKey)
      - 派生ChaCha12的64位IV：chachaIV = (((uint64) pbKeyDerivationArea) + encID) ^ CipherIVMask
      - 使用ChaCha12对pbData处的内存进行加密：ChaCha256Encrypt (chachaKey, chachaIV, pbData)
      - 安全擦除临时值

值得注意的是，由于ChaCha12是一种流密码，加密和解密过程是相同的，因此 VcProtectMemory 函数可同时用于加密和解密。

要深入了解并查看代码库，可以访问VeraCrypt仓库，并在 src/Common/Crypto.c 文件中探索上述函数。

额外的安全措施

从1.24版本开始，VeraCrypt集成了一种机制，当系统加密处于活动状态时，该机制会检测新设备插入系统的情况。如果插入了新设备，主密钥会立即从内存中清除，导致Windows蓝屏死机（BSOD）。这可以防范使用专用设备从运行中的系统中提取内存的攻击。但是，为了达到最高效率，此功能应与内存加密结合使用。
要启用此功能，请导航至菜单“系统” -> “设置”，并勾选 “如果插入新设备，则从内存中清除加密密钥” 选项。

休眠和快速启动的技术限制

Windows休眠和快速启动功能会将内存内容保存到硬盘。在VeraCrypt的内存加密上下文中，支持这些功能存在一个重大挑战，即所谓的“先有鸡还是先有蛋”的问题。
为了保持安全性，内存加密中用于密钥派生的大内存区域必须以加密格式存储，与通常应用于当前驱动器的VeraCrypt加密分开。这个单独的加密存储还必须能够使用与预启动身份验证相同的密码解锁。此外，此过程必须在启动序列的早期进行，在文件系统访问可用之前，这就需要将加密数据原始存储在不同磁盘的特定扇区中。
虽然这在技术上是可行的，但这种解决方案的复杂性和对用户不友好性使其不适合标准部署。因此，启用内存加密需要禁用Windows休眠和快速启动功能。


文档 >> 安全要求与预防措施 >> VeraCrypt内存保护

VeraCrypt内存保护机制

简介

VeraCrypt始终致力于在保持最高安全级别的同时提升用户体验。内存保护机制就是这样一种安全特性。然而，考虑到可访问性需求，我们也为部分用户提供了禁用此机制的选项。本页面将对此进行详细介绍。

内存保护机制概述

内存保护机制可确保非管理员进程无法访问VeraCrypt进程的内存。这主要有两个目的：

  • 防范恶意活动：该机制可防止非管理员进程向VeraCrypt进程注入有害数据或代码。
  • 保护敏感数据：尽管VeraCrypt设计为不会在内存中留下敏感数据，但此功能通过确保其他非管理员进程无法访问或提取潜在的敏感信息，提供了额外的保障。

为何引入禁用内存保护的选项？

一些辅助工具，如屏幕阅读器，需要访问软件的进程内存才能有效地解释和与用户界面（UI）进行交互。VeraCrypt的内存保护无意中阻碍了此类工具的正常运行。为确保依赖辅助工具的用户仍能无障碍地使用VeraCrypt，我们引入了此选项。

如何启用/禁用内存保护机制？

默认情况下，内存保护机制处于启用状态。不过，您可以通过VeraCrypt主用户界面或在安装过程中禁用它。

  1. 安装过程中：
    • 在安装向导中，您会看到 "为兼容辅助工具禁用内存保护" 复选框。
    • 如果您想禁用内存保护，请勾选该复选框；若要继续使用内存保护，请保持未勾选状态。
    • 继续完成安装的其余步骤。
  2. 安装后：
    • 打开VeraCrypt主用户界面，导航至菜单“设置” -> “性能/驱动程序配置”。
    • 根据您的需求找到并勾选/取消勾选 "为兼容辅助工具禁用内存保护" 选项。您将收到通知，提示更改生效需要重启操作系统。
    • 点击 确定。
  3. 升级或修复/重新安装期间
    • 在安装向导中，您会看到 "为兼容辅助工具禁用内存保护" 复选框。
    • 根据您的需求勾选/取消勾选 "为兼容辅助工具禁用内存保护" 选项。
    • 继续完成升级或修复/重新安装的其余步骤。
    • 如果您更改了内存保护设置，将收到通知提示需要重启操作系统。

风险与注意事项

虽然禁用内存保护机制对某些用户来说可能是必要的，但了解其中的风险至关重要：

  • 潜在暴露风险： 禁用该机制可能会使VeraCrypt进程的内存暴露给恶意进程。
  • 最佳实践： 如果您不需要使用辅助工具来使用VeraCrypt，建议保持内存保护机制启用状态。

常见问题解答

问：内存保护机制的默认设置是什么？
答： 内存保护机制默认处于启用状态。

问：如何知道内存保护机制是启用还是禁用的？
答： 您可以在VeraCrypt主用户界面中查看内存保护机制的状态。导航至菜单“设置” -> “性能/驱动程序配置”。如果 "为兼容辅助工具禁用内存保护" 选项被勾选，则内存保护机制已禁用；如果该选项未被勾选，则内存保护机制已启用。

问：禁用内存保护会降低VeraCrypt的加密强度吗？
答： 不会，加密算法及其强度保持不变。受影响的只是对非管理员进程潜在的内存窥探和注入的保护。

问：我不使用辅助工具。是否应该禁用此功能？
答： 不，为了增强安全性，最好保持内存保护机制启用状态。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 安全要求与预防措施 >> 物理安全

物理安全

如果攻击者能够物理访问计算机硬件，并且您在攻击者进行物理访问后继续使用该计算机，那么VeraCrypt可能无法保障计算机上的数据安全。* 这是因为攻击者可能会修改硬件或附加恶意硬件组件（如硬件击键记录器），这些组件会捕获密码或加密密钥（例如，当您挂载VeraCrypt卷时），或者以其他方式破坏计算机的安全性。因此，您绝对不能在被攻击者物理访问过的计算机上使用VeraCrypt。此外，在攻击者物理访问计算机时，您必须确保VeraCrypt（包括其设备驱动程序）未运行。有关攻击者直接进行物理访问的硬件攻击的更多信息，请参阅 内存中的未加密数据 部分。
此外，即使攻击者无法直接物理访问计算机硬件，他/她也可能通过远程拦截和分析计算机硬件（包括显示器和电缆）发出的辐射来破坏计算机的物理安全。例如，拦截键盘与计算机连接电缆发出的辐射可以泄露您输入的密码。本文件无法列举所有此类攻击（有时称为TEMPEST攻击）以及所有已知的防范方法（如屏蔽或无线电干扰）。防范此类攻击是您的责任。如果您不采取防范措施，VeraCrypt可能无法保障计算机上的数据安全。

* 在本节（物理安全）中，“计算机上的数据”是指连接到计算机的内部和外部存储设备/介质（包括可移动设备和网络驱动器）上的数据。


文档 >> 安全要求与预防措施 >> 恶意软件

恶意软件

“恶意软件”这一术语统称所有类型的恶意软件，如计算机病毒、特洛伊木马、间谍软件，或者一般来说，任何被攻击者篡改、准备或控制的软件（包括VeraCrypt或操作系统组件）。某些类型的恶意软件旨在记录击键信息，包括输入的密码（这些被捕获的密码随后要么通过互联网发送给攻击者，要么保存到未加密的本地驱动器中，攻击者在获得计算机的物理访问权限后可能会读取这些密码）。如果您在感染了任何类型恶意软件的计算机上使用VeraCrypt，VeraCrypt可能无法保护计算机上的数据。* 因此，您绝对不能在这样的计算机上使用VeraCrypt。
需要注意的是，VeraCrypt是一款加密软件，并非反恶意软件软件。防止恶意软件在计算机上运行是您的责任。如果您不这样做，VeraCrypt可能无法保护计算机上的数据。
有许多规则可以帮助您防止恶意软件在计算机上运行。其中最重要的规则包括：保持您的操作系统、互联网浏览器和其他关键软件始终是最新版本。在Windows XP或更高版本中，为所有程序启用数据执行保护（DEP）。** 不要打开可疑的电子邮件附件，尤其是可执行文件，即使它们看起来是由您的亲戚或朋友发送的（他们的计算机可能已感染恶意软件，会在他们不知情的情况下从他们的计算机/账户发送恶意电子邮件）。不要点击电子邮件或网站中包含的可疑链接（即使电子邮件/网站看起来无害或值得信赖）。不要访问任何可疑的网站。不要下载或安装任何可疑的软件。考虑使用优质、可靠的反恶意软件软件。

* 在本节（恶意软件）中，“计算机上的数据”指连接到计算机的内部和外部存储设备/介质（包括可移动设备和网络驱动器）上的数据。
** DEP代表数据执行保护。有关DEP的更多信息，请访问 https://support.microsoft.com/kb/875352 和 http://technet.microsoft.com/en-us/library/cc700810.aspx。


文档 >> 安全要求和预防措施 >> 多用户环境

多用户环境

请记住，已挂载的VeraCrypt卷的内容对所有已登录用户可见（可访问）。可以设置NTFS文件/文件夹权限来防止这种情况，但如果该卷作为可移动介质挂载（请参阅作为可移动介质挂载的卷部分），并且是在Windows Vista或更高版本的桌面版操作系统下，则可能无法阻止。（作为可移动介质挂载的卷的扇区，即使在文件系统级别对某些用户不可访问，但在卷级别可能对无管理员权限的用户是可访问的）。

此外，在Windows系统中，密码缓存由所有已登录用户共享（有关更多信息，请参阅设置 -> 首选项部分中的在驱动程序内存中缓存密码子部分）。

另请注意，在Windows XP或更高版本中切换用户（快速用户切换功能）不会卸载已成功挂载的VeraCrypt卷（与系统重启不同，系统重启会卸载所有已挂载的VeraCrypt卷）。

在Windows 2000系统中，当要挂载由文件托管的VeraCrypt卷时，会忽略容器文件的权限。在所有受支持的Windows版本中，无管理员权限的用户可以挂载任何由分区/设备托管的VeraCrypt卷（前提是他们提供了正确的密码和/或密钥文件）。无管理员权限的用户只能卸载他们自己挂载的卷。但是，这不适用于系统收藏夹卷，除非您启用（默认禁用）设置 > 系统收藏夹卷 > 仅允许管理员在VeraCrypt中查看和卸载系统收藏夹卷选项。


文档 >> 安全要求和预防措施 >> 真实性和完整性

真实性和完整性

VeraCrypt使用加密技术来保护其加密数据的机密性。VeraCrypt既不保护也不验证其加密或解密数据的完整性和真实性。因此，如果你允许对手修改VeraCrypt加密的数据，他可以将数据的任意16字节块的值设置为随机值，或者设置为他过去能够获取的旧值。请注意，对手无法选择你在VeraCrypt解密修改后的块时将得到的值 —— 该值将是随机的 —— 除非攻击者恢复他过去能够获取的加密块的旧版本。你有责任验证VeraCrypt加密或解密的数据的完整性和真实性（例如，通过使用适当的第三方软件）。

另请参阅： 物理安全， 安全模型


文档 >> 安全要求和预防措施 >> 选择密码和密钥文件

选择密码和密钥文件

选择一个好的密码非常重要。你必须避免选择仅包含字典中能找到的单个单词（或此类单词的组合）的密码。密码中不得包含任何姓名、出生日期、账号号码或其他容易猜测的信息。一个好的密码是由大写和小写字母、数字以及特殊字符（如 @ ^ = $ * + 等）随机组合而成。我们强烈建议选择长度超过20个字符的密码（越长越好）。短密码很容易被暴力破解。

为了使对密钥文件的暴力攻击不可行，密钥文件的大小必须至少为30字节。如果一个卷使用多个密钥文件，那么至少其中一个密钥文件的大小必须为30字节或更大。请注意，30字节的限制假设密钥文件具有大量的熵。如果文件的前1024千字节仅包含少量的熵，则无论文件大小如何，都不得将其用作密钥文件。如果你不确定熵是什么意思，我们建议你让VeraCrypt生成一个包含随机内容的文件，并将其用作密钥文件（选择 工具 -> 密钥文件生成器）。

在创建卷、加密系统分区/驱动器或更改密码/密钥文件时，在卷创建或密码/密钥文件更改之前/期间，你不得允许任何第三方选择或修改密码/密钥文件。例如，你不得使用任何你不确定其质量高且不受攻击者控制的密码生成器（无论是网站应用程序还是本地运行的程序），并且密钥文件不得是你从互联网下载的文件或计算机其他用户（无论他们是否为管理员）可以访问的文件。


文档 >> 安全要求和预防措施 >> 更改密码和密钥文件

更改密码和密钥文件

请注意，卷头（使用从密码/密钥文件派生的头密钥进行加密）包含用于加密卷的主密钥（不要与密码混淆）。如果攻击者在你更改卷密码和/或密钥文件之前被允许复制你的卷，他可能能够使用他复制的VeraCrypt卷副本或片段（旧的卷头），通过之前用于挂载该卷但已被泄露的密码和/或密钥文件来挂载你的卷。

如果你不确定攻击者是否知道你的密码（或拥有你的密钥文件），以及在你需要更改卷的密码和/或密钥文件时他是否有你的卷的副本，强烈建议你创建一个新的VeraCrypt卷，并将文件从旧卷移动到新卷（新卷将有不同的主密钥）。

此外，请注意，如果攻击者知道你的密码（或拥有你的密钥文件）并且可以访问你的卷，他可能能够检索并保存其主密钥。如果他这样做了，即使你更改了卷的密码和/或密钥文件，他仍可能能够解密你的卷（因为当你更改卷密码和/或密钥文件时，主密钥不会改变）。在这种情况下，请创建一个新的VeraCrypt卷，并将所有文件从旧卷移动到这个新卷。

本章的以下部分包含了与更改密码和/或密钥文件可能涉及的安全问题相关的额外信息：

  • 安全要求和预防措施
  • 日志文件系统
  • 磁盘碎片整理
  • 重新分配扇区


文档 >> 安全要求与预防措施 >> TRIM操作

TRIM操作

一些存储设备（例如，某些固态硬盘，包括USB闪存驱动器）使用所谓的“TRIM”操作来标记驱动器扇区为空闲，例如当删除文件时。因此，即使这些扇区位于VeraCrypt加密的驱动器部分内，它们也可能包含未加密的零或其他未定义的数据（未加密）。

在Windows系统上，VeraCrypt允许用户控制非系统卷和系统卷的TRIM操作：
  • 对于非系统卷，TRIM默认被阻止。用户可以通过VeraCrypt的界面，导航到“设置 -> 性能/驱动程序配置”，并勾选“允许对非系统SSD分区/驱动器执行TRIM命令”选项来启用TRIM。
  • 对于系统加密，TRIM默认启用（除非正在运行隐藏操作系统）。用户可以通过导航到“系统 -> 设置”，并勾选“阻止对系统分区/驱动器执行TRIM命令”选项来禁用TRIM。
在Linux系统下，VeraCrypt不会阻止使用原生Linux内核加密服务的卷的TRIM操作，这是默认设置。若要在Linux上阻止TRIM，用户应在VeraCrypt的偏好设置中启用“不使用内核加密服务”选项（仅适用于之后挂载的卷），或者在命令行挂载时使用 --mount-options=nokernelcrypto 开关。

在macOS系统下，VeraCrypt不支持TRIM操作。因此，所有卷的TRIM始终被阻止。

在发生TRIM操作的情况下，攻击者将能够识别哪些扇区包含空闲空间（并可能利用此信息进行进一步的分析和攻击），并且 似是而非的否认能力可能会受到负面影响。为避免这些问题，用户应如前文所述在VeraCrypt设置中禁用TRIM，或者确保VeraCrypt卷不位于使用TRIM操作的驱动器上。

若要了解设备是否使用TRIM操作，请参考设备附带的文档或联系供应商/制造商。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 安全要求和预防措施 >> 损耗均衡

损耗均衡

一些存储设备（例如，某些固态硬盘，包括USB闪存驱动器）和一些文件系统采用所谓的损耗均衡机制来延长存储设备或介质的使用寿命。这些机制确保即使应用程序反复向同一逻辑扇区写入数据，数据也会均匀分布在介质上（逻辑扇区会被重新映射到不同的物理扇区）。因此，攻击者可能会获取单个扇区的多个“版本”。这可能会带来各种安全影响。例如，当您更改卷密码/密钥文件时，在正常情况下，卷头会被重新加密后的版本覆盖。然而，当卷位于采用损耗均衡机制的设备上时，VeraCrypt无法确保旧的卷头真的被覆盖。如果对手在设备上找到了原本要被覆盖的旧卷头，他可以使用旧的、已泄露的密码（和/或使用在卷头重新加密之前用于挂载卷的已泄露密钥文件）来挂载该卷。出于安全考虑，我们建议不要在采用损耗均衡机制的设备（或文件系统）上创建/存储VeraCrypt卷（并且不要使用VeraCrypt对这类设备或文件系统的任何部分进行加密）。
如果您决定不遵循此建议，并打算在采用损耗均衡机制的驱动器上进行原地加密，请确保在完全加密该分区/驱动器之前，它不包含任何敏感数据（VeraCrypt无法可靠地对这类驱动器上的现有数据进行安全的原地加密；但是，在分区/驱动器完全加密后，保存到其中的任何新数据都将被可靠地实时加密）。这包括以下预防措施：在运行VeraCrypt设置预启动身份验证之前，禁用分页文件并重启操作系统（在系统分区/驱动器完全加密后，您可以启用分页文件）。在您启动VeraCrypt设置预启动身份验证到系统分区/驱动器完全加密期间，必须防止休眠。但是，请注意，即使您遵循这些步骤，也不能保证您能防止数据泄露，并且设备上的敏感数据将被安全加密。有关更多信息，请参阅数据泄露、分页文件、休眠文件和内存转储文件部分。
如果您需要似是而非的否认性，则绝不能使用VeraCrypt对采用损耗均衡机制的设备（或文件系统）的任何部分进行加密（或在其上创建加密容器）。

要确定设备是否采用了损耗均衡机制，请参考设备附带的文档或联系供应商/制造商。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 安全要求和预防措施 >> 重新分配的扇区

重新分配的扇区

某些存储设备，如硬盘驱动器，会在内部重新分配/重新映射坏扇区。每当设备检测到一个无法写入数据的扇区时，它会将该扇区标记为坏扇区，并将其重新映射到驱动器上一个隐藏的保留区域中的扇区。随后对该坏扇区的任何读写操作都会被重定向到保留区域中的扇区。这意味着坏扇区中的任何现有数据仍会保留在驱动器上，并且无法被擦除（用其他数据覆盖）。这可能会带来各种安全隐患。例如，要在原地加密的数据可能会在坏扇区中保持未加密状态。同样，要擦除的数据（例如，在创建隐藏操作系统的过程中）可能会留在坏扇区中。每当扇区被重新分配时，似是而非的否认性（请参阅 似是而非的否认性 部分）可能会受到不利影响。更多可能的安全影响示例列在 安全要求和预防措施 部分。请注意，此列表并非详尽无遗（这些只是示例）。此外，VeraCrypt 无法 防止与重新分配的扇区相关或由其引起的任何安全问题。要了解硬盘驱动器上重新分配的扇区数量，您可以使用例如第三方软件工具来读取S.M.A.R.T.数据。


文档 >> 安全要求和预防措施 >> 磁盘碎片整理

磁盘碎片整理

当您（或操作系统）对存储文件型VeraCrypt容器的文件系统进行磁盘碎片整理时，VeraCrypt容器的副本（或其片段）可能会残留在宿主卷（即经过碎片整理的文件系统）的空闲空间中。 这可能会带来各种安全隐患。例如，如果您随后更改了卷的密码/密钥文件，而攻击者找到了VeraCrypt卷的旧副本或片段（旧的卷头），他可能会使用旧的、已泄露的密码（和/或使用在卷头重新加密之前用于挂载该卷的已泄露密钥文件）来挂载该卷。为防止此类情况以及其他可能的安全问题（如卷克隆部分所述），请采取以下措施之一：

  • 使用分区/设备型VeraCrypt卷，而非文件型。
  • 在进行磁盘碎片整理后，安全地擦除宿主卷（即经过碎片整理的文件系统）上的空闲空间。在Windows系统中，可以使用微软的免费工具 SDelete（https://technet.microsoft.com/en-us/sysinternals/bb897443.aspx）。在Linux系统中，可以使用GNU coreutils软件包中的 shred工具来完成此操作。
  • 不要对存储VeraCrypt卷的文件系统进行磁盘碎片整理。


文档 >> 安全要求与预防措施 >> 日志文件系统

日志文件系统

当基于文件的VeraCrypt容器存储在日志文件系统（如NTFS或Ext3）中时，VeraCrypt容器的副本（或其片段）可能会保留在宿主卷的空闲空间中。这可能会带来各种安全隐患。例如，如果您更改了卷密码/密钥文件，而对手找到了VeraCrypt卷的旧副本或片段（旧的卷头），他可能会使用旧的已泄露密码（和/或使用在卷头重新加密之前用于挂载该卷的已泄露密钥文件）来挂载该卷。一些日志文件系统还会在内部记录文件访问时间和其他潜在的敏感信息。如果您需要似是而非的否认（请参阅 似是而非的否认 部分），则绝不能将基于文件的VeraCrypt容器存储在日志文件系统中。为防止与日志文件系统相关的潜在安全问题，请采取以下措施之一：

  • 使用基于分区/设备的VeraCrypt卷，而非基于文件的卷。
  • 将容器存储在非日志文件系统（例如FAT32）中。


文档 >> 安全要求和预防措施 >> 卷克隆

卷克隆

切勿通过克隆现有VeraCrypt卷来创建新的VeraCrypt卷。始终使用VeraCrypt卷创建向导来创建新的VeraCrypt卷。如果克隆一个卷，然后同时使用该卷及其克隆卷，并且最终两个卷包含不同的数据，那么可能会有助于密码分析（两个卷将共享同一密钥集）。当卷中包含隐藏卷时，这一点尤其关键。另请注意，在这种情况下，似是而非的否认机制（请参阅 似是而非的否认 部分）是不可能实现的。另请参阅 如何安全备份 章节。


文档 >> 安全要求和预防措施 >> 附加安全要求和预防措施

附加安全要求和预防措施

除了本章（安全要求和预防措施）中描述的要求和预防措施外，您必须遵循并牢记以下章节和部分中列出的安全要求、预防措施和限制：

  • 如何安全备份
  • 限制
  • 安全模型
  • 与隐藏卷相关的安全要求和预防措施
  • 似是而非的否认性

另请参阅：数字签名


文档 >> 如何安全备份

如何安全备份

由于硬件或软件错误/故障，存储在VeraCrypt卷上的文件可能会损坏。因此，我们强烈建议您定期备份所有重要文件（当然，这不仅适用于存储在VeraCrypt卷上的加密数据，也适用于任何重要数据）。

非系统卷

要安全备份非系统VeraCrypt卷，建议遵循以下步骤：

  1. 使用VeraCrypt卷创建向导创建一个新的VeraCrypt卷（不要启用“快速格式化”选项或“动态”选项）。这将是您的“备份”卷，因此其大小应与您的“主”卷大小匹配（或更大）。

    如果“主”卷是一个隐藏的VeraCrypt卷（请参阅“隐藏卷”部分），则“备份”卷也必须是一个隐藏的VeraCrypt卷。在创建隐藏的“备份”卷之前，您必须为其创建一个新的宿主（外部）卷，且不要启用“快速格式化”选项。此外，特别是如果“备份”卷是文件宿主的，隐藏的“备份”卷应仅占用容器的一小部分，并且外部卷应几乎完全被文件填满（否则，隐藏卷的似是而非的否认性可能会受到不利影响）。
  2. 挂载新创建的“备份”卷。
  3. 挂载“主”卷。
  4. 将所有文件从已挂载的“主”卷直接复制到已挂载的“备份”卷。

重要提示：如果您将备份卷存储在对手可以反复访问的任何位置（例如，存放在银行保险箱中的设备上），每次您要备份该卷时，都应重复上述所有步骤（包括步骤1）（见下文）。

如果您遵循上述步骤，将有助于防止对手发现：

  • 卷的哪些扇区正在发生变化（因为您总是遵循步骤1）。例如，如果您将备份卷存储在存放在银行保险箱中的设备上（或对手可以反复访问的任何其他位置），并且该卷包含一个隐藏卷，这一点尤为重要（有关更多信息，请参阅“似是而非的否认性”一章中的“隐藏卷的安全要求和预防措施”小节）。
  • 其中一个卷是另一个卷的备份。

系统分区

注意：除了备份文件，我们还建议您备份VeraCrypt救援磁盘（选择“系统”>“创建救援磁盘”）。有关更多信息，请参阅“VeraCrypt救援磁盘”部分。

要安全可靠地备份加密的系统分区，建议遵循以下步骤：

  1. 如果您的计算机上安装了多个操作系统，请启动不需要预启动身份验证的操作系统。

    如果您的计算机上没有安装多个操作系统，您可以启动WinPE或BartPE CD/DVD（完全存储在CD/DVD上并从其启动的“实时”Windows；有关更多信息，请在“常见问题解答”部分中搜索关键字“BartPE”）。

    如果以上两种方法都不可行，请将您的系统驱动器作为辅助驱动器连接到另一台计算机，然后启动该计算机上安装的操作系统。

    注意：出于安全考虑，如果您要备份的操作系统位于一个隐藏的VeraCrypt卷中（请参阅“隐藏操作系统”部分），则在此步骤中启动的操作系统必须是另一个隐藏操作系统或“实时CD”操作系统（见上文）。有关更多信息，请参阅“似是而非的否认性”一章中的“隐藏卷的安全要求和预防措施”小节。
  2. 使用VeraCrypt卷创建向导创建一个新的非系统VeraCrypt卷（不要启用“快速格式化”选项或“动态”选项）。这将是您的“备份”卷，因此其大小应与您要备份的系统分区大小匹配（或更大）。

    如果您要备份的操作系统安装在一个隐藏的VeraCrypt卷中（请参阅“隐藏操作系统”部分），则“备份”卷也必须是一个隐藏的VeraCrypt卷。在创建隐藏的“备份”卷之前，您必须为其创建一个新的宿主（外部）卷，且不要启用“快速格式化”选项。此外，特别是如果“备份”卷是文件宿主的，隐藏的“备份”卷应仅占用容器的一小部分，并且外部卷应几乎完全被文件填满（否则，隐藏卷的似是而非的否认性可能会受到不利影响）。
  3. 挂载新创建的“备份”卷。
  4. 按照以下步骤挂载您要备份的系统分区：
    1. 点击“选择设备”，然后选择您要备份的系统分区（如果是隐藏操作系统，则选择包含安装操作系统的隐藏卷的分区）。
    2. 点击“确定”。
    3. 选择“系统”>“无需预启动身份验证挂载”。
    4. 输入您的预启动身份验证密码，然后点击“确定”。
  5. 挂载“备份”卷，然后使用第三方程序或Windows工具创建驻留在系统分区上的文件系统的映像，并将映像直接存储在已挂载的备份卷上。

重要提示：如果您将备份卷存储在对手可以反复访问的任何位置（例如，存放在银行保险箱中的设备上），每次您要备份该卷时，都应重复上述所有步骤（包括步骤2）（见下文）。

如果您遵循上述步骤，将有助于防止对手发现：

  • 卷的哪些扇区正在发生变化（因为您总是遵循步骤2）。例如，如果您将备份卷存储在存放在银行保险箱中的设备上（或对手可以反复访问的任何其他位置），并且该卷包含一个隐藏卷，这一点尤为重要（有关更多信息，请参阅“似是而非的否认性”一章中的“隐藏卷的安全要求和预防措施”小节）。
  • 其中一个卷是另一个卷的备份。

一般注意事项

如果您将备份卷存储在对手可以复制该卷的任何位置，请考虑使用级联密码对该卷进行加密（例如，使用AES - Twofish - Serpent）。否则，如果该卷仅使用单一加密算法进行加密，并且该算法后来被破解（例如，由于密码分析技术的进步），攻击者可能能够解密其复制的卷。三种不同加密算法同时被破解的概率明显低于仅其中一种被破解的概率。


文档 >> 杂项

杂项

  • 无需管理员权限使用
  • 网络共享
  • 后台任务
  • 可移动介质卷
  • VeraCrypt系统文件
  • 移除加密
  • 卸载VeraCrypt
  • 数字签名


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 杂项 >> 无管理员权限使用

无管理员权限使用VeraCrypt

在Windows系统中，没有管理员权限的用户可以使用VeraCrypt，但前提是系统管理员已经在该系统上安装了VeraCrypt。这是因为VeraCrypt需要一个设备驱动程序来提供透明的即时加密/解密功能，而没有管理员权限的用户无法在Windows系统中安装/启动设备驱动程序。

在系统管理员在系统上安装VeraCrypt之后，没有管理员权限的用户将能够运行VeraCrypt，挂载/卸载任何类型的VeraCrypt卷，从卷中加载/保存数据，并在系统上创建文件托管的VeraCrypt卷。然而，没有管理员权限的用户不能对分区进行加密/格式化，不能创建NTFS卷，不能安装/卸载VeraCrypt，不能更改VeraCrypt分区/设备的密码/密钥文件，不能备份/恢复VeraCrypt分区/设备的头部，并且不能以“便携式”模式运行VeraCrypt。

警告：无论你使用何种软件，就个人隐私而言，在大多数情况下，在没有管理员权限的系统上处理敏感数据是不安全的，因为管理员可以轻松捕获和复制你的敏感数据，包括密码和密钥。


文档 >> 杂项 >> 网络共享

网络共享

如果需要从多个操作系统同时访问单个VeraCrypt卷，有两种选择：

  1. 仅在一台计算机（例如服务器）上挂载VeraCrypt卷，并且仅通过网络共享已挂载的VeraCrypt卷的内容（即VeraCrypt卷内的文件系统）。其他计算机或系统上的用户将不会挂载该卷（它已在服务器上挂载）。

    优点：所有用户都可以向VeraCrypt卷写入数据。共享卷可以是文件托管的，也可以是分区/设备托管的。

    缺点：通过网络传输的数据将不会被加密。但是，仍然可以使用例如SSL、TLS、VPN或其他技术对其进行加密。

    备注：请注意，当您重启系统时，只有当该卷是系统收藏夹卷或加密系统分区/驱动器时，网络共享才会自动恢复（有关如何将卷配置为系统收藏夹卷的信息，请参阅 系统收藏夹卷一章）。

  2. 将未挂载的VeraCrypt文件容器存储在一台计算机（例如服务器）上。这个加密文件通过网络共享。其他计算机或系统上的用户将在本地挂载共享文件。因此，该卷将在多个操作系统下同时挂载。

    优点：通过网络传输的数据将被加密（但是，仍然建议使用例如SSL、TLS、VPN或其他适当的技术对其进行加密，以使流量分析更加困难并保护数据的完整性）。

    缺点：共享卷只能是文件托管的（不能是分区/设备托管的）。该卷必须在每个系统下以只读模式挂载（有关如何以只读模式挂载卷的信息，请参阅挂载选项部分）。请注意，此要求也适用于未加密的卷。原因之一是，例如，当一个操作系统正在修改文件系统时，另一个操作系统从传统文件系统读取的数据可能不一致（这可能导致数据损坏）。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 杂项 >> 后台任务

VeraCrypt后台任务

当VeraCrypt主窗口关闭时，VeraCrypt后台任务负责处理以下任务/功能：

  1. 热键
  2. 自动卸载（例如，在注销、意外移除主机设备、超时等情况下）
  3. 自动挂载常用卷
  4. 通知（例如，当隐藏卷的损坏得到防止时）
  5. 系统托盘图标

警告：如果VeraCrypt后台任务和VeraCrypt都没有运行，则上述任务/功能将被禁用。

VeraCrypt后台任务实际上是VeraCrypt.exe应用程序，在您关闭VeraCrypt主窗口后，它会继续在后台运行。可以通过查看系统托盘区域来确定它是否正在运行。如果您在那里看到VeraCrypt图标，则表示VeraCrypt后台任务正在运行。您可以单击该图标打开VeraCrypt主窗口。右键单击该图标会打开一个包含各种VeraCrypt相关功能的弹出菜单。

您可以随时通过右键单击VeraCrypt系统托盘图标并选择退出来关闭后台任务。如果您需要完全且永久地禁用VeraCrypt后台任务，请选择设置 -> 首选项，并在首选项对话框窗口的VeraCrypt后台任务区域中取消选中启用选项。


文档 >> 杂项 >> 可移动介质卷

作为可移动介质挂载的卷

本节适用于在启用以下任一选项（视适用情况而定）时挂载的VeraCrypt卷：

  • 设置 > 首选项 > 将卷作为可移动介质挂载
  • 挂载选项 > 将卷作为可移动介质挂载
  • 收藏夹 > 组织收藏卷 > 将所选卷作为可移动介质挂载
  • 收藏夹 > 组织系统收藏卷 > 将所选卷作为可移动介质挂载

作为可移动介质挂载的VeraCrypt卷具有以下优点和缺点：

  • 可防止Windows在VeraCrypt卷上自动创建“Recycled”和/或“System Volume Information”文件夹（在Windows中，这些文件夹由回收站和系统还原功能使用）。
  • 可防止Windows 8及更高版本在事件日志中写入包含使用NTFS格式化的VeraCrypt卷设备名称（\\device\VeraCryptVolumeXX）的事件98。此事件日志“功能”是Windows 8作为新引入的NTFS健康检查的一部分引入的， 此处有详细解释。非常感谢Liran Elharar发现了这一点。
  • Windows可能会使用通常用于可移动介质（例如USB闪存驱动器）的缓存方法和写入延迟。这可能会略微降低性能，但同时会增加无需强制卸载即可快速卸载卷的可能性。
  • 操作系统可能会尽量减少对该卷打开的句柄数量。因此，作为可移动介质挂载的卷可能比其他卷需要更少的强制卸载操作。
  • 在Windows Vista及更早版本中，“计算机”（或“我的电脑”）列表不会显示作为可移动介质挂载的卷的可用空间量（请注意，这是Windows的限制，而非VeraCrypt的错误）。
  • 在Windows Vista或更高版本的桌面版中，作为可移动介质挂载的卷的扇区可能可供所有用户访问（包括无管理员权限的用户；请参阅 多用户环境部分）。


文档 >> 杂项 >> VeraCrypt系统文件

VeraCrypt系统文件与应用程序数据

注意：%windir% 是Windows的主要安装路径（例如，C:\WINDOWS）

VeraCrypt驱动程序

%windir%\SYSTEM32\DRIVERS\veracrypt.sys

注意：当VeraCrypt以便携模式运行时，此文件不存在。

VeraCrypt设置、应用程序数据和其他系统文件

警告：请注意，VeraCrypt不会对本节列出的任何文件进行加密（除非它对系统分区/驱动器进行加密）。

以下文件保存在文件夹 %APPDATA%\VeraCrypt\ 中。在便携模式下，这些文件将保存到您运行 VeraCrypt.exe 文件的文件夹中（即 VeraCrypt.exe 所在的文件夹）：

  • "Configuration.xml"（主配置文件）。
  • "System Encryption.xml"（在对系统分区/驱动器进行原地加密/解密的初始过程中使用的临时配置文件）。
  • "Default Keyfiles.xml"
    • 注意：如果未使用相应的VeraCrypt功能，此文件可能不存在。
  • "Favorite Volumes.xml"
    • 注意：如果未使用相应的VeraCrypt功能，此文件可能不存在。
  • "History.xml"（尝试作为VeraCrypt卷挂载或用作VeraCrypt卷宿主的最后二十个文件/设备的列表；此功能可以禁用 - 有关更多信息，请参阅 永不保存历史记录 部分）
    • 注意：如果未使用相应的VeraCrypt功能，此文件可能不存在。
  • "In-Place Encryption"（在对非系统卷进行原地加密/解密的初始过程中使用的临时配置文件）。
  • "In-Place Encryption Wipe Algo"（在对非系统卷进行原地加密/解密的初始过程中使用的临时配置文件）。
  • "Post-Install Task - Tutorial"（在VeraCrypt安装或升级过程中使用的临时配置文件）。
  • "Post-Install Task - Release Notes"（在VeraCrypt安装或升级过程中使用的临时配置文件）。

以下文件保存在文件夹 %ALLUSERSPROFILE%\VeraCrypt\ 中：

  • "Original System Loader"（在将VeraCrypt引导加载程序写入第一个驱动器磁道之前，对其原始内容进行的备份）。
    • 注意：如果系统分区/驱动器未加密，此文件不存在。

以下文件保存在文件夹 %windir%\system32（32位系统）或 %windir%\SysWOW64（64位系统）中：

  • "VeraCrypt System Favorite Volumes.xml"
    • 注意：如果未使用相应的VeraCrypt功能，此文件可能不存在。
  • VeraCrypt.exe
    • 注意：仅当启用系统收藏卷的挂载时，此文件夹中才会有该文件的副本。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 杂项 >> 移除加密

如何移除加密

请注意，VeraCrypt只能对分区和驱动器进行原地解密（对于系统分区/驱动器，选择系统 > 永久解密系统分区/驱动器；对于非系统分区/驱动器，选择卷 -> 永久解密）。如果您需要从文件托管卷中移除加密（例如，您不再需要加密），请遵循以下步骤：

  1. 挂载VeraCrypt卷。
  2. 将VeraCrypt卷中的所有文件移动到VeraCrypt卷之外的任何位置（请注意，文件将在移动过程中自动解密）。
  3. 卸载VeraCrypt卷。
  4. 像删除其他文件一样删除它（容器）。

如果不希望对非系统分区/驱动器进行原地解密，在这种情况下也可以遵循上述步骤1 - 3。

在所有情况下，如果遵循了步骤1 - 3，则可以执行以下额外操作：

  • 如果卷是分区托管的（也适用于USB闪存驱动器）
    1. 右键单击桌面上或开始菜单中的“计算机”（或“我的电脑”）图标，然后选择管理。此时应会出现“计算机管理”窗口。
    2. 在计算机管理窗口中，从左侧列表中选择“磁盘管理”（在存储子树中）。
    3. 右键单击要解密的分区，然后选择“更改驱动器号和路径”。
    4. 此时应会出现“更改驱动器号和路径”窗口。如果窗口中未显示驱动器号，请单击添加；否则，单击取消。

      如果您单击了添加，则在出现的“添加驱动器号或路径”窗口中，选择要分配给该分区的驱动器号，然后单击确定。
    5. 在计算机管理窗口中，再次右键单击要解密的分区，然后选择格式化。此时应会出现格式化窗口。
    6. 在格式化窗口中，单击确定。分区格式化完成后，将不再需要使用VeraCrypt挂载该分区即可保存或加载文件。
  • 如果卷是设备托管的
  1. 右键单击桌面上或开始菜单中的“计算机”（或“我的电脑”）图标，然后选择管理。此时应会出现“计算机管理”窗口。
  2. 在计算机管理窗口中，从左侧列表中选择“磁盘管理”（在存储子树中）。
  3. 此时应会出现“初始化磁盘”窗口。使用该窗口初始化磁盘。
  4. 在“计算机管理”窗口中，右键单击代表加密设备存储空间的区域，然后选择“新建分区”或“新建简单卷”。
  5. 警告：在继续操作之前，请确保您选择了正确的设备，因为其上存储的所有文件都将丢失。此时应会出现“新建分区向导”或“新建简单卷向导”窗口；请按照其说明在设备上创建新分区。分区创建完成后，将不再需要使用VeraCrypt挂载该设备即可保存或加载文件。


文档 >> 杂项 >> 卸载VeraCrypt

卸载VeraCrypt

要在Windows XP上卸载VeraCrypt，请选择开始菜单 > 设置 > 控制面板 > 添加或删除程序 > VeraCrypt > 更改/删除。

要在Windows Vista或更高版本上卸载VeraCrypt，请选择开始菜单 > 计算机 > 卸载或更改程序 > VeraCrypt > 卸载。

要在Linux上卸载VeraCrypt，您必须以root用户身份运行以下命令：veracrypt-uninstall.sh。例如，在Ubuntu上，您可以在终端中输入以下内容：sudo veracrypt-uninstall.sh

卸载VeraCrypt时，不会删除任何VeraCrypt卷。在您重新安装VeraCrypt或以便携模式运行它之后，您仍可以再次挂载您的VeraCrypt卷。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 杂项 >> 数字签名

数字签名

为何要验证数字签名

您从我们服务器下载的VeraCrypt安装包可能已被攻击者创建或修改。例如，攻击者可能利用我们使用的服务器软件中的漏洞，篡改存储在服务器上的安装包，或者在传输过程中篡改任何文件。

因此，您应始终验证从任何来源下载或以其他方式获取的每个VeraCrypt发行包的完整性和真实性。换句话说，您应始终确保该文件是由我们创建的，且未被攻击者篡改。验证文件所谓的数字签名是实现这一目的的一种方法。

我们使用的数字签名类型

我们目前使用两种类型的数字签名：

  • PGP签名（适用于所有受支持系统的所有二进制和源代码包）。
  • X.509签名（适用于Windows的二进制包）。

X.509签名的优点

与PGP签名相比，X.509签名具有以下优点：

  • 更容易验证签署文件的密钥确实是我们的（而非攻击者的）。
  • 验证X.509签名无需下载或安装任何额外软件（见下文）。
  • 无需下载和导入我们的公钥（它已嵌入到签名文件中）。
  • 无需下载任何单独的签名文件（签名已嵌入到签名文件中）。

PGP签名的优点

与X.509签名相比，PGP签名具有以下优点：

  • 它们不依赖任何证书颁发机构（证书颁发机构可能会被对手渗透或控制，或者出于其他原因不可信）。

如何验证X.509签名

请注意，目前X.509签名仅适用于Windows的VeraCrypt自解压安装包。每个此类文件中都嵌入了一个X.509数字签名以及由公共证书颁发机构颁发的VeraCrypt基金会数字证书。要验证Windows自解压安装包的完整性和真实性，请遵循以下步骤：

  1. 下载VeraCrypt自解压安装包。
  2. 在Windows资源管理器中，右键单击下载的文件（‘VeraCrypt Setup.exe’），然后从上下文菜单中选择‘属性’。
  3. 在属性对话框窗口中，选择‘数字签名’选项卡。
  4. 在‘数字签名’选项卡的‘签名列表’中，双击显示“IDRIX”或 “IDRIX SARL”的行。
  5. 此时应会出现‘数字签名详细信息’对话框窗口。如果您在对话框窗口顶部看到以下句子，则表示包的完整性和真实性已成功验证：

    “此数字签名有效。”

    如果您没有看到上述句子，则该文件很可能已损坏。注意：在某些过时的Windows版本中，缺少一些必要的证书，这会导致签名验证失败。

如何验证PGP签名

要验证PGP签名，请遵循以下步骤：

  1. 安装任何支持PGP签名的公钥加密软件。对于Windows，您可以下载 Gpg4win。有关更多信息，您可以访问 https://www.gnupg.org/。
  2. 创建一个私钥（有关如何操作的信息，请参阅公钥加密软件的文档）。
  3. 从AM Crypto网站（https://amcrypto.jp/VeraCrypt/VeraCrypt_PGP_public_key.asc）或受信任的公钥库（ID=0x680D16DE）下载我们的PGP公钥，并将下载的密钥导入到您的密钥环中（有关如何操作的信息，请参阅公钥加密软件的文档）。请检查其指纹是否为 5069A233D55A0EEB174A5FC3821ACD02680D16DE。
    • 对于VeraCrypt 1.22及以下版本，验证必须使用可在 https://amcrypto.jp/VeraCrypt/VeraCrypt_PGP_public_key_2014.asc 获得的PGP公钥，或从受信任的公钥库（ID=0x54DDD393）获取，其指纹为 993B7D7E8E413809828F0F29EB559C7C54DDD393。
  4. 用您的私钥签署导入的密钥，以将其标记为受信任（有关如何操作的信息，请参阅公钥加密软件的文档）。

    注意：如果您跳过此步骤并尝试验证我们的任何PGP签名，您将收到一条错误消息，指出签名密钥无效。
  5. 通过下载您要验证的文件的PGP签名（在 下载页面）来下载数字签名。
  6. 验证下载的签名（有关如何操作的信息，请参阅公钥加密软件的文档）。

在Linux下，可以使用以下命令完成这些步骤：

  • 检查公钥的指纹是否为 5069A233D55A0EEB174A5FC3821ACD02680D16DE：gpg --import --import-options show-only VeraCrypt_PGP_public_key.asc（对于较旧的gpg版本，请改为输入： gpg --with-fingerprint VeraCrypt_PGP_public_key.asc）
  • 如果指纹符合预期，则导入公钥： gpg --import VeraCrypt_PGP_public_key.asc
  • 验证Linux安装存档的签名（此处为1.23版本）： gpg --verify veracrypt-1.23-setup.tar.bz2.sig veracrypt-1.23-setup.tar.bz2


文档 >> 故障排除

故障排除

本节介绍了在使用VeraCrypt时可能遇到的常见问题的解决方案。
注意：如果您的问题未在此列出，可能会在以下部分列出：
  • 不兼容性
  • 已知问题与限制
  • 常见问题解答
确保您使用的是VeraCrypt的最新稳定版本。如果问题是由旧版本的VeraCrypt中的漏洞引起的，那么该问题可能已经得到修复。注意：选择 帮助 > 关于 以查看您使用的版本。

问题：
即使根据基准测试，我使用的密码算法速度高于硬盘速度，但对卷的读写操作仍然非常缓慢。
可能原因：
这可能是由干扰应用程序引起的。
可能的解决方案：
首先，确保您的VeraCrypt容器没有保留给可执行文件的文件扩展名（例如.exe、.sys或.dll）。如果有，Windows和防病毒软件可能会干扰容器并对卷的性能产生不利影响。
其次，禁用或卸载任何可能造成干扰的应用程序，通常是防病毒软件或自动磁盘碎片整理工具等。对于防病毒软件，通常在其偏好设置中关闭实时（访问时）扫描会有所帮助。如果不起作用，请尝试暂时禁用病毒防护软件。如果还是不行，请尝试完全卸载它，然后重新启动计算机。
问题：
VeraCrypt 卷无法挂载；VeraCrypt 报告 “密码错误或不是 VeraCrypt 卷”。
可能原因：
卷头可能已被第三方应用程序或故障硬件组件损坏。
可能的解决方案：
  • 您可以尝试通过以下步骤从嵌入在卷中的备份恢复卷头：
    1. 运行 VeraCrypt。
    2. 点击 选择设备 或 选择文件 以选择您的卷。
    3. 选择 工具 > 恢复卷头。
问题：
成功挂载卷后，Windows 报告 “此设备不包含有效的文件系统” 或类似错误。
可能原因：
VeraCrypt 卷上的文件系统可能已损坏（或者该卷未格式化）。
可能的解决方案：
您可以使用操作系统提供的文件系统修复工具尝试修复 VeraCrypt 卷上的文件系统。在 Windows 中，是 'chkdsk' 工具。VeraCrypt 提供了一种在 VeraCrypt 卷上使用此工具的简便方法：首先，制作 VeraCrypt 卷的备份副本（因为 'chkdsk' 工具可能会进一步损坏文件系统），然后挂载该卷。在 VeraCrypt 主窗口（在驱动器列表中）中右键单击已挂载的卷，然后从上下文菜单中选择 '修复文件系统'。
问题：
尝试创建隐藏卷时，其最大可能大小意外地小（外部卷上有比这多得多的可用空间）。
可能原因：
  1. 外部卷已格式化为 NTFS
  2. 碎片整理
  3. 簇大小太小 + 外部卷根目录中的文件/文件夹太多。
可能的解决方案：
与原因 1 相关的解决方案：
与 FAT 文件系统不同，NTFS 文件系统始终将内部数据精确地存储在卷的中间。因此，隐藏卷只能位于外部卷的后半部分。如果此限制不可接受，请执行以下操作之一：
  • 将外部卷重新格式化为 FAT，然后在其中创建隐藏卷。
  • 如果外部卷太大而无法格式化为 FAT，则将该卷拆分为几个 2 太字节的卷（如果设备使用 4 千字节扇区，则为 16 太字节的卷），并将每个卷格式化为 FAT。
与原因 2 相关的解决方案：
创建一个新的外部卷（碎片整理不是解决方案，因为它会对合理推诿性产生不利影响 – 请参阅 碎片整理 部分）。
与原因 3 相关的解决方案：
注意：以下解决方案仅适用于在 FAT 卷中创建的隐藏卷。
对外部卷进行碎片整理（挂载它，在 '计算机' 或 '我的电脑' 窗口中右键单击其驱动器号，点击 属性，选择 工具 选项卡，然后点击 '立即进行碎片整理'）。卷进行碎片整理后，退出 磁盘碎片整理程序，然后再次尝试创建隐藏卷。

如果这没有帮助，请通过按 Shift + Delete 删除外部卷上的 所有 文件和文件夹，而不是通过格式化（事先不要忘记为该驱动器禁用回收站和系统还原），然后尝试创建
在这个 完全为空的 外部卷上再次创建隐藏卷（仅用于测试目的）。如果即使现在隐藏卷的最大可能大小仍未改变，那么问题的原因很可能是扩展根目录。 如果您没有使用 '默认' 簇大小（向导的最后一步），请重新格式化外部卷，并在这次将簇大小保留为 '默认'。
如果这没有帮助，请再次重新格式化外部卷，并比上次少复制一些文件/文件夹到其根文件夹。如果还是没有帮助，请继续重新格式化并减少根文件夹中的文件/文件夹数量。如果这不可接受或者仍然没有帮助，请重新格式化外部卷并选择更大的簇大小。如果仍然没有帮助，请继续重新格式化并增大簇大小，直到问题解决。或者，尝试在 NTFS 卷中创建隐藏卷。
问题：
出现以下问题之一：
  • VeraCrypt 卷无法挂载。
  • 无法创建 NTFS VeraCrypt 卷。
此外，可能会报告以下错误：“该进程无法访问此文件，因为它正被另一个进程使用。”
可能原因：
这可能是由干扰应用程序引起的。请注意，这不是 VeraCrypt 的 bug。操作系统向 VeraCrypt 报告该设备已被某个应用程序独占锁定（因此 VeraCrypt 不被允许访问它）。
可能的解决方案：
通常，禁用或卸载干扰应用程序会有帮助，这些应用程序通常是防病毒实用程序、磁盘管理应用程序等。
问题：
在 VeraCrypt 引导加载程序屏幕中，我试图输入密码和/或按下其他键，但 VeraCrypt 引导加载程序没有响应。
可能原因：
您使用的是 USB 键盘（而非 PS/2 键盘），并且您的 BIOS 设置中禁用了 USB 键盘的预引导支持。
可能的解决方案：
您需要在 BIOS 设置中启用 USB 键盘的预引导支持。为此，请按照以下步骤操作：
重启您的计算机，在看到 BIOS 启动屏幕后立即按下 F2 或 Delete 键，然后等待 BIOS 配置屏幕出现。如果没有出现 BIOS 配置屏幕，请再次重启（重置）计算机，并在重启（重置）计算机后立即反复按下 F2 或 Delete 键。当 BIOS 配置屏幕出现时，启用 USB 键盘的预引导支持。通常可以通过选择以下选项来完成： 高级 > 'USB 配置' > '传统 USB 支持'（或 'USB 传统模式'） > 启用。（请注意，“传统”这个词实际上会产生误导，因为现代版本的 MS Windows 的预引导组件需要启用此选项才能允许用户进行交互/控制。）然后保存 BIOS 设置（通常通过按下 F10 键）并重启计算机。有关更多信息，请参考您的 BIOS/主板文档，或联系您计算机供应商的技术支持团队寻求帮助。
问题：
系统分区/驱动器加密后，计算机重启后无法启动（也无法进入 BIOS 配置屏幕）。
可能原因：
您计算机的 BIOS 存在 bug。
可能的解决方案：

请按照以下步骤操作：

  1. 断开加密驱动器的连接。
  2. 连接一个安装了操作系统的未加密驱动器（或者在该驱动器上安装操作系统）。
  3. 升级 BIOS。
  4. 如果还是没有帮助，请向计算机制造商或供应商报告此 bug。

或者

  • 如果 BIOS/主板/计算机制造商/供应商没有提供解决此问题的更新，并且您使用的是 Windows 7 或更高版本，并且驱动器上有一个额外的引导分区（其大小小于 1 GB），您可以尝试在不使用这个额外引导分区的情况下重新安装 Windows（以解决 BIOS 中的一个 bug）。
问题：
出现以下问题之一：
  • 在系统加密预测试期间输入预引导认证密码后，计算机死机（在显示消息 '正在启动...' 之后）。
  • 当系统分区/驱动器被部分或完全加密，并且自系统分区/驱动器加密过程开始后系统首次重启时，在您输入预引导认证密码后计算机死机（在显示消息 '正在启动...' 之后）。
  • 隐藏操作系统克隆完成并输入其密码后，计算机死机（显示“Booting...”消息后）。
可能原因：
计算机BIOS中的错误或Windows引导加载程序存在问题。
可能的解决方案：
  • 升级你的BIOS（有关如何操作的信息，请参考你的BIOS/主板文档，或联系计算机供应商的技术支持团队寻求帮助）。
  • 使用不同型号/品牌的主板。
  • 如果BIOS/主板/计算机制造商/供应商没有提供解决此问题的更新，并且你使用的是Windows 7或更高版本，并且驱动器上有一个额外的引导分区（其大小小于1GB），你可以尝试在不使用这个额外引导分区的情况下重新安装Windows（以绕过BIOS中的一个错误）。
  • 有另外两种已知的解决此问题的方法，需要有Windows安装盘：
    • 使用Windows安装盘启动计算机，选择修复计算机。选择“命令提示符”选项，打开后，输入以下命令，然后重启系统：
      • BootRec /fixmbr
      • BootRec /FixBoot
    • 删除位于驱动器开头的100MB系统保留分区，将其旁边的系统分区设置为活动分区（这两个操作都可以使用Windows安装盘修复选项中的diskpart实用工具完成）。之后，在Windows安装盘上重启后运行启动修复。以下链接包含详细说明： https://www.sevenforums.com/tutorials/71363-system-reserved-partition-delete.html
问题：
尝试加密系统分区/驱动器时，在预测试期间，VeraCrypt引导加载程序始终报告我输入的预启动身份验证密码不正确（即使我确定密码是正确的）。
可能原因：
  • “Num Lock”和/或“Caps Lock”键的状态不同
  • 数据损坏
可能的解决方案：
  1. 当你设置预启动身份验证密码时，记住“Num Lock”和“Caps Lock”键是开启还是关闭（根据制造商的不同，这些键可能有不同的标签，如Num LK）。注意：你可以在设置密码之前根据需要更改每个键的状态，但你需要记住这些状态。
  2. 当你在VeraCrypt引导加载程序屏幕中输入密码时，确保每个键的状态与你设置密码时的状态相同。
注意：有关此问题的其他可能解决方案，请参阅本章的其他部分。
问题：
当系统分区/驱动器被加密时，操作系统每隔5 - 60分钟会“冻结”约10 - 60秒（可能同时出现100%的CPU使用率）。
可能原因：
CPU和/或主板问题。
可能的解决方案：
  • 尝试在BIOS设置和Windows控制面板的“电源选项”中禁用所有与节能相关的功能（包括任何特殊的CPU增强暂停功能）。
  • 用不同的处理器（不同类型和/或品牌）替换当前的处理器。
  • 用不同的主板（不同类型和/或品牌）替换当前的主板。
问题：
挂载或卸载VeraCrypt卷时，系统崩溃（出现“蓝屏”错误屏幕或计算机突然重启）。
或
自从我安装了VeraCrypt，操作系统频繁崩溃。
可能的原因：
  • 第三方应用程序中的错误（例如，防病毒软件、系统“优化工具”、驱动程序等）
  • VeraCrypt中的错误
  • Windows中的错误或硬件组件故障
可能的解决方案：
  • 尝试禁用任何防病毒工具、系统“优化工具”以及任何其他类似的应用程序。如果问题仍然存在，尝试卸载它们并重启Windows。

    如果问题仍然存在，请在系统崩溃或重启后不久运行VeraCrypt并选择帮助 > '分析系统崩溃'。VeraCrypt将分析Windows在崩溃时自动创建的崩溃转储文件（如果有）。如果VeraCrypt确定第三方驱动程序中的错误可能导致了崩溃，它将显示驱动程序的名称和供应商（请注意，更新或卸载驱动程序可能会解决问题）。无论结果如何，你都可以选择向我们发送有关系统崩溃的重要信息，以帮助我们确定是否是VeraCrypt中的错误导致的。
问题：
在Windows 7/Vista（可能包括更高版本）上，Microsoft Windows备份工具无法用于将数据备份到非系统VeraCrypt卷。
原因：
Windows备份工具中的错误。
可能的解决方案：
  1. 挂载你要备份数据的VeraCrypt卷。
  2. 右键单击位于该卷上的文件夹（或在“计算机”列表中右键单击其驱动器号），并从“共享”子菜单中选择一个选项（在Windows Vista上，选择“共享”）。
  3. 按照说明将文件夹共享给你的用户账户。
  4. 在Windows备份工具中，选择共享文件夹（网络位置/路径）作为目标。
  5. 启动备份过程。
注意：上述解决方案不适用于Windows 7（可能包括更高版本）的入门版和家庭版。
问题：
在Windows Vista或更高版本的Windows的“计算机”窗口中，无法更改VeraCrypt卷中文件系统的标签。
原因：
Windows的一个问题导致标签仅被写入Windows注册表文件，而不是写入文件系统。
可能的解决方案：
  • 在“计算机”窗口中右键单击已挂载的卷，选择属性，并为该卷输入一个新的标签。
问题：
我无法加密分区/设备，因为VeraCrypt卷创建向导提示它正在使用中。
可能的解决方案：
关闭、禁用或卸载所有可能以任何方式使用该分区/设备的程序（例如，防病毒实用程序）。如果问题仍然存在，右键单击桌面上的“计算机”（或“我的电脑”）图标，选择管理 -> 存储 -> 磁盘管理。然后右键单击你要加密的分区，点击更改驱动器号和路径。然后点击删除和确定。重启操作系统。
问题：
创建隐藏卷时，向导报告无法锁定外部卷。
可能的原因：
外部卷包含一个或多个应用程序正在使用的文件。
可能的解决方案：
关闭所有正在使用外部卷上文件的应用程序。如果问题仍然存在，请尝试禁用或卸载你使用的任何防病毒工具，然后重新启动系统。
问题：
当访问通过网络共享的文件托管容器时，你会收到以下一条或两条错误消息：
“服务器没有足够的存储空间来处理此命令。”和/或
“没有足够的内存来完成事务。”
可能的原因：
Windows注册表中的IRPStackSize值可能设置得太小。
可能的解决方案：
在Windows注册表中找到IRPStackSize 键，并将其设置为更高的值。然后重新启动系统。如果该键在Windows注册表中不存在，请在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters处创建该键，并将其值设置为16或更高。然后重新启动系统。有关更多信息，请参阅： https://support.microsoft.com/kb/285089/ 和 https://support.microsoft.com/kb/177078/

另请参阅： 已知问题和限制， 不兼容性


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 兼容性问题

兼容性问题

使用FLEXnet Publisher® / SafeCast激活Adobe Photoshop®及其他产品

注意：如果您使用的是非级联加密算法（即AES、Serpent或Twofish），则以下描述的问题不会影响您。* 如果您不使用 系统加密（预启动身份验证），该问题同样不会影响您。
Acresso FLEXnet Publisher激活软件（前身为Macrovision SafeCast，用于激活第三方软件，如Adobe Photoshop）会将数据写入第一个驱动器磁道。如果在您的系统分区/驱动器由VeraCrypt加密时发生这种情况， VeraCrypt引导加载程序的一部分将被损坏，您将无法启动Windows。在这种情况下，请使用您的 VeraCrypt救援磁盘来重新访问您的系统。有两种方法可以做到这一点：
  1. 您可以保持第三方软件处于激活状态，但您需要每次都从VeraCrypt救援磁盘CD/DVD启动您的系统。只需将您的救援磁盘插入您的CD/DVD驱动器，然后在救援磁盘屏幕上输入您的密码。
  2. 如果您不想每次都从VeraCrypt救援磁盘CD/DVD启动您的系统，您可以恢复系统驱动器上的VeraCrypt引导加载程序。为此，在救援磁盘屏幕上，选择 修复选项 > 恢复VeraCrypt引导加载程序。但是请注意，这将使第三方软件停用。
有关如何使用您的VeraCrypt救援磁盘的信息，请参阅 VeraCrypt救援磁盘章节。
可能的永久解决方案：解密系统分区/驱动器，然后使用非级联加密算法（即AES、Serpent或Twofish）重新对其进行加密。*
请注意，这不是VeraCrypt的错误（该问题是由第三方激活软件的不当设计引起的）。

Outpost防火墙和Outpost安全套件

如果安装了Outpost防火墙或Outpost安全套件并启用了主动防护功能，则在挂载/卸载卷的操作过程中，计算机会完全冻结5 - 10秒。这是由于Outpost系统防护选项中保护“活动桌面”对象的功能与VeraCrypt在挂载/卸载操作期间显示的等待对话框之间的冲突导致的。
解决此问题的一种方法是在首选项中禁用VeraCrypt等待对话框：使用菜单“设置 -> 首选项”，并勾选“执行操作时不显示等待消息对话框”选项。
更多信息可在 https://sourceforge.net/p/veracrypt/tickets/100/ 找到。

* 原因是VeraCrypt引导加载程序比用于密码级联的引导加载程序小，因此在第一个驱动器磁道中有足够的空间来备份VeraCrypt引导加载程序。因此，每当VeraCrypt引导加载程序损坏时，会自动运行其备份副本。

另请参阅： 已知问题与限制， 故障排除


文档 >> 已知问题和限制

已知问题与限制

已知问题

  • 在Windows系统中，可能会出现为挂载的卷分配两个驱动器号而非一个的情况。这是由Windows挂载管理器缓存的问题导致的，可在挂载任何卷之前，在提升权限的命令提示符（以管理员身份运行）中输入命令“mountvol.exe /r”来解决。如果重启后问题仍然存在，可以使用以下步骤解决：
    • 使用注册表编辑器（regedit）检查注册表项“HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices”。向下滚动，您会找到以“\DosDevices\”或“\Global??\”开头的条目，这些条目表示系统已占用的驱动器号。在挂载任何卷之前，双击每个条目，删除包含“VeraCrypt”和“TrueCrypt”名称的条目。
      此外，还有一些名称以“#{”和“\??\Volume{”开头的条目：双击每个条目，删除数据值中包含“VeraCrypt”和“TrueCrypt”名称的条目。
  • 在某些Windows机器上，VeraCrypt在挂载或卸载卷时可能会间歇性挂起。在VeraCrypt进行挂载或卸载操作期间，类似的挂起情况可能会影响其他正在运行的应用程序。 此问题是由VeraCrypt在挂载/卸载操作期间显示的等待对话框与机器上安装的其他软件（例如Outpost防火墙专业版）之间的冲突引起的。 在这种情况下，可以通过在“首选项”中禁用VeraCrypt等待对话框来解决问题：使用菜单“设置 -> 首选项”，并勾选“执行操作时不显示等待消息对话框”选项。

限制

  • [注意：此限制不适用于Windows Vista及更高版本的Windows用户。] 在Windows XP/2003系统中，VeraCrypt不支持对包含扩展（逻辑）分区的整个系统驱动器进行加密。您可以对仅包含主分区的整个系统驱动器进行加密。在部分或完全加密的任何系统驱动器上不得创建扩展（逻辑）分区（只能在其上创建主分区）。 注意：如果您需要对包含扩展分区的整个驱动器进行加密，可以加密系统分区，并在驱动器上的任何非系统分区内创建由分区托管的VeraCrypt卷。或者，您可以考虑升级到Windows Vista或更高版本的Windows系统。
  • VeraCrypt目前不支持对已转换为动态磁盘的系统驱动器进行加密。
  • 为解决Windows XP的一个问题，VeraCrypt引导加载程序总是会自动根据其安装时的操作系统版本进行配置。当系统版本发生变化（例如，在运行Windows Vista时安装了VeraCrypt引导加载程序，但后来用它来引导Windows XP），您可能会遇到各种已知和未知的问题（例如，在某些笔记本电脑上，Windows XP可能无法显示登录屏幕）。请注意，这会影响多引导配置、VeraCrypt救援磁盘以及诱饵/隐藏操作系统（因此，如果隐藏系统是例如Windows XP，诱饵系统也应该是Windows XP）。
  • 在不进行预引导身份验证的情况下挂载处于系统加密密钥范围内的分区（例如，位于另一个未运行的操作系统的加密系统驱动器上的分区）的功能，例如通过选择系统 > 不进行预引导身份验证挂载，仅限于主分区（扩展/逻辑分区不能以这种方式挂载）。
  • 由于Windows 2000的一个问题，VeraCrypt在Windows 2000系统下不支持Windows挂载管理器。因此，一些Windows 2000内置工具，如磁盘碎片整理程序，在VeraCrypt卷上无法正常工作。此外，在Windows 2000系统下无法使用挂载管理器服务，例如为VeraCrypt卷分配挂载点（即将VeraCrypt卷附加到文件夹）。
  • VeraCrypt不支持对安装在VHD文件中的操作系统进行预引导身份验证，除非使用适当的虚拟机软件（如Microsoft Virtual PC）进行引导。
  • 目前，Windows卷影复制服务仅支持处于系统加密密钥范围内的分区（例如，由VeraCrypt加密的系统分区，或位于由VeraCrypt加密的系统驱动器上的非系统分区，在加密操作系统运行时挂载）。注意：对于其他类型的卷，不支持卷影复制服务，因为必要的API文档不可用。
  • 如果系统不是从其安装的分区启动，则无法从隐藏操作系统中更改Windows启动设置。这是因为出于安全原因，当隐藏系统运行时，启动分区将以只读方式挂载。若要更改启动设置，请启动诱饵操作系统。
  • 加密分区无法调整大小，除非是在完全加密的系统驱动器上，且在加密操作系统运行时对分区进行调整。
  • 当系统分区/驱动器被加密时，无法在预引导环境中（使用Windows安装光盘/ DVD或Windows预引导组件）对系统进行升级（例如，从Windows XP升级到Windows Vista）或修复。在这种情况下，必须先对系统分区/驱动器进行解密。注意：即使系统分区/驱动器被加密，正在运行的操作系统也可以正常进行更新（安全补丁、服务包等）。
  • 系统加密仅支持通过ATA/SCSI接口本地连接的驱动器（请注意，术语ATA也指SATA和eSATA）。
  • 使用系统加密时（这也适用于隐藏操作系统），VeraCrypt不支持多引导配置更改（例如，更改操作系统的数量及其位置）。具体而言，配置必须保持与VeraCrypt卷创建向导开始准备系统分区/驱动器加密（或创建隐藏操作系统）过程时的状态相同。

    注意：唯一的例外是多启动配置，此时运行的VeraCrypt加密操作系统始终位于驱动器#0上，并且是该驱动器上的唯一操作系统（或者驱动器上有一个VeraCrypt加密的诱饵系统和一个VeraCrypt加密的隐藏操作系统，没有其他操作系统），且该驱动器在计算机开机前已连接或断开（例如，使用外置eSATA硬盘盒上的电源开关）。计算机连接的其他驱动器上可以安装任何额外的操作系统（加密或未加密）（当驱动器#0断开时，驱动器#1会变为驱动器#0，依此类推）。
  • 当笔记本电池电量不足时，计算机进入省电模式时，Windows可能不会向正在运行的应用程序发送适当消息。因此，在此情况下VeraCrypt可能无法自动卸载卷。
  • 无法保证任何文件（例如容器或密钥文件）的时间戳能够被可靠且安全地保留（例如由于文件系统日志、文件属性时间戳，或操作系统因各种已记录/未记录的原因未能执行该操作）。注意：当您写入文件型隐藏卷时，容器的时间戳可能会改变。这可以合理解释为修改（外层）卷密码所致。另请注意，VeraCrypt从不保留系统收藏卷的时间戳（无论设置如何）。
  • 通过绕过类'DiskDrive'（类GUID为4D36E967-E325-11CE-BFC1-08002BE10318）驱动程序堆栈中驱动程序的特殊软件（如底层磁盘编辑器）向磁盘驱动器写入数据时，可能会向挂载了VeraCrypt卷的非系统驱动器（'Partition0'）和处于活动系统加密密钥范围内的加密分区/驱动器写入未加密数据（VeraCrypt不会加密以此方式写入的数据）。类似地，通过绕过类'Storage Volume'（类GUID为71A27CDD-812A-11D0-BEC7-08002BE2092F）驱动程序堆栈中驱动程序的软件向磁盘驱动器写入数据时，可能会向VeraCrypt分区型卷（即使已挂载）写入未加密数据。
  • 出于安全考虑，当隐藏操作系统运行时，VeraCrypt确保所有本地未加密文件系统和非隐藏VeraCrypt卷均为只读。但这不适用于类CD/DVD介质上的文件系统，以及自定义、非典型或非标准设备/介质上的文件系统（例如任何不属于Windows设备类'Storage Volume'或不符合该类要求的设备/介质（类GUID为71A27CDD-812A-11D0-BEC7-08002BE2092F））。
  • 不支持位于软盘上的设备型VeraCrypt卷。注意：您仍可在软盘上创建文件型VeraCrypt卷。
  • Windows Server版本不允许将已挂载的VeraCrypt卷用作服务器备份路径。解决方法是通过资源管理器界面在VeraCrypt卷上激活共享（当然需设置正确权限以防止未授权访问），然后选择"远程共享文件夹"选项（实际上并非远程，但Windows需要网络路径）。在此处输入共享驱动器的路径（例如\\服务器名\共享名），即可正确配置备份。
  • 由于Microsoft在NTFS稀疏文件处理上的设计缺陷，向大型动态卷（超过数百GB）写入数据时可能会遇到系统错误。为避免此问题，建议动态卷容器文件的最大兼容大小为300 GB。以下链接详细说明了此限制： http://www.flexhex.com/docs/articles/sparse-files.phtml#msdn
  • 在Windows 8和Windows 10中，引入了名为“混合启动和关机”以及“快速启动”的功能，这些功能使Windows启动更快。此功能默认启用，并且会对VeraCrypt卷的使用产生副作用。建议禁用此功能（例如，此 链接 说明了如何在Windows 8中禁用它，此 链接提供了在Windows 10中进行等效操作的说明）。以下是一些问题示例：
    • 关机并重启后，已挂载的卷将继续挂载，而无需输入密码：这是因为新的Windows 8关机实际上不是真正的关机，而是伪装的休眠/睡眠。
  • 当VeraCrypt卷作为固定磁盘（默认设置）挂载时，无法创建Windows系统修复/恢复磁盘。要解决此问题，请卸载所有卷或将卷作为可移动媒体挂载。
  • 其他限制列于安全模型部分。


文档 >> 常见问题解答

常见问题解答

最后更新于2017年7月2日
本文件不保证无错误，并且是“按原样”提供，不附带任何形式的保证。有关更多信息，请参阅 免责声明。
TrueCrypt和VeraCrypt可以在同一台机器上运行吗？
可以。通常情况下，TrueCrypt和VeraCrypt之间没有冲突，因此它们可以安装并在同一台机器上使用。然而，在Windows系统上，如果它们都用于挂载同一个卷，挂载时可能会出现两个驱动器。可以通过在挂载任何卷之前，在提升权限的命令提示符（以管理员身份运行）中运行以下命令来解决这个问题： mountvol.exe /r。
我可以在VeraCrypt中使用我的TrueCrypt卷吗？
可以。从1.0f版本开始，VeraCrypt支持挂载TrueCrypt卷。
我可以将我的TrueCrypt卷转换为VeraCrypt格式吗？
可以。从1.0f版本开始，VeraCrypt提供了将TrueCrypt容器和非系统分区转换为VeraCrypt格式的可能性。这可以通过“更改卷密码”或“设置头密钥派生算法”操作来实现。只需选中“TrueCrypt模式”，输入您的TrueCrypt密码并执行操作。之后，您的卷将采用VeraCrypt格式。
在进行转换之前，建议使用TrueCrypt备份卷头。一旦转换完成并且检查VeraCrypt能够正确挂载转换后的卷后，您可以安全地删除此备份。
TrueCrypt和VeraCrypt有什么区别？
VeraCrypt增强了用于系统和分区加密的算法的安全性，使其能够抵御暴力攻击方面的新发展。
它还解决了TrueCrypt中发现的许多漏洞和安全问题。
例如，当系统分区被加密时，TrueCrypt使用PBKDF2 - RIPEMD160进行1000次迭代，而在VeraCrypt中我们使用 327661次迭代。对于标准容器和其他分区，TrueCrypt最多使用2000次迭代，但VeraCrypt使用 500000次迭代。
这种增强的安全性仅在打开加密分区时会增加一些延迟，对应用程序的使用阶段没有性能影响。这对于合法用户来说是可以接受的，但对于攻击者来说，要获取加密数据则变得更加困难。

我忘记了密码 —— 有没有什么方法（“后门”）可以从我的VeraCrypt卷中恢复文件？
我们在VeraCrypt中没有实现任何“后门”（并且即使政府机构要求，我们也永远不会实现），因为这将违背该软件的目的。VeraCrypt不允许在不知道正确密码或密钥的情况下解密数据。我们无法恢复您的数据，因为我们不知道也无法确定您选择的密码或使用VeraCrypt生成的密钥。恢复您的文件的唯一方法是尝试“破解”密码或密钥，但这可能需要数千年或数百万年（具体取决于密码或密钥文件的长度和质量、软件/硬件性能、算法以及其他因素）。早在2010年，就有关于 美国联邦调查局（FBI）在尝试一年后仍无法解密一个TrueCrypt卷的新闻。虽然我们无法验证这是真的还是一个“心理战”噱头，但在VeraCrypt中，我们将密钥派生的安全性提高到了一个水平，只要满足所有安全要求，任何对密码的暴力破解实际上都是不可能的。

有没有适合初学者的“快速入门指南”或教程？
有。VeraCrypt用户指南的第一章，初学者教程包含了如何创建、挂载和使用VeraCrypt卷的截图和分步说明。

我可以加密安装了Windows的分区/驱动器吗？
可以，请参阅VeraCrypt用户指南中的 系统加密章节。
系统加密预测试失败，因为引导加载程序在成功验证密码后显示“正在启动”并挂起。如何使预测试成功？
针对此问题有两种已知的解决方法（两种方法都需要有Windows安装盘）：
  1. 使用Windows安装盘启动您的计算机，选择修复您的计算机。选择“命令提示符”选项，打开后，输入以下命令，然后重启系统：
    • BootRec /fixmbr
    • BootRec /FixBoot
  2. 删除位于硬盘起始位置的100MB系统保留分区，并将紧邻它的系统分区设置为活动分区（这两步都可以使用Windows安装盘修复选项中的diskpart工具完成）。之后，在Windows安装盘上重启并运行启动修复。以下链接包含详细说明： https://www.sevenforums.com/tutorials/71363-system-reserved-partition-delete.html
即使在引导加载程序中正确输入了密码，系统加密预测试仍然失败。如何使预测试成功？
这可能是由于TrueCrypt驱动程序在VeraCrypt能够读取BIOS内存之前将其清除所致。在这种情况下，卸载TrueCrypt可以解决此问题。
这也可能是由某些访问BIOS内存的硬件驱动程序和其他软件引起的。对此没有通用的解决方案，受影响的用户应识别此类软件并将其从系统中移除。

我可以直接播放存储在VeraCrypt卷上的视频（.avi、.mpg等）吗？
可以，VeraCrypt加密卷就像普通磁盘一样。你提供正确的密码（和/或密钥文件）并挂载（打开）VeraCrypt卷。当你双击视频文件的图标时，操作系统会启动与该文件类型关联的应用程序 —— 通常是媒体播放器。然后，媒体播放器开始从VeraCrypt加密卷将视频文件的一小部分初始内容加载到RAM（内存）中以进行播放。在加载这部分内容时，VeraCrypt会自动在RAM中对其进行解密。媒体播放器随后播放存储在RAM中的解密后的视频部分。在播放这部分内容的同时，媒体播放器开始从VeraCrypt加密卷将视频文件的另一小部分内容加载到RAM（内存）中，这个过程会不断重复。

视频录制也是同样的道理：在将视频文件的一个数据块写入VeraCrypt卷之前，VeraCrypt会在RAM中对其进行加密，然后再将其写入磁盘。这个过程称为实时加密/解密，它适用于所有文件类型（不仅仅是视频文件）。

VeraCrypt会永远开源且免费吗？
是的，它会的。我们永远不会创建VeraCrypt的商业版本，因为我们相信开源和免费的安全软件。

是否可以向VeraCrypt项目捐款？
可以。你可以使用 https://veracrypt.jp/en/Donation.html上的捐赠按钮。

为什么VeraCrypt是开源的？有什么优点？
由于VeraCrypt的源代码是公开可用的，独立研究人员可以验证源代码中不包含任何安全漏洞或秘密“后门”。如果源代码不可用，审查人员就需要对可执行文件进行逆向工程。然而，分析和理解这样逆向工程得到的代码非常困难，实际上几乎不可能做到（尤其是当代码像VeraCrypt代码一样庞大时）。

备注：类似的问题也会影响加密硬件（例如，自加密存储设备）。很难对其进行逆向工程以验证它不包含任何安全漏洞或秘密“后门”。

VeraCrypt是开源的，但实际上有人审查过源代码吗？
是的。 审计已经由 Quarkslab进行。技术报告可以从这里下载。VeraCrypt 1.19解决了这次审计中发现的问题。

由于VeraCrypt是开源软件，独立研究人员可以验证源代码中不包含任何安全漏洞或秘密“后门”。他们还能验证官方可执行文件是从公布的源代码构建的，并且不包含额外的代码吗？
可以，他们可以。除了审查源代码之外，独立研究人员可以编译源代码，并将生成的可执行文件与官方文件进行比较。他们可能会发现一些差异（例如，时间戳或嵌入式数字签名），但他们可以分析这些差异并验证它们不构成恶意代码。

我如何在USB闪存驱动器上使用VeraCrypt？
你有三种选择：
  1. 对整个USB闪存驱动器进行加密。但是，你将无法从USB闪存驱动器运行VeraCrypt。
  2. 在你的USB闪存驱动器上创建两个或更多分区。将第一个分区保留为未加密状态，并对其他分区进行加密。你可以将VeraCrypt存储在第一个分区上，以便直接从USB闪存驱动器运行它。
    注意：Windows只能访问USB闪存驱动器的主分区，但额外的分区仍然可以通过VeraCrypt访问。
  3. 在USB闪存驱动器上创建一个VeraCrypt文件容器（有关如何操作的信息，请参阅 初学者教程章节，位于 VeraCrypt用户指南中）。如果你在USB闪存驱动器上留出足够的空间（为VeraCrypt容器选择合适的大小），你还可以将VeraCrypt存储在USB闪存驱动器上（与容器一起 —— 而不是在容器内），并且你可以从USB闪存驱动器运行VeraCrypt（另请参阅 便携模式章节，位于 VeraCrypt用户指南中）。

VeraCrypt也会对文件名和文件夹名进行加密吗？
是的。VeraCrypt卷内的整个文件系统都会被加密（包括文件名、文件夹名以及每个文件的内容）。这适用于两种类型的VeraCrypt卷 —— 即文件容器（虚拟VeraCrypt磁盘）和VeraCrypt加密分区/设备。

VeraCrypt是否使用并行处理？
是的。加密/解密速度的提升与你的计算机拥有的核心/处理器数量成正比。有关更多信息，请参阅 并行处理章节，位于 文档中。

是否可以像对未加密的驱动器一样快速地从加密卷/驱动器读取数据和向其写入数据？
是的，因为VeraCrypt使用了流水线技术和并行处理。有关更多信息，请参阅相关章节 流水线处理 以及 并行处理，请参阅 文档。

VeraCrypt 是否支持硬件加速加密？
支持。更多信息，请参阅 硬件加速 章节，可在 文档 中查看。

是否可以从隐藏的 VeraCrypt 卷中启动安装的 Windows 系统？
可以。更多信息，请参阅 隐藏操作系统 部分，可在 文档 中查看。

我能在任何计算机上挂载我的 VeraCrypt 卷（容器）吗？
可以， VeraCrypt 卷 与操作系统无关。只要能在计算机上运行 VeraCrypt，就可以挂载 VeraCrypt 卷（另请参阅问题 '如果我没有管理员权限，能否在 Windows 上使用 VeraCrypt？'）。

当有已挂载的 VeraCrypt 卷在热插拔设备（例如，USB 闪存驱动器或 USB 硬盘）上时，我可以拔出或关闭该设备吗？
在拔出或关闭设备之前，应始终先在 VeraCrypt 中卸载 VeraCrypt 卷，然后如果有“弹出”操作（在“计算机”或“我的电脑”列表中右键单击该设备），则执行此操作，或者使用“安全删除硬件”功能（Windows 内置，可通过任务栏通知区域访问）。否则，可能会导致数据丢失。

什么是隐藏操作系统？
请参阅 隐藏操作系统 部分，可在 文档 中查看。

什么是似是而非的否认性？
请参阅 似是而非的否认性 章节，可在 文档 中查看。

在重新安装或升级操作系统后，我还能挂载我的 VeraCrypt 分区/容器吗？
可以， VeraCrypt 卷 与操作系统无关。但是，需要确保操作系统安装程序不会格式化 VeraCrypt 卷所在的分区。

注意：如果系统分区/驱动器已加密，并且想要重新安装或升级 Windows，则需要先对其进行解密（选择 系统 > 永久解密系统分区/驱动器）。但是，即使系统分区/驱动器已加密，正在运行的操作系统也可以进行 更新（安全补丁、服务包等），不会出现任何问题。

我可以毫无问题地从旧版本的 VeraCrypt 升级到最新版本吗？
一般来说，可以。但是，在升级之前，请阅读自您使用的版本发布以来发布的所有 VeraCrypt 版本的 发行说明。如果从您的版本升级到较新版本存在任何已知问题或不兼容性，它们将在 发行说明 中列出。

如果系统分区/驱动器已加密，我可以升级 VeraCrypt 还是必须先解密？
一般来说，可以在不解密系统分区/驱动器的情况下升级到最新版本（只需运行 VeraCrypt 安装程序，它将自动升级系统上的 VeraCrypt）。但是，在升级之前，请阅读自您使用的版本发布以来发布的所有 VeraCrypt 版本的 发行说明。如果从您的版本升级到较新版本存在任何已知问题或不兼容性，它们将在 发行说明 中列出。请注意，此常见问题解答答案对于使用 隐藏操作系统 的用户同样有效。此外，请注意，如果系统分区/驱动器已加密，则不能 降 级 VeraCrypt。

我使用预启动身份验证。我可以防止监视我启动计算机的人知道我使用 VeraCrypt 吗？
可以。要做到这一点，请启动加密系统，打开 VeraCrypt，选择 设置 > 系统加密，启用“在预启动身份验证屏幕中不显示任何文本”选项，然后点击 确定。然后，当您启动计算机时，VeraCrypt 引导加载程序将不会显示任何文本（即使输入错误密码也不会显示）。计算机看起来会“冻结”，而您可以输入密码。但是，重要的是要注意，如果攻击者能够分析硬盘内容，他仍然可以发现硬盘包含 VeraCrypt 引导加载程序。

我使用预启动身份验证。我可以将 VeraCrypt 引导加载程序配置为仅显示虚假错误消息吗？
可以。要做到这一点，请启动加密系统，打开 VeraCrypt，选择 设置 > 系统加密，启用“在预启动身份验证屏幕中不显示任何文本”选项，并在相应字段中输入虚假错误消息（例如，“缺少操作系统”消息，这是 Windows 引导加载程序在找不到 Windows 引导分区时通常显示的消息）。但是，重要的是要注意，如果攻击者能够分析硬盘内容，他仍然可以发现硬盘包含 VeraCrypt 引导加载程序。

我可以将 VeraCrypt 配置为在 Windows 启动时自动挂载使用与我的系统分区/驱动器相同密码（即我的预启动身份验证密码）的非系统 VeraCrypt 卷吗？
可以。请按照以下步骤操作：
  1. 挂载该卷（挂载到您希望每次都挂载到的驱动器号）。
  2. 在 VeraCrypt 主窗口的驱动器列表中右键单击已挂载的卷，然后选择“添加到系统收藏夹”。
  3. 此时应会出现“系统收藏夹管理器”窗口。在此窗口中，启用“Windows 启动时挂载系统收藏卷”选项，然后点击确定。
欲了解更多信息，请参阅 “系统收藏卷”章节。

每次登录 Windows 时，能否自动挂载某个卷？
可以。要实现这一点，请按照以下步骤操作：
  1. 挂载该卷（挂载到你希望每次都挂载到的驱动器号）。
  2. 在 VeraCrypt 主窗口的驱动器列表中，右键单击已挂载的卷，然后选择“添加到收藏夹”。
  3. 此时应会出现 “收藏夹”管理器窗口。在此窗口中，启用“登录时挂载所选卷”选项，然后点击确定。
然后，当你登录 Windows 时，系统会要求你输入卷密码（和/或密钥文件），如果密码正确，该卷将被挂载。

或者，如果这些卷是分区/设备托管的，并且你不需要每次都将它们挂载到特定的驱动器号，可以按照以下步骤操作：
  1. 选择设置 > 首选项。此时应会出现“首选项”窗口。
  2. 在“登录 Windows 时执行的操作”部分，启用“挂载所有设备托管的 VeraCrypt 卷”选项，然后点击确定。
注意：如果你启用了 预启动身份验证密码的缓存（设置 > “系统加密”），并且这些卷使用与系统分区/驱动器相同的密码，VeraCrypt 将不会提示你输入密码。

每当其主机设备连接到计算机时，能否自动挂载某个卷？
可以。例如，如果你在 USB 闪存驱动器上有一个 VeraCrypt 容器，并且希望在将 USB 闪存驱动器插入 USB 端口时，VeraCrypt 自动挂载它，请按照以下步骤操作：
  1. 挂载该卷（挂载到你希望每次都挂载到的驱动器号）。
  2. 在 VeraCrypt 主窗口的驱动器列表中，右键单击已挂载的卷，然后选择“添加到收藏夹”。
  3. 此时应会出现 “收藏夹”管理器窗口。在此窗口中，启用“主机设备连接时挂载所选卷”选项，然后点击确定。
然后，当你将 USB 闪存驱动器插入 USB 端口时，系统会要求你输入卷密码（和/或密钥文件）（除非已缓存），如果密码正确，该卷将被挂载。

注意：如果你启用了 预启动身份验证密码的缓存（设置 > “系统加密”），并且该卷使用与系统分区/驱动器相同的密码，VeraCrypt 将不会提示你输入密码。

能否缓存我的预启动身份验证密码，以便在会话期间用于挂载非系统卷？
可以。选择设置 > “系统加密”，并启用以下选项：“在驱动程序内存中缓存预启动身份验证密码”。

我生活在一个侵犯人民基本人权的国家。是否可以在未加密的 Windows 上使用 VeraCrypt 而不留下任何“痕迹”？
可以。可以通过在 BartPE或类似环境下以 便携模式运行 VeraCrypt 来实现。BartPE 代表“Bart 的预安装环境”，本质上是一种可以完全存储在 CD/DVD 上并从其启动的 Windows 操作系统（注册表、临时文件等都存储在 RAM 中，根本不使用硬盘，甚至硬盘可以不存在）。免费软件 Bart's PE Builder可以将 Windows XP 安装 CD 转换为 BartPE CD。请注意，你甚至不需要为 BartPE 安装任何特殊的 VeraCrypt 插件。请按照以下步骤操作：
  1. 创建一个 BartPE CD 并从其启动。（注意：你必须在 BartPE 环境中执行以下每个步骤。）
  2. 将 VeraCrypt 自解压包下载到 RAM 磁盘（BartPE 会自动创建）。

    注意：如果攻击者可以拦截你通过互联网发送或接收的数据，并且你需要防止攻击者知道你下载了 VeraCrypt，可以考虑通过 I2P、 Tor或类似的匿名网络下载。
  3. 验证下载文件的数字签名（有关更多信息，请参阅文档的 此部分）。
  4. 运行下载的文件，并在 VeraCrypt 安装向导的第二页选择提取（而不是安装）。将内容提取到 RAM 磁盘。
  5. 从 RAM 磁盘运行VeraCrypt.exe文件。
注意：你可能还需要考虑创建一个隐藏操作系统（请参阅文档中的 “隐藏操作系统”部分）。另请参阅 “似是而非的否认”章节。

如果我没有美国键盘，能否加密我的系统分区/驱动器？
可以，VeraCrypt 支持所有键盘布局。由于 BIOS 要求，预启动密码使用为避免密码输入错误，用户在输入密码时必须使用与创建系统加密时相同的按键。

我能否在不损坏隐藏系统分区的前提下，将数据保存到诱饵系统分区？
可以。您可以随时向诱饵系统分区写入数据，而不会有隐藏卷损坏的风险（因为诱饵系统并未安装在与隐藏系统相同的分区中）。有关更多信息，请参阅 隐藏操作系统部分，该部分位于 文档中。

如果我没有管理员权限，能否在Windows系统上使用VeraCrypt？
请参阅 “无管理员权限使用VeraCrypt”章节，该章节位于 文档中。

VeraCrypt会将我的密码保存到磁盘上吗？
不会。

VeraCrypt如何验证输入的密码是否正确？
请参阅 加密方案部分（位于 技术细节章节），该部分位于 文档中。

我能否在不丢失当前存储在分区/驱动器上的数据的情况下对其进行加密？
可以，但必须满足以下条件：
  • 如果您想加密整个系统驱动器（可能包含多个分区）或系统分区（换句话说，如果您想加密安装了Windows的驱动器或分区），只要您使用的是Windows XP或更高版本的Windows系统（如Windows 7），就可以进行加密 （选择 '系统' > '加密系统分区/驱动器'，然后按照向导中的说明操作）。
  • 如果您想对非系统分区进行原地加密，只要该分区包含NTFS文件系统，并且您使用的是Windows Vista或更高版本的Windows系统（例如Windows 7），就可以进行加密 （点击 '创建卷' > '加密非系统分区' > '标准卷' > '选择设备' > '原地加密分区'，然后按照向导中的说明操作）。

如果我不安装VeraCrypt，能否运行它？
可以，请参阅 便携模式章节，该章节位于 VeraCrypt用户指南中。

一些加密程序使用TPM来防止攻击。VeraCrypt也会使用它吗？
不会。那些程序使用TPM来防范需要攻击者具备管理员权限或物理访问计算机的攻击，并且攻击者需要在获得访问权限后让您继续使用计算机。 然而，如果满足上述任何一个条件，实际上就不可能确保计算机的安全（请见下文），因此，您必须停止使用该计算机（而不是依赖TPM）。

如果攻击者具有管理员权限，他可以，例如，重置TPM，捕获RAM的内容（包含主密钥）或已挂载的VeraCrypt卷上存储的文件内容（实时解密），然后这些内容可以通过互联网发送给攻击者，或者保存到未加密的本地驱动器中（攻击者在获得计算机的物理访问权限后，可能会从中读取这些内容）。

如果攻击者可以物理访问计算机硬件（并且您在这种访问之后继续使用计算机），他可以，例如，连接一个恶意组件（如硬件按键记录器）来捕获密码、RAM的内容（包含主密钥）或已挂载的VeraCrypt卷上存储的文件内容（实时解密），然后这些内容可以通过互联网发送给攻击者，或者保存到未加密的本地驱动器中（攻击者在再次获得计算机的物理访问权限后，可能会从中读取这些内容）。

TPM几乎可以保证提供的唯一东西是一种虚假的安全感（甚至它的名称“可信平台模块”也具有误导性，会让人产生虚假的安全感）。至于真正的安全性，TPM实际上是多余的（而实现多余的功能通常是制造所谓的臃肿软件的一种方式）。

有关更多信息，请参阅 物理安全和 恶意软件部分，这些部分位于 文档中。

在关闭或重启Windows系统之前，我是否必须卸载VeraCrypt卷？
不需要。VeraCrypt会在系统关闭/重启时自动卸载所有已挂载的VeraCrypt卷。

哪种类型的VeraCrypt卷更好 —— 分区还是文件容器？
文件容器是普通文件，因此您可以像处理任何普通文件一样处理它们（例如，文件容器可以像普通文件一样移动、重命名和删除）。 分区/驱动器在性能方面可能更好。请注意，当文件容器严重碎片化时，对其进行读写操作可能会花费显著更长的时间。要解决这个问题，请对存储该容器的文件系统进行碎片整理（当VeraCrypt卷未挂载时）。

备份VeraCrypt卷的推荐方法是什么？
请参阅 “如何安全备份”章节，该章节位于 文档中。

如果我格式化一个VeraCrypt分区，会发生什么？
查看问题 '是否可以更改加密卷的文件系统？'

是否可以更改加密卷的文件系统？
是的，挂载后，VeraCrypt 卷可以格式化为 FAT12、FAT16、FAT32、NTFS 或任何其他文件系统。VeraCrypt 卷的行为与标准磁盘设备相同，因此您可以右键单击设备图标（例如在 '计算机' 或 '我的电脑' 列表中）并选择 '格式化'。实际的卷内容将丢失。但是，整个卷仍将保持加密状态。如果您在托管 VeraCrypt 卷的分区未挂载时对其进行格式化，那么该卷将被销毁，并且该分区将不再加密（它将为空）。

是否可以挂载存储在 CD 或 DVD 上的 VeraCrypt 容器？
可以。但是，如果您需要在 Windows 2000 下挂载存储在只读介质（如 CD 或 DVD）上的 VeraCrypt 卷，VeraCrypt 卷内的文件系统必须是 FAT（Windows 2000 无法在只读介质上挂载 NTFS 文件系统）。

是否可以更改隐藏卷的密码？
是的，密码更改对话框适用于标准卷和 隐藏卷。只需在“卷密码更改”对话框的“当前密码”字段中输入隐藏卷的密码即可。
备注：VeraCrypt 首先尝试解密标准 卷头，如果失败，它会尝试解密卷中可能存储隐藏卷头的区域（如果卷内有隐藏卷）。如果成功，密码更改将应用于隐藏卷。（两次尝试都使用在“当前密码”字段中输入的密码。）

如何将大于 2 GB 的 VeraCrypt 容器刻录到 DVD 上？

您使用的 DVD 刻录软件应允许您选择 DVD 的格式。如果可以，请选择 UDF 格式（ISO 格式不支持大于 2 GB 的文件）。

我可以在挂载的 VeraCrypt 卷的内容上使用 chkdsk、磁盘碎片整理程序等工具吗？
可以，VeraCrypt 卷的行为就像真实的物理磁盘设备一样，因此可以在挂载的 VeraCrypt 卷的内容上使用任何文件系统检查/修复/碎片整理工具。

VeraCrypt 是否支持 64 位版本的 Windows？
是的，它支持。注意：64 位版本的 Windows 仅加载使用由获批准颁发内核模式代码签名证书的证书颁发机构颁发的数字证书进行数字签名的驱动程序。VeraCrypt 符合此要求（VeraCrypt 驱动程序使用 IDRIX 的数字证书进行了 数字签名，该证书由证书颁发机构 Thawte 颁发）。

我可以在 Windows、Mac OS X 和 Linux 下挂载我的 VeraCrypt 卷吗？
可以，VeraCrypt 卷是完全跨平台的。
如何在 Linux 上卸载 VeraCrypt？
要在 Linux 上卸载 VeraCrypt，请以 root 用户身份在终端中运行以下命令： veracrypt-uninstall.sh。在 Ubuntu 上，您可以使用 "sudo veracrypt-uninstall.sh"。

是否有 VeraCrypt 支持的所有操作系统的列表？
有，请参阅 VeraCrypt 用户指南 中的 支持的操作系统 章节。

是否可以将应用程序安装到 VeraCrypt 卷并从那里运行它？
可以。

当 VeraCrypt 卷的一部分损坏时会发生什么？
在加密数据中，一个损坏的位通常会损坏它所在的整个密文块。VeraCrypt 使用的密文块大小为 16 字节（即 128 位）。VeraCrypt 使用的 操作模式 确保如果一个块内发生数据损坏，其余块不受影响。另请参阅问题 '当我的 VeraCrypt 卷上的加密文件系统损坏时我该怎么办？

当我的 VeraCrypt 卷上的加密文件系统损坏时我该怎么办？
VeraCrypt 卷内的文件系统可能会像任何普通的未加密文件系统一样损坏。发生这种情况时，您可以使用操作系统提供的文件系统修复工具来修复它。在 Windows 中，是 'chkdsk' 工具。VeraCrypt 提供了一种在 VeraCrypt 卷上使用此工具的简便方法：在 VeraCrypt 主窗口（驱动器列表中）中右键单击已挂载的卷，然后从上下文菜单中选择 '修复文件系统'。

我们在企业环境中使用 VeraCrypt。当用户忘记密码（或丢失密钥文件）时，管理员是否有办法重置卷密码或预启动身份验证密码？
可以。请注意，VeraCrypt 中没有实现“后门”。但是，有一种方法可以“重置”卷密码/密钥文件 和 预启动身份验证 密码。创建卷后，在允许 非管理员用户 使用该卷之前，将其卷头备份到文件中（选择 工具 -> 备份卷头）。请注意， 卷头（使用从密码/密钥文件派生的 头密钥 进行加密）包含用于加密卷的 主密钥。然后要求用户选择一个密码，并为他/她设置该密码（加密卷 -> 修改加密卷密码); 或者为他/她生成一个用户密钥文件。然后，你可以允许用户使用该卷，并在无需你协助/许可的情况下更改密码/密钥文件。如果他/她忘记了密码或丢失了密钥文件，你可以通过从备份文件中恢复卷头（工具 -> 恢复卷头），将卷密码/密钥文件“重置”为你原来的管理员密码/密钥文件。

同样，你可以重置 预启动认证 密码 . 要创建主密钥数据的备份（该备份将存储在 VeraCrypt 救援盘 上，并使用你的管理员密码进行加密），请选择 '系统' > '创建救援盘'。要设置用户 预启动认证 密码，请选择 '系统' > '更改密码'。要恢复你的管理员密码，请启动 VeraCrypt 救援盘，选择 '修复选项' > '恢复密钥数据'，然后输入你的管理员密码。
注意：无需将每个 VeraCrypt 救援盘 ISO 镜像刻录到 CD/DVD 上。你可以为所有工作站维护一个 ISO 镜像的中央存储库（而不是 CD/DVD 存储库）。有关更多信息，请参阅 命令行用法 部分（选项 /noisocheck）。

我们的商业公司可以免费使用 VeraCrypt 吗？
只要你遵守 VeraCrypt 许可证 的条款和条件，你就可以在任意数量的计算机上免费安装和运行 VeraCrypt。

我们通过网络共享一个卷。有没有办法在系统重启时自动恢复网络共享？
请参阅 VeraCrypt 用户指南 中的 '通过网络共享' 章节。

是否可以同时从多个操作系统访问单个 VeraCrypt 卷（例如，通过网络共享的卷）？
请参阅 VeraCrypt 用户指南 中的 '通过网络共享' 章节。

用户可以通过网络访问他/她的 VeraCrypt 卷吗？
请参阅 VeraCrypt 用户指南 中的 '通过网络共享' 章节。

我对一个非系统分区进行了加密，但它原来的驱动器号仍然显示在 '我的电脑' 列表中。当我双击这个驱动器号时，Windows 会询问我是否要格式化该驱动器。有没有办法隐藏或释放这个驱动器号？
是的，要释放驱动器号，请按照以下步骤操作：
  1. 右键单击桌面上或开始菜单中的 '此电脑'（或 '我的电脑'）图标，然后选择 管理。此时应会出现 '计算机管理' 窗口。
  2. 从左侧列表中，选择 '磁盘管理'（在 存储 子树中）。
  3. 右键单击加密的分区/设备，然后选择 更改驱动器号和路径。
  4. 单击 删除。
  5. 如果 Windows 提示你确认操作，请单击 是。

当我插入加密的 USB 闪存驱动器时，Windows 会询问我是否要格式化它。有没有办法防止这种情况发生？
是的，但你需要删除分配给该设备的驱动器号。有关如何操作的信息，请参阅问题 '我对一个非系统分区进行了加密，但它原来的驱动器号仍然显示在 '我的电脑' 列表中。'。

如果我不再需要加密，如何移除或撤销加密？如何永久解密一个卷？
请参阅 VeraCrypt 用户指南 中的 '如何移除加密' 部分。

启用 '将卷作为可移动媒体挂载' 选项后会有什么变化？
请参阅 VeraCrypt 用户指南 中的 '作为可移动媒体挂载的卷' 部分。

在线文档是否可以作为单个文件下载？
是的，文档包含在文件 VeraCrypt 用户指南.chm 中，该文件包含在适用于 Windows 的官方 VeraCrypt 安装程序中。你也可以使用主页 https://veracrypt.jp/en/downloads/ 上提供的链接下载 CHM 文件。请注意，你 无需 安装 VeraCrypt 即可获取 CHM 文档。只需运行自解压安装包，然后在 VeraCrypt 安装向导的第二页选择 提取（而不是 安装）。另外请注意，当你 确实 安装 VeraCrypt 时，CHM 文档会自动复制到 VeraCrypt 安装的文件夹中，并且可以通过 VeraCrypt 用户界面访问（按 F1 或选择帮助 > 用户指南）。

我是否需要对VeraCrypt卷上的空闲空间和/或文件进行“擦除”操作？
备注：“擦除”指的是安全地删除数据，即覆盖敏感数据以使其无法恢复。

如果您认为攻击者能够解密该卷（例如，他会迫使您透露密码），那么答案是需要。否则，就没有必要，因为整个卷都是加密的。

VeraCrypt如何知道我的VeraCrypt卷使用了哪种加密算法？
请参阅 加密方案部分（ 技术细节章节），可在 文档中找到。
如何在VeraCrypt卷上执行Windows内置备份？VeraCrypt卷未显示在可用备份路径列表中。
Windows内置备份实用程序仅查找物理驱动器，因此它不会显示VeraCrypt卷。不过，您仍然可以通过一个技巧在VeraCrypt卷上进行备份：通过资源管理器界面在VeraCrypt卷上启用共享（当然，您需要设置正确的权限以防止未经授权的访问），然后选择“远程共享文件夹”选项（实际上它并不是远程的，但Windows需要一个网络路径）。在那里，您可以输入共享驱动器的路径（例如 \\ServerName\sharename），备份将正确配置。
VeraCrypt使用的加密技术是否容易受到量子攻击？
VeraCrypt使用块密码（AES、Serpent、Twofish）进行加密。针对这些块密码的量子攻击只是一种更快的暴力破解方式，因为目前已知针对这些算法的最佳攻击方法是穷举搜索（相关密钥攻击与我们的情况无关，因为所有密钥都是随机且相互独立的）。
由于VeraCrypt始终使用256位随机且相互独立的密钥，我们可以确保其针对量子算法的安全级别达到128位，这使得VeraCrypt加密能够抵御此类攻击。
如何使VeraCrypt卷可用于Windows搜索索引？
为了能够通过Windows搜索对VeraCrypt卷进行索引，该卷必须在启动时挂载（系统收藏），或者在挂载卷后重新启动Windows搜索服务。这是因为Windows搜索只能索引在其启动时可用的驱动器。
在macOS上尝试挂载文件容器时，我遇到了VeraCrypt的“Operation not permitted”错误。如何解决这个问题？

一些用户报告了这种特定的错误，其形式为“Operation not permitted: /var/folders/w6/d2xssyzx.../T/.veracrypt_aux_mnt1/control VeraCrypt::File::Open:232”。这是由于macOS未授予VeraCrypt必要的权限所致。您可以尝试以下几种解决方案：

  • A. 授予VeraCrypt完全磁盘访问权限：

    1. 转到 苹果菜单 > 系统设置。
    2. 点击 隐私与安全 选项卡。
    3. 向下滚动并选择 完全磁盘访问。
    4. 点击 + 按钮，导航到您的应用程序文件夹，选择 VeraCrypt，然后点击 打开。
    5. 确保VeraCrypt旁边的复选框已勾选。
    6. 关闭系统设置窗口，然后再次尝试使用VeraCrypt。

  • B. 使用sudo命令启动VeraCrypt：

    您可以在终端中使用提升的权限启动VeraCrypt：

    sudo /Applications/VeraCrypt.app/Contents/MacOS/VeraCrypt
    使用sudo命令运行VeraCrypt通常可以绕过某些与权限相关的问题，但只要可能，最好还是通过系统设置授予必要的权限。

为什么VeraCrypt列表中显示了一个未知设备，而该设备在Windows磁盘管理或DiskPart输出中并未显示为物理磁盘？

从Windows 10版本1903及更高版本开始，微软引入了一项名为 Windows沙盒 的功能。这是一个隔离环境，旨在安全地运行不受信任的应用程序。作为此功能的一部分，Windows会生成一个动态虚拟硬盘（VHDX），它代表一个干净的Windows安装。这个VHDX包含基本系统映像、用户数据和运行时状态，其大小会根据系统配置和使用情况而有所不同。

当VeraCrypt枚举系统上的设备时，它会使用诸如 \Device\HardDiskX\PartitionY 之类的设备路径格式来识别所有可用的磁盘设备。VeraCrypt会列出这些设备，包括与Windows沙盒相关的虚拟设备，而不会根据其物理或虚拟性质进行区分。因此，即使在diskpart等工具中未显示为物理磁盘，您也可能会在VeraCrypt中看到一个意外的设备。

有关Windows沙盒功能及其关联的虚拟硬盘的更多详细信息，您可以参考这篇 微软官方文章。

我在常见问题解答中没有找到我的问题的答案 - 我该怎么办？
请搜索VeraCrypt文档和网站。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 技术细节

技术细节

  • 符号说明
  • 加密方案
  • 操作模式
  • 头部密钥推导、盐值和迭代次数
  • 随机数生成器
  • 密钥文件
  • 个人迭代乘数（PIM）
  • VeraCrypt卷格式规范
  • 与标准和规范的兼容性
  • 源代码
  • 从源代码构建VeraCrypt
    • Windows构建指南
    • Linux构建指南


文档 >> 技术细节 >> 符号说明

符号说明

C | 密文块
DK() | 使用加密/解密密钥 K 的解密算法
EK() | 使用加密/解密密钥 K 的加密算法
H() | 哈希函数
i | n位块的块索引；n取决于上下文
K | 加密密钥
^ | 按位异或运算（XOR）
⊕ | 模2n加法，其中n是最左边操作数和结果值的位大小（例如，如果左操作数是1位值，右操作数是2位值，则：1 ⊕ 0 = 1；1 ⊕ 1 = 0；1 ⊕ 2 = 1；1 ⊕ 3 = 0； 0 ⊕ 0 = 0；0 ⊕ 1 = 1；0 ⊕ 2 = 0；0 ⊕ 3 = 1）
⊗ | 二元域GF(2)上两个多项式模x128 + x7 + x2 + x + 1的模乘运算（GF代表伽罗瓦域）
|| | 连接

下一部分 >>


文档 >> 技术细节 >> 加密方案

加密方案

在挂载VeraCrypt卷时（假设没有缓存的密码/密钥文件）或执行预启动认证时，会执行以下步骤：

  1. 将卷的前512字节（即标准卷头）读入内存，其中前64字节是盐值（请参阅 VeraCrypt卷格式规范）。对于系统加密（请参阅 系统加密章节），将第一个逻辑驱动器磁道的最后512字节读入内存（VeraCrypt引导加载程序存储在系统驱动器的第一个磁道和/或VeraCrypt救援磁盘上）。
  2. 将卷的第65536 - 66047字节读入内存（请参阅 VeraCrypt卷格式规范部分）。对于系统加密，将活动分区后面的第一个分区的第65536 - 66047字节读入内存（请参阅 隐藏操作系统部分）。如果此卷（或引导分区后面的分区）内有隐藏卷，此时我们已经读取了其卷头；否则，我们只是读取了随机数据（是否存在隐藏卷必须通过尝试解密此数据来确定；更多信息请参阅 隐藏卷部分）。
  3. 现在VeraCrypt尝试解密在步骤(1)中读取的标准卷头。解密过程中使用和生成的所有数据都保存在内存中（VeraCrypt从不将它们保存到磁盘）。以下参数是未知的†，必须通过试错过程（即测试以下所有可能的组合）来确定：
    1. 头密钥派生函数使用的伪随机函数（PRF，如PKCS #5 v2.0中所指定；请参阅 头密钥派生、盐值和迭代次数部分），可以是以下之一：

      HMAC - SHA - 512、HMAC - SHA - 256、HMAC - BLAKE2S - 256、HMAC - Whirlpool。如果用户明确指定了PRF，则将直接使用它，而不尝试其他可能性。

      用户输入的密码（可能已应用了一个或多个密钥文件 - 请参阅 密钥文件部分）、PIM值（如果指定）和在步骤(1)中读取的盐值将传递给头密钥派生函数，该函数会生成一系列值（请参阅 头密钥派生、盐值和迭代次数部分），从中形成头加密密钥和辅助头密钥（XTS模式）。（这些密钥用于解密卷头。）

    2. 加密算法：AES - 256、Serpent、Twofish、AES - Serpent、AES - Twofish - Serpent等。
    3. 操作模式：仅支持XTS模式
    4. 密钥大小
  4. 如果解密数据的前4个字节包含ASCII字符串“VERA”，并且解密数据（卷头）的最后256字节的CRC - 32校验和与解密数据的第8字节处的值匹配，则认为解密成功（该值对手是未知的，因为它是加密的 - 请参阅 VeraCrypt卷格式规范部分）。如果不满足这些条件，过程将从步骤(3)重新开始，但这次使用在步骤(2)中读取的数据（即可能的隐藏卷头）。如果仍然不满足条件，则挂载终止（密码错误、卷损坏或不是VeraCrypt卷）。
  5. 现在我们知道（或极有可能假设）我们拥有正确的密码、正确的加密算法、模式、密钥大小和正确的头密钥派生算法。如果我们成功解密了在步骤(2)中读取的数据，我们还知道我们正在挂载一个隐藏卷，并且其大小可以从在步骤(3)中解密的步骤(2)读取的数据中获取。
  6. 使用主主密钥**和辅助主密钥（XTS模式 - 请参阅 操作模式部分）重新初始化加密例程，这些密钥从解密的卷头中获取（请参阅 VeraCrypt卷格式规范部分）。这些密钥可用于解密卷的任何扇区，但卷头区域（或系统加密的密钥数据区域）除外，该区域使用头密钥进行加密。卷被挂载。

另请参阅 操作模式部分、 头密钥派生、盐值和迭代次数部分以及 安全模型章节。

* 如果活动分区的大小小于256 MB，则从活动分区后面的第二个分区读取数据（Windows 7及更高版本默认不从安装它们的分区启动）。

† 保留这些参数的秘密并不是为了增加攻击的复杂性，主要是为了使VeraCrypt卷无法识别（与随机数据无法区分），如果这些参数未加密存储在卷头中，这将很难实现。另请注意，在传统MBR引导模式下，如果系统加密使用非级联加密算法，则该算法是已知的（可以通过分析存储在第一个逻辑驱动器磁道或VeraCrypt救援磁盘上的未加密VeraCrypt引导加载程序的内容来确定）。

** 主密钥是在卷创建期间生成的，之后无法更改。更改卷密码是通过使用新的头密钥（从新密码派生）重新加密卷头来实现的。

下一部分 >>


文档 >> 技术细节 >> 操作模式

操作模式

VeraCrypt用于加密分区、驱动器和虚拟卷的操作模式是XTS。

XTS模式实际上是XEX模式 [12]，它由Phillip Rogaway在2003年设计，有一个小的修改（XEX模式将单个密钥用于两个不同的目的，而XTS模式使用两个独立的密钥）。

2010年，XTS模式被美国国家标准与技术研究院（NIST）批准用于保护存储设备上数据的机密性 [24]。2007年，它也被电气和电子工程师协会（IEEE）批准用于面向块的存储设备上数据的加密保护（IEEE 1619）。

XTS模式的描述:

Ci = EK1(Pi ^ (EK2(n) [image] ai)) ^ (EK2(n) [image] ai)
其中：
 | 表示在二进制域GF(2)上，两个多项式模 x128+x7+x2+x+1 的乘法
K1 | 是加密密钥（对于每个支持的密码算法，如AES、Serpent和Twofish，均为256位）
K2 | 是辅助密钥（对于每个支持的密码算法，如AES、Serpent和Twofish，均为256位）
i | 是数据单元内的密码块索引； 对于数据单元内的第一个密码块， i = 0
n | 是在 K1 范围内的数据单元索引； 对于第一个数据单元， n = 0
a | 是伽罗瓦域 (2128) 中对应于多项式 x（即2）的一个本原元
注意：其余符号的定义见 符号说明 部分。

每个数据单元的大小始终为512字节（与扇区大小无关）。
有关XTS模式的更多信息，请参阅例如 [12] 和 [24]。
下一部分 >>


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 技术细节 >> 头密钥推导、盐值和迭代次数

头密钥推导、盐值和迭代次数

头密钥用于加密和解密VeraCrypt卷头的加密区域（对于 系统加密，则是密钥数据区域），该区域包含主密钥和其他数据（请参阅 加密方案和 VeraCrypt卷格式规范 部分）。在VeraCrypt创建的卷中（以及对于 系统加密），该区域采用XTS模式进行加密（请参阅 操作模式 部分）。VeraCrypt用于生成头密钥和辅助头密钥（XTS模式）的方法是PBKDF2，该方法在PKCS #5 v2.0中定义；请参阅 [7]。
使用了512位的盐值，这意味着每个密码有2512 个密钥。这显著降低了对“离线”字典/“彩虹表”攻击的脆弱性（使用盐值时，为字典中的所有密码预先计算所有密钥非常困难） [7]。盐值由 VeraCrypt随机数生成器 在卷创建过程中生成的随机值组成。头密钥推导函数基于HMAC - SHA - 512、HMAC - SHA - 256、HMAC - BLAKE2S - 256、HMAC - Whirlpool或HMAC - Streebog（请参阅 [8, 9, 20, 22]） — 用户可以选择使用哪种。派生密钥的长度不取决于底层哈希函数的输出大小。例如，即使使用HMAC - SHA - 512，AES - 256密码的头密钥始终为256位长（在XTS模式下，还会使用一个额外的256位辅助头密钥；因此，AES - 256总共使用两个256位密钥）。更多信息，请参阅 [7]。为了推导出头密钥，必须执行大量的密钥推导函数迭代，这增加了进行密码穷举搜索（即暴力攻击）所需的时间 [7]。

在1.12版本之前，VeraCrypt始终使用固定的迭代次数，该次数仅取决于卷类型和使用的推导算法。 从1.12版本开始， PIM 字段（个人迭代乘数）使用户能够更好地控制密钥推导函数使用的迭代次数。

当未指定 PIM 值或该值等于零时，VeraCrypt使用以下默认值：

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

当用户提供 PIM 值时，密钥推导函数的迭代次数计算如下：

  • 对于不使用SHA - 512或Whirlpool的系统加密：迭代次数 = PIM x 2048
  • 对于使用SHA - 512或Whirlpool的系统加密：迭代次数 = 15000 + (PIM x 1000)
  • 对于非系统加密和文件容器：迭代次数 = 15000 + (PIM x 1000)
级联密码中使用的头密钥相互独立，即使它们是从单个密码（可能已应用密钥文件）派生而来。例如，对于AES - Twofish - Serpent级联，头密钥推导函数会根据给定密码推导出一个768位的加密密钥（在XTS模式下，还会从给定密码推导出一个768位的 辅助 头密钥）。生成的768位头密钥随后被拆分为三个256位密钥（在XTS模式下， 辅助 头密钥也被拆分为三个256位密钥，因此级联实际上总共使用六个256位密钥），其中第一个密钥由Serpent使用，第二个密钥由Twofish使用，第三个密钥由AES使用（此外，在XTS模式下，第一个辅助密钥由Serpent使用，第二个辅助密钥由Twofish使用，第三个辅助密钥由AES使用）。因此，即使攻击者拥有其中一个密钥，他也无法使用该密钥推导出其他密钥，因为除了对弱密码进行暴力攻击外，没有可行的方法来确定派生该密钥的密码。
下一部分 >>


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密软件

文档 >> 技术细节 >> 随机数生成器

随机数生成器

VeraCrypt随机数生成器（RNG）用于生成主加密密钥、辅助密钥（XTS模式）、盐值和密钥文件。它在随机存取存储器（内存）中创建一个随机值池。这个320字节长的池由以下来源的数据填充：

  • 鼠标移动
  • 按键操作
  • Mac OS X和Linux：内置随机数生成器生成的值（包括/dev/random和/dev/urandom）
  • 仅适用于MS Windows：MS Windows CryptoAPI（每隔500毫秒定期收集）
  • 仅适用于MS Windows：网络接口统计信息（NETAPI32）
  • 仅适用于MS Windows：各种Win32句柄、时间变量和计数器（每隔500毫秒定期收集）

从上述任何来源获取的值在写入池之前，会被分割成单个字节（例如，一个32位的数字会被分割成四个字节）。然后，这些字节通过模28加法运算（而不是替换池中的旧值），分别写入池的游标位置。写入一个字节后，池游标的位置会向前移动一个字节。当游标到达池的末尾时，其位置会被设置为池的开头。每写入16个字节到池中后，会自动对整个池应用池混合函数（见下文）。

池混合函数

此函数的目的是进行扩散[2]。扩散将单个“原始”输入位的影响尽可能地分散到池状态的更多部分，这也隐藏了统计关系。每写入16个字节到池中后，会对整个池应用此函数。

池混合函数的描述：

  1. 设R为随机数池。
  2. 设H为用户选择的哈希函数（SHA - 512、BLAKE2S - 256或Whirlpool）。
  3. l = 哈希函数H输出的字节大小（即，如果H是BLAKE2S - 256，则l = 20；如果H是SHA - 512，则l = 64）
  4. z = 随机数池R的字节大小（320字节）
  5. q = z / l - 1（例如，如果H是Whirlpool，则q = 4）
  6. R被分割成l字节的块B0...Bq。

    对于0 ≤ i ≤ q（即，对于每个块B），执行以下步骤：

    1. M = H (B0 || B1 || ... || Bq) [即，使用哈希函数H对随机数池进行哈希处理，生成哈希值M]
    2. Bi = Bi ^ M
  7. R = B0 || B1 || ... || Bq

例如，如果q = 1，随机数池将按以下方式混合：

  1. (B0 || B1) = R
  2. B0 = B0 ^ H(B0 || B1)
  3. B1 = B1 ^ H(B0 || B1)
  4. R = B0 || B1

生成的值

随机数生成器池的内容永远不会直接导出（即使VeraCrypt指示随机数生成器生成并导出一个值）。因此，即使攻击者获得了随机数生成器生成的值，他也无法确定或预测（使用所获得的值）会话期间随机数生成器生成的任何其他值（从随机数生成器生成的值确定池的内容是不可行的）。

每当VeraCrypt指示随机数生成器生成并导出一个值时，随机数生成器通过执行以下步骤来确保这一点：

  1. 将从上述来源获得的数据按上述方式添加到池中。
  2. 将请求的字节数从池复制到输出缓冲区（复制从池游标的位置开始；当到达池的末尾时，复制从池的开头继续；如果请求的字节数大于池的大小，则不生成值并返回错误）。
  3. 反转池中每个位的状态（即，0变为1，1变为0）。
  4. 将从上述某些来源获得的数据按上述方式添加到池中。
  5. 使用池混合函数转换池的内容。注意：该函数使用用户选择的加密安全单向哈希函数（有关更多信息，请参阅上面的池混合函数部分）。
  6. 将转换后的池内容按以下方式异或到输出缓冲区：
    1. 将输出缓冲区写入游标设置为0（缓冲区的第一个字节）。
    2. 从池的游标位置读取一个字节，并将其与输出缓冲区中写入游标位置的字节进行异或运算。
    3. 将池游标的位置向前移动一个字节。如果到达池的末尾，则将游标位置设置为0（池的第一个字节）。
    4. 将输出缓冲区写入游标的位置向前移动一个字节。
    5. 对输出缓冲区的每个剩余字节（其长度等于请求的字节数）重复步骤b - d。
    6. 导出输出缓冲区的内容，即随机数生成器生成的最终值。

设计起源

随机数生成器的设计和实现基于以下工作：

  • Peter Gutmann的《软件生成实用强随机数》[10]
  • Carl Ellison的《加密随机数》[11]

下一部分 >>


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 技术细节 >> 密钥文件

密钥文件

VeraCrypt密钥文件是一种其内容会与密码相结合的文件。用户可以使用任何类型的文件作为VeraCrypt密钥文件。用户还可以使用内置的密钥文件生成器来生成密钥文件，该生成器利用VeraCrypt随机数生成器（RNG）生成具有随机内容的文件（更多信息，请参阅 随机数生成器部分）。

密钥文件的最大大小没有限制；但是，仅处理其前1,048,576字节（1 MiB）（由于处理超大文件会带来性能问题，所有剩余字节将被忽略）。用户可以提供一个或多个密钥文件（密钥文件的数量没有限制）。

密钥文件可以存储在符合PKCS - 11标准[23]的安全令牌和受多个PIN码保护的智能卡上（可以使用硬件PIN键盘或通过VeraCrypt图形用户界面输入这些PIN码）。

符合EMV标准的智能卡数据可以用作密钥文件，请参阅 EMV智能卡章节。

密钥文件使用以下方法进行处理并应用于密码：

  1. 设P为用户提供的VeraCrypt卷密码（可以为空）
  2. 设KP为密钥文件池
  3. 设kpl为密钥文件池KP的大小，以字节为单位（64，即512位）；

    kpl必须是哈希函数H输出大小的倍数

  4. 设pl为密码P的长度，以字节为单位（在当前版本中：0 ≤ pl ≤ 64）
  5. 如果kpl > pl，则在密码P后面追加（kpl - pl）个零字节（因此pl = kpl）
  6. 用kpl个零字节填充密钥文件池KP。
  7. 对每个密钥文件执行以下步骤：
    1. 将密钥文件池游标位置设置为池的开头
    2. 初始化哈希函数H
    3. 逐个加载密钥文件的所有字节，并对每个加载的字节执行以下步骤：
      1. 使用哈希函数H对加载的字节进行哈希处理，而不初始化哈希，以获得中间哈希（状态）M。不要完成哈希计算（状态将保留用于下一轮）。
      2. 将状态M拆分为单个字节。
        例如，如果哈希输出大小为4字节，（T0 || T1 || T2 || T3） = M
      3. 将这些字节（在步骤7.c.ii中获得）逐个写入密钥文件池，使用模28加法运算（而不是替换池中旧值），写入位置为池游标的位置。写入一个字节后，池游标位置前进一个字节。当游标到达池的末尾时，其位置将设置为池的开头。
  8. 使用以下方法将密钥文件池的内容应用于密码P：
    1. 将密码P拆分为单个字节B0...Bpl - 1。
      请注意，如果密码比密钥文件池短，则在步骤5中密码已用零字节填充到池的长度（因此，此时密码的长度始终大于或等于密钥文件池的长度）。
    2. 将密钥文件池KP拆分为单个字节G0...Gkpl - 1
    3. 对于0 ≤ i < kpl，执行：Bi = Bi ⊕ Gi
    4. P = B0 || B1 || ... || Bpl - 2 || Bpl - 1
  9. 应用了密钥文件池内容后的密码P现在将传递给头密钥派生函数PBKDF2（PKCS #5 v2），该函数使用用户选择的加密安全哈希算法（例如SHA - 512）对其进行处理（连同盐值和其他数据）。有关更多信息，请参阅 头密钥派生、盐值和迭代次数部分。

哈希函数H的作用仅仅是进行扩散[2]。使用CRC - 32作为哈希函数H。请注意，CRC - 32的输出随后会使用加密安全哈希算法进行处理：密钥文件池的内容（除了使用CRC - 32进行哈希处理外）会应用于密码，然后将该密码传递给头密钥派生函数PBKDF2（PKCS #5 v2），该函数使用用户选择的加密安全哈希算法（例如SHA - 512）对其进行处理（连同盐值和其他数据）。所得值用于形成头密钥和辅助头密钥（XTS模式）。

下一部分 >>


文档 >> 技术细节 >> 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字段。

普通卷情况

系统加密情况

下一部分 >>


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 技术细节 >> VeraCrypt卷格式规范

VeraCrypt卷格式规范

文件托管卷的格式与分区/设备托管卷的格式相同（不过，系统分区/驱动器的“卷头”或密钥数据存储在第一个逻辑驱动器磁道的最后512字节中）。VeraCrypt卷没有“签名”或ID字符串。在解密之前，它们看起来完全由随机数据组成。
每个VeraCrypt卷在创建时，其空闲空间会用随机数据填充。* 随机数据的生成方式如下：在VeraCrypt卷格式化开始之前，随机数生成器会生成一个临时加密密钥和一个临时辅助密钥（XTS模式）（请参阅 随机数生成器 部分）。使用临时密钥初始化用户选择的加密算法。然后，该加密算法用于加密由随机数生成器生成的随机字节组成的明文块。加密算法以XTS模式运行（请参阅 隐藏卷 部分）。生成的密文块用于填充（覆盖）卷上的空闲空间。临时密钥存储在RAM中，并在格式化完成后擦除。

VeraCrypt卷格式规范：

252
偏移量（字节） | 大小（字节） | 加密 状态† | 描述
0 | 64 | 未加密§ | 盐值
64 | 4 | 已加密 | ASCII字符串 "VERA"
68 | 2 | 已加密 | 卷头格式版本 (2)
70 | 2 | 已加密 | 打开该卷所需的最低程序版本
72 | 4 | 已加密 | 字节 256 - 511（解密后）的 CRC - 32 校验和
76 | 16 | 已加密 | 保留（必须全为零）
92 | 8 | 已加密 | 隐藏卷的大小（非隐藏卷中设置为零）
100 | 8 | 加密 | 卷大小
108 | 8 | 加密 | 主密钥范围起始位置的字节偏移量
116 | 8 | 加密 | 主密钥范围内加密区域的大小
124 | 4 |  |
72 | 4 | 已加密 | 字节 256 - 511（解密后）的 CRC - 32 校验和
76 | 16 | 已加密 | 保留（必须全为零）
92 | 8 | 已加密 | 隐藏卷的大小（非隐藏卷中设置为零）
4 | 已加密 | 字节 64 - 251（解密后）的 CRC - 32 校验和
256 | 可变 | 已加密 | 串联的主密钥和辅助主密钥**
512 | 65024 | 已加密 | 保留（对于系统加密，此项省略††）
65536 | 65536 | 已加密 / | 隐藏卷头区域（如果没有隐藏卷
 |  | 未加密§ | 在卷内，此区域包含随机数据††）。对于
 |  |  | 系统加密，此项省略。‡‡ 请参阅字节 0–65535。
131072 | 可变 | 加密 | 数据区域（主密钥范围）。对于系统加密，偏移量
 |  |  | 可能不同（取决于系统分区的偏移量）。
S - 131072† | 65536 | 加密 / | 备份头（使用不同的盐派生的不同头密钥进行加密）。
 |  | 未加密§ | 使用不同的盐派生的不同头密钥进行加密）。对于系统加密，此项省略。‡‡ 请参阅字节 0 - 65535。
S - 65536† | 65536 | 加密 / | 隐藏卷的备份头（使用不同的盐派生的不同头密钥进行加密）。
 |  | 未加密§ | 使用不同的盐派生的不同头密钥进行加密）。如果没有隐藏卷，
 |  |  | 如果卷内包含一个隐藏卷，此区域包含随机数据。††
 |  |  | 对于系统加密，此项目省略。‡‡ 请参阅字节 0 - 65535。
 |  |  | 0 - 65535。
位于字节 #0（盐值）和 #256（主密钥）的字段包含在卷创建过程中由随机数生成器生成的随机值（请参阅 随机数生成器 部分）。
如果 VeraCrypt 卷包含一个隐藏卷（在其空闲空间内），隐藏卷的头部位于宿主卷的字节 #65536 处（宿主/外部卷的头部位于宿主卷的字节 #0 处 - 请参阅 隐藏卷 部分）。如果 VeraCrypt 卷内没有隐藏卷，卷的字节 65536 - 131071（即隐藏卷头部可能存在的区域）包含随机数据（有关在卷创建时用随机数据填充空闲卷空间的方法的信息，请参阅上文）。隐藏卷头部的布局与标准卷的布局相同（字节 0 - 65535）。
VeraCrypt 卷的最大可能大小为 263 字节（8,589,934,592 GB）。然而，出于安全原因（考虑到 加密算法 使用的 128 位块大小），允许的最大卷大小为 1 PB（1,048,576 GB）。

嵌入式备份头部

每个 VeraCrypt 卷都包含一个嵌入式备份头部，位于卷的末尾（请参阅上文）。头部备份 不是 卷头部的副本，因为它使用不同的盐值派生的不同头部密钥进行加密（请参阅 头部密钥派生、盐值和迭代次数 部分）。
当卷密码和/或 PIM 和/或密钥文件发生更改时，或者当从嵌入式（或外部）头部备份中恢复头部时，卷头部和备份头部（嵌入在卷中）都会使用不同的头部密钥重新加密（使用新生成的盐值派生 - 卷头部的盐值与备份头部的盐值不同）。每个盐值都由 VeraCrypt 随机数生成器生成（请参阅 随机数生成器 部分）。
有关卷头备份的更多信息，请参阅章节 主程序窗口 中的小节 工具 > 恢复卷头。
下一部分 >>

* 前提是禁用 快速格式化 和 动态 选项，并且该卷不包含已在原地加密的文件系统（请注意，VeraCrypt 不允许用户在此类卷中创建隐藏卷）。
† 卷头的加密区域使用主头密钥和次头密钥以 XTS 模式进行加密。有关更多信息，请参阅章节 加密方案 以及章节 头密钥推导、盐值和迭代次数。
‡ S 表示卷主机的大小（以字节为单位）。
§ 请注意，盐值不需要加密，因为它不需要保密 [7]（盐值是一串随机值）。
** 当使用密码级联对卷进行加密时，这里会存储多个串联的主密钥（次主密钥用于 XTS 模式）。
†† 有关在创建卷时用随机数据填充卷空闲空间的方法的信息，请参阅本节前面的内容。
‡‡ 这里，“系统加密”的含义不包括包含隐藏操作系统的隐藏卷。


文档 >> 技术细节 >> 与标准和规范的兼容性

与标准和规范的兼容性

据我们所知，VeraCrypt符合以下标准、规范和建议：

  • ISO/IEC 10118 - 3:2004 [21]
  • FIPS 197 [3]
  • FIPS 198 [22]
  • FIPS 180 - 2 [14]
  • FIPS 140 - 2 (XTS - AES, SHA - 256, SHA - 512, HMAC) [25]
  • NIST SP 800 - 38E [24]
  • PKCS #5 v2.0 [7]
  • PKCS #11 v2.20 [23]

加密算法实现的正确性可以使用测试向量（选择工具 > 测试向量）或通过检查VeraCrypt的源代码来验证。

下一部分 >>


文档 >> 技术细节 >> 源代码

源代码

VeraCrypt是开源且免费的软件。VeraCrypt的完整源代码（用C、C++和汇编语言编写）可在以下Git仓库中免费获取，以供同行评审：

  • https://github.com/veracrypt/VeraCrypt
  • https://sourceforge.net/p/veracrypt/code/ci/master/tree/
  • https://bitbucket.org/veracrypt/veracrypt/src

每个版本的源代码可从与发布二进制文件相同的位置下载。


文档 >> 技术细节 >> 从源代码构建VeraCrypt

从源代码构建VeraCrypt

要从源代码构建VeraCrypt，您可以按照以下分步指南进行操作：

  • Windows构建指南
  • Linux构建指南


文档 >> 技术细节 >> 从源代码构建VeraCrypt >> Windows构建指南

本指南介绍了如何设置一个能够编译VeraCrypt的Windows系统。此外，还描述了如何编译VeraCrypt。
这里以Windows 10/11系统为例进行说明，但其他Windows系统的操作过程类似。
编译当前VeraCrypt Windows二进制文件和驱动程序需要以下组件；可选替代项或仅发布时需要的工具会另行标明：
  1. Microsoft Visual Studio 2022，或作为命令行替代方案的Build Tools for Visual Studio 2022
  2. MSVC v143 C++工具集，包含x86/x64和ARM64组件
  3. Windows 10/11 SDK（10.0.19041.0或更高版本），包括签名脚本所需的signtool.exe。如果SDK和WDK分开安装，请使用匹配的内部版本号。
  4. 适用于Windows 10/11并带有Visual Studio 2022扩展的Windows Driver Kit
  5. NASM
  6. YASM
  7. WiX Toolset v3.x（生成MSI包时需要）
  8. 旧版BIOS引导加载程序工具（可选；仅在重新构建Boot项目时需要）：Microsoft Visual C++ 1.52、gzip、UPX和dd.exe
以下是操作步骤。点击任何链接可直接跳转到相关步骤：
  • 安装NASM
  • 安装YASM
  • 安装旧版BIOS引导加载程序工具（可选）
  • 安装WiX Toolset v3.x
  • 安装Microsoft Visual Studio 2022
  • 安装Windows Driver Kit
  • 安装Build Tools for Visual Studio 2022
  • 下载VeraCrypt源代码文件
  • 编译VeraCrypt的x64、ARM64和驱动程序版本
  • 构建VeraCrypt可执行文件
  • 导入证书
  • 已知问题
安装NASM

  1. 在以下链接下载“nasm-2.08-installer.exe”：
    https://www.nasm.us/pub/nasm/releasebuilds/2.08/win32/
  2. 以管理员身份运行该文件
  3. 使用默认设置安装NASM
  4. 将NASM添加到路径变量中。这将使该命令在命令行中全局可用。
    1. 打开文件资源管理器
    2. 在左侧文件树中，右键单击“此电脑”并选择“属性”
    3. 在右侧菜单中，点击“高级系统设置”
    4. 请点击“环境变量”
    5. 在系统变量区域内，请选择“Path”变量并点击“编辑...”
    6. 点击“新建”并添加以下值：

      C:\Program Files (x86)\nasm

    7. 点击“确定”关闭窗口
  5. 要检查配置是否正常工作，请打开命令提示符并查看以下命令的输出：

    nasm

YASM的安装

  1. 请创建以下文件夹：
    C:\Program Files\YASM
  2. 请在以下链接下载预构建的Win64 YASM zip压缩包：
    https://github.com/yasm/yasm/releases/tag/v1.3.0
  3. 由于下载率较低或连接未加密，您的浏览器可能会提示该文件存在安全风险。不过，官方网站是该文件最可靠的来源，因此我们建议允许下载
  4. 解压ZIP文件并将文件复制到“C:\Program Files\YASM”
  5. 请在以下链接下载“Win64 .exe”文件：
    https://github.com/yasm/yasm/releases/tag/v1.3.0
  6. 由于下载率较低或连接未加密，您的浏览器可能会提示该文件存在安全风险。不过，官方网站是该文件最可靠的来源，因此我们建议允许下载
  7. 将文件重命名为“yasm.exe”并复制到“C:\Program Files\YASM”
  8. 将YASM添加到路径变量中，并为YASM创建一个新的系统变量。这样可以使该命令在命令行中全局可用。
    1. 打开文件资源管理器
    2. 在左侧文件树中，右键单击“此电脑”并选择“属性”
    3. 在右侧菜单中，请点击“高级系统设置”
    4. 请点击“环境变量”
    5. 在系统变量区域内，请选择“Path”变量并点击“编辑...”
    6. 点击“新建”并添加以下值：

      C:\Program Files\YASM

    7. 点击“确定”关闭顶部窗口
    8. 在系统变量区域内，请点击“新建...”
    9. 使用以下值填写表单：

      变量名：YASMPATH
      变量值：C:\Program Files\YASM

    10. 点击“确定”关闭窗口
  9. 要检查配置是否正常工作，请打开命令提示符并查看以下命令的输出：

    yasm

    以及

    vsyasm

安装旧版BIOS引导加载程序工具（可选）

使用Visual Studio 2022和当前WDK编译标准VeraCrypt应用程序二进制文件或Windows驱动程序不需要这些工具。仅当你需要重新构建“src\Boot\Windows”中的旧版BIOS引导加载程序，或者构建包含Boot项目的解决方案配置（例如“ReleaseCustomEFI”）时才安装它们。

  1. 安装Microsoft Visual C++ 1.52。它可通过付费的Microsoft MSDN订阅获取。如果你没有订阅，也可以从互联网档案馆获取ISO镜像：
    https://archive.org/details/ms-vc152
  2. 创建文件夹“C:\MSVC15”。挂载ISO文件并将“MSVC”文件夹的内容复制到“C:\MSVC15”。
  3. 创建名为“MSVC16_ROOT”的系统变量，其值为“C:\MSVC15”。
  4. 安装gzip，并将包含“gzip.exe”的文件夹添加到Path变量。
  5. 安装UPX，并将包含“upx.exe”的文件夹添加到Path变量。
  6. 安装Windows版本的dd，并将包含“dd.exe”的文件夹添加到Path变量。
  7. 打开新的命令提示符，并确认能够找到以下命令：

    nasm
    gzip
    upx
    dd --help

安装WiX Toolset v3.x

  1. 请从以下链接下载WiX Toolset v3.x：
    https://github.com/wixtoolset/wix3/releases
  2. 以管理员身份运行下载的文件，并使用默认设置安装 WiX 工具集

安装Microsoft Visual Studio 2022

  1. 在以下链接下载Visual Studio 2022：
    https://visualstudio.microsoft.com/vs/
  2. 以管理员身份运行下载的安装程序。
  3. 选择“Desktop development with C++”工作负载。
  4. 选择以下单个组件：
    1. MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)
    2. MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
    3. MSVC v143 - VS 2022 C++ ARM64 build tools (Latest)
    4. MSVC v143 - VS 2022 C++ ARM64 Spectre-mitigated libs (Latest)
    5. C++ ATL for latest v143 build tools (x86 & x64)
    6. C++ ATL for latest v143 build tools (ARM64)
    7. C++ ATL for latest v143 build tools with Spectre Mitigations (x86 & x64)
    8. C++ ATL for latest v143 build tools with Spectre Mitigations (ARM64)
    9. C++ MFC for latest v143 build tools (x86 & x64)
    10. C++ MFC for latest v143 build tools (ARM64)
    11. C++ MFC for latest v143 build tools with Spectre Mitigations (x86 & x64)
    12. C++ MFC for latest v143 build tools with Spectre Mitigations (ARM64)
    13. Windows 10/11 SDK (10.0.19041.0或更高版本)

安装Windows Driver Kit

  1. 请在以下链接下载与Visual Studio 2022兼容的Windows Driver Kit（WDK）：
    https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
  2. 以管理员身份运行下载的文件，并使用默认设置安装 WDK。
  3. 如果Windows SDK和WDK分开安装，请确保它们的内部版本号匹配。
  4. 确保已安装WDK Visual Studio扩展。如果WDK安装程序询问是否要“安装 Windows 驱动程序工具包 Visual Studio 扩展”，请在关闭对话框前选择此选项。在当前的Visual Studio 2022安装程序中，也可以在“单个组件”里选择“Windows Driver Kit”进行安装。
  5. 如果单独的VSIX安装程序自动启动，它会检测到Visual Studio 2022作为该扩展的可能目标。请选择它并继续安装。

安装Build Tools for Visual Studio 2022

如果已安装上面列出的Visual Studio 2022组件，则可以跳过此步骤。仅在需要不带完整Visual Studio IDE的命令行构建环境时安装Build Tools。

  1. 在以下链接下载Build Tools for Visual Studio 2022：
    https://visualstudio.microsoft.com/downloads/
  2. 以管理员身份运行下载的安装程序，并选择“C++ build tools”工作负载。
  3. 选择以下单个组件：
    1. MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)
    2. MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
    3. MSVC v143 - VS 2022 C++ ARM64 build tools (Latest)
    4. MSVC v143 - VS 2022 C++ ARM64 Spectre-mitigated libs (Latest)
    5. C++ ATL for latest v143 build tools (x86 & x64)
    6. C++ ATL for latest v143 build tools (ARM64)
    7. C++ ATL for latest v143 build tools with Spectre Mitigations (x86 & x64)
    8. C++ ATL for latest v143 build tools with Spectre Mitigations (ARM64)
    9. C++ MFC for latest v143 build tools (x86 & x64)
    10. C++ MFC for latest v143 build tools (ARM64)
    11. C++ MFC for latest v143 build tools with Spectre Mitigations (x86 & x64)
    12. C++ MFC for latest v143 build tools with Spectre Mitigations (ARM64)
    13. Windows 10/11 SDK (10.0.19041.0或更高版本)

下载VeraCrypt源代码文件

  1. 访问VeraCrypt的Github仓库：
    https://github.com/veracrypt/VeraCrypt
  2. 点击绿色的“Code”按钮并下载代码。
    你可以将仓库下载为zip文件，但也可以考虑使用git协议以便跟踪更改。

编译VeraCrypt的x64、ARM64和驱动程序版本

  1. 在Visual Studio 2022中打开文件“src/VeraCrypt.sln”
  2. 选择“Release|x64”作为活动配置。
  3. 点击“Build -> Build Solution”。
  4. 编译过程应仅出现警告，而无错误。部分项目可能会被跳过。
  5. 选择“Release|ARM64”作为活动配置。
  6. 点击“Build -> Build Solution”。
  7. 编译过程应仅出现警告，而无错误。部分项目可能会被跳过。
  8. 选择“Release|Win32”作为活动配置并构建解决方案，以编译发布打包脚本使用的Win32安装程序/辅助项目。
  9. 要构建VeraCrypt驱动程序，请选择“Driver”项目，并分别为“Release|x64”和“Release|ARM64”构建它。
  10. 仅当需要自定义EFI/引导加载程序发布配置时，才构建“ReleaseCustomEFI|x64”或“ReleaseCustomEFI|ARM64”。这些配置包含Boot项目，并需要上面列出的可选旧版BIOS引导加载程序工具。
  11. 如果使用Build Tools for Visual Studio 2022而不是Visual Studio IDE，请以管理员身份打开“Developer Command Prompt for VS 2022”或“Developer PowerShell for VS 2022”，切换到VeraCrypt源代码根目录，并运行等效的MSBuild命令：
    msbuild src\VeraCrypt.sln /m /p:Configuration=Release /p:Platform=x64
    msbuild src\VeraCrypt.sln /m /p:Configuration=Release /p:Platform=ARM64
    msbuild src\VeraCrypt.sln /m /p:Configuration=Release /p:Platform=Win32
    msbuild src\Driver\Driver.vcxproj /m /p:Configuration=Release /p:Platform=x64
    msbuild src\Driver\Driver.vcxproj /m /p:Configuration=Release /p:Platform=ARM64
    要构建可选的自定义EFI/引导加载程序发布配置，还请运行：
    msbuild src\VeraCrypt.sln /m /p:Configuration=ReleaseCustomEFI /p:Platform=x64
    msbuild src\VeraCrypt.sln /m /p:Configuration=ReleaseCustomEFI /p:Platform=ARM64
  12. 如果是从IDE构建的，请在编译完成后关闭Visual Studio 2022。

构建VeraCrypt可执行文件

  1. 以管理员身份打开Visual Studio 2022命令行，以确保Windows SDK签名工具（包括“signtool.exe”）在Path中可用
  2. 进入“src/Signing/”文件夹
  3. 运行脚本“sign_test.bat”
  4. 你将在“src/Release/Setup Files”文件夹中找到生成的可执行文件

导入证书

使用sign_test.bat脚本，你刚刚对VeraCrypt可执行文件进行了签名。这是必要的，因为Windows仅接受由签名证书颁发机构信任的驱动程序。
由于你没有使用官方的VeraCrypt签名证书来签署代码，而是使用了公共开发版本，因此你需要导入并信任所使用的证书。

  1. 打开“src/Signing”文件夹
  2. 通过双击以下证书，将它们导入到本地计算机证书存储中：
    • GlobalSign_R3Cross.cer
    • GlobalSign_SHA256_EV_CodeSigning_CA.cer
    • TestCertificate/idrix_codeSign.pfx
    • TestCertificate/idrix_Sha256CodeSign.pfx
    • TestCertificate/idrix_SHA256TestRootCA.crt
    • TestCertificate/idrix_TestRootCA.crt
    注意：如果提示输入密码，.pfx证书的密码为 idrix。

已知问题

  • 此分发包已损坏

    在Windows 10或更高版本上，你可能会收到上述错误消息。为避免此问题，你需要：
    • 仔细检查颁发测试代码签名证书的根证书是否已安装在“本地计算机受信任的根证书颁发机构”存储中。
    • 计算测试代码签名证书的SHA512指纹，并相应地更新“src/Common/Dlgcode.c”文件中的gpbSha512CodeSignCertFingerprint数组。
    有关详细信息，请参阅 https://sourceforge.net/p/veracrypt/discussion/technical/thread/83d5a2d6e8/#db12。

    另一种方法是在VeraCrypt代码中禁用签名验证。此操作仅应在测试环境中使用，切勿用于生产环境：
    1. 打开“src/Common/Dlgcode.c”文件
    2. 查找“VerifyModuleSignature”函数
    3. 替换以下代码行：
      查找：

      if (!IsOSAtLeast (WIN_10))
      return TRUE;

      替换为：

      return TRUE;

    4. 再次编译VeraCrypt代码
  • 自定义构建的VeraCrypt安装过程中驱动程序安装失败

    Windows会验证每个要安装的驱动程序的签名。
    出于安全原因，Windows仅允许由Microsoft签名的驱动程序加载。
    因此，在使用自定义构建时：
    • 如果你未修改VeraCrypt驱动程序源代码，则可以使用VeraCrypt源代码中包含的由Microsoft签名的驱动程序（位于“src\Release\Setup Files”下）。
    • 如果你进行了修改，你需要将Windows启动到“测试模式”。此模式允许Windows加载未由Microsoft签名的驱动程序。但是，即使在“测试模式”下，签名也有特定要求，并且由于以下原因仍可能会失败。
    “测试模式”下安装失败的潜在原因：
    1. 用于签名的证书不受Windows信任
      你可以通过检查可执行文件的属性来验证是否受影响：
      1. 右键单击VeraCrypt安装可执行文件：“src/Release/Setup Files/VeraCrypt Setup 1.XX.exe”
      2. 点击“属性”
      3. 转到顶部菜单“数字签名”。在这里，你会在签名列表中找到两个签名
        4. 通过双击勾选这两个签名。如果标题显示“无法验证签名中的证书”，则相应的签名证书未正确导入。
        点击“查看证书”，然后点击“安装证书...”，将证书导入到本地计算机证书存储区。对于根证书，你可能需要选择“将所有证书放入下列存储区”，并选择“受信任的根证书颁发机构”存储区。

    2. 驱动程序在签名过程之后被修改。
      在这种情况下，请使用脚本“src/Signing/sign_test.bat”，用测试证书再次对你的代码进行签名


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 技术细节 >> 从源代码构建 VeraCrypt >> Linux 构建指南

本指南介绍了如何设置 Linux 系统以从源代码构建 VeraCrypt，以及如何进行编译。
这里以 Ubuntu 22.04 LTS 系统为例进行说明，其他 Linux 系统的操作过程类似。

编译 VeraCrypt 需要以下组件：
  1. GNU Make
  2. GNU C/C++ 编译器
  3. YASM 1.3.0
  4. pkg-config
  5. 系统安装的 wxWidgets 3.x 共享库和头文件，或者 wxWidgets 3.x 库源代码
  6. FUSE 库和头文件
  7. PCSC-lite 库和头文件

以下是具体步骤。点击任何链接可直接跳转到相关步骤：

  • 安装 GNU Make
  • 安装 GNU C/C++ 编译器
  • 安装 YASM
  • 安装 pkg-config
  • 安装 wxWidgets 3.2
  • 安装 libfuse
  • 安装 libpcsclite
  • 下载 VeraCrypt
  • 编译 VeraCrypt

也可以在终端中运行以下命令列表，或将它们复制到脚本中执行：
sudo apt update
sudo apt install -y build-essential yasm pkg-config libwxgtk3.0-gtk3-dev
sudo apt install -y libfuse-dev git libpcsclite-dev
git clone https://github.com/veracrypt/VeraCrypt.git
cd ~/VeraCrypt/src
make

安装 GNU Make

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install build-essential

安装 GNU C/C++ 编译器

如果在上一步中已经安装了 build-essential，则可以跳过此步骤。

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install build-essential

安装 YASM

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install yasm

安装 pkg-config

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install pkg-config

安装 wxWidgets 3.2

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install libwxgtk3.0-gtk3-dev

安装 libfuse

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install libfuse-dev

安装 libpcsclite

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install libpcsclite-dev

下载 VeraCrypt

  1. 打开终端
  2. 执行以下命令：
    sudo apt update
    sudo apt install git
    git clone https://github.com/veracrypt/VeraCrypt.git

编译 VeraCrypt

备注：

  • 默认情况下，会构建一个同时支持图形用户界面和文本用户界面（通过 --text 开关）的通用可执行文件。
    在 Linux 上，可以使用 'NOGUI' 参数构建仅控制台的可执行文件，该文件不需要 GUI 库。
    为此，您需要下载 wxWidgets 源代码，将其解压到您选择的位置，然后运行以下命令：
    make NOGUI=1 WXSTATIC=1 WX_ROOT=/path/to/wxWidgetsSources wxbuild
    make NOGUI=1 WXSTATIC=1 WX_ROOT=/path/to/wxWidgetsSources
  • 如果您不使用系统的 wxWidgets 库，则需要像上述备注一样下载并使用 wxWidgets 源代码，但这次应运行以下命令来构建 VeraCrypt 的 GUI 版本（不指定 NOGUI）：
    make WXSTATIC=1 WX_ROOT=/path/to/wxWidgetsSources wxbuild
    make WXSTATIC=1 WX_ROOT=/path/to/wxWidgetsSources
步骤：
  1. 打开终端
  2. 执行以下命令：
    cd ~/VeraCrypt/src
    make
  3. 如果成功，VeraCrypt 可执行文件应该位于 'Main' 目录中。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

文档 >> 联系我们

联系我们

您可以通过向veracrypt-contact [at] lists dot sourceforge.net发送消息与我们联系。
您也可以使用veracrypt [at] amcrypto dot jp这个地址，该地址关联了VeraCrypt团队的PGP密钥。
若要直接联系AM CRYPTO，您可以使用 我们的联系表单。

我们也活跃于社交媒体：
VeraCrypt在Twitter上 VeraCrypt on Mastodon VeraCrypt在Facebook上 VeraCrypt在Reddit上


文档 >> 法律信息

法律信息

许可证

VeraCrypt分发所依据的许可证文本包含在VeraCrypt二进制和源代码分发包中的License.txt文件中。

有关许可证的更多信息 可在此处找到。

版权信息

本软件整体：

版权所有 © 2025 AM Crypto。保留所有权利。

本软件的部分内容：

版权所有 © 2025 AM Crypt。保留所有权利。

版权所有 © 2013 - 2025 IDRIX。保留所有权利。

版权所有 © 2003 - 2012 TrueCrypt开发者协会。保留所有权利。

版权所有 © 1998 - 2000 Paul Le Roux。保留所有权利。

版权所有 © 1998 - 2008 Brian Gladman，英国伍斯特。保留所有权利。

版权所有 © 1995 - 2023 Jean - loup Gailly和Mark Adler。

版权所有 © 2016 用于EFI的磁盘加密服务（DCS），Alex Kolotnikov

版权所有 © 1999 - 2023 Dieter Baron和Thomas Klausner。

版权所有 © 2013，Alexey Degtyarev。保留所有权利。

版权所有 © 1999 - 2016 Jack Lloyd。保留所有权利。

版权所有 © 2013 - 2019 Stephan Mueller <smueller@chronox.de>

版权所有 © 1999 - 2023 Igor Pavlov。

如需更多信息，请参阅源代码各部分附带的法律声明。

商标信息

本文件中提及的任何商标均为其各自所有者的唯一财产。


文档 >> 版本历史

发行说明

给使用VeraCrypt 1.17版本或更早版本创建卷的用户的注意事项：
为避免暴露您的卷是否包含隐藏卷，或者如果您在使用隐藏卷/操作系统时依赖似是而非的否认能力，那么您必须重新创建外部和隐藏卷，包括系统加密和隐藏操作系统，并丢弃VeraCrypt 1.18a版本之前创建的现有卷。

1.26.29 (2026年6月4日):

  • 所有操作系统:
    • 新增 Argon2id，作为非系统卷的可选内存困难型密钥推导函数（KDF）。
    • 用户界面和文档中改用“KDF”术语，替代“PKCS-5 PRF”。
    • 更新 Logo 图标，采用不带额外文字标签的简化图标。
    • 增强 XML 和 TLV 解析器对格式错误输入的防护。
    • 安全：修复 GHSA-94c6-mgmv-mqc5：非默认启用的 WOLFCRYPT=1 构建现在使用 wolfCrypt PBKDF2 而非 HKDF，并使用 VeraCrypt 的 PBKDF2 迭代次数。
      • 由 https://github.com/vastblast 报告
    • 修复 CPU 特性检测和加密实现中的边界情况，包括 AVX2/leaf 7 检测、Camellia SSSE3 调度、Twofish x64 多块尾部处理以及 Whirlpool 对齐。
    • 更新文档，包括 Argon2id/KDF 信息，并将 Windows/Unix 命令行用法拆分为独立页面。
    • 更新翻译。
  • Windows:
    • 修复影响 VeraCrypt 驱动程序的罕见蓝屏（BSOD）问题。
    • 修复全新安装 Windows 11 25H2 后休眠时崩溃的问题。
    • 安全：修复 GHSA-jjcr-75w7-58jp：隐藏卷快速格式化不再使用文件容器快速分配方法；该方法曾每隔 128 MiB 写入明文零扇区。此修复保持似是而非的否认性。
      • 由 https://github.com/vastblast 报告
      • 此回归问题引入于 1.26.6
    • 增强 Windows 驱动程序输入验证和崩溃转储过滤处理（GH PR #1590）。
    • 改进驱动程序 I/O 处理，包括更安全的请求完成、有序的卷刷新屏障，以及更完善的 VERIFY/TRIM 验证。
    • 修复 PBKDF 的 XSTATE 清理，并为 AES 汇编代码添加 Win64 栈展开元数据。
    • 加快选择 KDF 自动检测时的挂载速度。
    • 新增对使用 Microsoft UEFI CA 2023 签名的 EFI 引导加载程序的支持，同时保留对 Microsoft UEFI CA 2011 的支持。
    • 改进 EFI 系统加密的修复和升级处理，包括卡住的解密完成流程、Post-OOBE 修复、引导加载程序恢复验证，以及缺少引导加载程序时更清晰的报告。
    • 修复 EFI DcsProp 重写处理。
    • 修复通过命令行卸载后残留驱动器号的问题（GH #337, GH #1426）。
    • 修复收藏卷挂载竞态问题。
    • 仅更改 KDF 时也验证 PIM。
    • 修复提权 COM 中的格式化驱动器验证和设备路径规范化问题（GH #1670）。
    • 修复卷创建期间 ReFS 格式化问题。
    • 修复使用 WHQL 签名驱动程序时的 MSI 移动磁盘创建问题、ARM64 MSI 构建、“开始”菜单文件夹升级以及较新 SDK MSI 工具发现问题。
    • 新增命令行参数 /protectScreen，可在便携模式下禁用屏幕保护功能（详见文档）。
    • 为命令行参数 /protectMemory 新增选项，可在便携模式下禁用内存保护功能（详见文档）。
    • 新增设置项及命令行参数 /enableIME，可在安全桌面下启用输入法（IME）功能。
    • VeraCrypt 首选项改用选项卡控件，以减少对话框杂乱并缩小尺寸。
    • 提供 VeraCrypt C/C++ SDK，用于创建加密卷（https://github.com/veracrypt/VeraCrypt-SDK）。
    • 将 LZMA SDK 更新至 26.01 版本。
  • Linux:
    • 更新对 Ubuntu 25.04 的依赖，需安装 libwxgtk3.2-1t64 软件包。
    • 新增基于 FUSE3 构建的支持。
    • 新增用于 NTFS 挂载的内核 NTFS 驱动选择，包括 --filesystem=kernel-ntfs 和 -m kernelntfs。
      • --filesystem=ntfs3 现在固定使用内核 ntfs3 驱动，并绕过 mount.ntfs3 等挂载辅助程序。
    • 修复 AppImage 便携性和语言加载问题，并允许 AppImage 文件名以任意大小写的“veracrypt”开头。
    • 抑制多余的“已在运行”对话框，并将 GUI 实例锁存储在 XDG 路径下。
    • 新增对残留卸载状态的应急清理。
    • 并行化卷头 KDF 自动检测。
    • 外部格式化时遵循 nokernelcrypto。
    • 在 WSL 上使用 Windows 资源管理器打开已挂载卷。
    • 新增对可复现 Linux 构建和 Arch 软件包构建的支持。
    • 新增 OpenWrt 软件包构建和 QEMU 测试脚本。
    • 修复 CMake 4 兼容性、CentOS 6 GCC 4.4 构建，以及与 wxWidgets 相关的构建问题。
  • Linux 和 macOS:
    • 修复主界面列宽初始显示不正确的问题。
    • 为普通文件容器启用快速格式化。容器通过 ftruncate() 设置大小，因此宿主文件系统可能会在写入数据之前保持部分区域未写入或稀疏。
    • 修复 exFAT 外层卷的隐藏卷大小估算问题。
    • 修复隐藏卷 FAT 大小限制处理。
    • 修复 GUI 向导中隐藏文件容器错误的 2 TiB 限制。
    • 显示卷创建的收尾阶段。
    • 卷创建向导现在也会从嵌套控件收集鼠标熵。
    • 修复剩余的 wxWidgets sizer 标志问题。
  • macOS:
    • FUSE-T 辅助挂载改用 SMB 后端，并改进 FUSE-T SMB 元数据处理和挂载稳定性。
    • 恢复已挂载卷的挂载点。
    • 验证格式化向导中的设备目标，并阻止通过带分区的整盘别名进行绕过。
    • 需要时以提升权限运行 APFS 格式化工具，并预先准备 APFS 格式化工具的设备别名。
    • 格式化卷时强制使用全新的 exFAT 布局。
    • 修复密码字段中的 Command-A。
    • 链接 wxWidgets 3.2.10，并允许覆盖部署目标。
  • BSD:
    • FreeBSD：静态 wxWidgets 构建链接 iconv。
    • OpenBSD：修复设备托管卷大小计算，按 doas 用户设置挂载所有权和 FUSE 访问权限，并修复 CLI 构建和 PCSC 退出处理。

1.26.24 (2025年5月30日):

  • 所有操作系统:
    • 修复Whirlpool算法在大端平台上的实现问题（GH #1529）。
    • 将用户界面中的“Dismount All”重命名为“Unmount All”，并将快捷键由ALT+s更改为ALT+u。
    • 新增用户贡献的中文和俄文CHM格式帮助文档。
    • 更新翻译。
  • Windows:
    • 实现了屏幕保护功能，可防止截屏和屏幕录制，默认启用。
      • 该功能可在安装过程中或通过“性能/驱动配置”设置禁用。
    • 在MSI安装程序中新增复选框，可用于控制内存保护和屏幕保护功能。
      • 新增命令行选项 DISABLEMEMORYPROTECTION 和 DISABLESCREENPROTECTION，用于管理上述功能。
      • 这两个选项均可接受 0（启用）或 1（禁用）作为取值。
      • 示例用法：
        msiexec /i VeraCrypt_Setup_x64_1.26.24.msi DISABLESCREENPROTECTION=1 /qn REBOOT=ReallySuppress MSIRESTARTMANAGERCONTROL=Disable ACCEPTLICENSE=YES
    • 修复当同时启动多个 veracrypt.exe 实例时出现的竞态条件问题。
    • 将libzip更新至1.11.3版本。
  • Linux:
    • 新增对AppImage打包与使用的支持。
    • 修复检查sudo会话状态时未使用“true”命令绝对路径的问题。
    • 修复无法使用匈牙利语翻译的问题。
    • 改进通用安装脚本（GH #1514）。
    • 当系统中未提供/media目录时，新增对/run/media/veracrypt作为默认挂载前缀的支持（GH #1524）。
    • 从.deb和.rpm安装包中移除对pcsclite的依赖，因为其已在运行时动态检测与加载。
  • macOS:
    • 修复检查sudo会话状态时未使用“true”命令绝对路径的问题。
    • 在 /usr/local/bin 目录下创建 VeraCrypt 的符号链接，以便可通过命令行使用。
    • 修复无法使用匈牙利语翻译的问题。

1.26.20 (2025年2月3日):

  • 所有操作系统:
    • 在ARM64平台上使用CPU指令实现SHA - 256加速。
    • 更新翻译。
    • 在整个用户界面和文档中将“Dismount”替换为“Unmount”以符合IT标准。
  • Windows:
    • 修复驱动程序中的回归问题，该问题曾导致始终允许磁盘碎片整理并引发其他副作用。
    • 由于用户报告的稳定性问题，恢复到之前收集系统熵的方法。
  • Linux:
    • 修复Linux Mint中影响管理员密码认证的回归问题（GH #1473）。
  • macOS:
    • 修复阻止卷卸载的回归问题（GH #1467）。
    • 解决与未定义的开关 use-dummy-sudo-password 相关的wxWidgets 3.2.6断言错误（GH #1470）。

1.26.18 (2025年1月20日):

  • 所有操作系统:
    • 增加对SHA - 256 x86内在函数的支持，以提高PBKDF2 - HMAC - SHA256的性能。
    • 增加对ARM64平台（如Windows ARM64、搭载Apple Silicon Mx的macOS）上AES硬件的支持。
    • 更新翻译
  • Windows:
    • 放弃对Windows 32位的支持。
    • 将Windows 10 2018年10月更新（版本1809）设置为最低支持版本。
    • 减少在低内存场景下由于重入式IRP完成导致的驱动程序死锁情况。
    • 修复某些PC上EFI检测失败的问题，这些PC中BootOrder变量未定义（由@kriegste提出，GH #360）。
    • 修复在Windows升级后使用EXE安装程序更新VeraCrypt时出现的“访问被拒绝”错误。
    • 修复影响EFI系统加密配置编辑器的各种问题。
    • 修复移动磁盘创建中的回归问题（GH #886）
    • 用BCryptGenRandom替换已弃用的CryptGenRandom来生成安全随机字节。
    • 使用现代API来收集系统熵以进行随机数生成，而不是使用过时的API。
    • 将LZMA SDK更新到24.09版本
    • 将libzip更新到1.11.2版本
  • Linux:
    • CVE - 2024 - 54187：在执行系统二进制文件时添加绝对路径，以防止路径劫持（与SivertPL @__tfr合作）
    • CVE - 2025 - 23021：防止在系统目录和PATH上挂载卷（由SivertPL @__tfr报告）
    • 修复Ubuntu中包含的wxWidgets库的断言问题。
    • 通过优先使用xdg - open并添加备用机制来改进目录打开逻辑。
    • 在开始挂载操作之前确保卷存在。
    • 修复“密码太长”错误消息未扩展以包含最大长度的问题（GH #1456）
    • 简化sudo会话检测逻辑。
  • macOS:
    • CVE - 2024 - 54187：在执行系统二进制文件时添加绝对路径，以防止路径劫持（与SivertPL @__tfr合作）
    • CVE - 2025 - 23021：防止在系统目录和PATH上挂载卷（由SivertPL @__tfr报告）
    • 默认禁用屏幕捕获。添加了--allow - screencapture命令行开关，以便在需要时启用它。
    • 在启动挂载操作前，确保卷存在。
    • 实现sudo会话检测逻辑

1.26.15 (2024年9月2日):

  • Windows:
    • 修复MSI安装/卸载问题：
      • 修复了在指定REBOOT=ReallySuppress且需要重启时，MSI静默安装返回错误1603的问题。
      • 修复了MSI包中缺少文档和语言文件的问题。
      • 修复了从基于EXE的安装升级时，MSI未安装新文档和语言文件的问题。
      • 修复了在某些情况下，MSI卸载后安装文件夹未被删除的问题。
    • 修复UEFI系统解密期间导致引导加载程序持续存在的回归问题。

1.26.14 (2024年8月25日):

  • 所有操作系统:
    • 更新翻译和文档
    • 在非Windows版本中实现语言选择设置。
    • 使非Windows版本的代码库与wxWidgets 3.3兼容。
    • 实现对受XTS主密钥漏洞影响的卷的检测，并向用户发出警告。
    • 更新挂载失败错误消息，提及移除TrueCrypt支持和旧算法。
  • Windows:
    • 更好地修复Windows 11 22H2下的安全桌面问题
      • 现在在安全桌面中禁用了输入法编辑器（IME），因为已知它会导致问题
    • VeraCrypt扩展器：修复在扇区大小不同于512的磁盘上扩展卷的问题（由skl0n6修复）
    • 修复将错误的EFI系统加密高级选项写入注册表的问题
    • 通过系统托盘退出菜单退出VeraCrypt进程时，不关闭安装程序
    • 修复由于虚拟分区偏移未按4K对齐导致某些磁盘（如VHDX）格式化失败的问题
    • 如果相对定位访问磁盘失败，则回退到绝对定位
    • 将zlib更新到1.3.1版本
  • Linux:
    • 选中PIM字段时聚焦该字段（#1239）
    • 修复Wayland下Konsole中的通用安装脚本（#1244）
    • 增加了使用wolfCrypt作为加密后端进行构建的能力。默认禁用。（由wolfSSL贡献，GitHub拉取请求 #1227）
    • 允许GUI在仅支持Wayland的环境中启动（GitHub问题 #1264）
    • 命令行界面（CLI）：如果已经指定了PIM，初始时不再重新询问（GitHub问题 #1288）
    • 命令行界面（CLI）：修复文件容器的最大隐藏卷大小计算错误（GitHub问题 #1338）
    • 通过为旧版GCC添加链接标志，增强通用安装程序二进制文件的地址空间布局随机化（ASLR）安全性（由Sourceforge上的@morton-f报告）
  • macOS:
    • 修复主界面中磁盘图标损坏的问题（GitHub问题 #1218）
    • 修复PIM输入框宽度接近零的问题，并简化wxTextValidator逻辑（GitHub问题 #1274）
    • 运行“检查文件系统”时使用正确的磁盘工具位置（GitHub问题 #1273）
    • 增加对FUSE - T作为MacFUSE替代方案的支持（GitHub问题 #1055）
  • FreeBSD:
    • 修复权限提升提示不显示的问题（GitHub问题 #1349）
    • 支持自动检测和挂载ext2/3/4、exFAT、NTFS文件系统（GitHub问题 #1350）
    • 运行“检查文件系统”时使用正确的磁盘工具位置（GitHub问题 #1273）

1.26.7 (2023年10月1日):

  • 所有操作系统:
    • 安全：创建卷时，确保XTS主密钥与辅助密钥不同
      • 由于随机数生成器的特性，此问题不太可能发生，但必须添加此检查以防止攻击
      • 参考：CCSS，美国国家安全局（NSA）第3页评论：https://csrc.nist.gov/csrc/media/Projects/crypto-publication-review-project/documents/initial-comments/sp800-38e-initial-public-comments-2021.pdf
    • 移除TrueCrypt模式支持。可以使用1.25.9版本挂载或转换TrueCrypt卷。
    • 完全移除RIPEMD160和GOST89算法。使用这些算法的旧版卷不再能被VeraCrypt挂载。
    • 为系统加密和标准卷添加对BLAKE2s作为新的伪随机函数（PRF）算法的支持。
    • 引入对EMV银行智能卡作为非系统卷密钥文件的支持。
      • 无需单独配置PKCS#11模块。
      • 不需要卡PIN码。
      • 从银行卡上的唯一编码数据生成安全的密钥文件内容。
      • 支持所有符合EMV标准的银行卡。
      • 可以在设置中启用（转到设置 -> 安全令牌）。
      • 由法国雷恩国立应用科学学院（Institut national des sciences appliquées de Rennes）的一组学生开发。
      • 有关团队和项目的更多详细信息，请访问 https://projets-info.insa-rennes.fr/projets/2022/VeraCrypt/index_en.html。
    • 在卷创建过程中覆盖现有文件容器时，将其当前大小添加到可用空间中
    • 增加科西嘉语支持。更新多个翻译。
    • 更新文档
  • Windows:
    • 正式地，最低支持版本现在为Windows 10。VeraCrypt可能仍可在Windows 7和Windows 8/8.1上运行，但不会在这些平台上进行主动测试。
    • EFI引导加载程序：
      • 修复了密码超时值处理中的一个漏洞，该漏洞导致其被限制为 255 秒。
      • 救援磁盘：如果原始 Windows 加载程序从磁盘中丢失，则使用其嵌入式备份来增强“启动原始 Windows 加载程序”功能。
      • 添加 Blake2s 算法，并移除 RIPEMD160 和 GOST89 算法。
    • 默认启用内存保护。在“性能/驱动程序配置”下添加选项，以便在需要时禁用它。
      • 内存保护会阻止非管理员进程读取 VeraCrypt 的内存。
      • 它可能会阻止屏幕阅读器（辅助功能支持）读取 VeraCrypt 的用户界面，在这种情况下可以禁用它。
      • 可以通过在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\veracrypt”下将注册表值“VeraCryptEnableMemoryProtection”设置为 0 来禁用它。
    • 添加进程缓解策略，以防止 VeraCrypt 被其他进程注入。
    • 对 RAM 加密实现进行了小幅度增强。
    • 修复了 Windows 11 22H2 下安全桌面的问题。
    • 实现对挂载部分加密的系统分区的支持。
    • 修复了在启用“清除加密密钥”选项（仅适用于系统加密情况）时，新设备插入的误报检测问题。
    • 在创建文件容器时，对快速创建功能进行了更好的实现，若未持有所需权限，会使用 UAC 请求。
    • 允许在创建文件容器的格式化向导用户界面中选择快速创建。
    • 修复了某些机器在创建卷时的格式化问题。
    • 修复了大文件容器快速格式化导致的卡顿问题。
    • 在挂载按钮上添加下拉菜单，允许不使用缓存进行挂载。
    • 为大体积磁盘的原地加密过程中可能出现的对数级性能下降问题提供了可能的解决方案。
    • 让扩展器在进一步操作之前先检查文件是否存在。
    • 允许为生成的密钥文件选择大小单位（KB/MB/GB）。
    • 在创建卷时，显示 NTFS、ReFS 和 exFAT 文件系统支持的完整簇大小列表。
    • 支持在扩展器中拖放文件和密钥文件。
    • 实现扩展器用户界面的翻译。
    • 用现代的 IFileDialog 接口替换旧的文件/目录选择 API，以提高与 Windows 11 的兼容性。
    • 对依赖动态链接库的安全加载进行了增强，包括延迟加载。
    • 移除对密钥文件扩展名的推荐，并更新文档以提及第三方文件扩展名的风险。
    • 在安装程序中添加对更多语言的支持。
    • 将 LZMA 库更新到 23.01 版本。
    • 将 libzip 更新到 1.10.1 版本，zlib 更新到 1.3 版本。
  • Linux：
    • 修复了在 Linux 上使用 Blake2s 时随机数生成器的一个漏洞，该漏洞会触发自测失败。
    • 修改 Linux 上的随机数生成器，使其与官方文档和 Windows 实现完全匹配。
    • 修复与 Ubuntu 23.04 的兼容性问题。
    • 修复使用 wxWidgets 3.1.6 及更高版本时显示的断言消息问题。
    • 修复在 Linux 上启动 fsck 时出现的问题。
    • 修复权限提升提示被忽略的问题。
    • 修复选择使用所有可用空间创建隐藏卷时，隐藏卷大小显示错误的问题。
    • 修复在使用命令行界面在磁盘上创建隐藏卷时，因最大尺寸检测错误而导致的创建失败问题。
    • 修复在文本模式下运行时的各种问题：
      • 如果 exFAT/BTRFS 文件系统不存在或与创建的卷不兼容，则不允许选择它们。
      • 修复挂载卷时显示的错误卸载消息。
      • 在输入时隐藏个人迭代乘数（PIM），并在用户输入错误值时重新询问 PIM。
      • 修复在创建卷时检查路径不存在的可用空间时的打印错误。
    • 静态构建（例如仅控制台版本）使用 wxWidgets 3.2.2.1。
    • 修复通用安装程序与旧版 Linux 发行版的兼容性问题。
    • 更新帮助消息，以表明级联算法时必须用连字符分隔。
    • 提高在 Alpine Linux 和 musl libc 下的构建兼容性。
  • macOS：
    • 修复在涉及多显示器和分辨率变化的使用场景中，VeraCrypt 窗口变得无法使用的问题。

1.25.9（2022 年 2 月 19 日）：

  • 所有操作系统：
    • 更新翻译（中文、荷兰语、法语、德语、土耳其语）。
  • Windows：
    • 使 MSI 安装程序与系统加密兼容。
    • 将 MSI 安装的最低支持系统设置为 Windows 7。
    • 修复使用 MSI 安装 VeraCrypt 时创建旅行者磁盘失败的问题。
    • 当使用隐藏卷保护挂载时，如果指定了错误的隐藏卷密码，则不缓存外部卷密码。
    • 通过使用 LZMA 压缩而不是 DEFLATE 压缩，将 EXE 安装程序的大小减少近 50%。
    • 修复在某些特殊 Windows 配置下，在 VeraCrypt 用户界面中双击已挂载驱动器不起作用的问题。
    • 添加注册表项，以修复某些机器在使用系统加密时关机/重启期间出现蓝屏死机（BSOD）的问题。
      • 在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\veracrypt”下，创建一个名为“VeraCryptEraseKeysShutdown”的 REG_DWORD 值。
      • 将此注册表值设置为 0 可禁用擦除系统加密密钥，这是某些机器在关机时出现蓝屏死机的原因。
  • Linux：
    • 修复在挂载选项窗口中启用隐藏卷保护时，隐藏卷设置显示不正确的问题。
    • 修复通用 Linux 安装程序覆盖 /usr/sbin（如果它是符号链接）的问题。
    • 修复在定义 _GLIBCXX_ASSERTIONS 时构建时的崩溃问题。
    • 启用在没有 AES-NI 支持的情况下从源代码进行构建。
  • MacOSX：
    • 修复在挂载选项窗口中启用隐藏卷保护时，隐藏卷设置显示不正确的问题。

1.25.7（2022 年 1 月 7 日）：

  • 所有操作系统：
    • 更新翻译。
  • Windows：
    • 恢复对Windows Vista、Windows 7和Windows 8/8.1的支持。
      • 支持Windows 7需要安装KB3033929或KB4474419。
      • 支持Windows Vista需要安装KB4039648或KB4474419。
    • 仅适用于MSI安装程序：修复双击.hc文件容器时，路径字段中插入%1而非卷名的问题。
    • 高级用户：添加注册表设置以控制驱动程序内部加密队列，以便为SSD磁盘调整性能，并在高负载下获得更好的稳定性。
      • 在注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\veracrypt下：
        • VeraCryptEncryptionFragmentSize (REG_DWORD)：加密数据片段的大小，单位为KiB。默认值为256，最大值为2048。
        • VeraCryptEncryptionIoRequestCount (REG_DWORD)：并行I/O请求的最大数量。默认值为16，最大值为8192。
        • VeraCryptEncryptionItemCount (REG_DWORD)：并行处理的加密队列项的最大数量。默认值和最大值均为VeraCryptEncryptionIoRequestCount的一半。
      • 三元组（FragmentSize=512，IoRequestCount=128，ItemCount=64）是一组可提高某些SSD NVMe系统顺序读取速度的参数示例。
      • 修复某些语言的安装程序中文字截断的问题。
  • MacOSX：
    • 修复VeraCrypt应用程序包内的资源文件（如HTML文档、语言XML文件）可被所有用户写入的问题。（由Niall O'Reilly报告）

1.25.4（2021年12月3日）：

  • 所有操作系统：
    • 对Streebog算法进行速度优化。
    • 更新翻译。
  • Windows：
    • 增加对ARM64架构的Windows系统（如Microsoft Surface Pro X）的支持，但尚不支持系统加密。
    • 添加用于静默模式部署的MSI安装程序（在msiexec命令行中必须设置ACCEPTLICENSE=YES）。
      • 目前，如果系统分区已使用VeraCrypt加密，则不能使用MSI安装程序。
      • MSI安装程序需要Windows 10或更高版本。
    • 由于驱动程序代码签名的新要求，放弃对Windows Vista、Windows 7、Windows 8和Windows 8.1的支持。
    • 减少选择PRF自动检测时的挂载时间。
    • 修复由IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES中的整数溢出导致的驱动程序潜在内存损坏问题。（由Ilja van Sprundel报告）
    • 用安全的等效函数替换不安全的wcscpy/wcscat/strcpy运行时函数。
    • EFI引导加载程序的更改：
      • 修复在某些情况下因错误检查指针调用MEM_FREE而导致的内存泄漏问题。
      • 在发生致命错误导致系统停止时，清除可能包含敏感信息的bootParams变量。
      • 在DcsProp中添加选项“KeyboardInputDelay”，以控制两次按键之间支持的最小延迟。
    • 尝试通过在系统恢复或会话打开/解锁时修复引导加载程序和SetupConfig.ini，来解决Windows功能更新对系统加密造成的问题。
    • 修复以管理员权限运行应用程序时无法加载本地HTML文档的问题。
    • 修复在安全桌面显示密码对话框并尝试访问受PIN保护的令牌密钥文件时出现的冻结问题。
    • 修复在安全桌面模式下无法启动密钥文件生成器的问题。
    • 如果系统分区已加密，则阻止Windows调整其大小。
    • 在挂载对话框中添加“TrueCrypt模式”的键盘快捷键。
  • MacOSX：
    • 原生支持Apple Silicon M1。
    • 放弃对Mac OS X 10.7 Lion和Mac OS X 10.8 Mountain Lion的官方支持。
    • 使用已安装的XML文件添加用户界面语言支持。语言会根据“LANG”环境变量自动检测。
    • 添加CLI开关（--size=max）和用户界面选项，使文件容器占用创建它的磁盘上的所有可用空间。
    • 如果在CLI --filesystem开关中指定了未知的文件系统值，则返回错误，而不是默默跳过文件系统创建。
  • Linux：
    • 使用已安装的XML文件添加用户界面语言支持。语言会根据“LANG”环境变量自动检测。
    • 与pam_tmpdir兼容。
    • 在Ubuntu 18.04及更高版本的通知区域显示图标。（由https://unit193.net/贡献）
    • 添加CLI开关（--size=max）和用户界面选项，使文件容器占用创建它的磁盘上的所有可用空间。
    • 如果在CLI --filesystem开关中指定了未知的文件系统值，则返回错误，而不是默默跳过文件系统创建。
  • FreeBSD：
    • 使系统设备在FreeBSD下正常工作。
    • 添加CLI开关（--size=max）和用户界面选项，使文件容器占用创建它的磁盘上的所有可用空间。
    • 如果在CLI --filesystem开关中指定了未知的文件系统值，则返回错误，而不是默默跳过文件系统创建。
  • OpenBSD：
    • 添加对OpenBSD的基本支持。
    • 添加CLI开关（--size=max）和用户界面选项，使文件容器占用创建它的磁盘上的所有可用空间。
    • 如果在CLI --filesystem开关中指定了未知的文件系统值，则返回错误，而不是默默跳过文件系统创建。

1.24 - Update8（2020年11月28日）：

  • MacOSX：
    • 修复与macOS Big Sur的兼容性问题，特别是在搭载macFUSE 4.0.x的Apple Silicon M1上。

1.24-更新7 (2020年8月7日):

  • 所有操作系统:
    • 不允许隐藏卷与外部卷使用相同的密码、个人迭代乘数（PIM）和密钥文件。
    • 修复32位版本在使用Streebog算法时的随机崩溃问题。
    • 在JitterEntropy随机数生成器中启用FIPS模式。
    • 更新文档中的新手教程，将文件容器名称从“My Volume”改为“MyVolume.hc”，以避免对文件性质产生混淆。
    • 进行小规模的代码清理。
  • Windows:
    • 修复启用内存加密时加密算法基准测试结果错误的问题。
    • 修复在使用内存加密、选择AES算法且CPU不支持AES-NI时，即使未选择“快速格式化”，新创建卷的可用空间也未用随机数据填充的问题。
    • 修复在MBR启动模式下，系统加密中阻止TRIM的用户界面（UI）无法正常工作的问题。
    • 支持从外部应用程序（如KeePass）将密码拖放到密码UI字段，这比使用剪贴板更安全。
    • 实现与Windows 10现代待机和Windows 8.1连接待机电源模式的兼容性，使进入节能模式的检测更加可靠。
    • 在使用“/create”开关创建文件容器且文件系统不是FAT时，如果指定了“/silent”参数，避免在“VeraCrypt格式化”过程中显示等待对话框。
    • 使用原生Windows格式化程序对卷进行格式化，因为它更可靠，只有在出现问题时才回退到fmifs.dll中的FormatEx函数。
    • 如果系统中只有1个CPU组，则不使用处理器组支持的API，这可以解决某些配备AMD CPU的PC上出现的速度慢问题。
    • 如果系统驱动器已经被BitLocker加密，则不允许对其进行加密。
    • 实现对休眠和快速启动的检测，如果启用了内存加密，则禁用它们。
    • 在VeraCrypt安装/升级、启动系统加密或创建卷时，如果启用了快速启动，则发出警告，并建议禁用它。
    • 添加UI选项，以控制使用系统加密时自动修复引导加载程序的行为。
    • 在格式化向导中，不允许输入目录路径来创建文件容器。
    • 如果Windows Shell已被修改或未运行，则不尝试修复CVE - 2019 - 19501漏洞，因为在这种非标准配置下没有可靠的修复方法。
    • MBR引导加载程序：修复引导扇区中传递给解压缩器的压缩数据大小不正确的问题。
    • 在系统加密向导中，当输入的密码达到最大长度时，添加警告消息。
    • 修复输入密码的UTF - 8编码超过最大支持长度时错误消息显示错误的问题。
    • 修复在64位机器上使用便携式32位“VeraCrypt Format.exe”创建隐藏卷时，且VeraCrypt已经安装的情况下的崩溃问题。
    • 将libzip更新到最新版本1.7.3。
    • 更新翻译。
  • Linux/MacOSX:
    • 在允许/dev/random优雅失败之前，强制从其读取至少32字节的数据。
    • 允许为外部卷选择除FAT之外的文件系统，但会显示有关此类选择风险的警告，并在这种情况下实现对隐藏卷最大可能大小的估算。
    • 显式擦除敏感内存，而不是依赖编译器不优化对Memory::Erase方法的调用。
    • 在创建卷时添加对Btrfs文件系统的支持（仅适用于Linux）。
    • 将静态构建的wxWidgets更新到3.0.5版本。

1.24-更新6 (2020年3月10日):

  • Windows:
    • 修复密码对话框中PIM标签文本截断的问题。
    • 修复如果用户先选择非英语语言，然后在语言选择对话框中点击“确定”之前选择英语，安装程序使用错误语言的问题。

1.24-更新5 (2020年3月9日):

  • Windows:
    • 为具有超过64个逻辑处理器的CPU优化性能（由AMD的Sachin Keswani贡献）。
    • 支持在使用命令行创建文件容器时指定密钥文件（包括令牌和文件系统中的密钥文件）（VeraCrypt格式化支持“/keyfile”、“/tokenlib”和“/tokenpin”开关）。
    • 修复VeraCrypt进程退出后密钥文件路径和名称泄漏的问题。
    • 在VeraCrypt格式化中添加CLI开关“/secureDesktop”。
    • 将libzip更新到1.6.1版本。
    • 进行小规模的UI修复。

1.24-更新4 (2020年1月23日):

  • Windows:
    • 修复启用内存加密时，Expander和格式化过程中出现的卷头损坏的回归问题。
    • 默认禁用新引入的内存保护功能，并添加一个CLI开关（“/protectMemory”），以便在需要时启用，从而修复屏幕阅读器（辅助功能支持）无法读取UI的问题。
    • 修复与CVE - 2019 - 19501漏洞修复相关的副作用，该副作用导致UI中的链接无法打开。
    • 添加开关“/signalExit”，以支持在命令行界面（CLI）中指定“/q”参数时，VeraCrypt.exe退出时通知WAITFOR Windows命令（有关用法请参阅文档）。
    • 在格式化和扩展器的命令行帮助对话框中不显示挂载/卸载示例。
    • 更新文档和翻译。
  • Linux:
    • 修复限制在磁盘或分区上创建隐藏卷可用大小的回归问题。
  • MacOSX:
    • 修复限制在磁盘或分区上创建隐藏卷可用大小的回归问题。

1.24-更新3 (2019年12月21日):

  • Linux:
    • 修复仅控制台版本的构建，以去除对GTK的依赖，因为无头服务器不需要该依赖。

1.24-更新2 (2019年12月16日):

  • 所有操作系统:
    • 在使用非优化实现时，从栈内存中清除AES密钥。不适用于VeraCrypt官方版本（由Hanno Böck报告并修复）。
    • 将Jitterentropy随机数生成器库更新到2.2.0版本。
    • 开始遵循IEEE 1541商定的字节命名规范（KiB、MiB、GiB、TiB、PiB）。
    • 各类文档改进。
  • Windows:
    • 修复VeraCrypt扩展程序执行期间可能存在的本地权限提升漏洞（CVE - 2019 - 19501）
    • MBR引导加载程序：
      • 针对在BIOS模式下不允许使用小于4096字节缓冲区进行写操作的SSD磁盘的解决方法。
      • 如果MBR来自非我们的加载程序或非微软的加载程序，则不将MBR恢复为VeraCrypt的值。
    • EFI引导加载程序：
      • 修复“ActionFailed”不起作用的问题，并添加“ActionCancelled”以自定义用户在密码提示时按ESC键的处理方式
      • 修复F5在认证失败后显示上一个密码的问题。确保即使是错误的密码值也会从内存中清除。
    • 仅当当前系统的第一个引导加载程序是Windows的引导加载程序时，才将VeraCrypt设置为系统的第一个引导加载程序，以修复多操作系统引导兼容性问题。
    • 为SystemFavoritesService添加新的注册表标志，以控制在关机时更新EFI BIOS引导菜单。
    • 允许在WindowsPE中挂载系统加密驱动器，即使更改键盘布局失败（由Sven Strickroth报告并修复）
    • 改进保留文件时间戳的机制，特别是针对密钥文件。
    • 修复在AMD CPU上未检测到RDRAND指令的问题。
    • 检测RDRAND存在缺陷的情况（例如AMD Ryzen），以避免在用户启用时使用它。
    • 通过UI修改DcsProp文件时，不在文件末尾写入额外的0x00字节
    • 减少Windows磁盘验证中使用的IOCTL_DISK_VERIFY处理程序的内存使用。
    • 为VeraCrypt Format.exe添加开关/FastCreateFile，以在选择快速格式化时加速大文件容器的创建。
    • 修复跳过救援磁盘验证的复选框未反映VeraCrypt Format命令行中指定的/noisocheck开关值的问题。
    • 在挂载扩展名为.tc的文件容器时，在密码对话框中勾选“TrueCrypt模式”
    • 更新XML语言文件。
  • Linux:
    • 修复在某些情况下导致管理员密码请求次数过多的回归问题
    • 修复Process::Execute函数中的越界缓冲区溢出问题（由Hanno Böck报告并修复）
    • 确保在挂载卷时发生内部错误的情况下删除密码（由Hanno Böck报告并修复）
    • 修复文本模式下不识别使用Unicode字符的密码的问题。
    • 修复在无头机器上无法运行为控制台模式构建的VeraCrypt二进制文件的问题。
    • 添加开关以强制使用旧版最大密码长度（64个UTF8字节）
    • 添加CLI开关（--use-dummy-sudo-password）以强制使用发送虚拟密码的旧版sudo行为
    • 在卸载期间，将错误消息输出到STDERR而不是STDOUT，以提高与包管理器的兼容性。
    • 使挂载磁盘时扇区大小不匹配的错误信息更详细。
    • 通过使用汇编代码在64位模式下加速SHA256。
  • MacOSX:
    • 添加开关以强制使用旧版最大密码长度（64个UTF8字节）
    • 修复Process::Execute函数中的越界缓冲区溢出问题（由Hanno Böck报告并修复）
    • 修复文本模式下不识别使用Unicode字符的密码的问题。
    • 使挂载磁盘时扇区大小不匹配的错误信息更详细。
    • 通过使用汇编代码在64位模式下加速SHA256。
    • 链接到最新的wxWidgets版本3.1.3

1.24 - Hotfix1 (2019年10月27日):

  • Windows:
    • 修复1.24版本中导致VeraCrypt新安装时系统收藏夹在启动时无法挂载的回归问题。
    • 修复当前Windows用户名包含Unicode非ASCII字符时无法加密系统的问题。
    • 使VeraCrypt扩展程序能够恢复之前扩展未完成的卷的扩展操作。
    • 为VeraCrypt扩展程序添加“快速扩展”选项，以加速大文件容器的扩展。
    • 在系统加密时添加多项健壮性检查和验证，以更好地处理一些特殊情况。
    • 轻微的用户界面和文档更改。
  • Linux:
    • 解决CentOS 6下gcc 4.4.7的错误，该错误导致在CentOS 6下构建的VeraCrypt在使用Whirlpool哈希时崩溃。
    • 修复挂载卷时在/var/log/auth.log中写入“错误密码尝试”的问题。
    • 修复在用户界面中拖放文件时不显示其正确路径的问题，特别是在GTK - 3下。
    • 添加缺失的JitterEntropy实现。
  • MacOSX:
    • 修复在OSX 10.13及更高版本的设备选择对话框中某些设备和分区不显示的问题。
    • 修复卷创建向导的“卷密码”页面中密码字段之间的键盘标签导航问题。
    • 添加缺失的JitterEntropy实现。
    • 支持APFS文件系统用于创建卷。
    • 支持暗黑模式。

1.24 (2019年10月6日):

  • 所有操作系统:
    • 将非系统卷的密码最大长度增加到UTF - 8编码的128字节。
      • 添加选项以使用旧版最大密码长度（64），以实现兼容性。
    • 使用基于CPU时序抖动的硬件随机数生成器“Jitterentropy”（由Stephan Mueller开发）作为CPU RDRAND的良好替代方案（http://www.chronox.de/jent.html）
    • 在64位机器上使用SSE2对XTS模式进行速度优化（最高快10%）。
    • 修复CPU功能AVX2/BMI2的检测问题。添加RDRAND/RDSEED CPU功能的检测。将海光CPU识别为AMD CPU。
  • Windows:
    • 使用ChaCha12密码、t1ha非加密快速哈希和基于ChaCha20的CSPRNG为密钥和密码实现RAM加密。
      • 仅在64位机器上可用。
      • 默认禁用。可以通过用户界面中的选项启用。

1.24-更新7 (2020年8月7日):

  • 所有操作系统:
    • 不允许隐藏卷与外部卷使用相同的密码、个人迭代乘数（PIM）和密钥文件。
    • 修复32位版本在使用Streebog算法时的随机崩溃问题。
    • 在JitterEntropy随机数生成器中启用FIPS模式。
    • 更新文档中的新手教程，将文件容器名称从“My Volume”改为“MyVolume.hc”，以避免对文件性质产生混淆。
    • 进行小规模的代码清理。
  • Windows:
    • 修复启用内存加密时加密算法基准测试结果错误的问题。
    • 修复在使用内存加密、选择AES算法且CPU不支持AES-NI时，即使未选择“快速格式化”，新创建卷的可用空间也未用随机数据填充的问题。
    • 修复在MBR启动模式下，系统加密中阻止TRIM的用户界面（UI）无法正常工作的问题。
    • 支持从外部应用程序（如KeePass）将密码拖放到密码UI字段，这比使用剪贴板更安全。
    • 实现与Windows 10现代待机和Windows 8.1连接待机电源模式的兼容性，使进入节能模式的检测更加可靠。
    • 在使用“/create”开关创建文件容器且文件系统不是FAT时，如果指定了“/silent”参数，避免在“VeraCrypt格式化”过程中显示等待对话框。
    • 使用原生Windows格式化程序对卷进行格式化，因为它更可靠，只有在出现问题时才回退到fmifs.dll中的FormatEx函数。
    • 如果系统中只有1个CPU组，则不使用处理器组支持的API，这可以解决某些配备AMD CPU的PC上出现的速度慢问题。
    • 如果系统驱动器已经被BitLocker加密，则不允许对其进行加密。
    • 实现对休眠和快速启动的检测，如果启用了内存加密，则禁用它们。
    • 在VeraCrypt安装/升级、启动系统加密或创建卷时，如果启用了快速启动，则发出警告，并建议禁用它。
    • 添加UI选项，以控制使用系统加密时自动修复引导加载程序的行为。
    • 在格式化向导中，不允许输入目录路径来创建文件容器。
    • 如果Windows Shell已被修改或未运行，则不尝试修复CVE - 2019 - 19501漏洞，因为在这种非标准配置下没有可靠的修复方法。
    • MBR引导加载程序：修复引导扇区中传递给解压缩器的压缩数据大小不正确的问题。
    • 在系统加密向导中，当输入的密码达到最大长度时，添加警告消息。
    • 修复输入密码的UTF - 8编码超过最大支持长度时错误消息显示错误的问题。
    • 修复在64位机器上使用便携式32位“VeraCrypt Format.exe”创建隐藏卷时，且VeraCrypt已经安装的情况下的崩溃问题。
    • 将libzip更新到最新版本1.7.3。
    • 更新翻译。
  • Linux/MacOSX:
    • 在允许/dev/random优雅失败之前，强制从其读取至少32字节的数据。
    • 允许为外部卷选择除FAT之外的文件系统，但会显示有关此类选择风险的警告，并在这种情况下实现对隐藏卷最大可能大小的估算。
    • 显式擦除敏感内存，而不是依赖编译器不优化对Memory::Erase方法的调用。
    • 在创建卷时添加对Btrfs文件系统的支持（仅适用于Linux）。
    • 将静态构建的wxWidgets更新到3.0.5版本。

1.24-更新6 (2020年3月10日):

  • Windows:
    • 修复密码对话框中PIM标签文本截断的问题。
    • 修复如果用户先选择非英语语言，然后在语言选择对话框中点击“确定”之前选择英语，安装程序使用错误语言的问题。

1.24-更新5 (2020年3月9日):

  • Windows:
    • 为具有超过64个逻辑处理器的CPU优化性能（由AMD的Sachin Keswani贡献）。
    • 支持在使用命令行创建文件容器时指定密钥文件（包括令牌和文件系统中的密钥文件）（VeraCrypt格式化支持“/keyfile”、“/tokenlib”和“/tokenpin”开关）。
    • 修复VeraCrypt进程退出后密钥文件路径和名称泄漏的问题。
    • 在VeraCrypt格式化中添加CLI开关“/secureDesktop”。
    • 将libzip更新到1.6.1版本。
    • 进行小规模的UI修复。

1.24-更新4 (2020年1月23日):

  • Windows:
    • 修复启用内存加密时，Expander和格式化过程中出现的卷头损坏的回归问题。
    • 默认禁用新引入的内存保护功能，并添加一个CLI开关（“/protectMemory”），以便在需要时启用，从而修复屏幕阅读器（辅助功能支持）无法读取UI的问题。
    • 修复与CVE - 2019 - 19501漏洞修复相关的副作用，该副作用导致UI中的链接无法打开。
    • 添加开关“/signalExit”，以支持在命令行界面（CLI）中指定“/q”参数时，VeraCrypt.exe退出时通知WAITFOR Windows命令（有关用法请参阅文档）。
    • 在格式化和扩展器的命令行帮助对话框中不显示挂载/卸载示例。
    • 更新文档和翻译。
  • Linux:
    • 修复限制在磁盘或分区上创建隐藏卷可用大小的回归问题。
  • MacOSX:
    • 修复限制在磁盘或分区上创建隐藏卷可用大小的回归问题。

1.24-更新3 (2019年12月21日):

  • Linux:
    • 修复仅控制台版本的构建，以去除对GTK的依赖，因为无头服务器不需要该依赖。

1.24-更新2 (2019年12月16日):

  • 所有操作系统:
    • 在使用非优化实现时，从栈内存中清除AES密钥。不适用于VeraCrypt官方版本（由Hanno Böck报告并修复）。
    • 将Jitterentropy随机数生成器库更新到2.2.0版本。
    • 开始遵循IEEE 1541商定的字节命名规范（KiB、MiB、GiB、TiB、PiB）。

    1.22 （2018年3月30日）:

    • 所有操作系统:
      • 对Kuznyechik密码实现进行SIMD速度优化（最高可达2倍加速）。
      • 添加5种新的级联密码算法：Camellia - Kuznyechik、Camellia - Serpent、Kuznyechik - AES、Kuznyechik - Serpent - Camellia和Kuznyechik - Twofish。
    • Windows系统:
      • MBR引导加载程序：修复部分机器上隐藏操作系统无法启动的问题。
      • MBR引导加载程序：降低密码提示期间的CPU使用率。
      • 安全增强：添加选项，用于在SSD驱动器上进行系统加密时阻止TRIM命令。
      • 为非系统SSD驱动器实现TRIM支持，并添加启用该功能的选项（非系统卷默认禁用TRIM）。
      • 更好地修复部分机器在EFI系统加密期间出现的“参数错误”问题。
      • 驱动程序：移除对`wcsstr`的不必要依赖，该依赖可能会在某些机器上导致问题。
      • 驱动程序：修复部分机器挂载卷时出现的“参数错误”问题。
      • 修复部分机器在启动时无法挂载系统收藏夹的问题。
      • 修复使用`/quit /silent`开关在命令行中运行VeraCrypt时当前应用程序失去焦点的问题。
      • 修复部分外部应用程序在挂载/卸载期间冻结的问题。
      • 修复罕见的密码对话框安全桌面不可见导致UI阻塞的问题。
      • 将`libzip`更新到1.5.0版本，该版本包含一些安全问题的修复。
      • 将安全桌面功能扩展到智能卡PIN输入对话框。
      • 修复安装向导中许可证文本截断的问题。
      • 添加便携式软件包，允许在不请求管理员权限的情况下提取二进制文件。
      • 简化语言XML文件的格式。
      • 解决在未启用安全桌面时密码对话框无法获得键盘焦点的问题。
    • Linux系统:
      • 修复在近期版本的KDE下无法安装GUI版本的问题。
      • 修复备份/恢复卷头时wxWidgets断言失败的问题。
    • MacOSX系统:
      • 修复部分本地帮助文件无法在浏览器中打开的问题。

    1.21 （2017年7月9日）:

    • 所有操作系统:
      • 修复在不支持扩展功能的CPU上运行时1.20版本的回归崩溃问题。
    • Windows系统:
      • 修复1.20版本的回归问题，该问题导致挂载时收藏夹中存储的PIM值被忽略。
      • 修复1.20版本的回归问题，该问题在某些情况下导致系统收藏夹无法挂载。
      • 修复EFI系统加密向导中出现的一些“参数错误”问题。
      • 为高级用户安装与EFI系统加密配置相关的PDF文档：
        • disk_encryption_v1_2.pdf与EFI隐藏操作系统和全磁盘加密相关
        • dcs_tpm_owner_02.pdf与EFI系统加密的TPM配置相关。
    • FreeBSD系统:
      • 添加对在FreeBSD上构建的支持。

    1.20 （2017年6月29日）:

    • 所有操作系统:
      • 使用Jussi Kivilinna的64位优化汇编实现的Twofish和Camellia。
        • 当CPU支持AES - NI时，Camellia速度快2.5倍；不支持时快30%。
      • 使用优化的SHA - 512/SHA256实现。
        • 在64位系统上速度提高33%。
      • 部署本地HTML文档而不是用户指南PDF。
      • 将UI中的链接从Codeplex上的链接更改为托管在veracrypt.fr上的链接。
      • 安全方面：构建支持地址空间布局随机化（ASLR）的二进制文件。
    • Windows系统:
      • 对EFI系统加密进行了多项修复和改进：
        • 修复使用EFI救援磁盘进行EFI系统解密时的错误。
        • 通过DCS底层配置添加对TPM 1.2和TPM 2.0（实验性）的支持。
          • https://dc5.sourceforge.io/docs/dcs_tpm_owner_02.pdf
        • 添加使用手动过程（未在UI中显示）进行EFI全磁盘加密和隐藏操作系统的支持。
          • https://dc5.sourceforge.io/docs/disk_encryption_v1_2.pdf
    • 启用使用安全桌面进行密码输入。添加偏好设置选项和命令行开关 (/secureDesktop) 以激活该功能。
    • 在使用密码缓存挂载多个收藏项时，使用默认挂载参数。
    • 允许为收藏项指定 PRF 和 TrueCrypt 模式。
    • 对驱动程序进行初步更改，以支持 EFI 隐藏操作系统功能。
    • 修复 /hash 命令行无法识别 Streebog 哈希算法的问题。
    • 在创建普通卷时，添加对 Windows 10 上 ReFS 文件系统的支持。
    • 修复当收藏项配置为在设备插入时使用卷 ID 进行挂载时，CPU 高使用率的问题。
    • 使用 CHM 文件代替 PDF 作为用户指南。
    • 修复在 EFI 系统加密情况下，关于 Windows 未安装在引导驱动器上的误报警告。
    • 增强驱动程序对各种磁盘 IOCTL 的处理能力。
    • 增强 EFI 引导加载程序。添加手动编辑 EFI 配置文件的功能。
    • 驱动程序安全：在 Windows 8 及更高版本中使用增强的 NX 池保护。
    • 减少内部检查断开连接的网络驱动器对性能的影响。
    • 小修复。
  • MacOSX:
    • 运行 VeraCrypt 需要 OSX 10.7 或更高版本。
    • 使 VeraCrypt 成为 .hc 和 .tc 文件的默认处理程序。
    • 在 Finder 中为 .hc 和 .tc 文件添加自定义 VeraCrypt 图标。
    • 在打开具有 .tc 扩展名的容器文件时，在密码对话框中检查 TrueCrypt 模式。
  • Linux:
    • 在打开具有 .tc 扩展名的容器文件时，在密码对话框中检查 TrueCrypt 模式。
    • 修复由于加密汇编文件缺少 GNU-stack 注释而导致的生成二进制文件中的可执行栈问题。

1.19 (2016 年 10 月 17 日):

  • 所有操作系统:
    • 修复 Quarkslab 审计提出的问题。
      • 移除 GOST89 加密算法。
      • 使 PBKDF2 和 HMAC 代码更清晰，更易于分析。
      • 为 Kuznyechik 添加测试向量。
      • 更新文档，警告使用命令行开关 “tokenpin” 的风险。
    • 使用 Botan 项目中 SSE2 优化的 Serpent 算法实现（在 64 位平台上快 2.5 倍）。
  • Windows:
    • 修复 EFI 引导加载程序中的键盘问题。
    • 修复在 32 位机器上创建使用 Streebog 作为 PRF 的卷时的崩溃问题。
    • 修复在某些情况下（例如隐藏操作系统创建）对 Evil-Maid 攻击的误报检测问题。
    • 修复在 Windows 10 下无法访问 VeraCrypt 卷上 EFS 数据的问题。
    • 修复复制隐藏操作系统过程中的错误密码错误。
    • 修复 Quarkslab 审计提出的问题：
      • 修复从 TrueCrypt 继承的 MBR 引导加载程序中密码长度泄露的问题。
      • EFI 引导加载程序：修复各种泄露问题，并在输入密码后清除键盘缓冲区。
      • 使用 libzip 库处理 zip 救援磁盘文件，而不是易受攻击的 XUnzip 库。
    • 支持 32 位 Windows 的 EFI 系统加密。
    • 在 EFI 系统加密预测试期间执行关机而不是重启，以检测不兼容的主板。
    • 小的 GUI 和翻译修复。
  • MacOSX:
    • 移除对 OSXFuse 中 MacFUSE 兼容层的依赖。

1.18a (2016 年 8 月 17 日):

  • 所有操作系统:
    • 支持日本加密标准 Camellia，包括用于 Windows 系统加密（MBR 和 EFI）。
    • 支持俄罗斯加密和哈希标准 Kuznyechik、Magma 和 Streebog，包括用于 Windows EFI 系统加密。
    • 修复 TrueCrypt 允许检测隐藏卷存在的漏洞（由 Ivanov Aleksey Mikhailovich 报告，邮箱 alekc96 [at] mail dot ru）
      • 为避免暗示您的卷是否包含隐藏卷，或者如果您在使用隐藏卷/操作系统时依赖似是而非的否认性，那么您必须重新创建外部和隐藏卷，包括系统加密和隐藏操作系统，并丢弃在 1.18a 版本之前创建的现有卷。
  • Windows:
    • 支持 EFI Windows 系统加密（限制：无隐藏操作系统，无引导自定义消息）
    • 增强对 DLL 劫持攻击的保护。
    • 通过增加 1 KiB 所需内存，修复某些机器上的引导问题。
    • 添加哈希算法和带有 PIM 的 PRF 的基准测试（包括预引导）。
    • 将构建系统迁移到 Visual C++ 2010 以获得更好的稳定性。
    • 解决 Windows Server 2008 R2 上 Hyper-V 下的 AES-NI 支持问题。
    • 在 Windows 64 位系统上卸载时正确删除驱动文件 veracrypt.sys。
    • 实现当显式挂载卷时，将智能卡 PIN 作为命令行参数 (/tokenpin) 传递。
    • 当未指定驱动器号时，仅当没有其他可用的空闲驱动器号时，才选择 A: 或 B:。
    • 减少禁用使用断开连接的网络驱动器选项导致的 CPU 使用率。
    • 添加新的卷 ID 机制，用于识别磁盘/分区，而不是使用其设备名称。
    • 添加选项，通过在 MBR 中未加密存储 PIM 值，避免在预引导身份验证中提示输入 PIM。
    • 添加选项和命令行开关，在执行操作时隐藏等待对话框。
    • 在 “VeraCrypt 格式化” 向导 GUI 中添加复选框，以在系统加密过程中跳过救援磁盘验证。
    • 当 VeraCrypt 以提升的权限运行时，允许文件拖放操作。
    • 小的 GUI 和翻译修复。
  • Linux:
    • 修复 Fedora 23 上的挂载问题。
    • 修复使用 gcc 5.x 编译源代码时的挂载失败问题。
    • 遵循 XDG 桌面规范，使用 XDG_CONFIG_HOME 来确定配置文件的位置。
  • MacOSX:
    • 解决与较新版本的 OSXFuse 的兼容性问题。

1.17 (2016 年 2 月 13 日):

  • 所有操作系统:
    • 支持 UNICODE 密码：现在密码中可以接受所有字符（Windows 系统加密除外）
    • 由于巧妙地优化了密钥派生（由 Xavier de Carné de Carnavalet 发现），将挂载/引导时间缩短一半。
    • 通过使用汇编优化 Whirlpool PRF 速度（与之前的代码相比，速度提高 25%）。
    • 添加对创建 exFAT 卷的支持。
    • 添加 GUI 指示器，显示通过鼠标移动收集的随机数数量。
    • 包含由 Andreas Becker 贡献的新图标和图形 (http://www.andreasbecker.de)
  • Windows:
    • 修复影响安装程序的 DLL 劫持问题，该问题允许以提升的权限执行代码（CVE-2016-1281）。由 Stefan Kanthak 报告 (http://home.arcor.de/skanthak/)
    • 使用 SHA-1 和 SHA-256 对二进制文件进行签名，以遵循微软的新建议。
    • 解决在 Comodo/Kaspersky 下从 VeraCrypt 卷运行应用程序时的问题（由 Robert Geisler 报告并修复）。
    • 引导加载程序：在按下 ENTER 键后，通过用 '*' 填充字段至最大长度来保护密码/PIM 长度。
    • 解决系统收藏项无法挂载到驱动器 A: 的问题。
    • 解决显示等待对话框后焦点丢失的问题。
    • 解决在 “选择设备” 对话框中某些分区与错误磁盘关联的罕见问题。
    • 实现 PIM 缓存，适用于系统加密和普通卷。添加激活该功能的选项。
    • 如果在命令行中指定了密码和/或密钥文件，则不尝试使用缓存的密码进行挂载。
    • 进行内部重写，使 VeraCrypt 成为原生 UNICODE 应用程序。
    • 采取变通方法，避免某些防病毒软件的误报检测。
    • 在可用驱动器列表中隐藏断开连接的网络驱动器。添加选项使其可用于挂载。
    • 解决了在某些情况下，即使不需要也会更新配置和历史 XML 文件的问题。
    • 修复了所选密钥文件路径在内存中泄露的问题。
    • 修复了 VeraCryptExpander 中无法取消选择 TB 单位的问题。
    • 在图形用户界面（GUI）中为“使用 PIM”复选框添加了 Alt + i 键盘快捷键。
    • 进行了一些小的图形用户界面和翻译修复。
  • Linux/MacOSX:
    • 修复了 --stdin 选项无法正确处理包含空格字符的密码的问题（由 Codeplex 用户 horsley1953 报告并修复）。
    • 修复了使用命令行创建非 FAT 文件系统卷时的问题。
    • 支持在 --size 开关中使用 K/M/G/T 后缀来指示大小值的单位。

1.16（2015 年 10 月 7 日）:

  • Windows:
    • 修改针对 CVE - 2015 - 7358 漏洞的补丁，以解决在 Windows 上的副作用，同时仍然使滥用驱动器盘符处理变得非常困难。
    • 修复了在某些配置下无法从外部文件恢复卷头的问题。
    • 为遇到误报情况（例如 FLEXnet/Adobe 问题）的用户添加禁用“邪恶女仆”攻击检测的选项。
    • 默认情况下，当配置了默认密钥文件或在命令行中指定了密钥文件时，不尝试使用空密码挂载。添加选项以恢复旧的行为。
      • 如果需要使用空密码挂载，请在命令行中明确指定：/p ""

1.15 （2015 年 9 月 26 日）:

  • Windows:
    • 修复了 James Forshaw（Google Project Zero）报告的两个 TrueCrypt 漏洞
      • CVE - 2015 - 7358 （严重）：通过滥用驱动器盘符处理在 Windows 上进行本地权限提升。
      • CVE - 2015 - 7359：由于不正确的模拟令牌处理导致在 Windows 上进行本地权限提升。
    • 修复了用户登录时挂载常用卷的回归问题。
    • 修复了格式化向导中某些 Unicode 语言（例如中文）的显示问题。
    • 当“使用 PIM”被选中时，将键盘焦点设置到 PIM 字段。
    • 允许使用应用程序键在驱动器盘符列表上打开上下文菜单
    • 支持在图形用户界面中指定以 TB 为单位的卷大小（命令行已经支持此功能）

1.14 （2015 年 9 月 16 日）:

  • 所有操作系统:
    • 在图形用户界面和引导加载程序中像处理密码一样对 PIM 值进行掩码和取消掩码操作。
  • Windows:
    • 解决了在使用级联密码和 SHA256 进行系统加密时救援磁盘损坏错误的问题。
    • 解决了“在驱动器内存中缓存密码”选项即使在首选项中被选中也始终禁用的问题。
    • 解决了新安装时除非更改首选项，否则用户界面语言更改不生效的问题。
    • 实现了使用命令行创建文件容器。
    • 驱动程序：默认禁用对 IOCTL_STORAGE_QUERY_PROPERTY 的支持，并添加启用它的选项。
    • 驱动程序：支持在通过 IOCTL_STORAGE_QUERY_PROPERTY 查询时返回 StorageDeviceProperty。
    • 支持通过挂载选项或常用标签值在资源管理器中设置卷标签。
    • 修复了热键分配对话框中始终显示 OEM - 233 且无法更改的问题。
    • 在安装和移动磁盘设置过程中始终复制 32 位和 64 位可执行二进制文件。
      • 移动磁盘将再次默认使用 32 位可执行文件，同时也提供 64 位可执行文件。
      • 在 64 位 Windows 上，现在可以使用 32 位可执行文件（例如，如果需要使用 32 位 PKCS#11 DLL）
    • 在移动磁盘设置中包含卷扩展器。
    • 如果 Windows 中禁用了系统还原点，则不提供创建还原点的选项。
    • 增加了验证救援磁盘 ISO 映像文件的功能。
    • 安装程序、图形用户界面和驱动程序的小修复。
  • Linux:
    • 支持在非交互模式下通过标准输入提供密码（由 LouisTakePILLz 贡献）
      • 示例：veracrypt -t ${IMAGE_PATH} ${MOUNT_PATH} --mount --non - interactive --stdin <<< "$PWD"

1.13 （2015 年 8 月 9 日）:

  • Windows:
    • 解决了从 VeraCrypt 卷运行 TOR 时崩溃的问题。

1.12 （2015 年 8 月 5 日）:

  • 所有操作系统:
    • 通过支持个人迭代乘数（PIM）实现“动态模式”。更多信息请参阅文档。
  • Windows:
    • 检测系统加密的引导加载程序篡改（“邪恶女仆”攻击）并提供恢复选项。
    • 修复了解析语言 XML 文件时的缓冲区溢出问题和其他内存相关的错误。
    • 修复了由于 IOCTL_DISK_VERIFY 处理中的错误导致 chkdsk 错误报告坏扇区的问题。
    • 修复了每次使用 VeraCrypt 时配置和历史文件都会更新而导致的隐私问题（由 Liran Elharar 报告）
    • 修复了冷启动后系统常用卷并非总是挂载的问题。
    • 解决了在 Windows 10 上更新 VeraCrypt 时安装程序出错的问题。
    • 实现了对非系统分区/驱动器的解密。
    • 在安装程序中包含 64 位可执行文件，并将其部署到 64 位机器上以提高性能。
    • 允许使用驱动器盘符 A: 和 B: 挂载卷
    • 使命令行参数解析更加严格和健壮（例如，/lz 被拒绝，必须是 /l z）
    • 增加了在 Windows 图形用户界面和引导加载程序中显示系统加密密码的功能
    • 解决了部分用户遇到的“类已存在”错误。
    • 解决了一些菜单项和图形用户界面字段无法翻译的问题
    • 使卷正确向 Windows 报告物理扇区大小。
    • 正确检测用户切换/RDP 断开连接操作，以便在会话锁定时自动卸载。
    • 在恢复原地加密时增加手动选择分区的功能。
    • 增加命令行选项 (/cache f) 以在挂载常用卷时临时缓存密码。
    • 为自动挂载设备操作添加等待对话框，以避免图形用户界面冻结。
    • 在显示的错误消息中添加额外信息，以帮助分析报告的问题。
    • 禁用更改系统加密伪随机函数（PRF）的菜单项，因为该功能尚未实现。
    • 修复了需要用户账户控制（UAC）时更改密码失败的问题（继承自 TrueCrypt）
    • 小修复和更改（更多详细信息请参阅 Git 历史记录）
  • Linux:
    • 解决了在 KDE 环境下且 xterm 不可用时安装程序的问题
    • 修复了 wxWidgets 动态链接时关于/法律声明对话框中的警告（官方二进制文件不适用）
    • 支持在命令行中使用带连字符的哈希名称（sha - 256、sha - 512 和 ripemd - 160）
    • 移除“--current - hash”开关并添加“--new - hash”，以与现有开关更一致。
    • 当在命令行中仅指定密钥文件时，不尝试使用空密码挂载。
      • 如果需要使用空密码挂载，请明确指定：-p ""

1.0f - 2（2015 年 4 月 5 日）:

  • 所有操作系统:
    • 挂载速度提升，在64位系统上最高快20%（由Nils Maier贡献）
    • 添加设置挂载卷时使用的默认哈希/TrueCrypt模式的选项。
    • 在密码对话框中使用命令行中指定的TrueCrypt模式/哈希。
  • Windows:
    • 解决Open Crypto Audit Phase II报告的CryptAcquireContext漏洞。
    • 正确处理随机数生成器故障。在这种情况下通知用户。
    • 与TrueCrypt模式相关的更改:
      • 支持挂载TrueCrypt系统分区（尚未支持转换）
      • 支持将TrueCrypt卷作为系统收藏项。
      • 当使用SHA - 256时，纠正卷属性中错误显示的TrueCrypt模式。
    • 解决特殊情况下智能卡PIN被锁定的问题。
    • 挂载容器时正确处理文件访问错误。
    • 解决静态代码分析工具Coverity报告的几个问题。
    • 引导加载程序: 添加“正在验证密码...”消息。
    • 当UAC提示失败（例如超时）时，提示用户重试操作。
    • 卸载链接现在打开标准的“添加/删除程序”窗口。
    • 卸载时，从注册表和磁盘中删除所有VeraCrypt引用。
    • 安装程序中包含VeraCryptExpander。
    • 添加在挂载多个收藏项时临时缓存密码的选项。
    • 小修复和增强（更多信息请查看git历史记录）
  • MacOSX:
    • 解决退出VeraCrypt时卷未自动卸载的问题。
    • 解决点击停靠图标时VeraCrypt窗口无法重新打开的问题。
  • Linux/MacOSX:
    • 解决点击偏好设置对话框上的“X”图标时对话框不关闭的问题。
    • 解决某些情况下挂载非FAT卷时的只读问题。
    • 支持在除Gnome/KDE之外的桌面环境中打开/浏览已挂载的卷。
    • 解决在不太常见的配置下运行安装程序时出现的各种问题
    • 小修复（更多信息请查看git历史记录）

1.0f - 1 (2015年1月4日)

  • 所有操作系统:
    • 添加对旧版TrueCrypt 6.0的支持。
    • 更改GUI中级联算法的命名，以提供更好的描述。
  • Linux/MacOSX:
    • 使偏好设置对话框的取消按钮正常工作。
    • 解决无法输入一位数卷大小的问题。
    • 在基准计算中添加等待对话框。
  • Windows:
    • 在已挂载卷的信息中添加TrueCrypt模式。
    • 对于Windows XP，修复安装程序的图形显示问题。

1.0f (2014年12月30日)

  • 所有操作系统:
    • 添加对挂载TrueCrypt卷的支持。
    • 添加对转换TrueCrypt容器和非系统分区的支持。
    • 添加对SHA - 256卷加密的支持。
    • 将SHA - 512设为默认密钥推导算法，并更改推导算法的优先级顺序: SHA - 512 -> Whirlpool -> SHA - 256 -> RIPEMD160
    • 弃用非系统加密中的RIPEMD160。
    • 通过启用正确哈希算法的选择来加速挂载操作。
    • 在长时间操作期间显示等待对话框，以避免GUI冻结。
    • 实现一次性创建多个密钥文件，支持预定义或随机大小。
    • 在执行敏感操作之前始终显示随机数收集对话框。
    • 应用程序中的链接现在指向Codeplex上的在线资源
    • 首个版本的正式VeraCrypt用户指南
  • MacOSX:
    • 实现对大扇区大小（> 512）硬盘的支持。
    • 链接到新的wxWidgets版本3.0.2。
    • 解决某些向导窗口中文本截断的问题。
  • Linux:
    • 添加对卷进行NTFS格式化的支持。
    • 修复打开用户指南PDF时的问题。
    • 更好地支持大扇区大小（> 512）的硬盘。
    • 链接到新的wxWidgets版本3.0.2。
  • Windows:
    • 安全: 修复Open Crypto Audit检测到的引导加载程序漏洞，并使其更健壮。
    • 添加对系统引导加密中SHA - 256的支持。
    • 引导加载程序的各种优化。
    • 完全修复ShellExecute安全问题。
    • 内核驱动程序: 检查从引导加载程序接收到的密码长度是否小于或等于64。
    • 修复点击密钥文件更多信息链接时的随机崩溃问题
    • 实现用户会话锁定时自动卸载的选项
    • 添加SHA - 256的自测向量
    • 通过启用视觉样式实现现代外观和感觉
    • 一些小修复。
1.0e (2014年9月4日)
  • 改进和漏洞修复:
    • 修复Open Crypto Audit Project报告的大多数安全漏洞。
    • 修复静态代码分析检测到的安全问题，主要是在Windows系统下。
    • 修复更改卷的密码/密钥文件时无响应的问题。减少创建加密卷/分区所需的总时间。
    • 小改进和漏洞修复（更多详细信息请查看git历史记录）。

1.0d (2014年6月3日)
  • 改进和漏洞修复:
    • 修复创建隐藏操作系统时的问题。
    • 小改进和漏洞修复。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> 致谢

致谢

我们要感谢以下人员：

TrueCrypt开发团队，他们在过去10年中做出了卓越的工作。没有他们的辛勤付出，就没有如今的VeraCrypt。

Paul Le Roux，他开放了E4M源代码。TrueCrypt 1.0源自E4M，并且E4M源代码的部分内容仍包含在最新版本的TrueCrypt源代码中。

Brian Gladman，他编写了优秀的AES、Twofish和SHA - 512例程。

Peter Gutmann，他撰写了关于随机数的论文，并创建了cryptlib，该库是随机数生成器源代码部分内容的来源。

Wei Dai，他编写了Serpent、RIPEMD - 160和Whirlpool例程。

Tom St Denis，他是LibTomCrypt的作者，该库包含紧凑的SHA - 256例程。

Mark Adler和Jean - loup Gailly，他们编写了zlib库。

加密算法、哈希算法及操作模式的设计者：

Horst Feistel、Don Coppersmith、Walt Tuchmann、Lars Knudsen、Ross Anderson、Eli Biham、Bruce Schneier、David Wagner、John Kelsey、Niels Ferguson、Doug Whiting、Chris Hall、Joan Daemen、Vincent Rijmen、Carlisle Adams、Stafford Tavares、Phillip Rogaway、Hans Dobbertin、Antoon Bosselaers、Bart Preneel、Paulo S. L. M. Barreto。

Andreas Becker，他设计了VeraCrypt的标志和图标。

Xavier de Carné de Carnavalet，他提出了PBKDF2的速度优化方案，使挂载/启动时间缩短了一半。

kerukuro，他提供了cppcrypto库（http://cppcrypto.sourceforge.net/），VeraCrypt中的Kuznyechik密码实现取自该库。

Dieter Baron和Thomas Klausner，他们编写了libzip库。

Jack Lloyd，他编写了SIMD优化的Serpent实现。

风之暇想，他翻译了中文帮助文档。

所有为这个项目的成功做出贡献的人，所有给予我们精神支持的人，以及所有向我们发送错误报告或改进建议的人。

非常感谢大家！


文档 >> 参考文献

参考文献

[1] | 美国国家安全系统委员会（CNSS），《关于使用高级加密标准（AES）保护国家安全系统和国家安全信息的国家政策》，CNSS政策第15号，情况说明书第1号，2003年6月，可访问 http://csrc.nist.gov/groups/STM/cmvp/documents/CNSS15FS.pdf。
[2] | C. E. 香农，《保密系统的通信理论》，《贝尔系统技术期刊》，第28卷，第4期，1949年
[3] | 美国国家标准与技术研究院（NIST），《高级加密标准（AES）》，联邦信息处理标准出版物197号，2001年11月26日，可访问 http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf。
[4] | J. 内奇瓦塔尔、E. 巴克、L. 巴斯哈姆、W. 伯尔、M. 德沃金、J. 福蒂、E. 罗巴克，美国国家标准与技术研究院（NIST）， 《高级加密标准（AES）开发报告》，2000年10月2日，《美国国家标准与技术研究院研究期刊》，第106卷，第3期，2001年5 - 6月，可访问 http://csrc.nist.gov/archive/aes/round2/r2report.pdf。
[5] | B. 施奈尔、J. 凯尔西、D. 怀廷、D. 瓦格纳、C. 霍尔、N. 弗格森、T. 科诺、M. 斯泰， 《Twofish团队关于AES选择的最终评论》，2000年5月15日，可访问 http://csrc.nist.gov/archive/aes/round2/comments/20000515-bschneier.pdf。
[6] | 布鲁斯·施奈尔（Bruce Schneier），《超越恐惧：在不确定的世界中理性思考安全问题》（Beyond Fear: Thinking Sensibly About Security in an Uncertain World），施普林格出版社（Springer），2003年
[7] | RSA实验室（RSA Laboratories），《PKCS #5 v2.0：基于密码的加密标准》（PKCS #5 v2.0: Password-Based Cryptography Standard），RSA数据安全公司（RSA Data Security, Inc.）公钥加密标准（PKCS），1999年3月25日，可访问 https://www.emc.com/emc-plus/rsa-labs/standards-initiatives/pkcs-5-password-based-cryptography-standard.htm。
[8] | H. 克劳茨基（H. Krawczyk）、M. 贝拉雷（M. Bellare）、R. 卡内蒂（R. Canetti），《HMAC：用于消息认证的密钥哈希算法》（HMAC: Keyed-Hashing for Message Authentication），RFC 2104，1997年2月，可访问 http://www.ietf.org/rfc/rfc2104.txt。
[9] | M. 尼斯特罗姆（M. Nystrom），RSA安全公司（RSA Security），《HMAC - SHA - 224、HMAC - SHA - 256、HMAC - SHA - 384和HMAC - SHA - 512的标识符和测试向量》（Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512），RFC 4231，2005年12月，可访问 http://www.ietf.org/rfc/rfc4231.txt。
[10] | 彼得·古特曼（Peter Gutmann），《实用强随机数的软件生成》（Software Generation of Practically Strong Random Numbers），于1998年美国UNIX安全研讨会（Usenix Security Symposium）上发表，可访问 http://www.cs.auckland.ac.nz/~pgut001/pubs/usenix98.pdf。
[11] | 卡尔·埃里森（Carl Ellison），《加密随机数》（Cryptographic Random Numbers），最初是P1363标准的附录，可访问 http://world.std.com/~cme/P1363/ranno.html。
[12] | P. 罗加韦（P. Rogaway），《可调分组密码的高效实现以及对OCB和PMAC模式的改进》（Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC），亚洲密码学会议（Asiacrypt）2004年。《计算机科学讲义》（LNCS）第3329卷。施普林格出版社（Springer），2004年。也可访问： http://www.cs.ucdavis.edu/~rogaway/papers/offsets.pdf。
[13] | J. 凯尔西（J. Kelsey），《Twofish技术报告#7：Twofish中的密钥分离》（Twofish Technical Report #7: Key Separation in Twofish），高级加密标准（AES）第二轮公开评论，2000年4月7日
[14] | 美国国家标准与技术研究院（NIST），《安全哈希标准》（Secure Hash Standard），联邦信息处理标准（FIPS）180 - 2，2002年8月1日，可访问 http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf。
[15] | U. 毛雷尔（U. Maurer）、J. 梅西（J. Massey），《级联密码：首位的重要性》（Cascade Ciphers: The Importance of Being First），《密码学杂志》（Journal of Cryptology），第6卷，第1期，1993年
[16] | 布鲁斯·施奈尔（Bruce Schneier），《应用密码学》（Applied Cryptography），第二版，约翰·威利父子出版公司（John Wiley & Sons），1996年
[17] | 彼得·古特曼（Peter Gutmann），《从磁存储器和固态存储器中安全删除数据》（Secure Deletion of Data from Magnetic and Solid-State Memory），首次发表于第六届美国 Unix 安全研讨会会议记录，加利福尼亚州圣何塞，1996 年 7 月 22 - 25 日，可访问 http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html。
[18] | 蛇形加密算法（Serpent）主页： http://www.cl.cam.ac.uk/~rja14/serpent.html。
[19] | M. E. 斯密德（M. E. Smid），《高级加密标准（AES）问题》（AES Issues），AES 第二轮评审意见，2000 年 5 月 22 日，可访问 http://csrc.nist.gov/archive/aes/round2/comments/20000523-msmid-2.pdf。
[20] | A. 梅内塞斯（A. Menezes）、P. 范·奥尔肖特（P. van Oorschot）、S. 范斯通（S. Vanstone），《应用密码学手册》（Handbook of Applied Cryptography），CRC 出版社，1996 年 10 月
[21] | 国际标准化组织（ISO），《信息技术——安全技术——哈希函数——第 3 部分：专用哈希函数》（ Information technology – Security techniques – Hash-functions – Part 3: Dedicated hash-functions），ISO/IEC 10118 - 3:2004，2004 年 2 月 24 日
[22] | 美国国家标准与技术研究院（NIST），《密钥哈希消息认证码（HMAC）》（The Keyed-Hash Message Authentication Code (HMAC)），联邦信息处理标准出版物 198，2002 年 3 月 6 日，可访问 http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf。
[23] | RSA 实验室，《PKCS #11 v2.20：密码令牌接口标准》（PKCS #11 v2.20: Cryptographic Token Interface Standard），RSA 安全公司，公钥密码学标准（PKCS），2004 年 6 月 28 日，可访问 https://www.emc.com/emc-plus/rsa-labs/standards-initiatives/pkcs-11-cryptographic-token-interface-standard.htm. PDF 文件可访问 https://www.cryptsoft.com/pkcs11doc/STANDARD/pkcs-11v2-20.pdf
[24] | 莫里斯·德沃金（Morris Dworkin），《块密码操作模式建议：用于存储设备机密性的 XTS - AES 模式》（Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices），NIST 特别出版物 800 - 3E，2010 年 1 月，可访问 http://csrc.nist.gov/publications/nistpubs/800-38E/nist-sp-800-38E.pdf。
[25] | 美国国家标准与技术研究院（NIST），《FIPS PUB 140 - 2 批准的安全函数，密码模块安全要求》，2010 年 10 月 8 日，可访问 http://csrc.nist.gov/publications/fips/fips140-2/fips1402annexa.pdf


文档 >> VeraCrypt 卷

作者

穆尼尔·伊德拉斯西（AM Crypto，https://www.linkedin.com/in/idrassi）是 VeraCrypt 的创建者和主要开发者。他负责所有受支持平台（Windows、Linux 和 OSX）上的开发和部署工作。

亚历克斯·科洛特尼科夫（https://ru.linkedin.com/in/alex-kolotnikov-6625568b）是 VeraCrypt EFI 引导加载程序的作者。他负责 EFI 支持的各个方面，凭借其深厚的专业知识为 VeraCrypt 的 Windows 系统加密功能带来了许多令人兴奋的新特性。


在此您可以找到由VeraCrypt用户贡献的有用资源。

第三方二进制文件：

  • 由用户 “Unit 193” 提供的Linux Ubuntu PPA（由Launchpad完成构建）：
    • https://launchpad.net/~unit193/+archive/ubuntu/encryption
  • 用户 haggster 在ChromeBook上构建的Linux Armv7 GUI/控制台32位版本：
    • veracrypt-1.0f-1-setup-arm.tar.bz2

教程：

  • http://schneckchen.in/veracrypt-anleitung-zum-daten-verschluesseln/：
    • Andreas Heinz编写的VeraCrypt德语教程。
  • http://howto.wared.fr/raspberry-pi-arch-linux-arm-installation-veracrypt/：
    • 由 Edouard WATTECAMPS 编写的在树莓派Arch Linux上构建VeraCrypt的法语教程。
  • clonezilla_using_veracrypt_ver_1.1.doc：
    • 由 pjc123 编写的在CloneZilla中使用VeraCrypt访问加密备份的教程。
  • https://bohdan-danishevsky.blogspot.fr/2016/11/raspberry-pi-raspbian-installing.html
    • Bohdan Danishevsky编写的在树莓派（Raspbian）上安装和使用官方VeraCrypt二进制文件的教程。

其他：

  • vcsteg2.py ：一个尝试将VeraCrypt卷隐藏在视频文件中的Python脚本（隐写术）


文档 >> 免责声明

免责声明 - 保证方面

本网站（以及任何相关网站/服务器）的内容“按原样”提供，不提供任何形式的保证，无论是明示的、暗示的还是法定的。本网站（以及任何相关网站）的内容可能不准确、不正确、无效、不真实、虚假、不完整和/或具有误导性。本网站（以及任何相关网站）内容的质量、正确性、准确性或完整性的全部风险由您自行承担。本网站（以及相关网站/服务器）的作者、所有者、发布者和管理员，以及适用的知识产权所有者，均不承担任何形式的保证责任。

免责声明 - 责任方面

本网站（以及相关网站/服务器）的作者、所有者、发布者和管理员，以及适用的知识产权所有者，不承担任何责任。在任何情况下，这些各方均不对您或任何其他方承担任何损害赔偿责任，包括但不限于任何直接、间接、一般、特殊、偶然、惩罚性、示范性或后果性损害赔偿（包括但不限于您或第三方遭受的任何损失、替代服务的采购或业务中断），无论是在合同、严格责任、侵权（包括疏忽）或其他情况下，因使用本网站（或相关网站/服务器）或其内容，或因本网站（或相关网站）以任何方式链接的任何第三方网站而产生的损害赔偿，即使此类损害赔偿（或此类损害赔偿的可能性）是可预见的或已知的给任何作者、所有者、发布者、管理员或任何其他方。


VeraCrypt - 为偏执狂提供强大安全保障的免费开源磁盘加密工具

向VeraCrypt捐赠

您可以通过PayPal、加密货币（比特币和以太坊）和Liberapay进行捐赠，以支持VeraCrypt的开发。

PayPal

欧元
美元
英镑
加元
瑞士法郎
日元
澳元
波兰兹罗提

如需使用其他货币捐赠，请从以下列表中选择：

捐赠平台：

  • Liberapay: 使用Liberapay捐赠

比特币

  • 隔离见证（SegWit）:

    bc1qrlzz2u302vp4nuu8sm9zkl0vtyfcpmmppedede

  • 传统地址:

    1CKsjZXqAxK5doo6XdJJtwDyo2GUwzz9ha

以太坊

0xA73130B89af878ABfAA950c6Db5b82549f600925


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> EMV智能卡

EMV智能卡

VeraCrypt的Windows和Linux版本提供了使用符合EMV标准的智能卡的功能。实际上，使用符合PKCS#11标准的智能卡主要面向具有一定网络安全技能的用户。然而，在某些情况下，拥有这样的卡会大大降低用户的似是而非的否认能力。

为了解决这个问题，我们的想法是允许使用一种人人都可能拥有的智能卡：符合EMV标准的智能卡。根据同名标准，这些在全球广泛使用的卡片用于进行银行业务。将用户EMV卡的内部数据用作密钥文件，将在保持用户否认合理性的同时，增强其加密卷的安全性。

如需更多技术信息，请参阅 密钥文件 章节中的 EMV智能卡 部分。


VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密软件

文档 >> VeraCrypt许可协议

VeraCrypt许可协议

根据本许可协议分发的软件是按“原样”分发的，不提供任何形式的保证。软件的作者和分发者不承担任何责任。任何使用、复制、修改或（再）分发该软件任何部分的人，通过此类行为，即接受并同意受本许可协议的所有条款和条件的约束。如果您不接受这些条款和条件，请不要使用、复制、修改或（再）分发该软件及其任何部分。

VeraCrypt根据 Apache许可协议2.0 和TrueCrypt许可协议3.0版本进行多许可授权。以下是这两个许可协议的逐字副本。

本许可协议未授予您使用任何贡献者的名称、标志或商标的权利，包括IDRIX、
AM Crypto、VeraCrypt及其所有衍生名称。例如，以下名称是不允许的：VeraCrypt、VeraCrypt+、VeraCrypt Professional、iVeraCrypt等。也不允许使用任何与VeraCrypt名称容易混淆的其他名称（例如，Vera-Crypt、Vera Crypt、VerKrypt等）。

Apache许可协议
版本2.0，2004年1月
http://www.apache.org/licenses/

使用、复制和分发的条款和条件

1. 定义。

“许可协议”是指本文件第1至9节所定义的使用、复制和分发的条款和条件。

“许可方”是指版权所有者或经版权所有者授权授予本许可协议的实体。

“法律实体”是指行事实体以及所有其他控制该实体、受该实体控制或与该实体受共同控制的实体的联合体。就本定义而言，“控制”是指（i）直接或间接导致该实体的方向或管理的权力，无论是通过合同还是其他方式，或（ii）拥有已发行股份的百分之五十（50%）或更多，或（iii）对该实体的受益所有权。

“您”是指行使本许可协议授予的权限的个人或法律实体。

“源代码形式”指最适合进行修改的形式，包括但不限于软件源代码、文档源文件和配置文件。

“目标代码形式”指由源代码形式经过机械转换或翻译而产生的任何形式，包括但不限于编译后的目标代码、生成的文档以及转换为其他媒体类型的文件。

“作品”指根据本许可协议提供的版权作品，无论是源代码形式还是目标代码形式，通过包含在作品中或附于作品上的版权声明来表明（下文附录中提供了一个示例）。

“衍生作品”指基于本作品（或从本作品衍生而来）的任何作品，无论是源代码形式还是目标代码形式，其编辑修订、注释、详细阐述或其他修改整体上构成了原创版权作品。就本许可协议而言，衍生作品不包括与本作品及其衍生作品保持可分离状态，或仅通过名称与本作品及其衍生作品的接口进行链接（或绑定）的作品。

“贡献内容”指任何版权作品，包括作品的原始版本以及对该作品或其衍生作品所做的任何修改或补充，由版权所有者或经版权所有者授权代表其提交的个人或法律实体有意提交给许可方，以纳入本作品。就本定义而言，“提交”指以任何电子、口头或书面形式发送给许可方或其代表的通信，包括但不限于在由许可方或代表许可方管理的电子邮件列表、源代码控制系统和问题跟踪系统上进行的通信，目的是讨论和改进本作品，但不包括版权所有者以书面形式显著标记或以其他方式指定为“非贡献内容”的通信。

“贡献者”指许可方以及代表其向许可方提交贡献内容并随后将其纳入本作品的任何个人或法律实体。

2. 版权许可授予。

在遵守本许可协议的条款和条件的前提下，每位贡献者特此授予您一项永久的、全球范围的、非排他的、免费的、免版税的、不可撤销的版权许可，允许您复制、创作衍生作品、公开展示、公开表演、再许可和分发本作品及其衍生作品，无论是源代码形式还是目标代码形式。

3. 专利许可授予。

在遵守本许可协议的条款和条件的前提下，每位贡献者特此授予您一项永久的、全球范围的、非排他的、免费的、免版税的（本条款另有规定的除外）专利许可，允许您制造、委托制造、使用、要约销售、销售、进口以及以其他方式转让本作品，但该许可仅适用于该贡献者可授予许可的那些专利权利要求，这些权利要求仅因他们的贡献内容或因他们的贡献内容与提交该贡献内容的作品相结合而必然受到侵犯。如果您针对任何实体提起专利侵权诉讼（包括在诉讼中的交叉索赔或反诉），声称本作品或纳入本作品的贡献内容构成直接或间接专利侵权，则根据本许可协议授予您的该作品的任何专利许可将自提起该诉讼之日起终止。

4. 再分发。

您可以以任何介质复制和分发本作品或其衍生作品，无论是否进行修改，也无论是源代码形式还是目标代码形式，但需满足以下条件：

1. 您必须向本作品或其衍生作品的任何其他接收者提供本许可协议的副本；并且

2. 您必须使任何修改过的文件带有显著的通知，表明您对这些文件进行了更改；并且

3. 您必须在您分发的任何衍生作品的源代码形式中保留本作品源代码形式中的所有版权、专利、商标和归属声明，但不包括与衍生作品的任何部分无关的声明；并且

4. 如果本作品在分发时包含一个“NOTICE”文本文件，则您分发的任何衍生作品必须在以下至少一处包含该NOTICE文件中所含归属声明的可读副本，但不包括与衍生作品的任何部分无关的声明：作为衍生作品一部分分发的NOTICE文本文件中；如果随衍生作品提供了源代码形式或文档，则在其中包含；或者，如果第三方声明通常会在衍生作品生成的显示内容中出现，则在该显示内容中包含。NOTICE文件的内容仅用于提供信息，不修改本许可协议。您可以在您分发的衍生作品中添加自己的归属声明，与本作品的NOTICE文本并列或作为其附录，但前提是这些额外的归属声明不能被解释为修改本许可协议。

您可以在您的修改内容中添加自己的版权声明，并可以为您的修改内容或整个衍生作品的使用、复制或分发提供额外或不同的许可条款和条件，但前提是您对本作品的使用、复制和分发必须符合本许可协议中规定的条件。

5. 贡献内容的提交。

除非您明确另有说明，否则您有意向许可方提交以纳入本作品的任何贡献内容应遵循本许可协议的条款和条件，无任何额外条款和条件。尽管有上述规定，本条款中的任何内容均不得取代或修改您可能与许可方就此类贡献内容签订的任何单独许可协议的条款。

6. 商标。

本许可协议不授予使用许可方的商号、商标、服务标记或产品名称的许可，但在合理和惯常描述本作品的来源以及复制NOTICE文件内容时所需的情况除外。

7. warranty的免责声明。

除非适用法律要求或书面同意，许可方按“原样”提供本作品（每位贡献者也按“原样”提供其贡献内容），不提供任何形式的明示或暗示的保证或条件，包括但不限于
在所有权、不侵权、适销性或特定用途适用性方面，不提供任何保证或条件。您独自负责确定使用或重新分发本作品的适当性，并承担根据本许可行使许可权所带来的任何风险。

8. 责任限制。

在任何情况下，无论依据何种法律理论，无论是侵权（包括过失）、合同还是其他情况，除非适用法律要求（如故意和重大过失行为）或书面约定，任何贡献者均不对您承担损害赔偿责任，包括因本许可或使用或无法使用本作品而产生的任何直接、间接、特殊、偶然或后果性损害（包括但不限于商誉损失、工作停顿、计算机故障或失灵，或任何和所有其他商业损害或损失），即使该贡献者已被告知此类损害的可能性。

9. 接受保证或额外责任。

在重新分发本作品或其衍生作品时，您可以选择提供并收取费用，以接受支持、保证、赔偿或其他与本许可一致的责任义务和/或权利。但是，在接受此类义务时，您只能代表自己并独自承担责任，而不能代表任何其他贡献者，并且只有在您同意赔偿、辩护并使每个贡献者免受因您接受任何此类保证或额外责任而导致的任何责任或针对该贡献者提出的任何索赔时才可以这样做。

TrueCrypt 许可协议版本 3.0

根据本许可分发的软件是“按原样”分发的，不提供任何形式的保证。软件的作者和分发者不承担任何责任。任何使用、复制、修改或（重新）分发软件任何部分的人，通过此类行为，接受并同意受本许可的所有条款和条件的约束。如果您不接受这些条款和条件，请不要使用、复制、修改或（重新）分发该软件或其任何部分。

I. 定义

1. “本产品”指根据本版本许可协议（“许可协议”）提供并受其管辖的作品（包括但不限于源代码、图形、文本和附带文件），可能通过附加或包含在作品中的版权声明等方式表明，但不限于这些方式。

2. “您”指（“您的”指）行使本许可授予的许可权的个人或法律实体（例如，非营利组织、商业组织、政府机构等）。

3. “修改”指（“修改”指）对本产品的任何更改，包括但不限于对本产品的实质或结构进行添加或删除、翻译成另一种语言、重新打包、更改或删除随本产品提供的任何文件，以及向本产品添加任何新文件。

4. “您的产品”指您修改的本产品，或您从本产品的任何部分派生（或基于）的任何作品。此外，“您的产品”指您包含本产品任何（修改或未修改）部分的任何作品。但是，如果您包含本产品的作品是包含多个独立产品的聚合软件分发（如操作系统分发或杂志的封面光盘），则“您的产品”仅包括该聚合软件分发中使用、包含或依赖本产品修改或未修改版本的那些产品（“您的产品”不包括整个聚合软件分发）。就本许可而言，由两个或多个产品组成的产品套件被视为单个产品（操作系统分发和杂志的封面媒体不被视为产品套件）。

5. “分发”指（“分发”指）无论采用何种手段或方法，向第三方传达、转移、提供或提供本产品/您的产品或其部分（包括但不限于使本产品/您的产品或其部分可供第三方下载，无论第三方是否下载了该产品或其任何部分）。

II. 本产品的使用、复制和分发

1. 只要您遵守本许可的所有适用条款和条件，您可以复制本产品（未修改）并分发未包含在构成您的产品的另一个产品中的本产品副本（第三章允许的情况除外）。注意：有关复制和分发本产品修改版本的条款和条件，请参阅第三章。

2. 只要您遵守本许可的所有适用条款和条件，您可以在任意数量的计算机/系统上自由使用本产品（另见第三章），用于非商业和/或商业目的。

III. 修改、派生和包含在其他产品中

1. 如果本章（III）以下段落中规定的所有条件均得到满足（例外情况见第 III.2 节），并且您遵守本许可的所有其他适用条款和条件，您可以修改本产品（从而形成您的产品），从本产品或其部分派生新作品（从而形成您的产品），将本产品或其部分包含在另一个产品中（从而形成您的产品，除非第一章另有定义），以及 您可以（出于非商业和/或商业目的）使用、复制和/或分发您的产品。

  1. 您的产品（或您对本产品的修改版本）的名称不得包含“TrueCrypt”这个名称（例如，以下名称是不允许的：TrueCrypt、TrueCrypt+、TrueCrypt Professional、iTrueCrypt等），也不得包含任何与“TrueCrypt”名称容易混淆的其他名称（例如，True - Crypt、True Crypt、TruKrypt等）

    所有可能合理地被认为用于识别您的产品的“TrueCrypt”名称的出现之处，都必须从您的产品和任何相关材料中移除。包含在您的产品中（或附加于您的产品）（以及相关材料中）的标志不得包含且不得与任何TrueCrypt标志（包括但不限于主要由风格化钥匙组成的非文本标志）或其部分容易混淆。本产品中包含的所有图形（标志、图标等）必须从您的产品（或您对本产品的修改版本）和任何相关材料中移除。
  2. 以下短语必须从您的产品和任何相关材料中移除，但本许可证的文本除外：“A TrueCrypt Foundation Release”、“Released by TrueCrypt Foundation”、“This is a TrueCrypt Foundation release.”
  3. 短语“Based on TrueCrypt, freely available at www.truecrypt.org”必须由您的产品显示（如果技术上可行），并包含在其文档中。或者，如果您包含在产品中的本产品或其部分仅占您产品的一小部分，则可以显示短语“Portions of this product are based in part on TrueCrypt, freely available at www.truecrypt.org”。在本段上述的每种情况下，“www.truecrypt.org”必须是一个超链接（如果技术上可行），指向www.truecrypt.org，并且您可以自由选择在您产品的用户界面（如果有）内的位置（例如，“关于”窗口等）以及您的产品显示相应短语的方式。

    您的产品（以及任何相关材料，例如文档、您产品官方网站的内容等）不得将任何包含域名truecrypt.org（或任何转发到域名truecrypt.org的域名）的互联网地址以可能暗示该地址是获取您产品信息、报告您产品中发现的错误或获得您产品支持的地方的方式呈现，或以其他方式试图表明域名truecrypt.org与您的产品相关联。
  4. 您的产品的完整源代码必须至少在您停止分发您的产品之前免费公开提供（例外情况见第III.2节）。此条件可以通过以下一种或两种方式满足：(i) 您在制作和分发的您产品的每个副本中包含您产品的完整源代码，并将所有此类产品副本免费提供给公众；和/或 (ii) 您在制作和分发的您产品的每个副本中包含有关在哪里可以免费（例如，互联网地址）或支付合理的复制费用获取您产品的完整源代码的信息（至少在您停止分发您的产品之前有效且正确），并且，如果有与您的产品官方关联的网站，您在该网站通过易于查看的超链接链接到的一个免费且公开可访问的网页上包含上述有关源代码的信息（至少在您停止分发您的产品之前）。

    您产品的源代码不得故意混淆，也不得为中间形式（例如，预处理器的输出）。源代码是指程序员通常会修改程序的首选形式。

    您产品的源代码中不包含在本产品中的部分（例如，您在创建您的产品时添加的部分，无论由您或第三方创建）必须根据允许任何人修改和从这些不包含在本产品中的源代码部分派生新作品，并使用、复制和重新分发此类修改和/或派生作品的许可证提供（但是，另见第III.1.e小节）。许可证必须是永久的、非排他的、免版税的、免费的且全球适用的，并且不得使本许可证的任何部分、条款、规定或条款无效、削弱、限制、解释、修订、修改、干扰或以其他方式影响。许可证的文本必须包含在您制作和分发的您产品的每个副本中。
  5. 您不得对本产品的许可条款进行任何更改（添加任何新条款即使保留原始条款也被视为更改许可条款），这意味着，例如，本产品的任何部分不得置于其他许可证之下。您必须保留源代码文件中包含的所有法律声明。您必须在制作和分发的您产品的每个副本中包含以下内容：一个清晰且显著的通知，说明您的产品或其部分受本版本的TrueCrypt许可证管辖；本版本的TrueCrypt许可证的逐字副本（如本文所包含）；一个清晰且显著的通知，包含有关在哪里可以找到所包含的许可证副本的信息；以及适当的版权声明。

2. 如果您的产品未进行分发（即您的产品仅供您自己使用），则您无需遵守第III.1.d小节的规定。

IV. 责任免责声明、保修免责声明、赔偿

您明确承认并同意以下内容：

1. 在任何情况下，本产品的任何（共同）作者、任何适用的知识产权所有者，或任何根据本许可可能复制和/或（再）分发本产品或其部分的其他方，均不对您或任何其他方承担任何损害赔偿责任，包括但不限于任何直接、间接、一般、特殊、偶然、惩罚性、惩戒性或后果性损害赔偿（包括但不限于数据损坏或丢失、您或第三方遭受的任何损失、本产品与任何其他产品无法配合运行、采购替代商品或服务，或业务中断），无论是在合同、严格责任、侵权（包括但不限于疏忽）或其他情况下，因使用、复制、修改或（再）分发本产品（或其部分）或您的产品（或其部分），或无法使用本产品（或其部分）而产生，即使此类损害赔偿（或此类损害赔偿的可能性）是可预见的或为任何（共同）作者、知识产权所有者或任何其他方所知。

2. 本产品“按原样”提供，不提供任何形式的保证，无论是明示、暗示或法定的，包括但不限于适销性、特定用途适用性和不侵权的保证。本产品质量和性能的全部风险由您承担。如果本产品被证明有缺陷，您承担所有必要的维修、修复或纠正费用。

3. 本产品可能包含受管制（例如，受进出口管制法规约束）或在某些国家非法的加密算法的实现。您有责任自行核实，在您打算使用本产品（或其部分）的国家、您打算将其进口到的国家以及您打算从其出口的国家，进口和/或（再）出口和/或使用本产品（或其部分）是否合法，并且您有责任自行遵守任何适用的法规、限制和法律。

4. 您应赔偿、辩护并使本产品的所有（共同）作者和适用的知识产权所有者免受任何和所有责任、损害赔偿、损失、和解、罚款、费用、开支（包括合理的律师费）、要求、诉因、索赔、诉讼、程序和诉讼，这些责任直接与您使用、无法使用、复制、（再）分发、进口和/或（再）出口本产品（或其部分）相关或由此产生。 其后果）以及/或者您违反本许可的任何条款。

五、商标

本许可未授予使用与本产品相关（或适用于本产品）的商标的权限，但适用法律所定义的合理使用情况除外，以及本许可明确允许或要求的使用情况除外。任何其他试图使用与本产品相关（或适用于本产品）的商标的行为，将自动且立即终止您在本许可下的权利，并可能构成商标侵权（可能会被起诉）。

六、一般条款和条件、杂项规定

1. 任何使用、复制、修改、创作衍生作品、（再）分发本产品或其任何部分的人，通过此类行为，即同意受本许可的所有条款和条件约束，并接受本许可中包含的责任和义务。如果您不接受（并同意受约束）本许可的所有条款和条件，则不得使用、复制、修改、创作衍生作品、（再）分发本产品或其任何部分。

2. 除非本许可明确规定，否则您不得使用、修改、复制、创作衍生作品、（再）分发或分许可本产品或其部分（即使适用法律赋予您更多权利）。任何其他试图使用、修改、复制、创作衍生作品、（再）分发或分许可本产品或其部分的行为（即使适用法律允许），将自动且立即终止您在本许可下的权利，并可能构成版权侵权（可能会被起诉）。本许可中包含的任何条件和限制也是对本许可范围的限制，同时也定义了您在本许可下的权利范围。您未能遵守本许可的条款和条件，或未能履行本许可规定的任何适用义务，将自动且立即终止您在本许可下的权利，并可能导致或被视为版权侵权（可能会被起诉）。本许可中没有任何内容应暗示或被解释为承诺、义务或契约，即如果您不遵守本许可的条款和条件，不会就版权或商标侵权提起诉讼。

3. 除非本许可另有明确规定，否则本许可不构成或暗示放弃任何知识产权。本许可不转让、分配或传达任何知识产权（例如，它不转让版权或商标的所有权）。

4. 在遵守本许可的条款和条件的前提下，您可以允许第三方使用您的本产品副本（或您制作并分发的副本，或您的产品），前提是该第三方明确接受并同意受本许可的所有条款和条件约束，并且本许可（例如，见第六部分第7条）或适用法律未禁止该第三方使用本产品（或其部分）。但是，如果您仅分发自解压包（包含本产品），且该包在用户接受并同意受本许可的所有条款和条件约束之前不允许用户安装（或提取）包中包含的文件，则您没有义务确保该第三方接受（并同意受本许可的所有条款约束）。

5. 未经本产品作者（或其共同代表）的事先明确书面许可，您不得使用本产品的名称、本产品作者的名称，或作者所属（或曾所属）的法律实体（或非正式团体）的名称，来背书或推广您的产品或您包含本产品修改或未修改版本的任何作品，或背书或推广您或您的关联方，或以可能暗示您的产品（或您包含本产品修改或未修改版本的任何作品）、您或您的关联方得到本产品的一个或多个作者背书的方式，或以可能暗示本产品的一个或多个作者与您（或您的关联方）有关联或直接参与了您的产品或您包含本产品修改或未修改版本的任何作品的创作的方式使用。

6. 如果您不确定是否理解本许可的所有部分，或者不确定是否能够遵守本许可的所有条款和条件，您不得使用、复制、修改、创作衍生作品、（再）分发本产品或其任何部分。您应咨询律师。

7. 如果（在相关情况下）本许可第四章的任何条款在您所在司法管辖区的适用法律下不可执行、无效或被禁止，您在本许可下无任何权利，且不得使用、复制、修改、创作衍生作品、（再）分发本产品或其任何部分。

8. 除非本许可另有规定，如果本许可的任何条款或其部分被发现根据适用法律无效或不可执行，这不应影响本许可其余部分的有效性或可执行性，并且此类无效或不可执行的条款应被解释为反映该条款的原始意图，并应在适用法律允许的最大范围内执行，以便尽可能接近该条款的原始意图。

____________________________________________________________

第三方许可

本产品包含由第三方创建的组件，这些组件受第三方许可的约束，以下是这些第三方许可（由下划线分隔）。每个第三方许可仅适用于包含该第三方许可或明确引用该第三方许可的源代码文件（部分），以及此类源代码的编译或其他处理形式。 即使第三方许可使用“产品”、“程序”或任何其他等效术语/短语，也没有任何第三方许可适用于整个本产品。整个本产品受TrueCrypt许可的约束（见上文）。 本产品的一些第三方组件已由本产品的作者进行了修改。除非另有说明，此类修改和添加受TrueCrypt许可的约束（见上文）。注意：除非另有说明，非源代码的图形和文件受TrueCrypt许可的约束。

____________________________________________________________

大众加密软件许可协议

版权所有 (C) 1998 - 2000 保罗·勒鲁。保留所有权利。

本产品可免费复制和分发，包括源代码。

您可以修改本产品及其源代码，并分发这些修改内容，也可以基于本产品衍生出新的作品，但需满足以下条件：

1. 任何仅从本产品衍生而来的产品不得称为 E4M 或大众加密软件。

2. 如果您在自己的产品中使用了本产品的任何源代码，并且您的产品随源代码一起分发，则必须在您使用的源代码部分包含此声明。

或者，

如果您的产品仅以二进制形式分发，则必须在任何提及您产品的包装和营销材料上显示如下声明：

“本产品使用了保罗·勒鲁（<pleroux@swprofessionals.com>）编写的组件”

3. 如果您使用了最初由埃里克·扬编写的任何源代码，则必须另外遵守他的条款和条件。

4. 您没有义务接受本许可协议，因为您并未签署它。但是，除非接受本许可协议，否则您无权修改或分发本产品及其衍生作品。

如果您不接受本许可协议，这些行为将被法律禁止。

5. 如果本许可协议的任何条款被法院或法律程序认定为范围过宽而无效，您同意其他所有条款不受影响，仍然有效且可执行。

6. 本程序免费分发，因此，在适用法律允许的最大范围内，本程序不提供任何形式的保证。除非另有说明，本程序按“原样”提供，不附带任何明示或暗示的保证，包括但不限于适销性和特定用途适用性的暗示保证。您需自行承担使用本程序的全部质量和性能风险。如果本程序出现缺陷，您需承担所有必要的维修、修复或纠正费用。

7. 在任何情况下，除非适用法律要求或书面同意，否则任何版权持有者或其他有权按照上述规定修改和/或重新分发本程序的各方，均不对您因使用或无法使用本程序而产生的任何损害负责，包括但不限于数据丢失、数据不准确、您或第三方遭受的损失，或本程序与其他程序无法协同工作的情况，即使此类持有者或其他方事先已被告知可能发生此类损害。
____________________________________________________________

版权所有 (c) 1998 - 2008，布赖恩·格拉德曼，英国伍斯特。保留所有权利。

许可条款

允许免费分发和使用本软件（可进行修改或不进行修改），但需满足以下条件：

  1. 源代码分发应包含上述版权声明、本条件列表和以下免责声明；
  2. 二进制分发应在其文档中包含上述版权声明、本条件列表和以下免责声明；
  3. 未经版权持有者的明确书面许可，不得使用版权持有者的名称来宣传基于本软件构建的产品。

免责声明

本软件“按原样”提供，对于其特性，包括但不限于正确性和/或适用性，不提供任何明示或暗示的保证。
____________________________________________________________

版权所有 (C) 1995 - 2023 让 - 卢普·盖利和马克·阿德勒。

本软件“按原样”提供，不附带任何明示或暗示的保证。在任何情况下，作者均不对因使用本软件而产生的任何损害负责。

允许任何人出于任何目的使用本软件，包括商业应用，并可自由修改和重新分发，但需遵守以下限制：

  1. 不得歪曲本软件的来源；您不得声称自己编写了原始软件。如果您在产品中使用了本软件，在产品文档中提及一下会受到欢迎，但并非必需。
  2. 修改后的源代码版本必须明确标明，且不得将其误表示为原始软件。
  3. 此声明不得从任何源代码分发中移除或修改。
让 - 卢普·盖利 马克·阿德勒
jloup@gzip.org madler@alumni.caltech.edu
____________________________________________________________

版权所有 (C) 1999 - 2023 迪特尔·巴伦和托马斯·克劳斯纳

可通过 <libzip@nih.at> 联系作者

允许以源代码和二进制形式进行再分发和使用，无论是否进行修改，但需满足以下条件：

  1. 源代码的再分发必须保留上述版权声明、此条件列表以及以下免责声明。
  2. 二进制形式的再分发必须在分发所提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。
  3. 未经事先明确书面许可，不得使用作者的姓名来认可或推广源自本软件的产品。

本软件由作者“按原样”提供，所有明示或暗示的保证，包括但不限于适销性和特定用途适用性的暗示保证，均不予以保证。在任何情况下，作者均不对因使用本软件而导致的任何直接、间接、偶然、特殊、惩戒性或后果性损害（包括但不限于替代商品或服务的采购、使用损失、数据损失或利润损失、或业务中断）承担责任，无论损害是如何引起的，也无论责任理论是合同责任、严格责任还是侵权责任（包括疏忽或其他），即使已被告知此类损害的可能性。
____________________________________________________________

版权所有 (c) 2013，阿列克谢·杰格佳廖夫。保留所有权利。

________________________________________________________

版权所有 (c) 2016。用于 EFI 的磁盘加密服务 (DCS)，亚历克斯·科洛特尼科夫

本程序及随附材料根据 GNU Lesser General Public License（GNU 宽通用公共许可证）3.0 版（LGPL - 3.0）的条款和条件进行许可和提供。

完整的许可证文本可在 https://opensource.org/licenses/LGPL-3.0 找到
____________________________________________________________

版权所有 (c) 1999 - 2013、2014、2015、2016 杰克·劳埃德。

保留所有权利。

允许以源代码和二进制形式进行再分发和使用，无论是否进行修改，但需满足以下条件：

  1. 源代码的再分发必须保留上述版权声明、此条件列表以及以下免责声明。
  2. 二进制形式的再分发必须在分发所提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。

本软件由作者“按原样”提供，所有明示或暗示的保证，包括但不限于适销性和特定用途适用性的暗示保证，均不予以保证。在任何情况下，作者均不对因使用本软件而导致的任何直接、间接、偶然、特殊、惩戒性或后果性损害（包括但不限于替代商品或服务的采购、使用损失、数据损失或利润损失、或业务中断）承担责任，无论损害是如何引起的，也无论责任理论是合同责任、严格责任还是侵权责任（包括疏忽或其他），即使已被告知此类损害的可能性。
____________________________________________________________

版权所有 (c) 2013 - 2019 斯蒂芬·米勒 <smueller@chronox.de>

允许以源代码和二进制形式进行再分发和使用，无论是否进行修改，但需满足以下条件：
  1. 源代码的再分发必须保留上述版权声明以及完整的许可声明，包括免责声明。
  2. 二进制形式的再分发必须在分发所提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。
  3. 未经事先明确书面许可，不得使用作者的姓名来认可或推广源自本软件的产品。

或者，本产品可以根据 GNU 通用公共许可证的条款进行分发，在这种情况下，需要遵循 GPL2 的规定，而不是上述限制。（由于 GPL 与 BSD 风格版权中的限制可能存在不良交互，因此此条款是必要的。）

本软件“按原样”提供，所有明示或暗示的保证，包括但不限于适销性和特定用途适用性的暗示保证，均在此予以免责。在任何情况下，作者均不对因使用本软件而导致的任何直接、间接、偶然、特殊、惩戒性或后果性损害（包括但不限于替代商品或服务的采购、使用损失、数据损失或利润损失、或业务中断）承担责任，无论损害是如何引起的，也无论责任理论是合同责任、严格责任还是侵权责任（包括疏忽或其他），即使未被告知此类损害的可能性。

____________________________________________________________

版权所有 (c) 1999 - 2023 伊戈尔·帕夫洛夫（Igor Pavlov）

LZMA SDK 由伊戈尔·帕夫洛夫编写并奉献于公共领域。

LZMA SDK 中的部分代码基于其他开发者的公共领域代码：
  1. PPMd var.H (2001)：德米特里·什卡林（Dmitry Shkarin）
  2. SHA - 256：戴伟（Wei Dai）（Crypto++ 库）

任何人都可以自由复制、修改、发布、使用、编译、销售或分发原始的 LZMA SDK 代码，无论是源代码形式还是编译后的二进制形式，用于任何目的，无论是商业目的还是非商业目的，并且可以采用任何方式。

____________________________________________________________