带有 Heads 的防篡改启动
了解前沿的自由软件 Heads 项目如何检测 BIOS 和内核篡改,所有密钥都在您的掌控之下。
免责声明: 我为 Purism 工作,我使用 Heads 的经验始于支持 Purism 硬件。作为一名技术作家,我个人认为在技术出版物中将广告伪装成文章是不真诚的,并且本文绝非旨在为我的雇主做广告。然而,在撰写这篇深入的文章时,我发现如果不遗漏关于 Heads 的重要信息,就不可避免地会在某些地方提及 Purism——特别是,总体支持的硬件列表以及 Heads 的 HOTP 替代 TOTP 身份验证的解释,因为它需要特定的 Purism 硬件。
最早的计算机病毒之一攻击了引导扇区——硬盘驱动器开头的主引导记录 (Master Boot Record) 中的一段代码,它允许您启动进入操作系统。 这样做的原因与隐蔽性和持久性有关。 文件系统本身的病毒会在用户重新安装操作系统时被擦除,但是如果他们没有在重新安装过程中擦除引导扇区,则引导扇区病毒可能会残留下来并重新感染操作系统。
杀毒软件供应商最终增加了扫描引导扇区以查找已知病毒的功能,所以问题就解决了吗? 不幸的是,随着计算机、操作系统和 BIOS 变得越来越复杂,引导扇区攻击也变得越来越复杂。 现代攻击在操作系统启动之前接管,并感染操作系统本身,因此当您尝试通过操作系统搜索攻击时,操作系统会告诉您一切正常。
这并不是说现代不存在针对此类攻击的防御措施。 大多数现代方法都涉及专有软件,这些软件会锁定系统,使其只能启动由供应商(通常是 Microsoft、Apple、Google 或其批准的第三方供应商之一)签名的代码。 缺点除了这种防御措施的专有性质外,您还必须依赖供应商来认可您想要运行的任何代码,否则您必须完全禁用此安全功能(如果可以)。
幸运的是,存在另一种替代方案,它不仅是自由软件,而且还采用了一种完全不同的引导安全方法,即警报您注意篡改,而不是阻止不受信任的代码。 这种方法 Heads 不仅可以检测 BIOS 本身中的篡改,还可以检测 /boot 目录中所有重要的引导文件中的篡改,包括内核、initrd 甚至您的 grub 配置文件。 结果是一个可信的引导环境,密钥完全在您自己的控制之下。
在本文中,我将更详细地描述一些现有的引导安全方法,以及它们的一些局限性,然后我将描述 Heads 的工作原理,以及如何在您自己的系统上构建和安装它。
为什么引导安全至关重要要理解为什么拥有安全的引导过程如此重要,了解 Linux 系统上最常见的威胁之一非常有用:rootkit。 Rootkit 是一种软件,攻击者可以使用它来利用内核或系统上其他具有 root 权限的软件中的漏洞,从而将普通用户级别的访问权限提升为 root 级别的访问权限。 这种提升到 root 权限的能力非常重要,因为虽然在过去,所有网络服务都以 root 身份运行,但现在,服务器更经常以普通用户身份运行。 如果攻击者在网络服务中发现缺陷并利用它,使其能够在本地运行命令,他们将只能以相同的用户身份运行这些命令。 Rootkit 允许他们将这些本地用户权限转变为 root 权限,从而他们可以继续下一步,即在您的系统中安装后门,以便他们以后可以在不被发现的情况下返回。
虽然有时攻击者会安装一个后门,该后门只是始终在不显眼的端口上监听服务,但内核后门是首选,因为一旦他们利用了内核,他们就可以掩盖您的操作系统检测攻击的任何尝试。 毕竟,如果您想知道目录中有哪些文件,或者哪些进程正在运行,您必须询问内核。 如果您可以利用内核,您可以将您的恶意进程或文件隐藏起来,不被窥探。 许多 rootkit 还会自动设置内核后门,作为自动化攻击的一部分。
Rootkit 不仅是服务器上的威胁; 只是服务器始终可以在网络上访问,并且它们运行监听请求的软件。 虽然现代 Linux 桌面安装没有任何服务在网络上监听,但攻击者仍然有很多方法可以在本地以您的用户身份启动代码——通过 Web 浏览器是最常见的方式之一,电子邮件中的恶意文件附件是另一种方式。
rootkit 的全部意义在于让您难以从正在运行的操作系统中检测到它,但您仍然始终可以从基于 USB 的 Live OS 启动系统并检查硬盘驱动器。 或者,您可以完全重新安装操作系统并摆脱威胁。 然而,即使在这种情况下,您也依赖 BIOS 来引导您的基于 USB 的 Live OS。 您的 BIOS 是您的 CPU 启动时执行的第一段代码。 一旦加载,它会检测您系统上的硬件,对其进行初始化,然后让您从内部硬盘驱动器或外部 USB 或 DVD 介质启动。 如果攻击者能够修改您的 BIOS,从理论上讲,他们可以将他们的后门重新安装到它加载的任何内核中,并且即使重新安装操作系统或从 Live USB 磁盘检查它,仍然可以持续存在。
然后,BIOS 成为整个系统其余部分的信任根。 在您可以信任它之前,您无法完全信任在其后执行的其余代码。
接下来,我将描述一些当前的引导过程安全方法,所有这些方法都涉及仅执行预先批准的代码。
其他引导安全方法一旦您了解了现有方法的工作原理,就更容易理解 Heads 的工作原理以及它与现有方法的不同之处。 在现代系统上提供引导安全性的主要两种方法是 UEFI 安全启动和 Intel 可信启动。
UEFI 安全启动
在所有不同的引导过程安全方法中,UEFI 安全启动是最流行的,它几乎包含在您购买的每一台现代笔记本电脑和台式电脑中。 安全启动的工作方式是,UEFI 闪存芯片包含 Microsoft 及其批准的第三方供应商的证书。 与安全启动配合使用的 UEFI 引导固件包含由 Microsoft 或其批准的供应商的私钥创建的签名。 然后,安全启动会根据其证书检查该签名,如果签名匹配,则允许引导固件执行。 如果签名不匹配或丢失,安全启动将不允许其运行。
由于它最初是为 Windows 设计的,并且最初 Windows 是唯一使用它的操作系统,因此安全启动通常被认为是 Microsoft 独有的技术,并且 FOSS 社区中的许多人公开反对它,因为存在它可能被用来阻止系统加载 Linux 的风险。 确实,最初您只能将安全启动与 Windows 一起使用,但 Red Hat 和 Ubuntu 等 Linux 发行版供应商与 Microsoft 合作,获得了已签名的引导“shim”,这将允许他们加载 GRUB 并引导他们的操作系统。
当然,仍然有很多 Linux 发行版没有获得 Microsoft 签名的引导 shim 代码,包括 Debian。 这意味着,如果您想在具有安全启动的系统上安装 Debian,您首先必须进入您的 UEFI 设置并完全禁用安全启动,然后才能启动 USB 安装程序——也就是,如果您的 UEFI 软件允许您禁用安全启动。 现在,一些低成本计算机出厂时配备了精简的 UEFI 固件,这些固件仅允许非常低的配置级别,而在这些系统上,安全启动通常不再是可选的。
安全启动确实有一种机制,允许您用自己的证书替换现有的供应商证书,这可能是想要在不使用 Microsoft 签名的引导固件的系统上使用安全启动的 Linux 用户的选择。 然而,这个过程本身有些复杂,最终结果将启动您自己的自定义签名代码,但随后将阻止任何未使用您自己的签名签名的代码,例如典型的 USB OS 安装程序。 同样,这仅当您首先可以禁用安全启动以加载不受信任的操作系统并修改 UEFI,或者尝试从受信任的操作系统进行修改时才是一种选择。
Intel 可信启动
除了安全启动之外,现代 Intel 计算机还具有名为 Intel 可信启动的安全机制选项。 这种机制利用了系统上可信平台模块 (TPM) 芯片的特殊功能。 TPM 是某些主板上可用的独立芯片,可以通过生成自己的加密密钥并在独立于系统 CPU 的芯片上执行加密操作来充当其自身的硬件安全模块 (HSM)。 TPM 还包含平台配置寄存器 (PCR),其中可以包含执行代码的度量,形式为哈希链。 通常,不同的 PCR 用于存储引导过程不同阶段的度量。
Intel 可信启动的工作原理是将代码执行时的度量发送到 TPM,在 TPM 中对其进行哈希处理并存储在相应的 PCR 中。 随着新代码的执行,它也会被哈希处理并与 PCR 中先前代码的哈希组合在一起。 TPM 允许您在其内部密封密钥(磁盘解密密钥很常见),只有当 PCR 包含先前存储的值时,这些密钥才会解锁。 结合安全启动,Intel 可信启动允许您检测引导时可执行文件中的篡改。
安全启动的局限性安全启动是供应商在现代计算机上提供引导时安全性的主要方式,但它有很多局限性。 第一个也是最大的局限性也是它声称的最大功能——它要求引导代码必须由供应商控制的密钥签名。 这意味着,如果您确实想运行自定义引导代码,您必须与供应商合作,让他们签署您的二进制文件,否则就用您自己的证书替换他们所有的证书,并且仅运行您自己的代码。
另一个局限性是,虽然安全启动确保您正在运行已签名的代码,但它不能确保您正在运行与您之前运行的相同的引导代码。 能够访问供应商签名密钥之一的攻击者可以创建一个可以通过安全启动保护的引导时可执行文件。 如果 Microsoft(或其他供应商)签名密钥之一泄露或被迫与某个民族国家共享,现有计算机将会发生什么?
安全启动也是专有软件,因此您必须相信供应商所说,其中没有后门,并且您对可能签名的代码的可见性也较差。 此外,安全启动仅验证可执行文件。 它无法验证您的 initrd 文件或 GRUB 配置文件——这两者都是攻击者可能添加恶意更改的地方。 最终,安全启动的问题在于,它将您的计算机及其安全性的控制权从您手中转移到供应商手中。 如果您完全信任您的供应商,也许您可以接受这种权衡,但许多人更愿意完全控制自己的软件和硬件。
Heads 简介Heads 由 Trammell Hudson 创建,旨在通过用一个专注于检测篡改而不是阻止篡改的系统替换安全启动,来解决安全启动的一些信任问题和其他局限性。 Heads 的想法是在 BIOS 和引导代码中捕获一个稳定、受信任的状态,然后确保在每次后续启动时,BIOS 和引导代码都没有更改。 Heads 是在自由软件许可下编写的,因此它不仅可以被检查,而且还是可重复构建的,因此如果您获得了预构建的 Heads ROM,您也可以自己构建相同版本的 Heads 并获得相同的结果,从而证明代码在构建过程中没有被篡改。
Heads 从开源 coreboot BIOS(或者对于某些服务器平台,可以选择 LinuxBoot)内部加载,并且实际上是它自己的独立 Linux 内核和运行时环境,它执行篡改检查,然后在一切检查完毕后启动进入您的系统内核。 与安全启动不同,它使用完全在您控制之下的密钥检测篡改——您可以随时更改密钥。
硬件支持由于 Heads 依赖于 coreboot 或 LinuxBoot,因此其当前的硬件支持在某种程度上仅限于既支持 coreboot 或 LinuxBoot、又具有 TPM,并且有人定义了该板的配置(包括 coreboot 设置和其他选项)并将其提交给 Heads 的硬件。 目前,该列表非常小:联想 ThinkPad X220 和 X230、Purism Librem 笔记本电脑系列和少数服务器。
Heads 的工作原理从表面上看,Heads 的工作方式与 Intel 可信启动类似,因为它使用 TPM 来验证自身的度量,然后解锁密钥。 然而,相似之处到此为止,因为 Heads 以非常不同的方式处理引导安全性,因为其目的是提供篡改检测,而不是篡改防护。 Heads 会警报您注意篡改,但它仍然为您提供启动您想要的任何软件的能力。
您可以将默认的 Heads 启动过程分解为几个主要阶段
- coreboot BIOS 启动并加载 Heads 内核和 initrd。
- 随着代码的执行,度量被发送到 TPM 芯片。
- Heads 提供一个 TOTP/HOTP 代码,以向用户证明它没有被篡改。
- 用户选择一个引导选项。
- Heads 在加载操作系统之前检查 /boot 中的所有文件是否被篡改。
- 如果所有文件都检查通过,Heads 将启动操作系统。
Heads 使用两组不同的密钥来检测篡改。 首先,它使用存储在 TPM 中以及您的手机上的 TOTP 身份验证器应用程序或像 Librem Key 这样的特殊 USB 安全令牌上的共享密钥。 此共享密钥用于证明 BIOS 本身没有被篡改。 下一组密钥是您添加到 Heads ROM 中的 GPG 密钥环中的一组受信任的 GPG 公钥。 一旦您知道 BIOS 没有被篡改,您就可以相信它内部包含的 GPG 密钥环没有被修改以添加不受信任的密钥。 然后,Heads 使用该受信任的密钥环来验证 /boot 中所有文件的签名。 在这两种情况下,这些都是完全在您控制之下的密钥,您可以随时更改它们并重置签名。
接下来,让我们通过关注这两个密钥及其在引导过程各自部分中的使用方式,来更具体地了解 Heads 的工作原理。
引导安全和 TPMHeads 必须做的第一件事是向您证明它是可信的,并且没有被篡改。 挑战在于,如果它已经被篡改,它难道不能欺骗您并告诉您一切正常吗? 这就是 TPM 的用武之地。 当您首次设置 Heads 时,您会经历一个重置 TPM 并设置新管理员密码(称为取得所有权)的过程,然后 Heads 将生成一个随机密钥并将其与它将用于解锁该密钥的当前有效度量一起存储在 TPM 中(称为密封)。
一旦密钥被密封在 TPM 中,Heads 会将该密钥转换为 QR 码并在屏幕上显示,以便您可以使用手机扫描它以将其添加到您选择的 TOTP 身份验证器应用程序中(例如,FreeOTP 是一个适用于 Android 的自由软件选项)。 如果您在 Heads 中添加了 Librem Key 支持,您还可以将密钥的副本存储到 Purism 的 Librem Key USB 安全令牌上。
当 Heads 启动时,它会将它执行的代码的度量发送到 TPM。 如果 BIOS 已被篡改,这些度量将与以前的度量不匹配,并且 TPM 将不会解锁共享密钥。 在这种情况下,Heads 将在屏幕上输出错误,警报您注意问题。 如果度量确实匹配,TPM 将解锁共享密钥,将其发送到 Heads,并且 Heads 会将密钥与当前时间结合起来,将其转换为一个六位数的 TOTP 代码,并在屏幕上显示。 然后,您可以将该代码与您手机应用程序中的六位数 TOTP 代码进行比较,如果它们匹配,您就知道该密钥是有效的。 或者,如果您启用了 Librem Key 支持,您可以在启动时插入该设备,Heads 将生成一个六位数的 HOTP 代码并通过 USB 发送它。 如果它与 Librem Key 在自身上生成的代码匹配,Librem Key 将闪烁绿色; 否则,它将闪烁红色。

图 1. 默认 Heads 启动界面
因此,如果攻击者修改了 BIOS,TPM 将生成一个错误,但是如果攻击者随后使用来自被篡改 BIOS 的度量,用不同的密钥重置 TPM 怎么办? 这些度量将匹配,TPM 将解锁新密钥,但是该密钥将生成与您的手机或 Librem Key 将生成的六位数代码不同的代码,您将知道发生了可疑的事情。 由于 TPM 被设计为防篡改设备,因此您无法在不提供有效度量的情况下从中提取共享密钥。 如果您重置 TPM,该密钥也会被擦除。
引导安全和 GPG 密钥一旦您验证了 BIOS 是可信的,您就可以继续启动您的操作系统。 但是在 Heads 启动进入操作系统之前,它首先会检查 /boot 分区中的所有文件,以确保它们与您上次对所有文件进行签名时相比没有更改。 当您首次设置 Heads 时,您会将一个或多个公共 GPG 密钥添加到 Heads 运行时环境中的密钥环中。 Heads 提供了一种机制,不仅可以将 GPG 密钥添加到独立的 Heads coreboot ROM 文件中,还可以将它们添加到正在运行的 BIOS 中。 在这种情况下,Heads 实际上会拉取正在运行的 BIOS 的副本,动态修改它,然后重新刷新它。
一旦您在 Heads 密钥环中拥有一组受信任的 GPG 密钥,您就可以使用 Heads GUI 使用您对应的 GPG 私钥对 /boot 中的文件进行签名。 Heads 将创建一个包含 /boot 中所有文件的 sha256sum 的文件,然后使用您的 GPG 私钥对该文件进行签名,并将签名也存储在 /boot 中。 这将要求您拥有某种具有 OpenPGP 智能卡支持的 USB 安全令牌,并且当您签署这些文件时,Heads 会提示您插入您的 USB GPG 密钥。
当您告诉 Heads 启动进入您的操作系统时,它首先会被刷新到 BIOS 中,并且它可以读取您的 GRUB 配置文件,并根据该配置文件中的选项为您提供一个启动菜单。
此外,每当您更新或添加新内核、更改现有 initrd 文件或修改您的 GRUB 配置文件时,Heads 都会检测到更改,并在下次启动时向您显示错误。 除了该错误之外,还有一个选项可以重新签名 /boot 中的所有文件,以防您自己更改了这些文件。 当然,如果您不希望这些文件发生更改,那么这可能就是篡改的迹象!
构建和安装 HeadsHeads 是可重复构建的,这意味着它的设计目的是,如果多个人在不同的系统上在不同的时间使用相同的构建选项构建相同的特定 Heads 版本,他们应该获得完全相同的二进制文件。 由于 Heads 在特定的 BIOS 芯片上运行,因此它需要为该平台交叉编译内核和其他软件,这意味着除了构建完整的 Linux 内核和 coreboot 之外,您还需要在构建 Heads 时构建交叉编译器和支持工具。
您的本地系统还需要某些系统库,以便您可以构建 coreboot 和 Heads。 在基于 Debian 的系统上,您可以使用 apt 来安装它们
sudo apt install git build-essential bison flex m4 zlib1g-dev
↪gnat libpci-dev libusb-dev libusb-1.0-0-dev dmidecode
↪bsdiff python2.7 pv libelf-dev pkg-config cmake
对于其他系统,请使用您的软件包工具安装您平台上的等效软件包。 一旦安装完成,下一步是获取最新的 Heads 源代码并进入该构建目录的根目录
git clone https://github.com/osresearch/heads.git
cd heads/
下一步是拉取您的主板可能需要 coreboot 启动的任何二进制 blob。 转到 Heads 内的 blobs/ 目录,查看您的主板是否在该目录中表示。 如果是这样,cd
到它并阅读关于如何拉取您的 coreboot 二进制 blob 的说明。 例如,在 Librem 硬件上
cd blobs/librem_skl/
./get_blobs.sh
一旦您获得了您可能需要的任何 blob,请移回 Heads 构建目录的根目录。 从那里,您将看到一个 boards/ 目录,其中包含 Heads 支持的每个主板的目录。 这些主板中的每一个在其各自的目录中都有一个相应的配置文件,该文件设置了重要的选项,例如用于 /boot 和 USB 启动设备的哪个分区,启动时传递给操作系统的内核选项(如果有),以及要加载到其中的 init 脚本。 这些配置文件在很大程度上已经设置为与相应的主板一起工作,但是您应该查看您主板的配置文件,并特别确认 CONFIG_BOOT_DEV
和 CONFIG_USB_BOOT_DEV
变量分别指向正确的 /boot 和 USB 启动设备。
完成编辑配置文件后,就可以构建 Heads 了。 切换回 Heads 源代码的根目录,并在运行 make
命令时使用环境变量设置特定的主板。 因此,例如,要为 ThinkPad X230 构建,您将键入
make BOARD=x230
第一次构建 Heads 时,将需要很长时间! 请耐心等待它构建 GCC、coreboot、Linux 内核和许多其他软件。 后续构建将快得多。 如果构建在过程中的某个时刻失败,请记下它尝试构建的软件包,然后在 logs/ 目录中检查该软件的相应构建日志。 通常,如果您看到特定软件的构建失败,那是因为您的系统上缺少开发库。 查看日志文件应该会告诉您缺少哪些库。
一旦 Heads 完成构建过程,它会将相应的 coreboot ROM 映像转储到 boards/<boardname>/coreboot.rom 中,因此在上面的 X230 示例中,它将在 boards/x230/coreboot.rom 中。 现在您可以准备好通过刷新该 ROM 映像来安装 Heads 作为您的 BIOS。
刷新 Heads一旦您构建了您的 Heads coreboot ROM,下一步是将其刷新到您现有的 BIOS 之上。 您在计算机上刷新 Heads 的方式将因您拥有的特定主板而异,原因有很多。 首先,每台笔记本电脑都使用其自己的一组 flashrom 选项,这些选项特定于其板载的 BIOS 芯片,因此您需要参考适合您主板的 flashrom 选项。 查看 Heads 代码库中的 initrd/bin/flash.sh 脚本,以获得一个示例脚本,该脚本为受支持的主板提供 flashrom 选项。 请注意,此脚本旨在从 Heads 环境本身中使用相对较新版本的 flashrom(1.0 或更高版本)运行。 较旧的闪存芯片(如 ThinkPad 板上的芯片)应该与您应该能够通过当前 Linux 发行版上的软件包安装的较旧 flashrom 版本一起使用,但较新的板(如 Purism Librem 笔记本电脑上的板)将需要较新的 (1.0) flashrom 程序。 在后一种情况下,Purism 在此处提供了拉取和构建当前 flashrom 的说明。
刷新 Heads 因不同平台而异的另一个原因是,虽然如果已经安装了 coreboot,您可以从您自己的操作系统中使用 flashrom 更新 coreboot,但如果 coreboot 尚未安装,则某些笔记本电脑需要初始硬件刷新。 例如,除非您从特殊供应商处购买,否则联想 ThinkPad 笔记本电脑配备的是供应商提供的专有 BIOS,而不是 coreboot,因此它们需要初始硬件刷新以覆盖供应商 BIOS。 这种硬件刷新意味着打开笔记本电脑以露出 BIOS 芯片,将 Pomona 夹连接到它,该夹连接到支持 flashrom 的众多硬件平台之一,例如 Raspberry Pi 或 Beaglebone Black。 我在过去的 Hack and / 文章中介绍了这些步骤,包括如何备份现有 BIOS:“使用 Raspberry Pi 刷新 ROM”。

图 2. 使用 Raspberry Pi 硬件刷新 BIOS
如果您的硬件已经安装了 coreboot,您应该能够通过从本机操作系统中运行 flashrom,纯粹通过软件来安装 Heads。 例如,Purism Librem 笔记本电脑出厂时已安装 coreboot(并计划在不久的将来提供 Heads 作为预装选项),因此您可以使用常规操作系统中的 flashrom 来刷新 Heads BIOS,而无需打开机器。 在这种情况下,您将需要首先使用 -r
选项运行 flashrom,以便它拉取您现有 BIOS 的备份并将其存储在 USB 拇指驱动器上,以防您想恢复。
一旦您第一次刷新 Heads 并重新启动,Heads 将引导您完成初始设置。 首先,系统将提示您向 Heads 密钥环添加至少一个公共 GPG 密钥,这将要求您在以 .asc 结尾的某种 USB 拇指驱动器上拥有公钥。 Heads 将挂载 USB 驱动器并查找设备上所有可能的 .asc 文件,然后提示您要添加哪些文件。 添加密钥后,Heads 将重新刷新 BIOS 并重新启动。
一旦 Heads 使用已就位的 GPG 密钥重新启动,它将获得一个 TPM 错误,因为 TPM 尚未设置,因此它将引导您完成为您的 TPM 设置密码和创建初始 TOTP/HOTP 密钥的过程。 再次重新启动后,您最终应该看到默认的 Heads 启动菜单,该菜单允许您在默认启动选项(尚未配置)或打开高级选项菜单之间进行选择。
如果您选择默认启动但未设置默认启动选项,它将检测到该状态并引导您完成选择启动选项的过程。 在此时,它还应该检测到您尚未签名 /boot 中的任何文件,并且它还将引导您完成该过程(此时您将需要包含您的 GPG 私钥的 USB 安全令牌)。
一旦所有文件都已签名并且您的默认启动选项已设置,您应该能够像对待常规 GRUB 菜单一样对待 Heads——启动计算机,确认没有警报,然后只需按 Enter 键即可启动进入您的默认操作系统。 请注意,当您更新底层操作系统上的软件时,如果您的软件包更新更改或向 /boot 目录添加任何文件,您将在下次重新启动时收到警报,提示文件可能已被篡改。 如果您知道这是由您的软件包更新引起的,而不是恶意行为,您可以只使用您的私有 GPG 密钥重新签名 /boot 中的所有文件。
您可以完全在 Heads 菜单中应用对 Heads 的更新。 在高级选项菜单中,有一个子菜单允许您刷新 BIOS。 在此菜单中,您可以插入包含 *.rom 文件的 USB 驱动器,并让 Heads 将它们刷新到您当前的 Heads ROM 之上。 有两个主要的刷新选项:刷新 ROM 和刷新清理过的 ROM。 第一个选项是不言自明的,但在清理过的 ROM 的情况下,Heads 将刷新 BIOS,但它不会复制任何现有的 GPG 公钥或您可能对默认 ROM 之上的 Heads 所做的其他自定义更改。 如果您想恢复到纯粹的出厂状态(或刷新一些其他非 Heads BIOS),请使用此选项,否则请使用默认刷新选项将您的密钥环复制到更新的 Heads ROM。
结论虽然安装和使用 Heads 并不适合胆小的人,但如果您过去曾在系统上试验过 coreboot,那么它并没有那么复杂。 如果您想要最好的引导安全性,那么这种努力绝对是值得的,因为您最终将获得一个可以警报您注意 BIOS 和内核级篡改的系统,但密钥完全在您的控制之下。
资源