是否可以在启动时不需要密码的磁盘加密?

sja*_*aak 7 ubuntu disk-encryption

是否可以加密启动盘而不要求用户在系统启动时输入密码?我在偏远地区有一些无头盒子,我不能保证它们会被安全地处理掉。

我想避免有人能够取出磁盘驱动器并将其连接到另一个设备并查看其上的内容,但同时系统必须能够(重新)启动而无需用户交互。

我对加密的经验很少,但我正在考虑将密钥存储在 UEFI 中的一些事情,但我无法找到任何关于这种事情是否可行的信息。

我使用的是 Ubuntu 18.04 LTS,但如果需要我可以升级。

Ste*_*itt 12

要将磁盘驱动器绑定到给定的主机,并允许在不需要手动输入密码的情况下对其进行解密,您通常需要将加密密钥存储或绑定到主机的 TPM(可信平台模块)或等效项。通过这样的设置,如果将磁盘从其主机中移除,则无法解密该磁盘。

如果网络受信任,另一种可能的解决方案是将加密密钥绑定到网络(严格来说,是网络上的某种密钥服务器)。通过这样的设置,如果磁盘的主机不在正确的网络上,则无法解密磁盘。

这两者都得到了Clevis 的支持。Clevis 可以使用 TPM2 或Tang进行密钥绑定,甚至可以使用 Shamir 秘密共享来组合多个密钥源。在这两种情况下,通过在过程中的某个时刻使用不可访问的密钥来确保机密性:无法从中提取存储在 TPM 中的密钥,也无法从中提取存储在网络其他地方的主机上的密钥。

存在其他工具,例如TPM-LUKS


gro*_*taj 6

将加密密钥存储在 USB 闪存驱动器上。

这不像 TPM 解决方案那么安全,因为密钥只是标准文件系统中的二进制文件,但如果您的目标是让驱动器与计算机的其余部分分开使用,那就足够了。

不幸的是,您不能使用第三列,/etc/crypttab因为闪存驱动器必须已经安装,而不能,因为您fstab位于加密分区上 - 造成了鸡和蛋的问题。但是您应该能够使用 keyscript(请参阅man crypttab)或initramfs hooks

请注意,无论您选择哪种方法,启动过程的第一阶段(内核 + initramfs)都必须保持未加密。这通常不是什么大问题,除非您使用超级机密的内核补丁(ekhm GPL ekhm ;) )或在 initramfs 中存储一些敏感的东西。所以不要将加密密钥直接存储在 keyscript 或 hooks 中,因为它们会嵌入到 initramfs 中。