首页 理论教育 挂载参数及密钥卸载逻辑

挂载参数及密钥卸载逻辑

时间:2023-11-22 理论教育 版权反馈
【摘要】:系统调用mount的作用是挂载文件系统,在挂载eCryptfs文件系统时,会用到一些专门的参数。例如,aes密钥有16B、24B、32B三种。如果本次挂载有这个参数,就不会使用request_key操作,如果文件所需的密钥没有在挂载时给出,则直接报错。可能是删除相关密钥已经成为卸载eCryptfs文件系统的必然逻辑了。

挂载参数及密钥卸载逻辑

系统调用mount的作用是挂载文件系统,在挂载eCryptfs文件系统时,会用到一些专门的参数。下面逐一介绍。凡是需要有输入字符串的参数,都以“=”结尾。

●sig=

●ecryptfs_sig=

这两个参数作用相同,都需要一个字符串作为输入,这个字符串规定了一个密钥的名字(description)。内核会先在user类型的密钥中寻找这个名字的密钥,若没有,再在encrypted类型的密钥中寻找这个名字的密钥。将找到的密钥链入一个对应此次mount的密钥链,用于后续可能的加解密密钥的操作。

sig按字面理解是签名。实际上却是指密钥的名字(description)。

注意,这里这个密钥并不是真正用于加解密文件内容的密钥。用于加解密文件内容的密钥是内核生成的一个随机数,这个随机数当然不能存储在文件或文件的扩展属性之中。这里的mount参数规定了一个密钥用于将这个随机数加密,加密后的结果随文件存储。

●cipher=

●ecryptfs_cipher=

这两个参数作用相同,都用来确定一个加密解密算法。eCryptfs使用的是对称加密算法,即加密和解密使用相同的密钥。具体算法是以下几个之一:aes、blowfish、des3_ede、cast5、twofish、cast6。

●ecryptfs_key_bytes=

这个参数确定密钥长度。有些加密算法支持不同长度的密钥。例如,aes密钥有16B、24B、32B三种。

●ecryptfs_passthrough

这个参数确定是否允许eCryptfs文件系统中存在没有被加密的文件。eCryptfs是叠加在其他文件系统之上的,在其他文件系统的目录中存储的是加密后的文件,自eCryptfs文件系统目录中看到解密后的文件内容。如果在其他文件系统中存在未加密文件的话,在这个mount参数作用下,自eCryptfs中读此文件不会报错,也不会做额外的解密操作,原封不动地将文件内容呈现。

●ecryptfs_xattr_metadata

所谓元数据(metadata)就是eCryptfs专有的和加密相关的数据。有了这个参数,在系统调用open中,内核会先试着从文件头中读出元数据,如果文件头没有,再从扩展属性中读出元数据。

●ecryptfs_encrypted_view(www.xing528.com)

此参数影响文件向内存映射的操作,有此参数,文件内容到内存不做解密操作。

●ecryptfs_fnek_sig=

eCryptfs不仅能对文件内容进行加密,还能对文件名进行加密。如果将目录看作一种特殊的文件,目录的内容就是文件名和文件的inode号。eCryptfs并不会对目录内容整体进行加密,只会对其中一个一个单独的“文件名”域的内容进行加密。加密就需要密钥,这个参数规定用于加密文件名操作的密钥的密钥。

真正用于加解密文件名操作的是内核生成的一个随机数,这个随机数作为密钥是不能直接存储在文件元数据中的,要对此密钥加密后再存储,加密此密钥的密钥就是这个mount参数指定的密钥。

●ecryptfs_fn_cipher=

用于文件名加密的算法。

●ecryptfs_fn_key_bytes=

用于文件名加密的算法所需的密钥长度。

●ecryptfs_mount_auth_tok_only

在挂载操作时,参数“sig=”“ecryptfs_sig=”“ecryptfs_fnek_sig=”可以出现多次,规定此次挂载使用的密钥。解密文件的一般做法是:首先在挂载时给出的密钥中寻找相应的密钥,如果没有找到,通过request_key操作向用户态申请协助。如果本次挂载有这个参数,就不会使用request_key操作,如果文件所需的密钥没有在挂载时给出,则直接报错。

●ecryptfs_check_dev_ruid

前面提到eCryptfs是堆叠在其他文件系统之上的,有此参数,在mount eCryptfs时,会检查执行mount操作的进程的uid和要挂载的(存储加密后文件的)目录属主uid是否相同,只有相同才允许挂载。

●ecryptfs_unlink_sigs

这个参数应该和内核卸载eCryptfs文件系统后删除相关密钥有关。但在内核代码中这个参数已经不对应任何实际有效的逻辑了。可能是删除相关密钥已经成为卸载eCryptfs文件系统的必然逻辑了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈