数字签名用于确保某个程序包有其开发者生产并且没有被篡改。 下面我们将解释为什么这十分重要,以及如何验证你所下载的 Tor 浏览器是由我们创建的,而不是被某些攻击者所修改过的。

我们的下载页面上的每个文件都附有一个标有 “签名”的文件,其名称与软件包相同,扩展名为".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 的用户:

如果使用 Windows,请下载 Gpg4win 并运行安装包。

为了验证签名,你需要在 Windows 命令行(cmd.exe)中输入一些命令。

对于 macOS 的用户:

如果使用 macOS,你可以安装 GPGTools

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

对于 GNU/Linux 的用户:

如果使用 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
pub   rsa4096 2014-12-15 [C] [expires: 2025-07-21]
      EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>
sub   rsa4096 2018-05-26 [S] [expires: 2020-12-19]

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

导入密钥后,你可以将其保存到文件中(此处提供其指纹来指定):

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

对于 macOS 的用户:

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

对于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 下载。 如果正在使用 macOS 或 GNU/Linux,你也可以通过运行以下命令获取密钥:

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

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