16

我试图在 linux 中阅读 ecryptfs 的源代码。谁能帮我解释一下linux内核子系统dm-crypt和ecryptfs之间的区别。有没有介绍ecryptfs来源的参考书。谢谢你帮助我。

4

1 回答 1

43

dm-crypteCryptfs都是紧密集成在 Linux 内核中的特性,它们对静态数据进行加密。至少从 2006 年开始,两者都已在 Linux 内核上游,并被消费者和企业大量使用。但是,每个人采取的方法却大不相同。

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

eCryptfs 提供“每个文件”加密。eCryptfs 是一个完全符合POSIX标准的 Linux 堆栈文件系统。eCryptfs 将元数据存储在每个文件的标头中,以便可以在主机之间复制加密文件;该文件将使用 Linux 内核密钥环中的正确密钥进行解密。除了加密文件本身中已有的信息外,无需跟踪任何其他信息。你可能认为 eCryptfs 是一种“ GnuPG作为文件系统”。不同的文件可以用不同的密钥加密,文件名也可以选择加密。但是,文件属性没有被屏蔽,因此攻击者可以看到文件的大致大小、所有权、权限和时间戳。由于 eCryptfs 是一个分层文件系统,您不必提前预先分配空间。您只需将一个目录安装在另一个目录之上(有点像NFS);所有写入和读取上层目录的数据(假设你有密钥)看起来像纯文本数据,但所有数据在写入下面的磁盘之前都是加密的密文。由于 eCryptfs 必须在每个文件的基础上处理密钥和元数据,它的执行速度比 dm-crypt 慢一点关于饱和读取和写入。

大多数 Linux 发行版在其安装程序以及Android中都在一定程度上支持 dm-crypt 。您可以使用 dm-crypt 对桌面、平板电脑、手机或服务器的整个设备或根安装进行加密,但这通常意味着系统无法再在无人值守的情况下启动,因为您需要在启动时以交互方式输入密码。

出于这个原因,Ubuntu 在其安装程序中添加了对 eCryptfs 的支持,使用户能够仅加密磁盘的敏感部分,例如他们的主目录,并利用用户的登录密码解包一个特殊的、长的、随机生成的密钥。大约 300 万 Ubuntu 用户利用 eCryptfs 来加密他们的主目录。一些商业网络附加存储设备,例如Synology使用 eCryptfs 加密静态数据。每台Google Chromebook 设备都使用 eCryptfs来保护和加密用户的本地缓存和静态凭据。

全面披露:我是eCryptfs的作者和维护者之一。

于 2013-08-14T14:34:55.450 回答