Answers:
您正在寻找的内容-确认计算机上运行的操作系统是您信任的操作系统-被称为受信任的启动。(这是有时被称为“受信任的引导”的几件事之一)。您提出的方法无法实现此目标。
加密不提供数据完整性或真实性。换句话说,它不能阻止攻击者修改磁盘的内容并将其替换为恶意操作系统。可以轻松地对该恶意操作系统进行编程,以显示所需的已加载内核的校验和。
最简单的攻击途径是中间人,攻击者在某种虚拟机下运行您的正常操作系统。虚拟机层将您的输入传输到所需的操作系统,然后将输出传输回。但是它还会在侧面记录您的击键(mmmm,密码),从操作系统的内存中窥探私钥,等等。
为了避免这种形式的攻击,您需要具有信任的根源:您出于某种原因而信任的系统组件,而不是因为系统的某些其他组件如此表示的原因。换句话说,您必须从某个地方开始。从拥有的硬件开始是一个好的开始;您可以将操作系统保持在看不见的USB钥匙上,并仅将其插入对您有足够信心的硬件上(硬件可以有恶意软件!)。请注意,如果您愿意信任计算机,那么也可以信任计算机的硬盘。
有一种技术解决方案可以弥合信任小芯片与信任整个台式机或笔记本电脑之间的差距。一些PC具有TPM(受信任的平台模块),TPM可以(其中包括)验证只能引导已知的操作系统。Trusted Grub支持TPM,因此使用TPM加Trusted Grub,您可以确保所运行的内核是您批准的内核。
请注意,采用TPM可能对您有利或不利。这一切都取决于谁拥有钥匙。如果您拥有TPM的私钥,则可以精确控制计算机上运行的内容。如果只有制造商拥有私钥,则可以将通用平台转变为锁定的设备。
引导的内核驻留在内存中。您可以制作一个脚本来定位它,/dev/mem
并知道其大小,然后计算并验证其校验和。
您还可以对整个HD进行加密,而无需进行/boot
分区并且(几乎)无需修改内核。怎么样?我可以想到两种方式:
将您的内核放在CD上,计算机将通过该CD进行引导。这并不困难;有人几年前报告了使用这样的设置-请参阅该论坛主题中的第二个帖子。
如果您的主板受到coreboot的支持,并且有足够的空间容纳最小的内核,则您的BIOS芯片上可能具有启用加密的内核。(我没有机会进行测试,但是我看不出为什么这可能行不通。)
编辑:请注意,所有这些只是迈向“受信任”或“已验证”引导的唯一步骤(吉尔斯正确地指出了这一点)。完整的机制还应考虑引导加载程序阶段发生的情况以及如何识别底层硬件。看看Google Chromium OS如何做到这一点。