滴滴云上使用 eCryptfs 加密数据

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

请使用浏览器的分享功能分享到微信等