eCryptfs詳解
本章節(jié)我們先用簡(jiǎn)單用例驗(yàn)證eCryptfs加密效果特點(diǎn),使大家對(duì)方案有個(gè)整體感性認(rèn)識(shí),同時(shí)也會(huì)提供一個(gè)C版本用例作參考。其次對(duì)測(cè)試結(jié)果進(jìn)行初步分析,接著詳細(xì)分析eCryptfs方案架構(gòu)原理和核心機(jī)制,最后對(duì)關(guān)鍵業(yè)務(wù)流程代碼進(jìn)行簡(jiǎn)單梳理。
測(cè)試環(huán)境使用Ubuntu20.04虛擬機(jī),因Ubuntu系統(tǒng)默認(rèn)打開eCryptfs內(nèi)核配置(CONFIG_ECRYPT_FS=y),只需apt安裝用戶態(tài)工具ecryptfs-utils即可。
4.1、測(cè)試用例
下圖是一個(gè)腳本基礎(chǔ)測(cè)試用例。先創(chuàng)建test目錄和文件hello,之后使用 mount -t ecryptfs方式對(duì)test目錄進(jìn)行加密,為避免命令行交互,將所有加密參數(shù)(passwd、cipher、key size等)通過命令行-o傳遞。加密后在test目錄創(chuàng)建新文件hello_encrypted。最后umount取消目錄加密。
從第一個(gè)測(cè)試用例可以觀察到的現(xiàn)象/特性有:
1、執(zhí)行mount,寫入hello_encrypted文件內(nèi)容后可以正確訪問,但umount后則為密文。說(shuō)明eCryptfs作為堆疊加密文件系統(tǒng),是通過mount/unmount操作來(lái)開關(guān)使能的。功能打開時(shí),用戶讀寫操作是感知不到數(shù)據(jù)加解密過程的,即透明加密。
2、hello文件內(nèi)容在mount前寫入,在mount前后都能正確訪問(用例只測(cè)了讀操作,實(shí)際寫也可以)。說(shuō)明eCryptfs支持非加密文件和加密文件在一個(gè)目錄內(nèi)混合存儲(chǔ),并能正確訪問(實(shí)際操作強(qiáng)烈不建議,見下個(gè)用例)。
3、對(duì)于加密文件hello_encrypted,明文狀態(tài)下長(zhǎng)度為16 Bytes,加密狀態(tài)下為12KB,變化比較明顯。
如果對(duì)上述測(cè)試用例稍加改動(dòng),調(diào)整mount -t ecryptfs參數(shù),如改變passwd,取消no_sig_cache=y配置,打開文件名加密參數(shù)即ecryptfs_enable_filename_crypto=y,測(cè)試效果如下圖:
從第二個(gè)改動(dòng)后的用例可以觀察到的現(xiàn)象/特性有 :
4、ecryptfs支持文件名加密。因?yàn)槲募用苊荑€FNEK未在參數(shù)中指定,mount helper會(huì)提示/默認(rèn)使用文件內(nèi)容加密密鑰(即圖中fnek_sig和fs_sig相同,需說(shuō)明的是加密密鑰并非參數(shù)中的passwd,后續(xù)架構(gòu)和密鑰管理章節(jié)會(huì)說(shuō)明)。
5、雖然ecryptfs_passthrough特性仍打開,即允許加密和非加密文件共存,但與上一個(gè)用例效果不同。啟動(dòng)文件名加密并mount后,未加密文件hello無(wú)法在test中顯示,umount后又可正常訪問。兩個(gè)用例中passthrough特性在不同參數(shù)下表現(xiàn)不同,因此實(shí)際應(yīng)用中,強(qiáng)烈不建議加密和非加密文件在一個(gè)目錄混存。
另外補(bǔ)充一個(gè)現(xiàn)象/特性:
6、umount后,即加密的test目錄是可以直接傳輸/拷貝到其他主機(jī)/網(wǎng)絡(luò)進(jìn)行存儲(chǔ)備份的。其他用戶使用時(shí),只需用相同參數(shù)重新mount即可正確訪問。
關(guān)于用例中mount -t ecryptfs命令的相關(guān)參數(shù)匯總?cè)缦拢斍榭蓞⒖糾an ecryptfs手冊(cè)及ecryptfs-utils源碼。部分參數(shù)和意義會(huì)在架構(gòu)分析和密鑰管理章節(jié)進(jìn)一步說(shuō)明。
需要說(shuō)明的是,上述腳本用例的功能基本都可以用ecryptfs-utils提供接口API實(shí)現(xiàn)。下面是作者實(shí)現(xiàn)的一個(gè)C用例的部分代碼參考。因?yàn)镃程序需引用ecryptfs.h頭文件并使用相關(guān)API函數(shù),需要安裝libecryptfs-dev軟件包,并在編譯時(shí)指定-lecryptfs鏈接對(duì)應(yīng)庫(kù)文件。
C用例中需要注意的是,mount操作前必須進(jìn)行ecryptfs_add_passphrase_key_to_keyring,即將passphrase轉(zhuǎn)換成對(duì)應(yīng)的key(實(shí)際為FEKEK,見后續(xù)分析),并注冊(cè)到內(nèi)核keyring,同時(shí)返回一個(gè)key_sig給用戶后續(xù)使用。
4.2、結(jié)果分析
從上節(jié)測(cè)試結(jié)果中,匯總相關(guān)測(cè)試項(xiàng)以及eCryptfs效果特性如下表,需要說(shuō)明的有兩點(diǎn):
一是對(duì)test目錄重復(fù)mount且每次使用不同密鑰的效果。從下圖用例看,對(duì)應(yīng)passwd mount后生成的文件,只能在該mount context中正確訪問。這個(gè)用例僅為簡(jiǎn)單說(shuō)明,在參數(shù)變化情況下,例如文件名加密,情況可能更復(fù)雜和不確定,因此也不建議使用。
二是文件加密后大小變化問題,這個(gè)原因在于eCryptfs的方案本身設(shè)計(jì)。
文檔《eCryptfs v0.1 Design Document》和2007年論文《eCryptfs: a Stacked Cryptographic
Filesystem》。從中可看出加密文件格式會(huì)多增加一個(gè)header信息(預(yù)留一個(gè)page)。對(duì)于文件內(nèi)容則是按頁(yè)分塊加密。為了綜合性能考慮,故使文件大小做到page對(duì)齊,最小12KB。
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5627瀏覽量
128291 -
Linux
+關(guān)注
關(guān)注
87文章
11457瀏覽量
212772 -
磁盤
+關(guān)注
關(guān)注
1文章
388瀏覽量
25651
發(fā)布評(píng)論請(qǐng)先 登錄
基于UML的生成場(chǎng)景測(cè)試用例研究
手機(jī)硬件測(cè)試用例
基于跨平臺(tái)系統(tǒng)中測(cè)試用例復(fù)用的解決方法

基于DSEA的弱變異測(cè)試用例集生成方法
基于二分K-means的測(cè)試用例集約簡(jiǎn)方法

數(shù)據(jù)測(cè)試:輸入數(shù)據(jù)的設(shè)計(jì)方法和測(cè)試用例設(shè)計(jì)方法
數(shù)據(jù)測(cè)試:代替測(cè)試用例的檢查表
測(cè)試用例的管理 介紹測(cè)試用例的幾種管理方法

測(cè)試用例質(zhì)量的重要性

用例篇 | 單元測(cè)試用例復(fù)用到集成測(cè)試?Testlet Library來(lái)助力!(上)

FDE磁盤加密技術(shù)是什么

eCryptfs整體架構(gòu)和核心加解密機(jī)制介紹

Linux內(nèi)核安全eCryptfs密鑰管理

評(píng)論