实验目的
掌握eCryptfs的执行过程和设计原理
实验环境
VMware Workstation Pro
Ubuntu 16.04
简介
eCryptfs 是在 Linux 内核 2.6.19 版本中引入的一个功能强大的企业级加密文件系统,堆叠在其它文件系统之上(如 Ext2, Ext3, ReiserFS, JFS 等),为应用程序提供透明、动态、高效和安全的加密功能。
eCryptfs使用了两种方法来加密单个文件:
1.eCryptfs 先使用一种对称密钥加密算法来加密文件的内容,密钥FEK(File Encryption Key)随机产生。
2.FEK 不能以明文的形式存放(否则就没有存在的意义了),因此 eCryptfs 使用用户提供的口令(Passphrase)、公开密钥算法(如 RSA 算法)或 TPM(Trusted Platform Module)的公钥来加密保护刚才提及的 FEK。
如果使用用户口令,则口令先被Hash函数处理,然后再使用一种对称密钥算法加密 FEK。口令/公钥称为 FEFEK(File Encryption Key Encryption Key),加密后的 FEK 则称为 EFEK(Encrypted File Encryption Key)。
由于允许多个授权用户访问同一个加密文件,因此 EFEK 可能有多份。
这种综合的方式既保证了加密解密文件数据的速度,又极大地提高了安全性。虽然文件名没有数据那么重要,但是入侵者可以通过文件名获得有用的信息或者确定攻击目标,因此,最新版的 eCryptfs 支持文件名的加密。
实验要求
1)简要说明eCryptfs进行读/写操作时的工作流程
读操作:ext3从硬盘中读取ext3格式的文件内容,eCryptfs从文件内容中分离头部信息及加密数据块。分析头部信息,获取加密后的FEK,再根据用户输入的口令验证解密FEK,以FEK为密钥解密数据块,按原序组合在一起,形成eCryptfs格式的文件内容,将明文放入内存中以供读取。
写操作:eCryptfs把应用程序提供的,需要加密的文件内容划分为一页页数据块,调用系统函数随机生成FEK,(形成eCryptfs格式的文件内容)。再根据用户定义的口令生成EFEK加密FEK,组织成头部信息与以FEK为密钥加密后的数据块,以ext3格式一并存放至磁盘
2) eCryptfs 属于本地堆叠式加密文件系统的范畴
实验过程中,eCryptfs支持的加密方式,每种加密方式的加密块大小及使用密钥长度是多少显示如下图
3)挂载的概念
基于Unix的目录树结构,即由目录和文件构成的倒立的树形层次结构。
4)实验内容
a. eCryptfs安装
#sudo apt-get install ecryptfs-utils
安装完成后,查看如何使用ecryptfs 的命令:
#man ecryptfs
b. 使用eCryptfs挂载文件目录
$sudo mount -t ecryptfs real_path ecryptfs_mounted_path
-t:指定文件系统类型,这里我们使用ecryptfs文件系统
real_path:真实存放数据的地方
ecryptfs_mounted_path:指挂载位置(具体位置任意)
c. eCryptfs取消挂载:
$sudo umount -t ecryptfs ecryptfs_mounted_path
d.创建目录
#mkdir realdir
#mkdir mountdir
我们在主文件夹下新建两个文件夹 realdir,mountdir,使用 realdir作为文件真实目录,用 mountdir作为挂载目录
在mountdir目录中,创建文件file1,随意输入内容。
使用如下命令进行查看,比较不同
#cat realdir/file1
可以看到输出都是加了密的密文
#cat mountdir/file1
结果如图
在realdir目录中,创建文件file2,随意输入内容。
使用如下命令进行查看,比较不同。
#cat realdir/file2
#cat mountdir/file2
(如下图所示)
umount之前情况如图
umount之后该挂载点如下