数字签名用于确保某个程序包有其开发者生产并且没有被篡改。
下面我们将解释为什么这十分重要,以及如何验证你所下载的 Tor 浏览器是由我们创建的,而不是被某些攻击者所修改过的。
我们的下载页面上的每个文件都附有一个标有 “签名”的文件,其名称与软件包相同,扩展名为".asc"。这些 .asc 文件是它们的 OpenPGP 签名。
这些数字签名文件用于验证下载文件是否为我们希望你获取的文件。
这将由浏览器决定,但一般来说,你可以通过右键单击“签名”链接并选择“文件另存为”选项来下载该文件。
例如,“torbrowser-install-win64-12.5_ALL.exe”对应的是“torbrowser-install-win64-12.5_ALL.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”文件中下载这两个文件。
请注意,这些命令使用示例文件名,而实际文件名是不同的:你下载的版本与 9.0 不同,并且没有选择英文(en-US)版本。
对于 Windows 的用户:
gpgv --keyring .\tor.keyring Downloads\torbrowser-install-win64-12.5_ALL.exe.asc Downloads\torbrowser-install-win64-12.5_ALL.exe
对于 macOS 的用户:
gpgv --keyring ./tor.keyring ~/Downloads/TorBrowser-12.5-macos_ALL.dmg.asc ~/Downloads/TorBrowser-12.5-macos_ALL.dmg.dmg
对于 GNU/Linux 的用户(如果使用 32-bit 软件包,请将 64 改为 32):
gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux64-12.5_ALL.tar.xz.asc ~/Downloads/tor-browser-linux64-12.0.7_ALL.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 信息。