0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

磁盤eCryptfs加密測試用例

麥辣雞腿堡 ? 來源:OPPO內核工匠 ? 作者:m0rgan ? 2023-11-29 11:27 ? 次閱讀

eCryptfs詳解

本章節(jié)我們先用簡單用例驗證eCryptfs加密效果特點,使大家對方案有個整體感性認識,同時也會提供一個C版本用例作參考。其次對測試結果進行初步分析,接著詳細分析eCryptfs方案架構原理和核心機制,最后對關鍵業(yè)務流程代碼進行簡單梳理。

測試環(huán)境使用Ubuntu20.04虛擬機,因Ubuntu系統(tǒng)默認打開eCryptfs內核配置(CONFIG_ECRYPT_FS=y),只需apt安裝用戶態(tài)工具ecryptfs-utils即可。

4.1、測試用例

下圖是一個腳本基礎測試用例。先創(chuàng)建test目錄和文件hello,之后使用 mount -t ecryptfs方式對test目錄進行加密,為避免命令行交互,將所有加密參數(passwd、cipher、key size等)通過命令行-o傳遞。加密后在test目錄創(chuàng)建新文件hello_encrypted。最后umount取消目錄加密。

圖片

圖片

從第一個測試用例可以觀察到的現象/特性有:

1、執(zhí)行mount,寫入hello_encrypted文件內容后可以正確訪問,但umount后則為密文。說明eCryptfs作為堆疊加密文件系統(tǒng),是通過mount/unmount操作來開關使能的。功能打開時,用戶讀寫操作是感知不到數據加解密過程的,即透明加密。

2、hello文件內容在mount前寫入,在mount前后都能正確訪問(用例只測了讀操作,實際寫也可以)。說明eCryptfs支持非加密文件和加密文件在一個目錄內混合存儲,并能正確訪問(實際操作強烈不建議,見下個用例)。

3、對于加密文件hello_encrypted,明文狀態(tài)下長度為16 Bytes,加密狀態(tài)下為12KB,變化比較明顯。

如果對上述測試用例稍加改動,調整mount -t ecryptfs參數,如改變passwd,取消no_sig_cache=y配置,打開文件名加密參數即ecryptfs_enable_filename_crypto=y,測試效果如下圖:

圖片

從第二個改動后的用例可以觀察到的現象/特性有 :

4、ecryptfs支持文件名加密。因為文件名加密密鑰FNEK未在參數中指定,mount helper會提示/默認使用文件內容加密密鑰(即圖中fnek_sig和fs_sig相同,需說明的是加密密鑰并非參數中的passwd,后續(xù)架構和密鑰管理章節(jié)會說明)。

5、雖然ecryptfs_passthrough特性仍打開,即允許加密和非加密文件共存,但與上一個用例效果不同。啟動文件名加密并mount后,未加密文件hello無法在test中顯示,umount后又可正常訪問。兩個用例中passthrough特性在不同參數下表現不同,因此實際應用中,強烈不建議加密和非加密文件在一個目錄混存。

圖片

圖片

另外補充一個現象/特性:

6、umount后,即加密的test目錄是可以直接傳輸/拷貝到其他主機/網絡進行存儲備份的。其他用戶使用時,只需用相同參數重新mount即可正確訪問。

關于用例中mount -t ecryptfs命令的相關參數匯總如下,詳情可參考man ecryptfs手冊及ecryptfs-utils源碼。部分參數和意義會在架構分析和密鑰管理章節(jié)進一步說明。

圖片

需要說明的是,上述腳本用例的功能基本都可以用ecryptfs-utils提供接口API實現。下面是作者實現的一個C用例的部分代碼參考。因為C程序需引用ecryptfs.h頭文件并使用相關API函數,需要安裝libecryptfs-dev軟件包,并在編譯時指定-lecryptfs鏈接對應庫文件。

C用例中需要注意的是,mount操作前必須進行ecryptfs_add_passphrase_key_to_keyring,即將passphrase轉換成對應的key(實際為FEKEK,見后續(xù)分析),并注冊到內核keyring,同時返回一個key_sig給用戶后續(xù)使用。

圖片

4.2、結果分析

從上節(jié)測試結果中,匯總相關測試項以及eCryptfs效果特性如下表,需要說明的有兩點:

圖片

一是對test目錄重復mount且每次使用不同密鑰的效果。從下圖用例看,對應passwd mount后生成的文件,只能在該mount context中正確訪問。這個用例僅為簡單說明,在參數變化情況下,例如文件名加密,情況可能更復雜和不確定,因此也不建議使用。圖片

二是文件加密后大小變化問題,這個原因在于eCryptfs的方案本身設計。

文檔《eCryptfs v0.1 Design Document》和2007年論文《eCryptfs: a Stacked Cryptographic
Filesystem》。從中可看出加密文件格式會多增加一個header信息(預留一個page)。對于文件內容則是按頁分塊加密。為了綜合性能考慮,故使文件大小做到page對齊,最小12KB。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 測試
    +關注

    關注

    8

    文章

    5031

    瀏覽量

    126218
  • Linux
    +關注

    關注

    87

    文章

    11161

    瀏覽量

    208459
  • 磁盤
    +關注

    關注

    1

    文章

    355

    瀏覽量

    25138
收藏 人收藏

    評論

    相關推薦

    基于UML的生成場景測試用研究

    使用UML生成場景測試用,有利于測試者設計測試用。使用UML的類圖、狀態(tài)圖和順序圖來說明DHCP實例的場景
    發(fā)表于 03-31 09:49 ?15次下載

    手機硬件測試用

    手機硬件測試用 1.RF 測試 2.BB測試 3.Audio 測試 4.EMC測試
    發(fā)表于 04-28 16:59 ?55次下載

    基于跨平臺系統(tǒng)中測試用復用的解決方法

    在軟件開發(fā)過程中,測試做為一種保障產品質量的有效手段,被越來越多的人所重視。測試通常需要依據若干已經設計好的測試用逐步展開,使用測試用
    發(fā)表于 11-14 15:55 ?10次下載
    基于跨平臺系統(tǒng)中<b class='flag-5'>測試用</b><b class='flag-5'>例</b>復用的解決方法

    基于DSEA的弱變異測試用集生成方法

    為解決基于集合進化算法(SEA)的弱變異測試用集生成過程中個體規(guī)模固定和執(zhí)行開銷大的問題,提出一種基于動態(tài)集合進化算法( DSEA)的弱變異測試用集生成方法。以
    發(fā)表于 11-28 16:11 ?0次下載

    基于二分K-means的測試用集約簡方法

    測試用集約簡是軟件測試中的重要研究問題之一,目的是以盡量少的測試用達到測試目標。為此,提出一
    發(fā)表于 03-12 15:06 ?0次下載
    基于二分K-means的<b class='flag-5'>測試用</b><b class='flag-5'>例</b>集約簡方法

    數據測試:輸入數據的設計方法和測試用設計方法

    測試用的設計是測試設計的重要內容,關于測試用的設計方法,當前不少出版的測試書和發(fā)表的
    的頭像 發(fā)表于 06-29 10:22 ?2871次閱讀

    詳談Web測試中的界面測試用設計

    詳談Web測試中的界面測試用設計
    的頭像 發(fā)表于 06-29 10:48 ?2049次閱讀

    數據測試:代替測試用的檢查表

    前幾年在大連出差的時候,幫一個項目做測試,順便寫下這個檢查表,這個檢查表對測試的初學者積累經驗比較有用,實際對于有經驗的測試人員尤其對于測試業(yè)務管理信息系統(tǒng),基本上大量的
    的頭像 發(fā)表于 06-29 10:50 ?2662次閱讀

    測試用的管理 介紹測試用的幾種管理方法

    摘要 隨著軟件系統(tǒng)規(guī)模的持續(xù)增大,業(yè)務復雜度的持續(xù)增加,軟件測試的復雜度也隨之越來越大。而軟件測試工作復雜度的直接體現,就是測試用編寫、維護、執(zhí)行和管理,所以編寫易讀、易維護和易管理
    的頭像 發(fā)表于 11-26 15:13 ?6561次閱讀
    <b class='flag-5'>測試用</b><b class='flag-5'>例</b>的管理 介紹<b class='flag-5'>測試用</b><b class='flag-5'>例</b>的幾種管理方法

    測試用質量的重要性

    在進行測試時,通常會花很多精力選擇“正確”的測試工具。這其實只是為了實現次要目標。當然,一個適合開發(fā)環(huán)境、項目和流程的工具是重要的。然而,對于良好測試而言,最重要的是測試用
    的頭像 發(fā)表于 09-03 15:13 ?808次閱讀
    <b class='flag-5'>測試用</b><b class='flag-5'>例</b>質量的重要性

    篇 | 單元測試用復用到集成測試?Testlet Library來助力?。ㄉ希?/a>

    作者:fox小編:吃不飽作為一名測試工程師,在做MiL測試時,編寫測試用的效率影響整個測試項目的進度,如何有效提升編寫
    的頭像 發(fā)表于 11-04 10:14 ?774次閱讀
    用<b class='flag-5'>例</b>篇 | 單元<b class='flag-5'>測試用</b><b class='flag-5'>例</b>復用到集成<b class='flag-5'>測試</b>?Testlet Library來助力!(上)

    FDE磁盤加密技術是什么

    磁盤加密技術 如上節(jié)所述,Disk Encryption磁盤加密,目標是保護數據at Rest狀態(tài)下的機密性,加密對象是整個
    的頭像 發(fā)表于 11-29 10:54 ?1153次閱讀
    FDE<b class='flag-5'>磁盤</b><b class='flag-5'>加密</b>技術是什么

    eCryptfs整體架構和核心加解密機制介紹

    ,使用passphrase模式(如上述測試用)時不需要。ecryptfs-utils可作為用戶態(tài)輔助工具或C接口編程參考。 應用程序發(fā)起系統(tǒng)調用時先經過VFS,判斷目錄類型為eCryptfs
    的頭像 發(fā)表于 11-29 11:43 ?717次閱讀
    <b class='flag-5'>eCryptfs</b>整體架構和核心加解密機制介紹

    Linux內核安全eCryptfs密鑰管理

    ecryptfs-utils源碼,分別介紹這兩個KEY的生成過程。 1、用戶passphrase_passwd 到 FEKEK的轉換 從C測試用中看到,opt參數只有key_sig信息,并不指定FEKEK。且
    的頭像 發(fā)表于 11-29 11:46 ?603次閱讀
    Linux內核安全<b class='flag-5'>eCryptfs</b>密鑰管理

    端到端測試用怎么寫

    編寫端到端測試用是確保軟件系統(tǒng)從頭到尾能夠正常工作的關鍵步驟。以下是一個詳細的指南,介紹如何編寫端到端測試用: 一、理解端到端測試 端到
    的頭像 發(fā)表于 09-20 10:29 ?225次閱讀