我正在尝试阅读linux中ecryptfs的源代码。谁能帮我解释一下linux内核子系统dm-crypt和ecryptfs之间的区别。有没有介绍ecryptfs源代码的参考书?谢谢你帮我。
发布于 2013-08-14 22:34:55
dm-crypt和eCryptfs都是紧密集成在Linux内核中的特性,可以对静态数据进行加密。至少从2006年开始,这两个版本就已经成为Linux内核的上游版本,并被消费者和企业大量使用。然而,每种方法都有很大的不同。
dm-crypt提供"block“级别的加密。使用dm-crypt,Linux内核创建一个完整的加密块设备,然后可以像系统中的任何其他块设备一样使用它。它可以被分区、分割成LVM、RAID,或者直接用作磁盘。然而,这确实意味着您必须决定预先使用加密,预先分配空间,然后创建并format一个文件系统。它速度极快,效率极高,尤其是当您的中央处理器支持英特尔的AES-NI加密加速时。但是,只有一个密钥用于整个块设备。因此,这有点生硬,要么全有要么全无的加密方法。
eCryptfs提供“按文件”加密。eCryptfs是一个用于Linux的全POSIX-compliant堆栈文件系统。eCryptfs将metadata存储在每个文件的头部,以便加密的文件可以在主机之间复制;文件将使用Linux内核密钥环中的适当密钥进行解密。除了加密文件本身中已经存在的信息之外,不需要跟踪任何其他信息。您可能认为eCryptfs是一种“文件系统的GnuPG”。可以使用不同的密钥加密不同的文件,也可以选择加密文件名。但是,文件属性不会被屏蔽,因此攻击者可以看到文件的大致大小、其所有权、权限和时间戳。因为eCryptfs是一个分层的文件系统,所以您不必预先分配空间。您只需将一个目录挂载到另一个目录之上(有点像NFS);所有写入和读取上层目录的数据(假设您拥有密钥)看起来都像plaintext数据,但是所有数据在作为ciphertext写入下面的磁盘之前都是加密的。由于eCryptfs必须在每个文件的基础上处理密钥和元数据,因此在饱和读取和写入时,它的执行速度比dm-crypt稍慢一些。
大多数Linux发行版在其安装程序以及Android中都在一定程度上支持dm-crypt。您可以使用dm-crypt对整个设备或台式机、平板电脑、电话或服务器的根安装进行加密,但这通常意味着系统不能再在无人值守的情况下启动,因为您需要在启动时交互输入密码。
出于这个原因,Ubuntu在其安装程序中添加了对eCryptfs的支持,允许用户仅加密磁盘的敏感部分,如their home directories,并利用用户的login passphrase来解开一个特殊的、长的、随机生成的密钥。大约300万Ubuntu用户利用eCryptfs来加密他们的主目录。一些商业network attached storage设备,如Synology,使用eCryptfs加密静态数据。和每个Google Chromebook device uses eCryptfs来保护和加密用户的本地缓存和静态凭据。
完全公开:我是的作者和维护者之一。
https://stackoverflow.com/questions/18230784
复制相似问题