Tails 之上:安装
几周前的专栏中,我开始了一个系列,旨在帮助大家提高在互联网上的隐私和安全。本系列的第一篇专栏是我几年前写的 Tor 专栏的更新版本。虽然新专栏讨论了如何使用 Tor 浏览器捆绑包启动并运行 Tor,但在我的原始 Tor 专栏中,我讨论了如何通过使用 Knoppix Live CD 并在其上实时安装 Tor 来更匿名地浏览。这样,当您完成会话后,您只需重启并移除 Knoppix 光盘,主机就会恢复正常,不留任何痕迹。虽然 Tor 浏览器捆绑包非常有用,但它并没有涵盖您想在不属于您的计算机上使用 Tor 的情况,更不用说在不留下任何痕迹的情况下使用 Tor 了。
现在,有一个比 Knoppix Live CD 更好的选择——一个名为 Tails 的 Live DVD/USB 发行版,它提供的功能远不止是一个安装了 Tor 的 Live CD。可以把它想象成 Tor 浏览器捆绑包的 Live DVD 版本,只不过是针对整个操作系统。使用 Tails,您可以从 DVD 或 USB 启动到一个 Live 环境,该环境设置了极其安全的默认值。Tails 竭尽全力为您提供一个安全、匿名的环境。其中,Tor 会在您启动桌面后自动启动并连接,并且所有通信都通过 Tor 路由。默认情况下,您在桌面会话中所做的一切都不会持久化——一切不仅会在您重启时被擦除,Tails 实际上更进一步,尝试在重启前擦除 RAM 的内容。Tails 包含一个 Web 浏览器,其配置与 Tor 浏览器捆绑包非常相似,其中已经安装了许多增强隐私的插件和设置。除此之外,它还包括一个密码管理器 (Keepassx)、GPG 加密软件、一个电子邮件程序 (Claws)、LUKS 磁盘加密软件、通过 Pidgin 进行安全聊天(已安装 OTR (Off the Record) 插件),甚至还包括一个屏幕键盘,如果您担心主机上可能安装了键盘记录器,您可以使用它来输入密码。
在接下来的几篇专栏中,我将讨论如何获取和验证 Tails 发行版并安装它。我将跟进 Tails 可以和不能做哪些事情来保护您的隐私,以及如何以最大限度降低风险的方式使用 Tails。然后,我将以 Tails 的一些更高级功能结束,包括持久卷的使用(使用此功能,根据您的需要,您甚至可以将 Tails 用作您的主要 Linux 发行版)。
获取 Tails如果您信任的某人已经拥有 Tails,则安装很容易。让他们复制他们的 DVD,或者在 USB 安装的情况下,让他们将计算机启动到 Tails,插入您的 USB 磁盘,然后单击“应用程序”→“Tails”→“Tails 安装程序”。最后,在出现的 GUI 窗口中单击“克隆 & 安装”,Tails 将擦除您 USB 磁盘上的任何数据并将自身克隆到那里。
如果您不认识已经拥有 Tails 的人,则安装 Tails 比安装普通的 Live DVD 稍微复杂一些。这是因为,如果您真的想将 Tails 用于其预期目的——安全和匿名——您需要执行一些额外的步骤来确认您下载的 Tails 版本没有被篡改。
如果您阅读过我关于 Tor 浏览器捆绑包的专栏,这些步骤会看起来很熟悉。除了下载 ISO 镜像之外,您还需要下载一个加密签名,而不是下载 md5sum 来验证它。然后,您将使用该签名来验证 ISO 镜像是合法的未修改版本。最后,如果您刻录到 DVD,您将遵循您用于任何其他 DVD 镜像的相同程序,或者如果您想安装到 USB 磁盘,则需要执行几个额外的步骤。我将在下面详细介绍所有这些。
首先,让我们获取 Tails。Tails 的官方网站是 https://tails.boum.org。(它是 HTTPS,所以请务必检查您是否收到证书警告。)从主页上,您应该看到一个图像,您可以单击该图像将您带到最新版本 Tails 的下载页面(在撰写本文时,最新版本是 0.22)。在下载页面上,您应该看到两个主要选项:要么单独下载 ISO 镜像和相应的签名,要么使用 torrent 下载,这将一起拉取两个文件。ISO 几乎为 1GB,因此根据您的互联网连接,可能需要一些时间。一旦您同时拥有 .iso 文件和相应的 .sig 签名文件,您就可以继续验证镜像了。
验证 ISO 镜像通常,当您下载 ISO 或其他大型文件时,会有一个与之对应的 .md5 校验和文件。.md5 文件的目的是验证大型 ISO 文件在下载过程中是否损坏,以及您桌面上的文件是否与服务器上的文件匹配。对于像 Tails 这样的安全软件,不幸的是,这种验证是不够的。特别是,如果攻击者能够将自己置于您和 Tails 服务器之间(中间人或 MITM 攻击),攻击者可能会向您发送 Tails ISO 的修改版本,其中包含后门。如果他们可以做到这一点,他们也可以向您发送一个与他们的 ISO 匹配的 .md5 校验和文件。
为了应对这种威胁,Tails 没有使用 .md5 校验和,而是让您下载一个由 Tails 维护者的私钥创建的加密签名文件。就像您发行版软件包上的加密校验和一样,此签名文件只能由有权访问特定 GPG 私钥的人员创建。在 MITM 攻击场景中,如果攻击者试图向您发送 ISO 的修改版本,他们将无法向您发送 .sig 签名文件的修改版本,该版本在他们自己没有访问官方私钥的情况下能够匹配。
使用 sha256sum 验证签名由于 Tails 用户需要比普通用户更关心安全性,因此您需要执行额外的步骤来验证此签名。根据您的偏执程度,您可以通过几种方式来完成此操作。最简单的方法是尝试从位于不同位置(甚至在不同国家/地区,如果您可以做到的话;请参阅我在 2013 年 2 月刊中关于在另一个国家/地区托管 Raspberry Pi 的一种方法的 “Raspberry Strudel:我在奥地利的 Raspberry Pi” 文章)的多台计算机上下载签名文件。然后,确认所有校验和都匹配。这里的想法是,即使有人能够执行 MITM 攻击或以其他方式危害您的家用计算机或家庭互联网连接,也更难同时危害图书馆公共计算机的连接、您的朋友使用的所有计算机以及您在工作场所拥有的计算机。考虑到这一点,只需从尽可能多的不同位置下载尽可能多的签名文件副本,然后使用像 sha256sum(像 md5sum 一样,只是使用不同的算法)这样的工具来比较所有文件的校验和,以确保它们都相同
$ sha256sum tails-i386-0.22.iso.sig
4578929f419d7f4bc99b99ec17a6c0ff3936c5bb02938d3940bac2b93580383b
↪tails-i386-0.22.iso.sig
事实上,如果您下载的 Tails 版本与我在本文中提到的版本相同,您甚至可以使用此处发布的签名作为额外的比较点。
注意:如果您真的非常偏执,您还可以使用 GPG 进一步验证此签名是否是使用实际的 Tails 签名密钥创建的,方法是利用 Tails 维护者已让许多 Debian 维护者签署了签名密钥这一事实。此过程稍微复杂一些,但如果您想走这条路线,则在 https://tails.boum.org/doc/get/trusting_tails_signing_key/index.en.html#index3h1 中有详细的文档说明。
使用 GPG 验证 ISO验证签名后,您可以使用它来验证 ISO。首先,您需要从 https://tails.boum.org/tails-signing.key 下载用于此签名的签名密钥的公共部分。获得签名密钥后,将其导入到您的 GPG 密钥环中
$ cat tails-signing.key | gpg --keyid-format long --import
gpg: key 1202821CBE2CD9C1: public key "Tails developers
↪(signing key) <tails@boum.org>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
导入签名密钥后,您现在可以使用 GPG 验证 ISO 镜像
$ gpg --keyid-format long --verify tails-i386-0.22.iso.sig
↪tails-i386-0.22.iso
如果您已将签名密钥添加到您的密钥环,您将收到类似如下的回复
gpg: Signature made Mon 09 Dec 2013 02:50:48 PM PST
gpg: using RSA key 1202821CBE2CD9C1
gpg: Good signature from "Tails developers (signing key)
↪<tails@boum.org>"
gpg: aka "T(A)ILS developers (signing key)
↪<amnesia@boum.org>"
Primary key fingerprint: 0D24 B36A A9A2 A651 7878 7645
↪1202 821C BE2C D9C1
否则,您更有可能看到以下输出
gpg: Signature made Mon 09 Dec 2013 02:50:48 PM PST
gpg: using RSA key 1202821CBE2CD9C1
gpg: Good signature from "Tails developers (signing key)
↪<tails@boum.org>"
gpg: aka "T(A)ILS developers (signing key)
↪<amnesia@boum.org>"
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: 0D24 B36A A9A2 A651 7878 7645
↪1202 821C BE2C D9C1
任一输出都意味着签名匹配,并且您拥有合法的 ISO。第二个回复中的警告仅表示您尚未使用自己的密钥亲自签署 Tails 签名密钥,因此它不是您的信任网络的一部分。
以下回复是需要注意的。如果您看到此消息,则表示 ISO 不正确,要么下载不正确,要么被篡改且不可信任
gpg: Signature made Mon 09 Dec 2013 02:50:48 PM PST
gpg: using RSA key 1202821CBE2CD9C1
gpg: BAD signature from "Tails developers (signing key)
↪<tails@boum.org>"
将 Tails 安装到磁盘
我在本文开头已经提到了安装 Tails 的最简单和最安全的方法(通过其他人的安装)。此外,现在我假设如果您有 DVD 刻录机,您就知道如何从 ISO 文件刻录新 DVD。稍微棘手的情况是您需要从 ISO 创建 Tails USB 磁盘的情况,因为这需要一些特定的命令。此技术的一个警告是,如果您使用此方法,您将无法在此特定 USB Tails 安装上创建持久卷。相反,您将使用此过程来引导第一个 Tails USB 密钥,然后使用它通过 Tails 桌面中内置的官方安装程序将 Tails 安装到第二个 USB 磁盘。
第一步是修改 ISO,使其可以充当可启动 USB 镜像。为此,您需要 isohybrid 实用程序,它是 syslinux 软件包套件的一部分。在基于 Debian 的系统上,您可以运行 apt-get install syslinux
,而在其他发行版上,您的软件包可能也只是简单地称为 syslinux。
安装应用程序后,插入您的 USB 闪存盘并尝试识别它显示为哪个设备。正确获取设备非常重要,因为您要使用 Tails 安装覆盖设备,如果您选择了错误的设备名称,您最终可能会擦除错误的驱动器——可能包括您计算机上的主操作系统!如果您的设备上已经有一个分区,并且您的桌面环境自动挂载 USB 驱动器,您可以使用终端中的 df
实用程序来确认设备
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 146410652 25812772 120597880 18% /
udev 10240 0 10240 0% /dev
tmpfs 398856 728 398128 1% /run
/dev/mapper/sda2_crypt 146410652 25812772 120597880 18% /
tmpfs 5120 0 5120 0% /run/lock
tmpfs 797700 120 797580 1% /run/shm
/dev/sda1 188403 24916 153759 14% /boot
/dev/sdb1 7503668 148036 6974464 3% /media/data
该驱动器很可能是列表中最后一个出现的设备。在本例中,我的驱动器挂载在 /media/data,驱动器的名称是 /dev/sdb(/dev/sdb1 是该驱动器上的第一个分区)。请务必在继续之前卸载设备。如果您的桌面环境不自动挂载 USB 磁盘,或者您的驱动器上没有分区,您可能需要使用像 dmesg 这样的工具来查看它提到的最后一个磁盘设备
$ dmesg | grep sd
. . .
[291588.322874] sd 5:0:0:0: Attached scsi generic sg1 type 0
[291589.768931] sd 5:0:0:0: [sdb] 15248832 512-byte logical
↪blocks: (7.80 GB/7.27 GiB)
[291589.769424] sd 5:0:0:0: [sdb] Write Protect is off
[291589.769433] sd 5:0:0:0: [sdb] Mode Sense: 23 00 00 00
[291589.769910] sd 5:0:0:0: [sdb] No Caching mode page present
[291589.769920] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[291589.773642] sd 5:0:0:0: [sdb] No Caching mode page present
[291589.773646] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[291589.791319] sdb: sdb1
[291589.793656] sd 5:0:0:0: [sdb] No Caching mode page present
[291589.793662] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[291589.793666] sd 5:0:0:0: [sdb] Attached SCSI removable disk
[291590.178671] EXT3-fs (sdb1): using internal journal
[291590.178679] EXT3-fs (sdb1): mounted filesystem with ordered data
↪mode
同样,输出中提到的最后一个磁盘应与您插入的驱动器相对应。在本例中,我看到设备被分配为 sdb,内核检测到一个分区:sdb1。
现在我知道设备是 /dev/sdb,我可以使用 isohybrid
修改 Tails ISO,然后使用 dd
实用程序将其写入磁盘。我喜欢先复制一份我下载并验证的 ISO,然后在副本上使用 isohybrid
,而不是修改我下载并验证的 ISO
$ cp tails-i386-0.22.iso tails-i386-0.22-isohybrid.iso
$ isohybrid tails-i386-0.22-isohybrid.iso --entry 4 --type 0x1c
$ sudo dd if=tails-i386-0.22-isohybrid.iso of=YOURDEVICE bs=1M
请注意,在 dd
命令中,您需要将 YOURDEVICE
替换为您的实际 USB 磁盘,例如 /dev/sdb。我没有在那里放置实际的设备名称,以防有人不小心将上述行复制并粘贴到终端并按下 Enter 键而没有仔细阅读命令。dd
命令可能需要一些时间才能完成,但前提是您没有看到任何错误消息,镜像应该已正确复制。现在您需要做的就是重启进入 Tails,如果您确实想利用持久磁盘(我将在以后的专栏中介绍),您将需要使用 Tails 内的 Tails 安装程序克隆并安装到第二个 USB 磁盘。
如何使用 Tails 及其包含的所有软件是一个足够大的话题,我将在我的下一篇专栏中介绍它。如果您迫不及待地想等到下个月并启动到环境中,只需单击“登录”即可。Tails 应该会自动连接到您的网络,一旦 Tor 网络设置完毕,它将启动一个安全的 Web 浏览器供您使用。我将在 下次 更多地谈论如何最好地使用 Tails。