Ecryptfs企业级加密文件系统 

https://www.ibm.com/developerworks/cn/linux/l-cn-ecryptfs/

https://www.linuxjournal.com/article/9400

内核源码:fs\ecryptfs

1、介绍

架构在在文件系统之上,VFS之下。


eCryptfs 采用 OpenPGP 的文件格式存放加密文件, 对称密钥加密算法以为单位进行加密/解密,因此 eCryptfs 将加密文件分成多个逻辑块,称为 extent。当读入一个 extent 中的任何部分的密文时,整个 extent 被读入 Page Cache,通过 Kernel Crypto API 被解密;当 extent 中的任何部分的明文数据被写回磁盘时,需要加密并写回整个 extent。

加密文件的头部存放元数据,包括元数据长度、标志位以及 EFEK 链,目前元数据的最小长度为 8192 字节



A.  加密写入

eCryptfs Layer 创建一个新文件时,Keystore 利用内核提供的随机函数创建一个 FEK;新文件关闭时,Keystore 和 eCryptfs Daemon 合作为每个授权用户创建相应 EFEK,存放在加密文件的头部元数据中。

B、解密读出

eCryptfs Layer 首次打开一个文件时,通过下层文件系统读取该文件的头部元数据,交与 Keystore 模块进行 EFEK(加密后的 FEK)的解密。






官网

2、安装

    sudo apt-get install ecryptfs-utils

    ecryptfs-add-passphrase $FNEK -

               输入:passphrase

               输出:计算出两组sig加到keyring,前一组加密文件内容,后一组加密文件名

               Inserted auth tok with sig [cbd6dc63028e5602] into the user session keyring
               Inserted auth tok with sig [e8d80a5db4e67d9e] into the user session keyring

               可获取写入Private.sig

     

     mount.ecryptfs_private

                通过文件(如Private.sig )得到上面的两组sig,  sig_fekek = sigs[0];  sig_fnek = sigs[1];

                通过参数得到其余参数,调用mount

                    ecryptfs_check_dev_ruid,

                    ecryptfs_cipher=%s,                                KEY_CIPHER

                    ecryptfs_key_bytes=%d,                          KEY_BYTES

                    ecryptfs_sig                                              sig_fekek                    

                    ecryptfs_fnek_                                          sigsig_fnek

     一些操作可常见脚本:ecryptfs-setup-private



https://blog.csdn.net/shenlan211314/article/details/6439573

https://blog.csdn.net/jy54264946/article/details/71336049

Logo

更多推荐