LUKS文件系统的加密安全性有多高?

我最近在一块全新的硬盘上安装了11.10版本,并使用了整个磁盘加密。有人能告诉我这个加密算法有多安全吗?最近有没有关于该算法的任何漏洞?我使用了一个36个字符的随机密码,所以我知道这不是一个弱点。如果硬盘被盗,我的客户数据被泄露的可能性有多大?

你最好问一下,一个人平均需要多长时间才能破解那个密码。另外,知道偷窃者是否知道其中包含信用卡数据可能会有所帮助。我认为你可以争辩说,如果不是信用卡,没有人会去暴力破解它——毕竟里面没有钱可捞。 - jcollum
13安全对抗什么?用超级计算机破解加密 - 难但不是不可能。用$10的扳手破解密码 - 更容易。http://imgs.xkcd.com/comics/security.png - Panther
这是如何查看您在LUKS中使用的密码的方法:在12.10全盘加密中使用了什么? - gertvdijk
1@Panther 真的需要一把价值10美元的扳手吗?我相信肯定有更便宜的解决方案。要求在密码分析领域使用如此昂贵的准入壁垒对该领域是不利的。 - Mateen Ulhaq
4个回答

是的,它是安全的。Ubuntu使用AES-256加密磁盘卷,并具有密码反馈来帮助保护免受频率攻击和其他针对静态加密数据的攻击。
作为一种算法,AES是安全的,这已经通过密码分析测试得到证明。实际上,弱点在于密码和传递给它的密钥的软件。具体而言,弱点在于密钥库(存储在卷的头部),密钥库由一个口令保护。当然,口令也容易受到一些攻击,如字典/暴力攻击(如果成功,将解密密钥库)。使用长且“复杂”的非单词密码可以减少这种情况发生的机会。
唯一的其他解密可能性是使用录音设备或社交工程来确定您的口令。
简而言之,除非您受到严重的有组织网络犯罪或政府调查的影响,否则您的计算机是相对安全的!

25你应该注意,如果你的电脑在运行或挂起模式下被拿走(休眠是可以的),有各种相对简单的技术可以从内存中提取密码。因此,在旅行时,我建议你小心选择离开笔记本电脑的状态,但总体而言,你应该能够避免大多数数据丢失的可能情况。 - ternaryOperator
2@ternaryOperator 不完全正确,这只适用于笔记本电脑。当计算机失去电源时,RAM数据会迅速衰减,直到无法读取(这就是为什么我们不仅使用RAM而不是SSD作为超快存储的原因,问题不仅仅是速度;各个公司正在努力寻找解决方法(记忆电阻器))除非你指的是在电源仍然开启的情况下进行物理访问。 - Cestarian
2@Cestarian,是的,我的意思是即使磁盘已加密,只要计算机处于开机状态(即使是锁定或暂停模式),数据仍然容易受到攻击。举个例子,如果你将计算机连夜保持开机或处于暂停模式,或者由于其他原因有人能在计算机没有完全关闭时访问它,那么他们很有可能通过访问RAM内容来获取你的数据(喷洒冷却剂可以显著延缓RAM中数据的衰减速度,从而可以重新启动计算机以运行恢复软件)。 - ternaryOperator
1@ternaryOperator 这个可能性很小,要在设备离开时访问它,他们必须要么:A:登录我的NAS服务器(这需要破解两个可能的10+字符密码之一,并且位置不是很方便...(小储藏室)虽然他们可以尝试使用ssh)B:希望他们能够从我的RAM中劫持加密密钥(但是加密密钥一旦使用后就会立即从RAM中删除,所以基本上不可能发生)。这种方法更为可行,但需要更多专业知识。作为一个普通人,我真的不值得他们费那么大劲。 - Cestarian
@ternaryOperator 另外,加密还采用了一个40多个字符的密码,不容易受到字典攻击,其中包括大写字母、小写字母、符号和数字。有点过分吗?我知道,但无所谓了。总之,由于我不理解实际的可塑性攻击(也不知道这个过程会有多快或慢,以及是否可以由低端超级计算机完成),这是我最担心的事情。我的数据不会在没有警告的情况下被访问,只要我将其拔掉,它就在我门旁边,如果有可疑人敲门的话。 - Cestarian
1@Cestarian 这个方法是通过选项B来实现的,即从RAM中获取加密密钥。加密密钥会被缓存在RAM的某个位置,因为操作系统每次读写加密磁盘上的数据时都需要用到它。我同意大多数人对于磁盘加密不需要如此高度的偏执,而我的兴趣主要是学术性的。然而,这是攻击具有良好密码保护的磁盘加密的最实际的场景之一,而且不需要特殊设备。 关于这些攻击的详细信息可以在这篇维基百科文章中找到:https://en.wikipedia.org/wiki/Cold_boot_attack. - ternaryOperator
如果你有安全启动,冷启动攻击是不会发生的(尽管我们没有安全启动)。但正如我所说的,只有当人们离开他们的系统时才会容易受到这种攻击,即使如此,你也不需要担心加密密钥,因为任何人都可以直接访问已经解密的硬盘! - Cestarian
@Cestarian 你可以注销或者设置屏幕锁定,所以除非他们知道你的用户密码,否则他们无法做太多事情。在BIOS上设置密码并禁用从任意设备启动可能足够对抗资源有限的敌人(例如只会冻结的人)。 - menfon

这里有两个关于对这种文件系统的攻击的资源,看起来很有趣: http://dx.eng.uiowa.edu/dave/luks.php http://www.jakoblell.com/blog/2013/12/22/practical-malleability-attack-against-cbc-encrypted-luks-partitions/ 简而言之,后一个文档描述了在Ubuntu 12.04安装程序创建的LUKS设置中注入远程代码执行后门是可能的。这种攻击只需要访问加密硬盘(不依赖于操纵未加密的/boot分区或BIOS)。

虽然这次攻击相当严重,但它不适用于现代的LUCS设置。只有在块模式为CBC时才能应用此攻击,例如如果使用了密码aes-cbc-essiv。现代设置使用其他块模式,例如密码aes-xts-plain64(参见这篇文章来自ArchLinux wiki)。

要检查您的设置使用了哪种密码,请运行:

sudo cryptsetup status [device]

其中[device]是您的映射,例如/dev/mapper/sda3_crypt


1欢迎来到Ask Ubuntu!虽然这理论上可以回答问题,但最好在这里包含答案的关键部分,并提供链接作为参考。 - guntbert
我对实际可塑性攻击感到相当担忧,例如在任何ext4分区上都可以轻松找到的字符串(lost+found),如果是系统分区,则可能的字符串数量大大增加,但如果驱动器内容未知,则更加隐晦。不必担心密码短语能从RAM中恢复,如果您的计算机处于在线状态,很可能您的驱动器已经解密。因此,您只需确保在感到受到威胁时,按下按钮即可关闭系统。 - Cestarian
LUKS,不是LUCS。 - Cees Timmerman

我创建了一个Windows程序,可以对Luks卷进行字典攻击。http://code.google.com/p/luks-volume-cracker/ 它故意慢一些,每秒尝试约3个密钥。其他的字典攻击也会很慢,所以除非你选择了一个简单的口令,否则算法本身并不会有弱点。
但要注意内存中的密钥窃取和文件缓存的问题。

1这并没有回答问题“它有多安全”。这是对一个关于“如何对我的LUKS设备进行字典攻击”的问题的回答。 - gertvdijk
3@gertvdijk 我认为这可能是对问题的答案。“除非你选择了一个简单的密码短语,否则弱点不会在算法上。” 其余部分可以被视为该原则的示范。最后一句也与主题相关。 - Eliah Kagan
1@EliahKagan 我不同意。问题明确是关于算法本身的。仅仅说“弱点不在算法上”并不能回答这个问题,我认为如此。别误会 - 这些观点仍然是有效和有价值的,但对于这个问题来说不适用。 - gertvdijk
1@gertvdijk 这个答案还评估了破解算法所需的时间,并附带了一个演示链接。我并不是说这是最好的答案,但我认为它可以被视为一个答案(对于这个问题)。此外,算法的安全性实际上只是问题的几个部分之一 - Eliah Kagan
1我确实认为这在一定程度上展示了对LUKS可能的攻击水平。每秒从字典中尝试3次绝对不可能破解一个相对可靠的密码。 - Oli

LUKS加密方法在处理加密过程中存在潜在的不安全因素。暂且忽略算法本身是否安全以及与已经审计过的算法代码进行比较,作为用户,你无法创建一个能够加密你的数据的密钥。这就好比告诉别人,嘿,我会制定一个加密你银行账户的密码,而不是让你自己来做。但是,我很慷慨地允许你制定一个加密我的密码的密码。这就是我对LUKS存在的安全弱点的看法。
LUKS使用主密钥或者所谓的统一密钥。该密钥通过Linux系统上安装的“random”和“urandom”程序生成。如果这些程序以某种方式受到破坏,你的主密钥就会变得脆弱。无论你的密码有多强大,主密钥的生成方法都会导致漏洞的存在。
与TrueCrypt相比,后者在美国监视泄密事件中神秘关闭。根据TrueCrypt的文档正确加密的TrueCrypt卷没有被破解。政府投入了纳税人的钱来攻击TrueCrypt卷,但却无法破解。这是合法记录。https://en.wikipedia.org/wiki/TrueCrypt#Legal_cases(TrueCrypt已获得第四修正案批准)
TrueCrypt允许用户创建主密钥。在卷创建过程中,TrueCrypt允许用户在TrueCrypt界面中随意移动鼠标,从而随机操纵正在创建的主密钥的值。这将混乱的力量交到了用户手中,恰如其分。LUKS不允许这种简单的编程特性。

5警告:使用 TrueCrypt 不安全,因为可能存在未修复的安全问题。 除此之外,LUKS 支持用户定义的 <= 512 个字符的口令和 <= 8MiB 的任意二进制数据密钥文件。其次,如果系统(即根账户)被入侵,Linux 的随机设备可能会受到威胁。TrueCrypt 对这种情况没有魔法屏障。最后,Linux 内核会从许多设备(包括鼠标)自动收集熵用于 (u)random。底线是:TrueCrypt 已被放弃,不应再使用。请使用 LUKS。 - Adrian Günter
2你不了解密钥生成的工作原理。TrueCrypt(以及它的后继者)使用与LUKS相同的过程来生成主密钥:通过各种方式收集熵,包括鼠标移动,将其输入伪随机数生成器,并使用该PRNG的输出作为主密钥。区别在于TrueCrypt使用自己的算法生成密钥,而不是系统的RNG。TrueCrypt的算法和操作系统提供的RNG一样有可能存在缺陷。这个回答是FUD,并且对于不了解情况的用户是危险的。LUKS是安全的。 - Hey