首页 理论教育 挂载操作和密钥情况-Linux内核安全模块深入剖析

挂载操作和密钥情况-Linux内核安全模块深入剖析

时间:2023-11-22 理论教育 版权反馈
【摘要】:本节看一下挂载操作及其对应的用户态代码。上面展示了挂载eCryptfs的命令和命令的输出,下面看一下挂载成功后密钥的情况:在user钥匙环上的描述为“4737d57200bab607”的密钥就是挂载eCryptfs时添加的。用户在执行挂载命令时输入了一个字符串口令。eCryptfs的用户态工具mount.ecryptfs)会将这个口令转化为一个密钥,加入内核。这个工作在ecryptfs的用户态软件ecryptfs-utils的src/libecryptfs/key_management.c中完成:ecryptfs_add_passphrase_key_to_keyring调用了ecryptfs_generate_passphrase_auth_tok,用来生成密钥,然后调用了ecryptfs_add_auth_tok_to_keyring用来将密钥加入“user”钥匙环。

挂载操作和密钥情况-Linux内核安全模块深入剖析

本节看一下挂载操作及其对应的用户态代码。

上面展示了挂载eCryptfs的命令和命令的输出,下面看一下挂载成功后密钥的情况:

在user钥匙环上的描述为“4737d57200bab607”的密钥就是挂载eCryptfs时添加的。下面看一下用户态程序调用内核系统调用的实际参数:

eCryptfs的mount命令在user钥匙环中添加了一个密钥“4737d57200bab607”,然后执行系统调用mount,在mount的参数中包含了“ecryptfs_sig=4737d57200bab607”。

用户在执行挂载命令时输入了一个字符串口令(passphrase)。eCryptfs的用户态工具mount.ecryptfs)会将这个口令转化为一个密钥,加入内核。这个工作在ecryptfs的用户态软件ecryptfs-utils的src/libecryptfs/key_management.c中完成:

ecryptfs_add_passphrase_key_to_keyring调用了ecryptfs_generate_passphrase_auth_tok,用来生成密钥,然后调用了ecryptfs_add_auth_tok_to_keyring用来将密钥加入“user”钥匙环。下面分别看生成密钥的函数ecryptfs_generate_passphrase_auth_tok和加入密钥的函数ecryptfs_add_ auth_tok_to_keyring。

(1)生成密钥(www.xing528.com)

先看ecryptfs_generate_passphrase_auth_tok:

函数ecryptfs_generate_passphrase_auth_tok调用了函数generate_passphrase_sig来生成fekek密钥的密钥)和sig(字面意思是签名,实际上是密钥的名字/描述)。generate_passphrase_sig的作用是将一段口令字符串(passphrase)转化为密钥信息。

对口令做若干次哈希运算就得到了fekek,对fekek再多做一次哈希就得到了sig。

(2)加入密钥

此函数的核心就是调用库函数add_key,将密钥加入内核。

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

我要反馈