0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

麦辣鸡腿堡 来源:OPPO内核工匠 作者:m0rgan 2023-11-29 11:23 次阅读

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保护。本文受限于篇幅,不做详细分析。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206735
  • 磁盘
    +关注

    关注

    1

    文章

    338

    浏览量

    24882
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27376
收藏 人收藏

    评论

    相关推荐

    Linux系统特点

    内核,并且使用GNU 工程各种工具和数据库的操作系统Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统的所有都归结为一个文件,
    发表于 01-16 08:55

    Linux系统特点

    内核,并且使用GNU 工程各种工具和数据库的操作系统Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统的所有都归结为一个文件,
    发表于 08-01 09:52

    Linux系统核心的定制怎么实现

    本文就如何对Linux系统的核心实现定制进行论述,主要内容包括Linux内核部分和文件系统系统
    发表于 03-05 07:44

    如何在嵌入式操作系统ARM Linux实现ZLG7290的驱动?

    I2C总线接口的工作模式和特点如何在嵌入式操作系统ARM Linux实现ZLG7290的驱动?I2C总线在传送数据过程中有哪几种信号?
    发表于 04-23 06:00

    求分享一种Linux嵌入式视频直播监控系统的设计和实现方案

    本文介绍了一种Linux嵌入式视频直播监控系统的设计和实现方案
    发表于 06-03 07:00

    基于LINUX的开放式结构数控系统有哪些特点

    基于LINUX的开放式结构数控系统是由哪些部分组成的?基于LINUX的开放式结构数控系统有哪些特点
    发表于 10-11 09:15

    什么是Linux系统?为什么要使用Linux系统

    文章目录二、关于Linux系统1,什么是Linux系统?2,为什么要使用Linux系统?3,
    发表于 03-02 06:59

    逐一介绍Linux各个系统特点以及应用场景

    支持 Ubuntu 18.04 与 Ubuntu 20.04 版本。**Firefly Ubuntu 特点如下:**Firefly Ubuntu 应用场景:如果您不是长期进行 Linux 系统应用开发
    发表于 08-02 16:42

    基于嵌入式Linux的PMP系统设计与实现

    本文介绍了以TI 的DM320 为主芯片,基于嵌入式Linux 的PMP 系统的设计与实现。设计实现包括软件和硬件两个部分,其中重点在软件部分。采用本设计
    发表于 04-24 10:04 12次下载

    基于嵌入式Linux系统的LCD驱动实现Implementa

    本文首先介绍Linux 系统设备驱动的特点,然后以S3C2410 平台为硬件开发环境,实现Linux2.6.14
    发表于 05-26 09:55 28次下载

    基于Linux的RFID交互系统的设计与实现

    为了让射频识别的用户可以根据各自的权限进行相应的操作,本文提出了一款基于Linux的RFID交互系统的设计实现方案。该系统的ID识别模块通过
    发表于 10-10 14:39 67次下载
    基于<b class='flag-5'>Linux</b>的RFID交互<b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    通过安装该Linux-HA软件可以实现Linux双机系统的高可用性解决方案

    简介通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案实现双机
    的头像 发表于 12-20 14:24 7217次阅读
    通过安装该<b class='flag-5'>Linux</b>-HA软件可以<b class='flag-5'>实现</b><b class='flag-5'>Linux</b>双机<b class='flag-5'>系统</b>的高可用性解决<b class='flag-5'>方案</b>

    linux系统特点

    本视频主要详细介绍了linux系统特点,分别有开放性、多用户、多任务、良好的用户界面、设备独立性。
    的头像 发表于 03-01 16:22 5451次阅读

    基于Linux的RFID交互系统的设计实现方案

    电子发烧友网站提供《基于Linux的RFID交互系统的设计实现方案.pdf》资料免费下载
    发表于 10-23 10:32 0次下载
    基于<b class='flag-5'>Linux</b>的RFID交互<b class='flag-5'>系统</b>的设计<b class='flag-5'>实现</b><b class='flag-5'>方案</b>

    FBE是什么 FDE和FBE有什么区别

    File-Based Encryption,又称Filesystem-Level Encryption,文件系统加密。相比于FBE,第二个名字更能体现方案基于文件系统的技术
    的头像 发表于 11-29 11:08 1776次阅读
    <b class='flag-5'>FBE</b>是什么 FDE和<b class='flag-5'>FBE</b>有什么区别