EncFS
開發者 | Valient Gough |
---|---|
目前版本 | 1.9.5(2018年4月27日[1]) |
原始碼庫 | |
作業系統 | Linux、FreeBSD、MacOS[2]、Microsoft Windows(移植的"encfs4win"[3];還有一個面向MacOS和Microsoft Windows的移植Safe)及Android應用 |
類型 | 檔案系統, 加密 |
許可協定 | LGPL |
網站 | EncFS首頁 |
EncFS是一個基於FUSE的加密檔案系統,為自由軟件。通過它可以將任意目錄作為儲存空間來透明地加密並儲存檔案。[4] [5]
掛載一個EncFS檔案系統涉及到兩個目錄:源目錄和掛載點。掛載點中的每個檔案都是加密儲存在源目錄中的一個與之對應的檔案。掛載點中的檔案呈現未加密的樣子,對應源目錄中已加密的檔案。源目錄中會加密檔名。
檔案通過卷金鑰加密,卷金鑰可以儲存在加密的源目錄之內或之外。[6]有一個密碼機制用於解密該金鑰。
常見用途
- 在Linux中,作為eCryptfs的替代方案加密家目錄。
- 用來加密儲存到雲端儲存(Dropbox、Google Drive、OneDrive等)的檔案和資料夾。
- 為抽取式磁碟中的資料夾進行可攜式加密。
- 作為一個跨平台的資料夾加密機制。
- 可增加雙重身份驗證(2FA)來提高儲存安全性。例如,可以將EncFS用來加密數據的卷金鑰儲存在加密數據之外(如USB手指、網絡掛載點、光碟或雲端儲存中)[6],同時要求提供密碼來解密這個卷金鑰。
優勢
與其他磁碟加密軟件相比,EncFS因在主機上單獨儲存每個被加密的檔案而具有一些優勢。
跨平台
EncFS可在多個平台上使用,而eCryptfs與Linux內核繫結
Bitrot檢測
EncFS在底層檔案系統之上實現了數據腐爛(bitrot)檢測
可延伸儲存
EncFS不存在佔用固定大小的「卷」——加密的目錄佔用的空間隨着掛載點中的檔案增加而增加,也隨着檔案被刪除而縮小。
適用於檔案伺服器
EncFS的加密目錄可以位於普通的檔案伺服器上(通過NFS、SSHFS等),並且可以使用普通的檔案系統工具(例如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可使用若干種存在於系統中各加密庫內的加解密演算法。Blowfish和AES通常可用。
可以為支援「可變金鑰長度」的密碼演算法選擇金鑰長度(keySize)。
塊大小
每個檔案均以塊的形式加密,有選項控制這些塊的大小。每次讀取單個位元組時,必須解密包含它的整個塊。同樣,每次寫入都需要解密對應塊、更改內容並重新加密。
預設的塊大小1024(位元組)足以滿足大多數用途。
檔名編碼
源目錄中的檔名可以儲存為明文、加密塊或流模式加密。塊模式在一定程度上掩蓋了檔名長度,而流模式的檔名會儘可能短,這在某些檔案系統中可能節省一些儲存空間。
檔名IV鏈
啟用此選項後,加密檔名所用的初始化向量取自檔案的父目錄——這將使兩個同名但位於不同目錄的檔案具有不同的加密後檔名。
如果重新命名目錄,則其中包含的所有檔案和目錄都需要重新加密其檔名,這可能花費不少時間和資源。如果經常重新命名含有大量子專案的目錄,則應該禁用此選項。
每個檔案的初始化向量
啟用此選項後,每個檔案都使用一個隨機的8位元組初始化向量來加密,該向量儲存在源目錄的加密檔案中。如果禁用此選項,則每個檔案都使用相同的初始化向量來加密,可能使卷金鑰更容易被破解。
啟用此選項可加強檔案系統的安全性,但每個檔案會多佔用8個位元組。
外部IV鏈
使檔案數據的初始化向量衍生自檔名的初始化向量鏈。相同數據但不同檔名或目錄的檔案將加密成不同的樣子。
如此,此模式啟用時重新命名檔案需要檔案的隨機初始化向量被檔名初始化向量鏈中的更改抵消,或者重新編碼數據。 EncFS的作者選擇了前一種方法,因為快得多,尤其是對於大檔案。
檔名到IV頭部鏈
使編碼依賴於完整的路徑名。因此重新命名或移動檔案將需要重新編碼。不支援硬連結。
塊MAC頭部
儲存每個加密塊的校驗和,使EncFS能檢測到加密檔案的損壞或修改。校驗和 (blockMACBytes)為8個位元組,並可選擇向每個塊添加最多8個額外位元組的亂數據 (blockMACRandBytes),以防止相同未加密數據的兩個塊有相同的校驗和。因為必須在讀取數據(驗證完整性)與寫入數據(更新校驗和)時計算每個塊的校驗和,此選項會帶來大量CPU開銷。
參見
參考資料
- ^ Releases - vgough/encfs. [11 June 2018]. (原始內容存檔於2016-01-17) –透過GitHub.
- ^ Valient Gough. Valient Gough. [23 April 2018]. (原始內容存檔於2022-04-05).
- ^ encfs4win - an experimental project of porting encfs to the Windows world. [29 November 2013]. (原始內容存檔於2011-07-04).
- ^ 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).
- ^ Falko, Timme. Encrypt your Data with EncFS on Ubuntu 16.04. The Linux Foundation. 2016-05-06 [2017-04-13]. (原始內容存檔於2017-05-16).
- ^ 6.0 6.1 Gough, Valient. ENVIRONMENT VARIABLES. GitHub. 2016-12-26 [2017-05-07]. (原始內容存檔於2022-03-08) (英語).Gough, Valient (2016-12-26).
- ^ 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.
- ^ 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.
- ^ EncFS Directory Encryption Notes. [2022-03-08]. (原始內容存檔於2016-10-03).
- ^ EncFS Security Audit. [2022-03-08]. (原始內容存檔於2016-04-05).
- ^ EncFS 1.8 Announcement. [2022-03-08]. (原始內容存檔於2022-03-08).
外部連結
- Encfs manpage (頁面存檔備份,存於互聯網檔案館)
- Safe: another per-file implementation for Windows and Mac OS X, with no kernel mode driver (slower), but fully open source (頁面存檔備份,存於互聯網檔案館)
- Boxcryptor: Proprietary software based on EncFS for Windows, Android, and iOS (頁面存檔備份,存於互聯網檔案館)
- EncFSMP: Implementation that runs on Windows and Mac OS X (頁面存檔備份,存於互聯網檔案館)