如何创建使用LUKS加密的Ubuntu Live USB?

我将创建一个可启动的Ubuntu USB闪存盘,并想知道是否可以使用LUKS加密这个USB闪存盘,这样在启动Linux之前,输入我的用户密码之前会要求输入解密整个闪存盘的密码。
  1. 启动USB
  2. 解密密码
  3. 用户密码
  4. 登录成功。
请注意,每次启动操作系统时,它必须被实时加载到内存中,我不想安装在外部USB驱动器上。 提前感谢!
附注:如果不可能的话,我能否将./boot保留为未加密状态,并将文件系统与所有系统目录一起加密?

我不认为这是可能的。首先,你需要使用USB启动,而这需要访问设备中的文件,但由于加密的原因无法访问。你可以做的是加密一个分区,然后在其中存放你的数据。 - schrodingerscatcuriosity
1我可以使用Luks加密整个数据,而不包括./boot文件夹吗?@guillermochamorro - Mohamed Farouk
@MohamedFarouk 是的,你可以这样做,安装过程与在内部驱动器上安装没有任何区别,只需选择USB作为目标即可。当然,你需要从其他USB启动安装程序。我认为对于更便携的实时系统或带有持久性的实时系统,你可能无法这样做。 - user880592
@Mohamed Farouk: 全盘加密请参考https://askubuntu.com/questions/590431/full-disk-encryption-home-folder-encryption-needed-wouldnt-full-disk-encrypt/1086016#1086016 注意,在进行操作之前,请先禁用内部硬盘。 - C.S.Cameron
@C.S.Cameron 我需要它是实时的,而不是已安装的。 - Mohamed Farouk
为什么需要对基本系统进行加密?我会创建两个分区:一个用于原样的基本系统,第二个用于个人文件。你可以在之后加密第二个分区。 - Rinzwind
@Rinzwind 我需要对文件系统本身进行加密,以避免任何人对操作系统进行篡改。如果我只加密个人文件而将系统保持未加密状态,那么一个能够物理接触到硬盘的攻击者可能会修改系统文件并安装键盘记录器。 - Mohamed Farouk
1我会停止这个尝试:加密并不是防止键盘记录器的解决方法。一旦你将USB插入到一个外部系统中,该系统就可以安装键盘记录器。它甚至可以在你毫不知情的情况下提取你USB上的所有文件。如果你不信任一个系统,就不要将USB插入其中。也不要在USB上存储信息。每次我从中国回来时,我的硬件都被毁了-这是唯一百分百有效的方法。加密只适用于防止小偷获取数据。它对于恶意设置的计算机盗窃没有帮助,而这正是你将USB插入其中的情况。 - Rinzwind
@Rinzwind 非常感谢你的帮助 :) 我明白你的观点。键盘记录器只是一个例子,但并不是唯一的原因。如果别人无法进入或在我的系统内安装任何东西,他们怎么能从我的加密驱动中窃取数据呢?对他们来说,这个驱动甚至都无法工作。即使我们假设存在硬件键盘记录,我并不是说我会将闪存驱动器插入一个我不信任的计算机,但如果有人偷走了这个驱动器,他们也无法访问它。 - Mohamed Farouk
@Rinzwind 这是一个可能的情景:我每天使用闪存驱动器在我信任的计算机上启动我的实时系统,有人偷走了这个驱动器30分钟,修改了文件系统,并将其放回我的计算机而我没有察觉到。现在当我启动系统时,我将使用被修改过的系统,甚至不知道发生了什么。这就是我想要防止的情况。我在这里想要了解的是“如何创建一个加密的实时系统来保护操作系统免受修改”。正如你最初建议的那样,我已经有一个加密分区来存储我的文件,但我也想保护文件系统。 - Mohamed Farouk
如果你从 ISO 文件将 Ubuntu 克隆到 USB 驱动器上,你将获得一个只读文件系统(ISO 9660)的仅限实时系统。在会话期间可能会被篡改,但重新启动后将恢复为原始系统。但这也意味着你无法保存任何在重启后仍然存在的文件。如果你想要比 Ubuntu 和其他主流 Linux 发行版提供更高的安全性,请考虑 Tails - sudodus
@sudodus谢谢您的回复。据我所知,只读状态适用于我将驱动器用作操作系统驱动器时。但是,如果驱动器插入到外部计算机中,仍然可以访问该驱动器并更改主文件系统。 - Mohamed Farouk
是的,但你应该注意到,如果它不再是相同的操作系统,而是另一个版本的话。已经建议使用在USB驱动器上安装的系统,并对该系统进行加密。 - sudodus
@sudodus 我怎么知道是否是完全相同的Linux版本,只是在操作系统文件中插入了几行恶意代码呢? - Mohamed Farouk
2但是,如果将驱动器插入外部计算机,仍然可以访问驱动器并修改主文件系统。加密不能防止这种情况发生。一旦解密USB,就可以进行更改。它被挂载到系统中,管理员可以对USB做任何操作。你还需要一个校验和来检查是否有人篡改了USB。编辑:哈,回答了您提问之前的问题;-) 校验和并不意味着文件无法从USB中提取。校验和只能显示是否添加或删除了内容。 - Rinzwind
根据Rinzwind的建议,使用校验和。 - sudodus
@Rinzwind ,校验和的想法听起来不错,但每次我想使用驱动器时都要进行校验和太耗时间了。而且我没有看到让闪存驱动器在启动存储在其中的live linux发行版之前自行进行校验和的机制。“一旦解密USB,它就可以被更改。它被挂载到系统中,管理员可以对USB做任何事情。”是的,我明白,但只有我能解密它。 - Mohamed Farouk
只要我的想法作为辅助驱动器插入到外部系统中,我就能实现我的目标。他们可以格式化它(这对我来说没问题),但是他们无法更改文件系统,因为他们没有解密的权限,也没有解密密钥。 - Mohamed Farouk
完整安装到USB可以进行全盘加密,只有引导分区保持未加密状态。 - C.S.Cameron
@C.S.Cameron 这不是我问题的答案,请仔细阅读我的问题。 - Mohamed Farouk
根据我的理解,无法在实时或持久性实时安装中加密系统分区。在18.04之前,仍然可以加密持久驱动器的主目录。将完整安装到USB上有许多好处。 - C.S.Cameron
@MohamedFarouk 你找到解决办法了吗?我也在研究这个问题,如果有任何有用的信息,我会非常感激。 - undefined
1个回答

这是不可能的,因为如果引导卷被加密,BIOS / UEFI将无法执行引导扇区/引导应用程序。
不过,您可以使用Ubuntu Live Installer将Ubuntu安装到另一个USB闪存驱动器上作为系统磁盘,并进行LUKS加密。缺点是您将失去休眠功能,因为Ubiquity当前创建的交换分区太小,并且在每次启动时随机生成加密密钥,这会破坏交换分区的状态。
在第二种情况下,引导分区将保持未加密状态,因此仍然可能被篡改,例如可以在其中编写键盘记录器。您可以通过对引导卷进行签名并使用安全引导来解决这个问题,但这样一来,您必须说服微软签署您的引导卷或提供给您签名密钥。祝您好运。
如果你真的担心键盘记录器,那就自己携带电脑,不要使用无线键盘/鼠标,启用安全引导,启动一个不保留任何状态的LiveCD映像,使用VPN通过SSL连接VNC/RDP客户端到实际保存状态的机器上,使用一个强大且易记的密码,不要在任何地方记录(参考https://xkcd.com/936/以了解其含义)。
这样可以保护你免受物理访问、远程访问和暴力破解的威胁。但由于你不会始终有网络访问权限,必须随身携带硬件,并且无法充分利用所携带硬件的额外内存/处理/存储能力,因为你只将其用作瘦客户端,这可能会不太方便。
即使采取了以上措施,也无法防止CCTV摄像头锁定你输入时的键盘,所以你还需要注意周围环境。
此外,这可能会导致你的移动数据费用大幅增加。
所以,除非你真的是一个非常特别肥胖、多汁的目标,很可能会被那些准备投入资源来黑掉你的人盯上,我认为你最好还是避免使用公共互联网终端,自己携带一个廉价设备,并用LUKS加密保护它,使用VPN或至少TOR浏览器来确保你的浏览不被监视。这样,你最大的担心应该是你是否将设备丢在某个地方被盗,而不是担心他们能否访问你的数据。