如果你選擇了這個選項,除了使用者home資料夾目錄中的資料被加密了之外,不會引起其他任何的改變。令我非常好奇的是,在解密目錄的過程中,系統並沒有要求使用者輸入任何的密碼,那麼這整個過程是如何實現的呢?經過研究和分析之後,我發現Ubuntu發行版已經將eCryptfs嵌入了GNU/Linux核心之中了,而且Ubuntu發行版的系統還會呼叫ecryptfs-utils工具來對home資料夾進行加密處理。在我分析完相關的程式碼之後,我終於明白了這種加密是如何執行的。首先,系統會生成一個長度為16位元組的隨機密碼。這個密碼將會配合AES-128加密演算法一起來加密和解密資料夾中的資料。這個密碼會以加密的形式儲存在檔案之中:/home/.ecrpytfs/$USER/.ecrpytfs/wrapped-passphrase對密碼進行加密的過程被稱為“金鑰封裝(key wrapping)”。為了生成一個用於封裝密碼的封裝金鑰,一個長度為8位元組的Salt值和密碼將會連結在一起,然後一同作為SHA-512加密演算法的輸入資料。處理結果將會進行65535次雜湊處理。
如果你選擇了這個選項,除了使用者home資料夾目錄中的資料被加密了之外,不會引起其他任何的改變。令我非常好奇的是,在解密目錄的過程中,系統並沒有要求使用者輸入任何的密碼,那麼這整個過程是如何實現的呢?經過研究和分析之後,我發現Ubuntu發行版已經將eCryptfs嵌入了GNU/Linux核心之中了,而且Ubuntu發行版的系統還會呼叫ecryptfs-utils工具來對home資料夾進行加密處理。在我分析完相關的程式碼之後,我終於明白了這種加密是如何執行的。首先,系統會生成一個長度為16位元組的隨機密碼。這個密碼將會配合AES-128加密演算法一起來加密和解密資料夾中的資料。這個密碼會以加密的形式儲存在檔案之中:/home/.ecrpytfs/$USER/.ecrpytfs/wrapped-passphrase對密碼進行加密的過程被稱為“金鑰封裝(key wrapping)”。為了生成一個用於封裝密碼的封裝金鑰,一個長度為8位元組的Salt值和密碼將會連結在一起,然後一同作為SHA-512加密演算法的輸入資料。處理結果將會進行65535次雜湊處理。