admin 管理员组文章数量: 1184232
构建思想
透明加密一直是安全领域比较热门的领域,了解了下linux内核自带的ecryptfs。首先作者为了实现透明加密,构造了一个ecryptfs的文件系统。这个文件系统并没有对, 磁盘文件的直接组织,而是依附在已有的文件系统上,通过构建的文件系统对已有的文件系统做了重新组织实现。
文件系统架构
正如常见的文件系统构成一样,ecrypt构建了自己的文件系统节点管理逻辑。
之后是磁盘管理和虚拟文件系统管理。这些都是依附与一个叫lowe_path的核心逻辑,就是未加密文件夹。通过对未加密文件夹重新组织,实现对未加密文件页缓存加密。
剩余的就是挂载节点的管理如下图:
文件系统构建起点
为了构造一个完整的加密文件系统,不可能自己实现inode dentry的管理,因为需要劫持底层ext4等文件的页缓存。那么就要依赖现有的文件inode管理。
研究struct file_system_type 的mount实现,可以观察到:
整个文件系统围绕 dev_name构造的lower_path lower_sb进行。这个节点就是真实文件系统的节点管理的核心,也就是加密前的文件系统。这样借助现有文件系统,可以更方便的虚拟处一个文件系统,但实际数据全部还是在真是的文件系统上。
文件节点创建
static struct inode *
ecryptfs_do_create(struct inode *directory_inode,
struct dentry *ecryptfs_dentry, umode_t mode)
{
int rc;
struct dentry *lower_dentry;
struct dentry *lower_dir_dentry;
struct inode *inode;
lower_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry);
lower_dir_dentry = lock_parent(lower_dentry);
rc = vfs_create(d_inode(lower_dir_dentry), lower_dentry, mode, true);
if (rc) {
printk(KERN_ERR "%s: Failure to create dentry in lower fs; "
"rc = [%d]\n", __func__, rc);
inode = ERR_PTR(rc)
版权声明:本文标题:ecryptfs透明加密 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1763718354a3264026.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论