我试图在linux中读取ecryptfs的来源。任何人都可以帮我解释一下linux内核子系统dm-crypt和ecryptfs的区别。有没有介绍ecryptfs来源的参考书。谢谢你的帮助。
答案 0 :(得分:33)
dm-crypt和eCryptfs都是紧密集成在Linux内核中的功能,可以对静态数据进行加密。自2006年以来,它们都已经在Linux内核的上游,并且被消费者和企业大量使用。然而,每种方法都有很大不同。
dm-crypt提供“block”级加密。使用dm-crypt,Linux内核会创建一个完整的加密块设备,然后可以像系统中的任何其他块设备一样使用它。它可以被分区,刻成LVM,RAID,或直接用作磁盘。但这确实意味着您必须先决定使用加密,并预先分配空间,然后创建format文件系统。它非常快速有效,尤其是当您的CPU支持CPU上的英特尔AES-NI加密加速时。但是,整个块设备只使用一个密钥。因此,对加密来说,这是一种直截了当,全有或全无的方法。
eCryptfs提供“每个文件”加密。 eCryptfs是一个完全符合POSIX标准的Linux堆叠文件系统。 eCryptfs将metadata存储在每个文件的标题中,以便可以在主机之间复制加密文件;该文件将使用Linux内核密钥环中的正确密钥进行解密。除了已加密文件本身的内容之外,无需跟踪任何其他信息。您可能会认为eCryptfs是一种“GnuPG作为文件系统”。可以使用不同的密钥加密不同的文件,并且可以选择加密文件名。但是,文件属性不会被屏蔽,因此攻击者可以看到文件的大致大小,所有权,权限和时间戳。由于eCryptfs是一个分层文件系统,因此您不必提前预先分配空间。你只需将一个目录挂在另一个目录之上(有点像NFS);写入和读取上层目录的所有数据(假设您有密钥)看起来像plaintext数据,但所有数据在下面写为ciphertext之前都已加密。由于eCryptfs必须基于每个文件处理密钥和元数据,因此在饱和读写时它的执行速度比dm-crypt慢一点。
大多数Linux发行版在其安装程序中都支持dm-crypt,以及Android。您可以使用dm-crypt加密整个设备或桌面,平板电脑,手机或服务器的根安装,但这通常意味着系统无法再无人值守启动,因为您需要在启动时以交互方式输入密码。
出于这个原因,Ubuntu在其安装程序中添加了对eCryptfs的支持,使用户只能加密磁盘的敏感部分,例如their home directories,并利用用户的login passphrase打开一个特殊的,长的,随机生成的密钥。大约300万Ubuntu用户利用eCryptfs加密他们的主目录。某些商业network attached storage设备(例如Synology)使用eCryptfs加密静态数据。每个Google Chromebook device uses eCryptfs用于保护和加密用户的本地缓存和静态凭据。
完全披露:我是eCryptfs的作者和维护者之一。