我试图在linux中读取ecryptfs的源代码。有人能帮我解释一下linux内核子系统dm crypt和ecryptfs之间的区别吗。有没有介绍电子加密货币来源的参考书。谢谢你帮我。
dm crypt和eCryptfs都是紧密集成在Linux内核内部的功能,可以在休息时加密数据。至少从2006年起,这两个功能就一直处于Linux内核的上游,消费者和企业都在大量使用。然而,每种方法都有很大的不同。
dm crypt提供"块"级加密。使用dm crypt,Linux内核创建一个完整的加密块设备,然后可以像系统中的任何其他块设备一样使用。它可以被分区、分割成LVM、RAID或直接用作磁盘。然而,这确实意味着,您必须决定提前使用加密,提前预分配空间,然后创建和格式化文件系统。它非常快速高效,尤其是当您的CPU支持Intel在CPU上的AES-NI加密加速时。但是,整个块设备只使用一个密钥。因此,这是一种有点生硬的、要么全有要么全无的加密方法。
eCryptfs提供"按文件"加密。eCryptfs是一个完全兼容POSIX的Linux堆叠文件系统。eCryptfs将元数据存储在每个文件的头中,以便加密的文件可以在主机之间复制;该文件将使用Linux内核密钥环中的正确密钥进行解密。除了加密文件本身中已经存在的信息之外,不需要跟踪任何其他信息。您可能认为eCryptofs是一种"GnuPG作为文件系统"。不同的文件可以用不同的密钥加密,文件名也可以选择加密。然而,文件属性并没有被屏蔽,因此攻击者可以看到文件的大致大小、所有权、权限和时间戳。由于eCryptofs是一个分层的文件系统,您不必提前预分配空间。您只需将一个目录挂载在另一个目录之上(有点像NFS);所有写入上层目录和从上层目录读取的数据(假设您有密钥)看起来都像明文数据,但所有数据在作为密文写入下面的磁盘之前都经过了加密。由于eCryptfs必须在每个文件的基础上处理密钥和元数据,因此它在饱和读写时的执行速度比dm crypt稍慢。
大多数Linux发行版在安装程序和Android中都在一定程度上支持dm crypt。您可以使用dm crypt对整个设备或台式机、平板电脑、手机或服务器的根安装进行加密,但这通常意味着系统无法在无人值守的情况下启动,因为您需要在启动时交互输入密码短语。
因此,Ubuntu在其安装程序中添加了对eCryptofs的支持,使用户只能加密磁盘的敏感部分,如主目录,并利用用户的登录密码打开一个特殊的、长的、随机生成的密钥。大约有300万Ubuntu用户使用eCryptofs来加密他们的主目录。一些商业网络连接存储设备,如Synology,在休息时使用eCryptofs加密数据。每个谷歌Chromebook设备在休息时都使用eCryptfs来保护和加密用户的本地缓存和凭据。
全面披露:我是eCryptofs的作者和维护者之一