Linux内核子系统dm-crypt和ecryptfs有什么区别?

16

我正在尝试阅读Linux中ecryptfs的源代码。有没有人可以帮忙解释一下Linux内核子系统dm-crypt和ecryptfs之间的区别?是否有任何参考书籍介绍ecryptfs的源代码?谢谢帮忙。

1个回答

47

dm-crypteCryptfs都是紧密集成在Linux内核中的功能,用于加密静止数据。它们自至少2006年以来一直在Linux内核中得到更新,并被消费者和企业广泛使用。然而,它们采取的方法却有很大不同。

dm-crypt提供了块级加密。使用dm-crypt,Linux内核创建一个完整的加密块设备,可以像系统中的任何其他块设备一样使用。它可以被分区、划分为LVMRAID,或者直接用作磁盘。然而,这意味着您必须预先决定使用加密,并预先分配空间,然后创建和格式化文件系统。如果您的CPU支持Intel的AES-NI加密加速,在CPU上非常快和高效。但是,整个块设备只使用一个密钥。因此,这是一种有点粗糙、全面或无的加密方法。

eCryptfs提供“每个文件”加密。eCryptfs是Linux的完全POSIX兼容的堆栈文件系统。eCryptfs将metadata存储在每个文件的头部,以便可以在主机之间复制加密文件;文件将使用Linux内核钥匙环中的正确密钥进行解密。除了已经在加密文件本身中的信息外,不需要跟踪任何其他信息。您可以将eCryptfs视为一种“GnuPG作为文件系统”。不同的文件可以使用不同的密钥进行加密,并且文件名可以选择性地加密。但是,文件属性没有被掩盖,因此攻击者可以看到文件的大致大小、所有权、权限和时间戳。由于eCryptfs是一个分层文件系统,因此无需预先分配空间。只需将一个目录挂载在另一个目录之上(有点像NFS);所有写入和读取上层目录的数据(假设您拥有密钥)看起来都像plaintext数据,但在写入下面的磁盘之前,所有数据都已加密为ciphertext。由于eCryptfs必须按文件处理密钥和元数据,因此在饱和读写方面执行速度比dm-crypt慢一些。

大多数Linux发行版在其安装程序中支持dm-crypt,Android也是如此。您可以使用dm-crypt加密桌面、平板电脑、手机或服务器的整个设备或根安装,但这通常意味着系统不能再无人值守地启动,因为您需要交互式地输入密码短语才能启动。
出于这个原因,Ubuntu在其安装程序中添加了对eCryptfs的支持,使用户能够仅加密磁盘上敏感部分,例如他们的主目录,并利用用户的登录口令来解开一个特殊的、长的、随机生成的密钥。大约有300万Ubuntu用户利用eCryptfs加密其主目录。一些商业网络附加存储设备,例如Synology,使用eCryptfs加密静止数据。每个Google Chromebook设备都使用eCryptfs来保护和加密用户的本地缓存和凭据。

完整披露:我是eCryptfs的作者和维护者之一。


2
非常有趣。你仍然喜欢eCryptfs吗? - 3pic
3
当然,他是 eCryptfs 的作者和维护者之一。从中立的角度来看,你应该考虑到 eCryptfs 的按文件加密可能会减慢低性能硬件的速度,但它允许更高级别的灵活性,使加密过程对用户来说是可选的,并且如果需要更改 MBT 布局,则可以在不格式化的情况下进行反向操作。如果需要永久加密并且系统有人为操作员,则 dm-crypt 较为方便;否则,您可以使用 eCryptfs,在取消挂载文件系统后仍可保持数据安全。只需安全地存储密钥即可。;-) - user6901258
3
请注意写入性能差异。来源:https://superuser.com/questions/700174/poor-write-performance-on-ecryptfs?rq=1 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接