# 如何验证 Tor 浏览器的签名

Windows
macOS
Linux

我们的下载页面上的每个文件都附有一个标有 “签名”的文件，其名称与软件包相同，扩展名为".asc"。这些 .asc 文件是它们的 OpenPGP 签名。 这些数字签名文件用于验证下载文件是否为我们希望你获取的文件。 这将由浏览器决定，但一般来说，你可以通过右键单击“签名”链接并选择“文件另存为”选项来下载该文件。

例如，`tor-browser-windows-x86_64-portable-13.0.1.exe` 附带有 `tor-browser-windows-x86_64-portable-13.0.1.exe.asc`。 这些是示例文件名，与你下载的文件不会完全相同。

请注意，数字签名的日期指对程序包进行签名的时间。 因此，每次新文件上传时，将生产新的签名，并且日期不同。 只要你验证了签名，不必担心报告的日期可能有所不同。

### 安装 GnuPG

首先，验证签名之前，你需要安装 GnuPG。 如果使用 Windows，请下载 Gpg4win 并运行安装包。 为了验证签名，你需要在 Windows 命令行（`cmd.exe`）中输入一些命令。

### 提取 Tor 开发者密钥

Tor 浏览器团队已经为 Tor 浏览器发行版签名。 导入 Tor 浏览器开发者的签名密钥（0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290）：

    gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org

这将显示如下类似内容：

    gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <torbrowser@torproject.org>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
    uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>

注意：您的输出可能与上面的有所不同（例如到期日期），但您应该看到正确导入的密钥。

如果你收到了一个错误信息，就说明出了问题，你不能继续操作，直到你弄清楚为什么会出现错误。也许你可以参照解决方法（使用公钥）部分来导入密钥。

导入密钥后，你可以将其保存到文件中（此处提供其指纹来指定）：

    gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

该命令将密钥保存在路径为`./tor.keyring`的文件中，即当前目录。 如果运行这个命令后 `./tor.keyring`不存在，就说明出了问题，不能继续操作，直到你弄清楚为什么出现错误。

### 验证签名

为了验证下载的软件包签名，除了下载安装程序文件本身，还需要下载相应的“.asc”签名文件，并使用 GnuPG 命令来验证下载的文件。

以下示例假设已在“Downloads”文件中下载这两个文件。 请注意，这些命令使用示例文件名，而你的文件名将不同：你需要用你已下载的文件的确切名称替换示例文件名。

#### 对于 Windows 用户（如果您有 32 位软件包，请将 x86_64 更改为 i686）：

    gpgv --keyring .\tor.keyring Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe.asc Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe

命令的结果应该包含：

    gpgv: Good signature from "Tor Browser Developers (signing key) <torbrowser@torproject.org>"

如果错误消息含有“No such file or directory”，上述某个步骤出错，或者未更改命令中的示例文件名。

#### 刷新 PGP 密钥

运行以下的命令，可从密钥服务器上刷新本地密钥环中 Tor 浏览器开发者的签名密钥。同时将获取新的子密钥。

    gpg --refresh-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

#### 解决方法（使用公钥）

如果你遇到了无法解决的问题，不妨下载并使用这个公钥来代替。或者，你还可以使用以下指令：

    curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 浏览器开发者密钥也可在 keys.openpgp.org 上找到，并可从 https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290 下载。 另外，你可能想要了解更多 GnuPG 信息。

我们的下载页面上的每个文件都附有一个标有 “签名”的文件，其名称与软件包相同，扩展名为".asc"。这些 .asc 文件是它们的 OpenPGP 签名。 这些数字签名文件用于验证下载文件是否为我们希望你获取的文件。 这将由浏览器决定，但一般来说，你可以通过右键单击“签名”链接并选择“文件另存为”选项来下载该文件。

例如，`tor-browser-macos-14.5.6.dmg` 文件附带了 `tor-browser-macos-14.5.6.dmg.asc` 文件。 这些是示例文件名，与你下载的文件不会完全相同。

请注意，数字签名的日期指对程序包进行签名的时间。 因此，每次新文件上传时，将生产新的签名，并且日期不同。 只要你验证了签名，不必担心报告的日期可能有所不同。

### 安装 GnuPG

首先，验证签名之前，你需要安装 GnuPG。 如果使用 macOS，你可以安装 GPGTools。

为了验证签名，你需要在终端（位于“应用程序”下）中输入一些命令。

### 提取 Tor 开发者密钥

Tor 浏览器团队已经为 Tor 浏览器发行版签名。 导入 Tor 浏览器开发者的签名密钥（0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290）：

    gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org

这将显示如下类似内容：

    gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <torbrowser@torproject.org>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
    uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>

注意：您的输出可能与上面的有所不同（例如到期日期），但您应该看到正确导入的密钥。

如果你收到了一个错误信息，就说明出了问题，你不能继续操作，直到你弄清楚为什么会出现错误。也许你可以参照解决方法（使用公钥）部分来导入密钥。

导入密钥后，你可以将其保存到文件中（此处提供其指纹来指定）：

    gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

该命令将密钥保存在路径为`./tor.keyring`的文件中，即当前目录。 如果运行这个命令后 `./tor.keyring`不存在，就说明出了问题，不能继续操作，直到你弄清楚为什么出现错误。

### 验证签名

为了验证下载的软件包签名，除了下载安装程序文件本身，还需要下载相应的“.asc”签名文件，并使用 GnuPG 命令来验证下载的文件。

以下示例假设已在“Downloads”文件中下载这两个文件。 请注意，这些命令使用示例文件名，而你的文件名将不同：你需要用你已下载的文件的确切名称替换示例文件名。

#### 对于 macOS 的用户：

    gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-macos-13.0.1.dmg.asc ~/Downloads/tor-browser-macos-13.0.1.dmg

命令的结果应该包含：

    gpgv: Good signature from "Tor Browser Developers (signing key) <torbrowser@torproject.org>"

如果错误消息含有“No such file or directory”，上述某个步骤出错，或者未更改命令中的示例文件名。

#### 解决方法（使用公钥）

如果你遇到了无法解决的问题，不妨下载并使用这个公钥来代替。或者，你还可以使用以下指令：

    curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 浏览器开发者密钥也可在 keys.openpgp.org 上找到，并可从 https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290 下载。 也可以通过运行以下命令获取密钥：

    gpg --keyserver keys.openpgp.org --search-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

另外，你可能想要了解更多 GnuPG 信息。

我们的下载页面上的每个文件都附有一个标有 “签名”的文件，其名称与软件包相同，扩展名为".asc"。这些 .asc 文件是它们的 OpenPGP 签名。 这些数字签名文件用于验证下载文件是否为我们希望你获取的文件。 这将由浏览器决定，但一般来说，你可以通过右键单击“签名”链接并选择“文件另存为”选项来下载该文件。

例如，`tor-browser-linux-x86_64-14.5.6.tar.xz` 文件附带了 `tor-browser-linux-x86_64-14.5.6.tar.xz.asc` 文件。 这些是示例文件名，与你下载的文件不会完全相同。

请注意，数字签名的日期指对程序包进行签名的时间。 因此，每次新文件上传时，将生产新的签名，并且日期不同。 只要你验证了签名，不必担心报告的日期可能有所不同。

### 安装 GnuPG

如果使用 GNU/Linux，那么系统大概已安装 GnuPG，因为大多数 Linux 发行版都预装了该软件。

为了验证签名，您需要在终端窗口中输入一些命令。具体操作方法因您使用的发行版而异。

### 提取 Tor 开发者密钥

Tor 浏览器团队已经为 Tor 浏览器发行版签名。 导入 Tor 浏览器开发者的签名密钥（0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290）：

    gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org

这将显示如下类似内容：

    gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <torbrowser@torproject.org>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
    uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>

注意：您的输出可能与上面的有所不同（例如到期日期），但您应该看到正确导入的密钥。

如果你收到了一个错误信息，就说明出了问题，你不能继续操作，直到你弄清楚为什么会出现错误。也许你可以参照解决方法（使用公钥）部分来导入密钥。

导入密钥后，你可以将其保存到文件中（此处提供其指纹来指定）：

    gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

该命令将密钥保存在路径为`./tor.keyring`的文件中，即当前目录。 如果运行这个命令后 `./tor.keyring`不存在，就说明出了问题，不能继续操作，直到你弄清楚为什么出现错误。

### 验证签名

为了验证下载的软件包签名，除了下载安装程序文件本身，还需要下载相应的“.asc”签名文件，并使用 GnuPG 命令来验证下载的文件。

以下示例假设已在“Downloads”文件中下载这两个文件。 请注意，这些命令使用示例文件名，而你的文件名将不同：你需要用你已下载的文件的确切名称替换示例文件名。

#### 对于 GNU/Linux 用户（如果您有 32 位软件包，请将 x86_64 更改为 i686）：

    gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz.asc ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz

命令的结果应该包含：

    gpgv: Good signature from "Tor Browser Developers (signing key) <torbrowser@torproject.org>"

如果错误消息含有“No such file or directory”，上述某个步骤出错，或者未更改命令中的示例文件名。

#### 刷新 PGP 密钥

运行以下的命令，可从密钥服务器上刷新本地密钥环中 Tor 浏览器开发者的签名密钥。同时将获取新的子密钥。

    gpg --refresh-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

#### 解决方法（使用公钥）

如果你遇到了无法解决的问题，不妨下载并使用这个公钥来代替。或者，你还可以使用以下指令：

    curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 浏览器开发者密钥也可在 keys.openpgp.org 上找到，并可从 https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290 下载。 也可以通过运行以下命令获取密钥：

    gpg --keyserver keys.openpgp.org --search-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

另外，你可能想要了解更多 GnuPG 信息。