![如何在不需要未加密的启动分区的情况下使用加密磁盘](https://linux22.com/image/797637/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E9%9C%80%E8%A6%81%E6%9C%AA%E5%8A%A0%E5%AF%86%E7%9A%84%E5%90%AF%E5%8A%A8%E5%88%86%E5%8C%BA%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BD%BF%E7%94%A8%E5%8A%A0%E5%AF%86%E7%A3%81%E7%9B%98.png)
我想知道是否有一种方法可以加密 Linux 系统,而不需要小型未加密的 /boot 分区。
此外,我想知道是否可以在现有的未加密系统上实施加密,以便在用户使用系统时“即时”加密。这样就不需要重新安装操作系统。
目前,我针对 Linux 使用的解决方案是 luks。我通常会重新安装操作系统(备份和恢复需要保留的任何数据),创建一个小型 /boot 分区以从其启动,并且所有其他分区(包括交换分区)都已加密。我针对 redhat 使用 kickstart,针对基于 debian 的系统使用预置。无论是否加密,安装都是完全自动化的。
我知道从实际目的来看,这种加密方法是安全的,并且没有办法(除非密码确实保存在那里或类似的愚蠢方法)找到有关如何使用小型未加密 /boot 分区解密分区的信息,而不是使用未加密的交换分区,这可能会泄露数据以帮助解密分区。我研究这种解决方案的原因是更实际的。
我假设类似的东西需要从磁盘的引导块(mbr 或其他)启动,或者可能通过链式加载。它可能需要向引导加载程序添加一些功能,例如 grub,以提示输入密码并使用它打开分区以便读取它们。
我做了一些研究试图找到解决方案,但我还没有找到一个可行的解决方案,或者即使它可能有效,它也根本不实用(特别是在拥有 100 多个用户群的情况下)。
答案1
最后,您需要从明文存根启动系统。如果此存根在磁盘中不是明文的,下一个选项是在固件中;也许有一天所有 UEFI 主板都会支持全盘加密。
话虽如此,对于小型明文启动分区来说,重要的是不要有保密(因为它通常只包含公开的启动数据),但要有正直。您肯定不希望攻击者在您睡觉时窃取您的机器,将安装代码替换为恶意代码,在您输入密码时窃取您的密码,并将其存储在某个隐藏的磁盘区域。
这是安全启动正在解决的问题,理论上,只要启动固件允许您使用自定义密钥,您就可以在 Linux 上使用它。硬件组件(TPM)将确保(使用加密)如果明文分区被更改,系统将在启动时发出警告。
有一个基本的、不完整的、过时的程序Gentoo,大致了解一下可以做什么。