EncFS是一個基於FUSE加密文件系統英語cryptographic filesystem,為自由軟件。通過它可以將任意目錄作為存儲空間來透明地加密並存儲文件。[4] [5]

EncFS
開發者Valient Gough
當前版本1.9.5(2018年4月27日,​6年前​(2018-04-27[1]
源代碼庫 編輯維基數據鏈接
操作系統LinuxFreeBSDMacOS[2]Microsoft Windows移植的"encfs4win"[3];還有一個面向MacOSMicrosoft Windows的移植Safe)及Android應用
類型文件系統, 加密
許可協議LGPL
網站EncFS主頁

掛載一個EncFS文件系統涉及到兩個目錄:源目錄和掛載點。掛載點中的每個文件都是加密存儲在源目錄中的一個與之對應的文件。掛載點中的文件呈現未加密的樣子,對應源目錄中已加密的文件。源目錄中會加密文件名

文件通過卷密鑰加密,卷密鑰可以存儲在加密的源目錄之內或之外。[6]有一個密碼機制用於解密該密鑰。

常見用途

優勢

與其他磁盤加密軟件英語disk encryption software相比,EncFS因在主機上單獨存儲每個被加密的文件而具有一些優勢。

跨平台

EncFS可在多個平台上使用,而eCryptfsLinux內核綁定

Bitrot檢測

EncFS在底層文件系統之上實現了數據腐爛英語Data rot(bitrot)檢測

可擴展存儲

EncFS不存在占用固定大小的「」——加密的目錄占用的空間隨着掛載點中的文件增加而增加,也隨着文件被刪除而縮小。

適用於文件服務器

EncFS的加密目錄可以位於普通的文件服務器上(通過NFSSSHFS等),並且可以使用普通的文件系統工具(例如Rsync)高效地進行鏡像和備份。

跨物理設備

掛載點中的某些目錄可能存在於其他的物理設備上。[需要解釋]

更快的備份

文件同步、雲存儲等備份軟件可以只備份源目錄中已變更的文件。

抗損壞

數據損壞發生時,更不易波及多個文件。損壞也更可控,可能通過文件系統級別的維護工具來修復某些數據損壞。磁盤加密系統遭遇數據異常損壞時可能遭遇更多意外情況。[來源請求]

優化

因為加密的文件仍基於底層文件系統來存儲,某些操作系統優化機制仍然奏效,例如傳遞Trim命令來幫助提升固態硬盤的性能。不過dm-crypt也支持這一點[來源請求]

隨機文件訪問

支持文件的隨機訪問,無需解密整個被加密的卷。[來源請求]

不足

EncFS也存在一些缺點。

兼容性

掛載的EncFS目錄與容納源目錄的文件系統享有相同的能力與限制。

不支持長文件名

因加密原因,EncFS產生的加密文件的文件名會比原始文件名長。因此,EncFS不能存儲長度接近文件系統的文件名長度上限的文件名。大多數文件系統的一般文件名限制為255個字節,這種情況下EncFS最多支持190個字節的文件名。[7] [8]

一般性安全隱患

儘管文件名和文件數據被加密,但任何有權訪問源目錄的人都可看到加密的文件系統內有多少文件、文件的權限、文件的大致大小,以及上次訪問和上次修改文件的時間。[9]

EncFS 1.7安全問題

2014年2月進行的付費安全審計中發現了多個潛在的漏洞。給出的結論是:[10]

EncFS is probably safe as long as the adversary only gets one copy of the ciphertext and nothing more. EncFS is not safe if the adversary has the opportunity to see two or more snapshots of the ciphertext at different times. EncFS attempts to protect files from malicious modification, but there are serious problems with this feature.

如果對手只能看到一版被加密的內容,EncFS可能是安全的。如果對手能看到密文在不同時間的兩版或更多版本,則EncFS不安全。EncFS在嘗試避免文件免遭惡意修改,但該功能存在嚴重問題。

EncFS 1.8安全問題

EncFS 1.8的公告包括數項基礎設計變更,以回應上次的審計中提出的安全問題。儘管如此,這些安全漏洞仍受到關注。 [11]

文件系統選項

在新建EncFS卷時,有數個用來自定義文件系統的選項,以滿足不同需求。

密碼算法

EncFS可使用若干種存在於系統中各加密庫內的加解密算法。BlowfishAES通常可用。

可以為支持「可變密鑰長度」的密碼算法選擇密鑰長度(keySize)。

塊大小

每個文件均以塊的形式加密,有選項控制這些塊的大小。每次讀取單個字節時,必須解密包含它的整個塊。同樣,每次寫入都需要解密對應塊、更改內容並重新加密。

默認的塊大小1024(字節)足以滿足大多數用途。

文件名編碼

源目錄中的文件名可以存儲為明文、加密塊或流模式加密。塊模式在一定程度上掩蓋了文件名長度,而流模式的文件名會儘可能短,這在某些文件系統中可能節省一些存儲空間。

文件名IV鏈

啟用此選項後,加密文件名所用的初始化向量取自文件的父目錄——這將使兩個同名但位於不同目錄的文件具有不同的加密後文件名。

如果重命名目錄,則其中包含的所有文件和目錄都需要重新加密其文件名,這可能花費不少時間和資源。如果經常重命名含有大量子項目的目錄,則應該禁用此選項。

每個文件的初始化向量

啟用此選項後,每個文件都使用一個隨機的8字節初始化向量來加密,該向量存儲在源目錄的加密文件中。如果禁用此選項,則每個文件都使用相同的初始化向量來加密,可能使卷密鑰更容易被破解。

啟用此選項可加強文件系統的安全性,但每個文件會多占用8個字節。

外部IV鏈

使文件數據的初始化向量派生自文件名的初始化向量鏈。相同數據但不同文件名或目錄的文件將加密成不同的樣子。

如此,此模式啟用時重命名文件需要文件的隨機初始化向量被文件名初始化向量鏈中的更改抵消,或者重新編碼數據。 EncFS的作者選擇了前一種方法,因為快得多,尤其是對於大文件。

文件名到IV頭部鏈

使編碼依賴於完整的路徑名。因此重命名或移動文件將需要重新編碼。不支持硬鏈接。

塊MAC頭部

存儲每個加密塊的校驗和,使EncFS能檢測到加密文件的損壞或修改。校驗和 (blockMACBytes)為8個字節,並可選擇向每個塊添加最多8個額外字節的隨機數據 (blockMACRandBytes),以防止相同未加密數據的兩個塊有相同的校驗和。因為必須在讀取數據(驗證完整性)與寫入數據(更新校驗和)時計算每個塊的校驗和,此選項會帶來大量CPU開銷。

參見

參考資料

  1. ^ Releases - vgough/encfs. [11 June 2018]. (原始內容存檔於2016-01-17) –透過GitHub. 
  2. ^ Valient Gough. Valient Gough. [23 April 2018]. (原始內容存檔於2022-04-05). 
  3. ^ encfs4win - an experimental project of porting encfs to the Windows world. [29 November 2013]. (原始內容存檔於2011-07-04). 
  4. ^ Falko, Timme. How to Encrypt your Data with EncFS on Debian 8 (Jessie). The Linux Foundation. 2017-01-14 [2017-04-13]. (原始內容存檔於2017-05-16). 
  5. ^ Falko, Timme. Encrypt your Data with EncFS on Ubuntu 16.04. The Linux Foundation. 2016-05-06 [2017-04-13]. (原始內容存檔於2017-05-16). 
  6. ^ 6.0 6.1 Gough, Valient. ENVIRONMENT VARIABLES. GitHub. 2016-12-26 [2017-05-07]. (原始內容存檔於2022-03-08) (英語). Gough, Valient (2016-12-26).
  7. ^ Issue #7 - alternative filename storage for very long filenames. github.com. 2014-08-22 [2016-01-27]. (原始內容存檔於2022-03-08). Long filenames can exceed the filesystem limits after encryption & encoding. 
  8. ^ Manpage for enfs.1. manpages.ubuntu.com. Ubuntu. [2016-01-27]. (原始內容存檔於2016-02-03). If your underlying filesystem limits you to N characters in a filename, then EncFS will limit you to approximately 3*(N-2)/4. For example if the host filesystem limits to 256 characters, then EncFS will be limited to 190 character filenames. This is because encrypted filenames are always longer than plaintext filenames. 
  9. ^ EncFS Directory Encryption Notes. [2022-03-08]. (原始內容存檔於2016-10-03). 
  10. ^ EncFS Security Audit. [2022-03-08]. (原始內容存檔於2016-04-05). 
  11. ^ EncFS 1.8 Announcement. [2022-03-08]. (原始內容存檔於2022-03-08). 

外部連結