注意:这些指南是为了验证 Tor 源代码。
请按照正确的指示来验证 Tor 浏览器的签名。
数字签名用于确保某个程序包有其开发者生产并且没有被篡改。
下面我们解释为什么它很重要,以及如何验证你下载的 tor 源代码是我们创建的,没有被某些攻击者修改。
我们下载页面上的每个文件都附带两个文件,标签为“校验和”和“签名”,其名称与软件包相同,扩展名分别为“.sha256sum”和“.sha256sum.asc”。
.asc
文件将验证 .sha256sum 文件
(包含软件包的校验和)没有被篡改。一旦签名被验证有效(见下面的方法),软件包的完整性就可以用以下方法验证:
$ sha256sum -c *.sha256sum
这些文件用于验证你所下载的文件正是我们希望你得到的文件。
一般来说,你可以通过右击 “签名”和“校验和”链接并选择“另存为”选项来下载该文件,不过这可能因网络浏览器而异。
例如,tor-0.4.6.7.tar.gz
配有文件tor-0.4.6.7.tar.gz.sha256sum.asc
。
这些是示例文件名,并下载文件不会完全相同。
下面将解释如何在不同的操作系统上验证下载文件的数字签名。
请注意,数字签名的日期指对程序包进行签名的时间。
因此,每次新文件上传时,将生产新的签名,并且日期不同。
只要你验证了签名,不必担心报告的日期可能有所不同。
安装 GnuPG
首先,验证签名之前,你需要安装 GnuPG。
对于 Windows 的用户:
如果使用 Windows,请下载 Gpg4win 并运行安装包。
为了验证签名,你需要在 Windows 命令行(cmd.exe
)中输入一些命令。
对于 macOS 的用户:
如果使用 macOS,你可以安装 GPGTools。
为了验证签名,你需要在终端(位于“应用程序”下)中输入一些命令。
对于 GNU/Linux 的用户:
如果使用 GNU/Linux,那么系统大概已安装 GnuPG,因为大多数 Linux 发行版都预装了该软件。
为了验证签名,你需要在 windows 命令行中输入几个命令。
如何做到这一点,将取决于你的发行版。
提取 Tor 开发者密钥
下面的密钥可以对 tarball 签名。不要期望都有签名,这可能取决于谁来发布。
可通过上述链接获得密钥,或通过:
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]
这应该显示类似结果(对于 Nickm):
gpg: key FE43009C4607B1FB: public key "Nick Mathewson <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
pub rsa4096 2016-09-21 [C] [expires: 2025-10-04]
2133BC600AB133E1D826D173FE43009C4607B1FB
uid [ unknown] Nick Mathewson <[email protected]>
sub rsa4096 2016-09-23 [S] [expires: 2025-10-04]
sub rsa4096 2016-09-23 [E] [expires: 2025-10-04]
如果看到错误信息,那就是出了问题,你不能继续下去,直到你弄清楚为什么这不行。
也许可以使用 其他方法(使用公钥)部分来导入密钥。
导入密钥后,你可以将其保存到文件中(此处提供其指纹来指定):
$ gpg --output ./tor.keyring --export 0x2133BC600AB133E1D826D173FE43009C4607B1FB
该命令将密钥保存在路径为./tor.keyring
的文件中,即当前目录。
如果运行这个命令后 ./tor.keyring
不存在,就说明出了问题,不能继续操作,直到你弄清楚为什么出现错误。
验证签名
要验证你下载的软件包的签名,你需要下载相应的 .sha256sum.asc
签名文件和 .sha256sum
文件,并通过命令要求 GnuPG 验证你下载的文件来验证它。
以下示例假设已在“Downloads”文件中下载这两个文件。
请注意,这些命令使用示例文件名,而实际文件名是不同的:你下载的版本与 9.0 不同,并且没有选择英文(en-US)版本。
对于 Windows 的用户:
gpgv --keyring .\tor.keyring Downloads\tor-0.4.6.10.tar.gz.sha256sum.asc Downloads\tor-0.4.6.10.tar.gz.sha256sum
对于 macOS 的用户:
gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum
对于 BSD/Linux 用户:
gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum
该命令的结果应该产生这样的结果(取决于签名用的哪个密钥):
gpgv: Signature made Mon 16 Aug 2021 04:44:27 PM -03
gpgv: using RSA key 7A02B3521DC75C542BA015456AFEE6D49E92B601
gpgv: Good signature from "Nick Mathewson <[email protected]>"
如果错误消息含有“No such file or directory”,上述某个步骤出错,或者未更改命令中的示例文件名。
另外,你可能想要了解更多 GnuPG 信息。
验证校验和
现在我们验证了校验和的签名,接着需要验证软件包的完整性。
对于 Windows 的用户:
certUtil -hashfile tor-0.4.6.10.tar.gz.sha256sum SHA256
对于 macOS 的用户:
shasum -a 256 tor-0.4.6.10.tar.gz.sha256sum
对于 BSD/Linux 用户:
sha256sum -c tor-0.4.6.10.tar.gz.sha256sum