1. eCryptfs 简介
eCryptfs 是在 Linux kernel 实现的一个加密文件系统,在 Linux kernel 2.6.19 版本收纳入官方 Linux kernel。它采用堆叠式的设计思想,逻辑上位于 VFS 和传统文件系统之间。用户应用程序对传统文件系统的读写操作,经过系统调用通过 VFS 首先被 eCryptfs 截获,eCryptfs 对文件数据进行加解密的操作,再转发给传统文件系统,为应用提供透明、动态、高效的加密功能。
eCryptfs 对每个文件采用不同的文件加密密钥 ( File Encryption Key, FEK ),文件加密算法推荐使用 AES-128。FEK 不能以明文的形式存放,eCryptfs 使用用户提供的口令(Passphrase)、非对称密钥算法(如 RSA 算法)或 TPM(Trusted Platform Module)的公钥来加密保护 FEK。
例如,当使用用户口令的时候,口令先经 hash 函数处理,再做为密钥加密 FEK。口令/公钥称为文件加密密钥加密密钥(File Encryption Key Encryption Key,FEFEK),加密后的 FEK 则称为加密文件密钥(Encrypted File Encryption Key,EFEK )。如果一个文件被多个授权用户访问,则有多份 EFEK。 此外,eCryptfs 还支持文件名的加密。
2. eCryptfs 安装
CentOS
以 CentOS-7.3 的 滴滴云 的 DC2 云主机为例。
查看 eCryptfs 用户态的工具是否安装:
[ dc2 - user @ didiyun ~ ] $ yum list installed | grep ecryptfs
如果没有安装,则运行以下命令安装:
[ dc2 - user @ didiyun ~ ] $ sudo yum install ecryptfs - utils
屏幕输出如下:
键入’y’回车,屏幕输出如下:
再检查安装状态:
[ dc2 - user @ didiyun ~ ] $ yum list installed | grep ecryptfs - utils
ecryptfs - utils . x86 _ 64 111 - 5.el7 @ epel
工具已正确安装。
Ubuntu
以 Ubuntu-16.04 的 滴滴云 的 DC2 云主机为例。
查看 eCryptfs 用户态的工具是否安装:
dc2 - user @ didiyun : ~ $ dpkg -- status ecryptfs - utils
dpkg - query : package 'ecryptfs-utils' is not installed and no information is available
如果没有安装,则运行以下命令安装:
直接回车即可:
再检查安装状态:
工具已正确安装。
3. eCryptfs 使用
创建挂载口令,首先输入用户的登录口令,然后输入两次挂载口令:
创建希望加密的文件夹:
dc2 - user @ didiyun : ~ $ mkdir private
设置文件夹权限不允许其他人访问:
dc2 - user @ didiyun : ~ $ chmod 700 private
挂载加密文件夹,输入挂载口令:
dc2 - user @ didiyun : ~ $ sudo mount - t ecryptfs private private
Passphrase :
然后依次需要选择加密算法,密钥长度,是否允许读写非 eCryptfs 文件,是否文件名加密,可全部直接回车为默认:
键入两个 yes :
eCryptfs 挂载成功,进入 eCryptfs 目录:
dc2 - user @ didiyun : ~ $ cd private
创建一个文件:
卸载 eCryptfs 目录:
dc2 - user @ didiyun : ~ / private $ cd . .
dc2 - user @ didiyun : ~ $ sudo umount private
查看文件,内容显示密文:
重新挂载 eCryptfs,输入相关参数:
查看文件,显示文件的正确内容:
dc2 - user @ didiyun : ~ $ cat private / tes
this is a ecryptfs test file
eCryptfs 详细使用参数:
[ dc2 - user @ didiyun ~ ] $ man ecryptfs