文档 杂项 数字签名

# 数字签名

### 为何要验证数字签名

您从我们服务器下载的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