FBE文件加密
简述
本文
X5-FBE 和 FDE 类似,在
不同
| 缩写 | 全称 |
|---|---|
| FBE | File base encryption |
X5-FBE使用方法
X5-FBE 在 Kernel 层
基于 fscrypt,代码 所在 路径 为 kernel/fs/crypto
Kernel 中要kernel/arch/arm64/configs,地瓜 X5-evb 已经
CONFIG_FS_ENCRYPTION=y
在
用户 层 基于 开源 工具fscryptctl,V1.0.0
这个
root@buildroot:~# fscryptctl -v
v1.0.0
地瓜 X5 平台
确保
目标 分区 已经 开encryp功能
比如/userdata 下
root@buildroot:~# tune2fs -O encrypt /dev/block/platform/by-name/userdata
tune2fs 1.46.5 (30-Dec-2021)
root@buildroot:~# tune2fs -l /dev/block/platform/by-name/userdata | grep -i "Filesystem features"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg encrypt sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
FBE 默认
使用 Kernel 提供 的 基于 CPU 的 加解密 算法
fscryptctl 中AES-256-CTS,对应AES-256-XTS ,要
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_XTS=y
基于外部密钥
#初始化FBE
tune2fs -O encrypt /dev/block/platform/by-name/userdata
#生成密钥
dd if=/dev/random of=/userdata/keyfile bs=1 count=32
mkdir -p /userdata/fbe
cd /userdata/fbe/
#将密钥应用到文件夹
fscryptctl add_key . < /userdata/keyfile > /userdata/keyid
#设置文件夹策略
fscryptctl set_policy $(cat /userdata/keyid) .
echo "test" > test.txt;
cat test.txt
#删除对应密钥
fscryptctl remove_key $(cat /userdata/keyid) .
cat test.txt
基于X5派生密钥
#初始化FBE
tune2fs -O encrypt /dev/block/platform/by-name/userdata
mkdir -p /userdata/fbe
cd /userdata/fbe/
#将密钥应用到文件夹
getdmkey --km | xxd -r -p | fscryptctl add_key . > /userdata/keyid
#设置文件夹策略
fscryptctl set_policy $(cat /userdata/keyid) .
echo "test" > test.txt;
cat test.txt
#删除对应密钥
fscryptctl remove_key $(cat /userdata/keyid) .
cat test.txt