我正在尝试阅读Linux中ecryptfs的源代码。有没有人可以帮忙解释一下Linux内核子系统dm-crypt和ecryptfs之间的区别?是否有任何参考书籍介绍ecryptfs的源代码?谢谢帮忙。
我正在尝试阅读Linux中ecryptfs的源代码。有没有人可以帮忙解释一下Linux内核子系统dm-crypt和ecryptfs之间的区别?是否有任何参考书籍介绍ecryptfs的源代码?谢谢帮忙。
dm-crypt和eCryptfs都是紧密集成在Linux内核中的功能,用于加密静止数据。它们自至少2006年以来一直在Linux内核中得到更新,并被消费者和企业广泛使用。然而,它们采取的方法却有很大不同。
dm-crypt提供了块级加密。使用dm-crypt,Linux内核创建一个完整的加密块设备,可以像系统中的任何其他块设备一样使用。它可以被分区、划分为LVM、RAID,或者直接用作磁盘。然而,这意味着您必须预先决定使用加密,并预先分配空间,然后创建和格式化文件系统。如果您的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加密桌面、平板电脑、手机或服务器的整个设备或根安装,但这通常意味着系统不能再无人值守地启动,因为您需要交互式地输入密码短语才能启动。完整披露:我是eCryptfs的作者和维护者之一。