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