数字签名是一个确保某个包由其开发人员生成并且未被篡改的过程。 下面我们解释为什么它很重要,以及如何验证您下载的 Tor 程序是我们创建的,并且未被某些攻击者修改过的程序。

我们下载页面上的每个文件都附带一个与包名称相同的文件和扩展名“.asc”。这些.asc文件就是GPG签名。 它们允许你验证你下载的文件正是我们希望你获取的文件。 例如,torbrowser-install-8.0.8_en-US.exe会附带torbrowser-install-8.0.8_en-US.exe.asc。 关于是哪个开发人员签署哪个软件包的列表,请参阅我们的签名密钥页

我们现在展示如何在不同的操作系统上验证下载文件的数字签名。 请注意数字签名是标注该包被签名的时间。 因此,每个新文件上传时,都会生成具有不同日期的新签名。 只要您验证了签名,就不必担心报告的日期可能有所不同。

Windows

首先你需要安装GnuPG才能验证签名。 从https://gpg4win.org/download.html下载它。

一旦安装,使用 GnuPG 来导入你的包的数字签名密钥。 为了验证签名你需要输入一些命令到 Windows 命令行。即 cmd.exe。

Tor 浏览器团队为 Tor 浏览器发行版签名。 要导入它的数字签名密钥(0x4E2C6E8793298290),需要启动cmd.exe并输入命令:

gpg.exe --keyserver pool.sks-keyservers.net --recv-keys 0x4E2C6E8793298290

在导入完密钥后,你就能验证指纹是正确的

gpg.exe --fingerprint 0x4E2C6E8793298290

你将看到:

pub   rsa4096/0x4E2C6E8793298290 2014-12-15 [C] [expires: 2020-08-24]
      Key fingerprint = EF6E 286D DA85 EA2A 4BA7  DE68 4E2C 6E87 9329 8290
uid                   [ unknown] Tor 浏览器Developers (signing key) <torbrowser&at;torproject.org>
sub   rsa4096/0xEB774491D9FF06E2 2018-05-26 [S] [expires: 2020-09-12]
      密钥的指纹为 1107 75B5 D101 FB36 BC6C  911B EB77 4491 D9FF 06E2

为了验证你下载的包的签名,你还需要下载“.asc”文件。 假设你已经下载了包和它的签名到你的桌面,运行:

gpg.exe --verify C:\\Users\\Alice\\Desktop\\torbrowser-install-win64-8.0.8_en-US.exe.asc C:\\Users\\Alice\\Desktop\\torbrowser-install-8.0.8_en-US.exe

请把“Alice”替换为您自己的用户名。

输出会显示“Good signature”:

gpg: Signature made Tue 12 Feb 2019 08:27:41 AM EST
gpg:                using RSA key EB774491D9FF06E2
gpg: Good signature from "Tor 浏览器Developers (signing key) <torbrowser@torproject.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7  DE68 4E2C 6E87 9329 8290
     Subkey fingerprint: 1107 75B5 D101 FB36 BC6C  911B EB77 4491 D9FF 06E2

当前有效的 subkey fingerprint 是:

1107 75B5 D101 FB36 BC6C  911B EB77 4491 D9FF 06E2

注意这里包含警告,因为你还没有给这个人分配一个可信的索引。 这意味着 GnuPG 验证了密钥确实用在了这个签名中,但由您来决定该密钥是否真的属于开发人员。 最好的方式是去见开发者本人然后交换密钥指纹。

macOS and Linux

你需要安装 GnuPG 才能验证签名。 If you are using macOS, you can install it from https://www.gpgtools.org/. 如果你使用 Linux,那么可能在你的系统中已经安装了 GnuPG,因为大多数 Linux 发行版都预装了它。

下一步是使用 GnuPG 导入签名包的密钥。 Tor 浏览器团队为 Tor 浏览器发行版签名。 Import its key (0x4E2C6E8793298290) by starting the terminal (under "Applications" in macOS) and typing:

gpg --keyserver pool.sks-keyservers.net --recv-keys 0x4E2C6E8793298290

在导入完密钥后,你就能验证指纹是正确的

gpg --fingerprint 0x4E2C6E8793298290

你将看到:

pub   rsa4096/0x4E2C6E8793298290 2014-12-15 [C] [expires: 2020-08-24]
      Key fingerprint = EF6E 286D DA85 EA2A 4BA7  DE68 4E2C 6E87 9329 8290
uid                   [ unknown] Tor 浏览器Developers (signing key) <torbrowser&at;torproject.org>
sub   rsa4096/0xEB774491D9FF06E2 2018-05-26 [S] [expires: 2020-09-12]
      密钥的指纹为 1107 75B5 D101 FB36 BC6C  911B EB77 4491 D9FF 06E2

为了验证你下载的包的签名,你还需要下载“.asc”文件。 假设你已经下载了这个包和它的签名到了你的下载文件夹,运行:

For macOS users:

gpg --verify ~/Downloads/TorBrowser-8.0.8-osx64_en-US.dmg{.asc,}

对于 Linux 用户(把64 改成 32 如果你在用32位的包):

gpg --verify tor-browser-linux64-8.0.8_en-US.tar.xz{.asc,}

输出会显示“Good signature”:

gpg: Signature made Wed 15 Nov 2017 05:52:38 PM CET
gpg:                using RSA key 0xD1483FA6C3C07136
gpg: Good signature from "Tor Browser Developers (signing key) <torbrowser&at;torproject.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7  DE68 4E2C 6E87 9329 8290
     Subkey fingerprint: A430 0A6B C93C 0877 A445  1486 D148 3FA6 C3C0 7136

当前有效的 subkey fingerprint 是:

1107 75B5 D101 FB36 BC6C  911B EB77 4491 D9FF 06E2

注意这里包含警告,因为你还没有给这个人分配一个可信的索引。 这意味着 GnuPG 验证了密钥确实用在了这个签名中,但由您来决定该密钥是否真的属于开发人员。 最好的方式是去见开发者本人然后交换密钥指纹。

查看 https://www.gnupg.org/documentation/ 以了解关于 GnuPG 的更多内容。