Debian11.5使用eCryptfs构建安全加密存储应用

1. ecryptfs 的安装

apt update
apt install ecryptfs-utils

2. 首次使用ecryptfs,需要新建一个加密文件夹,并对其进行加密。在此过程中,设定和生成加密密码等信息

2.1.具体操作过程:

使用root账户执行命令 #:mount -t ecryptfs 加密文件夹  解密后显示文件夹

注释:也可以理解为 : ecryptfs 真实数据存储文件夹(以后会被加密)   解密后的可操作明文文件夹(这个是处于虚拟状态的)

2.2.首次进行加密操作的交互过程:

0.选择密码生成方式,输入密码/随机密码 1.首先会要求输入密码;2.然后选择加密方式、加密位数、是否允许使用明文、是否对文件名也进行加密;3.提示你的密码的标识;4.确定是否继续挂载过程(输入yes,完成首次加密);5.选择是否将密码标识写入 /root/.ecryptfs/sig-cache.txt 这个文件中(输入yes)。

这样,当我们在解密后显示文件夹中写入信息,就相当于ecryptc自动进行了加密操作,并将加密数据存储在了真实数据文件夹。

所以说,使用 mount -t ecryptfs ,实际上是建立了加密数据和可操作数据间的通道,我们在可操作数据中进行读写,ecryptfs自动进行加解密过程。  当我们umount 后,实际上是关闭了通道,进留下了加密后的数据存储在真实的硬盘上。 可操作数据实际上是处在一个临时的vfs(虚拟文件系统)上的。

root@NAS2:/home# mount -t ecryptfs .secret/ using/
Select key type to use for newly created files:
 1) passphrase
 2) tspi
Selection: 1
Passphrase:  # 注意,输入密码时不会有任何显示
Select cipher:
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32
 2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: 4
Select key bytes:
 1) 16
 2) 32
Selection [16]: 2
Enable plaintext passthrough (y/n) [n]: n
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [0654e4c44517b921]:
Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=0654e4c44517b921
  ecryptfs_key_bytes=32
  ecryptfs_cipher=twofish
  ecryptfs_sig=0654e4c44517b921
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.

Would you like to proceed with the mount (yes/no)? : yes
Would you like to append sig [0654e4c44517b921] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs

 注:tspi = Trusted Computing Group (TCG) Transport Service Provider Interface (TSPI)

2.3. 关闭加密解密通道,保护真实数据

umount   解密后显示文件夹

2.4.再次打开通道,重复之前的操作即可,注意密码和选择要和第一次保持一致,否则就相当于对加密后的数据再次进行了一次加密。

3. 通过含有密码的文件,快速挂载

3.0 显示加密序列号

cat /root/.ecryptfs/sig-cache.txt
5c116acdf1d0dd89

# 复制下显示的  字符串的内容

3.1 生成root根目录下的配置文件

vim /root/.ecryptfsrc

## 内容如下,保持和手动设置加密方式时的内容一致
ecryptfs_sig=5c116acdf1d0dd89
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=y

 3.2 挂载时指定含有密码的文件

mount -t ecryptfs -o key=passphrase:passphrase_passwd_file=/mnt/usb/file.txt /secret /secret

4. 设置在重启后自动mount 打开加解密通道

ecryptfs-setup-private 配置工具

自动挂载加密过的数据

这里的例子是采用U盘来存储密码短语的方式来实现

3.1 首先挂载U盘

# mkdir /mnt/usb
# mount /dev/sdb1 /mnt/usb/

3.2 查看系统生成的加密后的密码

cat /root/.ecryptfs/sig-cache.txt
## 类似的显示如下:

5c116acdf1d0dd89

3.3 在u盘中新建一个存储加密的密码初始内容的文档

touch /mnt/usb/passwd.txt
echo "Kmima13578" >> /mnt/usb/passwd.txt

3.4 编辑root目录下的必要配置文件

vim /root/.ecryptfsrc

## 增加如下内容。重点是指定 passwd.txt 文件的位置,指定 sig-cache.txt 文件的内容

key=passphrase:passphrase_passwd_file=/mnt/usb/passwd.txt ecryptfs_sig=5c116acdf1d0dd89 ecryptfs_cipher=aes ecryptfs_key_bytes=16 ecryptfs_passthrough=n ecryptfs_enable_filename_crypto=n

3.5 配置  /etc/fstab 文件

## 添加的内容类似以下:

/dev/sdb1 /mnt/usb ext3 ro 0 0 /home/sk/ecrypted /home/sk/unecrypted ecryptfs defaults 0 0

## 注意! sdb1这个U盘要在加密分区挂在前启动,所以上述内容应当放在加密应用分区的配置内容的前一行。

 

猜你喜欢

转载自blog.csdn.net/lggirls/article/details/128150485