Alvin's Blog 这里记录着我的学习之路

使用fscrypt加密文件

2018-10-10
Alvin Zhu

为了保护电脑中的重要文件,需要将其加密,以防止重要资料泄露。类似用户登陆密码这些是没有用的,攻击者也许无法登陆你的电脑,但是可以使用U盘启动,直接看你硬盘上面的文件,甚至直接把硬盘盗走。

那么如何应对这种情况呢?

通常有以下几种方案。

Windows NTFS EFS

就是NTFS文件系统自带的加密,右键设置文件属性,加密即可。是一种基于文件和目录的加密方案。很灵活,速度比全盘加密略慢。主要是够灵活,安全性也可以,目前是我在Windows下使用的方案。

Windows Bitlocker

全盘加密方案,加密整个硬盘,需要TPM芯片,当然也可以修改组策略来强制使用密码或证书。如果不使用TPM芯片,每次开机都要输入密码或者插入存有证书的U盘,用起来就不够方便了。TPM芯片据说是留有后门的,不过一般人用也不影响。

Linux LUKS

类似Bitlocker的全盘加密,但是不如Bitlocker使用起来方便。虽然也支持和TPM配合使用,但是Linux对TPM支持有限,不是开箱即用。

Linux eCryptfs

类似EFS,优点是任何文件系统都能用,但是缺乏维护,在比较新的系统上,比如Ubuntu18.04有BUG,已经快要被淘汰了。

跨平台 VeraCrypt

类似Bitlocker,功能与操作系统的集成度不如Bitlocker。

本文主要介绍的是另外一种方案:

fscrypt

这是一个Linux filesystem encryption的管理工具。用起来类似于Windows的EFS,方便灵活,不依赖TPM芯片。

以下是在Ubuntu 18.04上的配置方法。

前提条件:

  • 必须是ext4文件系统
  • 有单独的/boot分区。
  • 内核的 page size (执行 getconf PAGE_SIZE查看) 和文件系统的 block size (执行 tune2fs -l /dev/device | grep 'Block size'查看) 必须相同(Ubuntu 18.04 默认也是)
  • 内核版本4.0以上(Ubuntu 18.04是)

安装

sudo apt-get install fscrypt libpam-fscrypt

修改/etc/pam.d/systemd-user,在对应位置加上中间那一行pam_keyinit.so

session  required pam_loginuid.so
session optional pam_keyinit.so force revoke
session  required pam_limits.so

配置

#开启文件系统加密支持
tune2fs -O encrypt /dev/device
#初始化fscrypt配置文件
sudo fscrypt setup
#可能需要root,启用加密
fscrypt setup /mnt/disk
#创建要加密的文件夹
mkdir /mnt/disk/dir1
#加密文件夹
fscrypt encrypt /mnt/disk/dir1

按照提示操作,选第一项Your login passphrase (pam_passphrase)可以实现登陆自动解密。


评论

目录