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文章
11335瀏覽量
210086 -
磁盤
+關注
關注
1文章
379瀏覽量
25238 -
虛擬機
+關注
關注
1文章
919瀏覽量
28341
發布評論請先 登錄
相關推薦
評論