Linux系统中的FBE实现方案和特点

linux系统fbe
从linux系统软件架构看,典型fde和fbe实现方案分布如下图,包括基于dm-crypt的软件fde方案、基于通用文件系统的fscrypt fbe方案、基于vfs的ecryptfs fbe方案,以及众多基于fuse的fbe方案。
前面章节已经简单介绍过基于dm-crypt的fde方案在ubuntu虚拟机上的验证情况,这里先简单介绍linux系统和内核的几种软件fbe实现方案和特点,后续章节会以ecryptfs为例做详细分析。
fuse-based
fuse即filesystem in userspace,用户态文件系统。fuse设计初衷就是为方便用户不修改编译内核的情况下,在user space实现定制文件系统。fuse架构原理和实现如下图,内核态fuse和用户态libfuse为app –》 vfs -》 用户文件系统链路服务,用户定制实现主要在user-level filesystem部分。
由于天然的灵活性,基于fuse实现fbe的方案有很多,例如gocryptfs、encfs、cryfs、securefs等。但是,fuse引入的多次系统调用和拷贝等开销,也导致基于fuse的fbe方案通常性能都不好。gocryptfs项目有一个stackable fbe各方案的对比分析,该分析数据也验证说明了fuse fbe方案的优缺点。
首先是各种stackable fbe方案介绍和整体特点,从数量上看,fuse fbe方案占据绝大多数,非fuse方案只有ecryptfs。
其次,相比于ecryptfs,fuse方案在性能上整体处于劣势。尽管gocryptfs在顺序读写上性能不错,但在其他测试如解压缩、md5计算、目录递归访问/删除等测试项上看,劣势也比较明显。这和我们在3.2章节对比fde和fbe、以及分析磁盘加密在软件栈不同层级实现的效果差异是一致的。
ecryptfs
ecryptfs衍生于cryptfs项目,早期方案和设计思想源自2005和2007的两篇论文,即《ecryptfs: an enterprise-class cryptographic filesystem for linux》和《ecryptfs: a stacked cryptographic filesystem》。ecryptfs项目分为内核部分和用户态部分,内核态代码于v2.6.19版本合入社区主线,用户态代码在软件包ecryptfs-utils中维护。
ecryptfs和上面介绍的fuse方案一样,也属于stackable fbe类型,故不依赖于os底层文件系统类型,可以堆叠在各种文件系统之上,灵活性很好。也支持对不同文件、目录加密,以及文件名加密。
当前ecryptfs项目开源社区活跃度不高,早期用户/产品也在迁移,但其方案和设计原理仍然值得深入学习分析。
fscrypt
fscrypt是在内核文件系统上实现的一个native fbe方案。fscrypt特性也包括内核态和用户态两部分,内核态部分是实现在fs/crypto目录的公用加解密模块,支持ext4、f2fs、ubifs文件系统集成使用。用户态工具fscrypt则实现各种命令行工具方便用户使用。
fscrypt作为fbe方案,支持不同目录/文件采用不同密钥,对于metadata,fscrypt支持文件名filename加密,其他metadata如timestamp、size、attribute等不加密。fscrypt最大的应用即android
采用的fbe方案,结合f2fs文件系统,对手机上的数据进行data at rest encryption保护。本文受限于篇幅,不做详细分析。

怎么把烧写到RAM程序修改成烧写到FLASH
基于CAN控制器SJA1000实现非智能适配卡的设计
PCB布局的关键:SW节点的电场和磁场?(4)
三星Note7失利,让LG G6捡了便宜,外形大曝光!
实现直线度测量的三种方法
Linux系统中的FBE实现方案和特点
焊接机器人编程入门与编程技巧介绍
开源的嵌入式实时Linux: XtimesLinux
2016年AR和VR市场总投资额高达23亿美元
什么是FTTN?
大疆工业级无人机产品将为行业带来效率提升变革
马云转让淘宝股权 筹划十年回归教育
这十大半导体技术真的会火起来吗?
电动拖把哪个牌子好?一个顶五个最实用!
如何在树莓派上运行Ubuntu
菜鸟总裁万霖:互联网进入下半场,物流是最典型会被升级的行业
Realme刚刚在印度推出了两个新的音频产品
科技老兵的旅行中的技术失误,泪流干了
Xilinx FPGA提供DDR4内存接口解决方案
高位码垛机,高位码垛机适合工业需求性逐步提高