加密分区有多安全?

在安装Ubuntu 16.04时,我选择了加密文件系统,现在在启动Ubuntu之前会提示我输入密码。

我想知道这样是否能确保我的内容安全?具体来说:

  • 整个驱动器上的所有内容都加密了吗(包括我的数据)?

  • 这种加密有多强大?(我知道,这取决于时间、资源和我选择的密码,但我指的是实际意义上...任何人都可以撞开我的前门,但普通小偷没有足够的资源或意愿去闯入一座房子)。例如,如果我将笔记本电脑送修,或者如果我的笔记本电脑丢失或被盗,我需要担心没有真正紧迫理由尝试解密它的人轻松获取访问权限吗?(我知道类似的问题在这里已经提出过,但那是很久以前的事情了,也许情况已经改变了?)

  • 此外,加密是否会阻止我(a)将带有加密文件系统的固态硬盘安装到其他设备上,或者(b)使用Ubuntu的实时版本对驱动器进行完全备份,并在某个时候恢复该备份?

  • 另外,如果整个文件系统都已加密,在Ubuntu中加密我的个人文件夹还有价值吗?


关于我原帖的最新消息,经过实践,我找到了对最后两个问题的答案。首先,加密并没有阻止我将整个硬盘从我的系统中取出,并在另一台Linux机器上进行解密,尽管这是一个繁琐的过程。其次,如果其他用户在该系统上有账户,那么对自己的主文件夹进行加密也是有价值的,因为他们默认可以访问主文件夹(例如,请参考https://www.techrepublic.com/article/2-ways-to-better-secure-your-linux-home-directory/)。 - lithic
3个回答

  • 如果您选择通过LUKS加密新系统,则整个系统都将被加密。这包括您的系统文件、主文件夹(因此也包括您的数据)以及交换分区。这意味着您可以使用挂起到磁盘(即休眠)并仍然享受完全磁盘加密的所有好处。正如评论中指出的那样,Ubuntu默认使用挂起到RAM。要让Ubuntu改为使用挂起到磁盘,您需要按照help.ubuntu.com上的说明进行操作,但显然这只适用于有限数量的机器。
  • 256位AES加密在可预见的未来可能足够强大。正如在Cryptography Stack Exchange上讨论的那样,暴力破解AES-256将耗费约100万亿倍于世界GDP的成本,这几乎是不可能的事情。即使是暴力破解128位AES加密,也需要约千倍于世界GDP的成本。
  • LUKS密钥除了LUKS头部(存储在硬盘/固态硬盘上)和您的密码(存在您的脑海中)之外,没有任何其他锁定。这意味着您可以在任何其他机器上使用它,只要对于未加密的系统磁盘也是可能的,即对于常见系统应该可以无缝使用。至于(b),是的,您可以使用dd进行整个磁盘备份,但请注意这些镜像不会压缩到任何显著的程度。这是由于加密数据在没有密码的情况下与随机数据无法区分的性质所致。
  • 这只有学术上的好处,即在消耗第一个万亿倍世界GDP来破解您的完全磁盘加密之后,攻击者还需要另外一个万亿倍世界GDP才能进入您的加密主文件夹(假设使用不同的密码/密钥)。因此,它实际上将您的加密强度从256位增加到257位密钥长度。就个人而言,我甚至在完全磁盘加密的机器上使用自动登录,因为我认为磁盘加密足够安全,不需要在启动后再次输入密码。

1值得注意的是,默认情况下,Ubuntu 使用的是挂起到内存(suspend-to-ram),而不是挂起到磁盘(suspend-to-disk)。前者完全背离了全盘加密的目的。挂起到磁盘,也就是休眠(hibernate),必须根据 https://help.ubuntu.com/14.04/ubuntu-help/power-hibernate.html 中的说明进行特定的启用。 - Andrew Marshall
1这是一个好的回答,据我所知,但我有一个小修正:为了启动,磁盘上的某些东西必须保持未加密。对于Ubuntu安装来说,通常是引导加载程序(默认情况下为GRUB)和一个未加密的/boot分区,其中包含内核、匹配的initrd文件、GRUB配置和支持文件以及一些其他杂项。这些文件不是敏感的(除了配置文件,它们都是Ubuntu的标准组成部分),所以它们并不是主要关注的对象;但它们会识别计算机正在运行Ubuntu系统。 - Rod Smith
@RodSmith 是的,但是在语言上(而不是技术术语上)驱动器和卷有区别吗?我经常混用它们,尽管我知道应该分清楚。 - jpaugh

不是你驱动器上的所有内容都被加密了,但你的数据是加密的。 没有加密的部分是你的/boot区域,因为它在启动过程中使用。从那里可以找到一些有趣的结果,可以在这里找到here
你可以通过运行以下命令来查看你特定安装的密码强度: ls /dev/mapper/ |grep crypt 输出将是YOUR_CRYPT cryptsetup status YOUR_CRYPT 示例: ls /dev/mapper/ |grep crypt nvme0n1p4_crypt sudo cryptsetup status nvme0n1p4_crypt
/dev/mapper/nvme0n1p4_crypt正在使用并且处于活动状态。 类型:LUKS1 加密算法:aes-xts-plain64 密钥大小:512位 设备:/dev/nvme0n1p4 偏移量:4096扇区 大小:499410944扇区 模式:读/写 标志:丢弃
你的加密等级会根据你在Ubuntu上安装的时间和所使用的版本而有所不同,但即使是较旧的设置也会相当强大,并且可能能够抵御一般的破解尝试。关于Ubuntu块级加密的讨论可以在这里找到How secure is Ubuntu's default full-disk encryption?
在不同硬件上引导你的加密驱动器不会成为问题。如果你对加密驱动器进行逐位复制,仍然可以正常引导并使用密码登录。复制操作应在“离线”状态下完成(在关闭后,驱动器卸载)。在线数据获取的成功率很低,但我不能百分之百确定。
“Home Folder”加密是基于“文件中的家目录”概念。如果系统没有加密,并且文件系统被挂载,加密的家目录将是一个单个的大文件,使用cryptsetup进行加密。因此,在加密系统中加密你的家目录会增加获取个人文件的难度。但可能会有性能上的折衷。更多关于encrypted home的信息。

简短的简单回答:
1. 所有东西都加密了吗(包括我的数据)? 是的,全部都加密了。
2. 这种加密有多强大? 很强大,就像最薄弱的一环一样强大。
3. 另外,这种加密是否会阻止我将带有加密文件系统的固态硬盘安装到其他设备上,或者制作完整的驱动备份(例如使用Ubuntu的实时版本),然后在某个时候恢复该备份? 你必须自己尝试才能说服自己。如果忘记密码,你的数据将全部丢失,如果你知道有人在这种情况下能够破解它,请告诉我。
4. 另外,如果整个文件系统都被加密了,那么在Ubuntu中也加密我的主文件夹有什么价值吗? 浪费时间,没有必要。但如果你需要的话,可以加密。
更多信息:
从你分享的链接中,我引用了一个链接并进行了跟进:
这个故事的寓意是什么呢?如果你在手机上挂载了一个LUKS分区,别人很容易获取到主加密密钥。cryptsetup在luksClose操作期间会从内存中删除密钥,所以我的建议是只有在使用时才挂载LUKS驱动器,完成后立即卸载和关闭它。否则,它将成为一个巨大的安全隐患,几乎就像你的驱动器一开始就没有加密一样。
值得一提的是,LUKS在Android上不是唯一容易受到此类攻击的系统。几乎所有磁盘加密系统都将加密密钥存储在内存中。普林斯顿大学CITP小组很早之前就发现了这一事实。我在这里的观点仅仅是强调这种攻击非常容易实施!
请注意粗体部分中的更多信息。正如我所说,如果你对处理个人物品的方式不谨慎,那就要预料到麻烦。他给出了建议,未使用时应始终卸载或关闭。

不确定“使用后”的意思是指整个磁盘或家庭文件夹加密的时候。这是说“一旦打开,就一直是打开”吗?如果是这样的话,那当然可以。我觉得我们试图防止的是盗窃行为,在台式机上通常会涉及到电源中断。对于笔记本电脑在这种情况下会发生什么还不确定。 - Greg Bell
“驱动器上的所有内容都加密了吗?” - 不是的。启动分区没有加密。如果一个熟练的黑客能够暂时获得物理访问权限,这将会产生安全问题,因为他们可以修改您的引导过程来偷偷植入恶意软件。 - aggregate1166877