能够验证军事和其他应用中使用的系统的完整性以确保它们没有被修改或损坏至关重要。当然,最好防止系统被篡改。如果无法做到这一点,则检测篡改至关重要。在许多情况下,如果您不能确定系统未被修改,最好阻止系统运行。在所有情况下,保护系统上的信息,尤其是加密密钥等关键机密至关重要。
操作系统级别的各种工具有助于确保软件的完整性。其中包括存储加密、软件包的加密签名、文件的校验和以及用于检查系统的工具。但是,可以做些什么来确保底层系统没有受到损害 - 验证硬件,BIOS和其他固件以及引导加载程序?如果检测到问题,该怎么办?
让我们考虑一下使用硬件信任根可以做什么,以及 Linux 操作系统中的最新发展,这些开发提供了底层系统完整性的视图。
第一个因素是LUKS,这是Linux内置的强大而安全的存储加密功能。LUKS 对从磁盘驱动器到 USB 驱动器、SD 卡甚至网络存储的所有内容进行加密。LUKS 在卷级别加密,Linux 系统可以配置为单个卷或单个驱动器上的多个独立卷。这为配置和保护嵌入式系统上的信息提供了相当大的灵活性和功能。
LUKS 的用例之一是加密系统驱动器。完成此操作后,必须提供LUKS密码才能引导系统。对于笔记本电脑等系统,这通常通过输入密码来完成。网络绑定磁盘加密 (NBDE) 是一种新的 Linux 软件包,它使用网络服务或硬件信任根来提供 LUKS 密钥来引导系统。
NBDE 是一个灵活的加密框架,它使用各种引脚或加密引擎来加密和解密 LUKS 密钥等机密。NBDE 旨在扩展,目前支持两个引脚:网络唐服务器和 TPM 2.0 硬件信任根。可以开发其他引脚,例如系统集成商可能会实现支持 CAC 卡的 NBDE 引脚。(作为旁注,开源Linux社区欢迎提交NBDE的其他引脚。NBDE 还实施了允许组合多个引脚的策略。
带有 TPM2 的 NBDE 是没有安全网络连接的远程位置嵌入式系统的不错选择。这可确保仅当操作系统磁盘位于具有正确配置的 TPM2 模块的系统中并且已绑定到该 TPM2 模块时,系统才会启动。
下一个要考虑的元素是安全启动。这是在 UEFI 固件中实现的,并要求引导加载程序和操作系统使用已知且批准的软件密钥进行签名,然后才能允许系统引导。安全启动是确保操作系统有效的好工具。行业标准安全启动密钥通常安装在出厂时的 UEFI 固件中。这些键可以按原样使用,可以添加自定义键,也可以删除标准键,并且仅使用自定义键。
安全启动是一种有效的工具,应使用。但是,安全启动无法验证底层硬件、固件或安全启动本身是否正在运行。这就是 TPM2 和测量启动发挥作用的地方。测量的引导有时称为受信任的引导。
测量的引导在多个级别工作。TPM2 模块包含一组 24 个平台配置寄存器或 PCR。 软件(如 UEFI 固件)使用 SHA-256 等算法进行哈希处理,哈希存储在 PCR 中。但是,哈希不会直接写入 PCR。相反,哈希使用 TPM2 中的加密操作扩展到 PCR 中。多个测量可以组合成一个PCR。PCR中的最终值取决于每个文件的哈希值和文件的评估顺序。这个过程是确定性的,给定一组文件和一个测量顺序,你每次都会得到相同的结果。这些测量和扩展操作可以在 TPM 外部复制 - 您可以提前确定 PCR 中的最终值应该是多少。
测量启动按一系列操作更新 PCR:一个非常低级别的软件例程(本质上是硬件的一部分)测量 UEFI 固件和选项 rom,例如 NIC 和存储控制器。UEFI 固件测量主引导记录和引导加载程序。引导加载程序测量内核和相关文件。然后,其他工具(如 Linux 完整性测量体系结构 (IMA))可以测量系统的其余部分。测量可以包括文件和配置。其中 8 个 PCR 寄存器已预定义供系统使用,8 个寄存器可供应用定制使用。
TPM和PCR模型旨在使未经检测就无法修改PCR测量,并且在不检测的情况下很难干扰测量过程。
PCR测量可用于多种目的,包括系统完整性的本地和远程证明。它们还可用于 TPM 内部的密封操作。在 TPM 密封中,TPM 保护的机密进一步受到 TPM 策略的保护,该策略在解密机密之前根据批准的值检查 PCR 值。
举个具体的例子,使用 NBDE,您可以根据 PCR 0、2 和 7 密封 LUKS 密码。这将测量 UEFI BIOS (PCR0)、系统中其他设备上的固件 (PCR2) 和安全启动 (PCR7)。仅当 UEFI 固件未修改、其他设备固件未修改且仍启用安全启动时,才会提供 LUKS 密码。请注意,这些检查是在 TPM 内部完成的。这些测量可确保固件未损坏,并且未添加任何 rootkit。虽然不是绝对的保护,但它显着提高了系统的完整性。
在此示例中,无需接触 TPM 即可轻松更新操作系统和应用程序。固件仍然可以更新 - 这需要使用新值重新密封 TPM。
不应在仓库甚至工厂级维护之外更改的安全军事系统可以更严格地锁定,也许使用多个PCR和其他因素,例如连接到网络服务;传感器阵列必须通信才能有用,因此这可能是一种合理的方法。
可以使用此处描述的方法保护任何机密。加密密钥可以直接从 TPM2 加载到内存中,然后在不再需要时立即擦除;它们没有理由保留在磁盘上。并且可以通过发出TPM_reset命令立即擦除整个TPM。
审核编辑:郭婷
-
嵌入式
+关注
关注
5082文章
19123浏览量
305150 -
Linux
+关注
关注
87文章
11304浏览量
209476 -
操作系统
+关注
关注
37文章
6822浏览量
123331
发布评论请先 登录
相关推荐
评论