欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

ChromeOS建立在eCryptfs的用户信息安全的安防功能

来源:本站整理 作者:佚名 时间:2017-10-12 TAG: 我要投稿

Chromebook的利用场景情势是允许多人分享利用同一台装备,然则同时也要掩护每一个用户数据的私密性,使得每一个利用者都不允许拜访到对方的隐衷数据,包括:账户信息、阅读汗青记载和cache、装置的利用法式、下载的内容和用户自立在本地发生的文本、图片、视频等。本文试图从较高的角度论述ChromeOS是若何颠末过程eCryptfs机制掩护用户数据隐衷。
eCryptfs简介
eCryptfs在Linux kernel 2.6.19由IBM公司的Halcrow,Thompson等人引入,在Cryptfs的根基上完成,用于企业级的文件体系加密,支撑文件名和文件内容的加密。本质上eCryptfs 就像是一个内核版本的 Pretty Good Privacy(PGP)办事,插在 VFS和基层物理文件体系之间,充任一个“过滤器”的脚色。用户利用法式对加密文件的写哀求,经体系挪用层达到 VFS 层,VFS 转给 eCryptfs 文件体系组件处置,处置终了后,再转给基层物理文件体系;读哀求流程则相同。
eCryptfs 的计划遭到OpenPGP标准的影响,焦点思惟:eCryptfs颠末过程一种对称密钥加密算法来加密文件的内容或文件名,如AES-128,密钥 FEK(File Encryption Key)随机发生。而FEK颠末过程用户口令或者公钥停止掩护,加密后的FEK称EFEK(Encrypted File Encryption Key),口令/公钥称为 FEFEK(File Encryption Key Encryption Key)。在保留文件时,将包括有EFEK、加密算法等信息的元数据(metadata)放置在文件的头部或者xattr扩大属性里(本文默许以前者做为讲授),关上文件前再剖析metadata。

图一 eCryptfs的体系架构
eCryptfs的体系架构如图一所示,eCryptfs重叠在EXT4文件体系之上,事情时必要用户法式和内核同时共同,用户法式重要卖力获得密钥并颠末过程(add_key/keyctl/request_key)体系挪用传送到内核的keyring,当某个利用法式提议对文件的读写操纵前,由eCryptfs对其停止加/解密,加/解密的过程当中必要挪用Kernel的Crypto API(AES/DES etc)来完成。以对目次eCryptfs-test停止加密为例,为便利起见,在Ubuntu体系下测试eCryptfs的树立流程,如图二所示,颠末过程mount指令提议eCryptfs的树立流程,而后在用户利用法式eCryptfs-utils的帮助下输出用于加密FEK的用户口令及抉择加密算法等,完成挂载后意味着曾经开端对测试目次eCryptfs-test的一切内容停止加密处置。测试中在eCryptfs-test目次下增长必要加密的文件或目次的内容,当用户umount加入对eCryptfs-test目次的挂载后再次检查该目次时,发明包括文件名和文件内容都停止了加密,如图三所示。

图二 eCryptfs应历时的树立流程

图三 eCryptfs加密后的文件

图四 eCryptfs对文件的加解密流程
完成上,eCryptfs对数据的加/解密流程如图四所示,对称密钥加密算法以块为单位停止加密/解密,如AES-128。eCryptfs 将加密文件分红多个逻辑块,称为 extent,extent 的巨细可调,然则不克不及大于现实物理页,默许值即是物理页的巨细,如32位的体系下是 4096 字节。加密文件的头部寄存元数据,包括元数据长度、标记位、旗标、EFEK及相应的signature,今朝元数据的最小长度为 8192 字节。加/解密开端前,起首解密FEKEK掏出FEK。当读入一个 extent 中的任何部门的密文时,全部 extent 被读入 Page Cache,颠末过程 Kernel Crypto API 停止解密;当 extent 中的任何部门的明文数据被写回磁盘时,必要加密并写回全部 extent。
eCryptfs胪陈
eCryptfs在内核中的完成代码位于kernel/fs/ecryptfs,上面以eCryptfs利用到的症结数据布局、eCryptfs init、eCryptfs mount、file creat、file open、file read、file write的次序分离先容eCryptfs是若何事情。别的,eCryptfs还完成为了/dev/ecryptfs的misc装备,用于内核与利用法式间的新闻通报,如密钥哀求与相应,属于非必选项,是以这里不对其停止先容。
eCryptfs相干的数据布局
eCryptfs症结的数据布局包括eCryptfs 文件体系相干file、dentry、inode、superblock、file_system_type描写、auth token认证令牌描写、eCryptfs加密信息描写等。
eCryptfs文件体系相干的数据布局如清繁多所示,下文将会重点先容file_system_type中的mount函数,即ecryptfs_mount。
清繁多 eCryptfs文件体系相干的数据布局
/* ecryptfs file_system_type */
static struct file_system_type ecryptfs_fs_type = {
.owner = THIS_MODULE,
.name = "ecryptfs",
.mount = ecryptfs_mount,
.kill_sb = ecryptfs_kill_block_super,
.fs_flags = 0
};
/* superblock private data. */
struct ecryptfs_sb_info {
struct super_block *wsi_sb;
struct ecryptfs_mount_crypt_stat mount_crypt_stat;
struct backing_dev_info bdi;
};
/* inode private data. */
struct ecryptfs_inode_info {
struct inode vfs_inode;
struct inode *wii_inode;
struct mutex lower_file_mutex;
atomic_t lower_file_count;
struct file *lower_file;
struct ecryptfs_crypt_stat crypt_stat;
};
/* dentry private data. Each dentry must keep track of a lower vfsmount too. */

[1] [2] [3] [4] [5] [6] [7]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载