Linux引导加载程序支持全盘加密吗?


28

是否有任何Linux引导加载程序支持全盘加密(如TrueCrypt)。我知道有人正在努力为GRUB2添加加密支持,但是这似乎还没有准备好。还有其他选择吗?

(请注意,我在这里实际上指的是全盘加密-包括/boot

大多数答案都描述了/boot未加密的设置,其中有些试图解释为什么未加密/boot应该可以。

在不讨论为什么我实际上需要加密/ boot的情况下,本文基于GRUB2的修改版本,准确地描述了我需要的内容:

问题在于,当前的GRUB2代码库显然不支持这些修改(或者我可能忽略了某些内容)。


是的,这里有一个很棒的方法:wiki.archlinux.org/index.php/…–
ebal

Answers:


20

我认为当前版本的GRUB2本身不支持加载和解密LUKS分区(它包含一些密码,但我认为它们仅用于其密码支持)。我无法检查实验性的开发分支,但是GRUB页面中有一些提示,表明计划进行一些工作来实现您想做的事情。

更新(2015):最新版本的GRUB2(2.00)已包含访问LUKS和GELI加密分区的代码。(OP提供的xercestch.com链接提到了该补丁的第一个补丁,但现在已集成到最新版本中)。

但是,如果出于安全原因试图加密整个磁盘,请注意,未加密的引导加载程序(如TrueCrypt,BitLocker或修改后的GRUB)提供的保护不超过未加密的/boot分区(JV在上面的评论中指出)。 。任何具有物理访问权限的计算机都可以轻松地将其替换为自定义版本。您所链接的xercestech.com上的文章甚至提到了这一点:

需要明确的是,这丝毫不会降低您的系统受到脱机攻击的能力,如果攻击者用自己的引导加载程序替换引导加载程序,或将引导过程重定向为引导自己的代码,则系统仍然可能受到威胁。

请注意,所有基于软件的全磁盘加密产品都具有此弱点,无论它们使用未加密的引导加载程序还是未加密的引导/预引导分区。即使是支持TPM(受信任的平台模块)芯片的产品(如BitLocker)也可以扎根,而无需修改硬件。

更好的方法是:

  1. 在BIOS级别(在带有或不带有TPM芯片的主板或磁盘适配器或外部硬件[智能卡]中)解密,或
  2. /boot在可移动设备(例如智能卡或USB记忆棒)中携带PBA(预引导授权)代码(在这种情况下为分区)。

要以第二种方式进行操作,可以在以下位置检查Linux Full Disk Encryption(LFDE)项目:http ://lfde.org/,该项目提供了安装后脚本,可将/boot分区移动到外部USB驱动器,并使用GPG并将其存储在USB中。这样,引导路径中较弱的部分(非加密/boot分区)将始终存在(您将是唯一可以物理访问解密代码和密钥的人)。(注意:这个站点已经丢失,作者的博客也消失了,但是您可以在https://github.com/mv-code/lfde上找到旧文件,只需注意最近的开发是6年前完成的)。作为更简便的选择,您可以在安装OS时将未加密的启动分区安装在USB记忆棒中。

问候,MV


1
在BIOS级别解密确实是一个非常好的解决方案(我认为这是一个选择)...

1
我不知道任何有效的实现方式,但是EFI / UEFI可以选择包括自定义EFI引导管理器以替换常见的引导加载程序,也许可以添加解密层来解密数据(当然,那么您将需要EFI平台)。或者,可以修改与CoreBoot相关的某些项目(ADLO,SeaBIOS,OpenBIOS等)来完成该任务。只是想法。

4
仅添加有关使用非加密/ boot分区的缺点的更多信息(但它也适用于非加密的引导加载程序):twopointfouristan.wordpress.com/2011/04/17/… (如何修改引导)在10分钟内的物理访问,分区检索安装密码加在加密的分区中的任何其他文件)

1
@MV:谢谢。我可能会自己进行测试,并在此处添加答案,并提供更详细的步骤以/boot在GRUB2中使用加密分区。
2015年

1
@에이바:不,这是相关的(将LUKS与TPM一起使用),但与以前在lfde.org(现在是一家航空俱乐部的网站)上托管的项目不同。
MV。

4

使您的初始RAMdisk和/ boot文件夹不使用加密。

这将启动一个“最小”内核,并带有驱动程序和支持,以切换到加密的“实际”根文件系统。

在声称“这是黑客”之前,请记住-默认情况下,今天大多数(如果不是全部)Linux发行版都以这种方式启动。这明确允许您的系统使用需要从文件系统加载的模块来引导和加载根FS。(鸡和鸡蛋问题的排序)。例如,如果您的根文件系统位于硬件RAID卷上,并且您需要先加载其驱动程序,然后才能安装根FS。


3

我查看了您发布的链接-尽管没有启动分区,但硬盘上仍然存在未加密的启动加载程序,可以使用邪恶的女仆攻击来访问和破坏启动加载程序。我一直在研究类似的设置,其中硬盘上没有未加密的数据,但到目前为止,我只想从可移动驱动器上运行引导加载程序。


是的,仍然存在未加密的引导加载程序。这对我来说是可以接受的。

邪恶的女仆可以感染引导加载程序,以执行伪造的密码提示来欺骗您,然后仅加载未加密的木马内核。如果不对启动加载程序进行加密,则对内核进行加密的收益很小。
Skaperen 2012年

1

我相信大多数人都这样做,您首先需要的是有关如何安装具有加密HD的操作系统的说明。

Ubuntu上有一个漂亮的页面,其中包含有关制作加密分区,LMVP,文件夹等的说明,只需在Google的发行版中进行搜索即可...


2
大多数Linux发行版,包括Ubuntu,都包含对分区加密的某种支持,但是它们要求/ boot未被加密。我正在寻找的是可以处理完全加密磁盘的引导加载程序。

1
引导加载程序的至少一部分需要进行加密,否则CPU无法运行它。使/ boot保持未加密状态是否有任何特殊问题?

2
引导加载程序和/ boot是不同的东西。我正在寻找一个引导加载程序,而不是可以引导完全加密的磁盘的引导程序。TrueCrypt可以在Windows上执行此操作,但不适用于Linux。

区别在于Windows引导加载程序本身包含在mbr中,而在linux上,mbr仅链接到必需的/ boot文件。
合资公司

1
“预引导身份验证由TrueCrypt引导加载程序处理,它位于引导驱动器的第一磁道中”-又名,在Windows上它会创建一个mini / boot。同样,grub本身包含在/ boot中,mbr只有512字节,不足以存储解密算法。无论如何,硬盘的一部分必须未加密提供。您也许可以从完全不同的引导加载程序上的加密分区上启动grub,但这将需要一些严重混乱的代码...
合资公司

0

不,我认为没有。

您真的需要加密/ boot吗?我怀疑不是。其余的文件系统可以通过/ boot中的initramfs上的普通Linux软件进行加密,并相应地提示用户。


2
是的,我需要加密/ boot。除引导加载程序本身外,所有内容都必须加密。

请解释为什么您认为没有引导加载程序支持全盘加密。
this.josh 2011年

@Grodriguez:如果你考虑的/ boot是引导加载程序的一部分,那么一切都进行加密-在运行时使用的所有可执行文件,所有用户数据等
MarkR

2
如对另一个答案的评论中所述:我知道必须始终存在未加密的“东西”-我只需要这个“东西”作为引导加载程序(MBR +引导扇区),而不是/ boot分区。

0

您似乎在要求做一些不可能做的事情,并将其与Windows解决方案进行比较,该解决方案对您隐藏了实现,但实际上,Linux在做同样的事情。

我能想到的最接近的解决方案是使用实现安全密码和加密的硬盘驱动器。一些Thinkpad笔记本电脑使用这些硬件解决方案。


2
抱歉,但是我不明白为什么这应该是“不可能的”。我链接到我的问题中的文章证明了可以做到的。概念证明是使用GRUB 2的修改版实现的。我知道必须始终存在未加密的“东西”,我只需要这个“东西”作为引导加载程序(MBR +引导扇区)即可。 / boot分区。

@Grodriguez:您的要求没有道理。在另一个操作系统中使用虚拟机时,是否满足您的要求?如果是这样,则引导操作系统1,解密驱动器并启动VM。
Zan Lynx 2010年

2
您是否真的尝试过阅读我链接的文章?您不理解该要求的事实并不意味着“没有任何意义”。我有正当的理由(我不想讨论)。

该条在第3款中明确指出,它并不能改善这种情况。因此,对我来说,继续学习它的其余部分是没有意义的,后者集中在如何设置它,而不是它如何工作上。想一想,这将告诉您我已经用自己的内核(或当邪恶的女仆)替换了您的内核或整个/ boot。
Skaperen 2012年

0

文章暗示了答案。“现在可以通过对下一代GRUB2引导程序的扩展进行扩展,不仅对其进行了修补以支持”,而且“我们希望以后再安装启用了luks的新grub2映像”和“现在我们编译启用LUKS的GRUB2源代码。 ” 似乎您需要获取一个补丁或扩展,并将其包含在GRUB2或分支的GRUB2源中。


0

Grub2 2.02〜beta3版可以做很多Grub2 2.02〜beta2版做不到的事情,由我测试:

  1. 使用Super Grub 2磁盘启动
  2. 键入“ c”键转到命令行
  3. 输入命令以挂载我想要的加密分区
    • 淫荡的卢克斯
    • cryptomount(hd0,#)//其中#代表加密分区
  4. 输入密码短语,然后再输入一些命令
    • 多重启动(crypto0)/grub/i386-pc/core.img
    • 开机

这将加载加密分区内的另一个Grub2,这里没有疯狂的攻击...我正在从CD(只读介质)启动,然后装入加密分区(没有密码短语,任何人都敢于注入任何东西!),然后从加密分区内部启动,并使用自己的菜单加载Grub2等。

注意:此类Grub 2.02〜beta3引导程序(我使用Super Grub 2 cd)可以位于USB记忆棒,USB HDD等上。

警告:Grub2版本2.02〜beta2不能执行相同的操作,因为它具有一些与命令cryptomount相关的BUG(似乎已在Grub2版本2.02〜beta3上修复了)。

我谈论的beta2错误是:

  1. 它并没有真正挂载加密分区,因此它不允许您访问(crypto0)/ *
  2. 如果加密分区不止一个,则cryptomount -a仅使用要求一个密码
  3. 在运行cryptomount一次之后,再次运行就没有任何作用

在Beta 3上:

  1. 它确实挂载了加密的分区,并且如果同时挂载了多个,则可以通过(crypto0)/ *或(crypto1)/ *等访问文件
  2. 它要求每个密码短语(每个加密分区一个)
  3. 它允许您根据需要运行它多次,可以安装一个,然后再安装另一个,等等。

旁注:除了重新引导或引导另一个或相同的grub2 /其他引导程序等之外,我不知道如何卸载它们。

希望这有助于澄清问题,并希望将Grub2版本2.02〜beta3集成到LiveCD上,这样我们就可以安装它而无需自己编译。

PD:使用Super Grub 2磁盘,我看不到将Grub2版本2.02〜beta3安装到MBR / boot分区等的任何方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.