密鑰管理
從上節中我們了解到eCryptfs中核心機制中主要有兩個KEY,即FEKEK和FEK,前者和用戶輸入passphrase_passwd有關,后者是每個文件唯一的隨機數。下面結合ecryptfs-utils源碼,分別介紹這兩個KEY的生成過程。
1、用戶passphrase_passwd 到 FEKEK的轉換
從C測試用例中看到,opt參數只有key_sig信息,并不指定FEKEK。且mount操作前提是已添加對應key(FEKEK)到內核keyring。腳本命令實際是mount helper協助(隱式)完成了添加keyring的操作。
核心函數即C用例中調用的ecryptfs_add_passphrase_key_to_key_ring。
首先ecryptfs_generate_passphrase_auth_tok會根據用戶輸入的passphrases信息、salt信息(參數指定,ecryptfs-utils有一個默認值ECRYPTFS_DEFAULT_SALT如下圖),在generate_passphrase_sig函數中進行hash計算,并將結果記錄在變量fekek中,然后對fekek再進行一次hash計算,結果記錄為passphrase_sig/auth_token_sig,并返回給用戶后續使用(key_sig)。
generate_payload則為每一次session創建一個auth_tok結構體,記錄更多加解密相關信息。
最后調用ecryptfs_add_auth_tok_to_keyring中,將對應FEKEK、key_sig、salt等信息都添加到keyring。至此就完成了從passphrase_passwd到FEKEK的轉換和內核keyring添加。
-
內核
+關注
關注
3文章
1376瀏覽量
40319 -
Linux
+關注
關注
87文章
11319瀏覽量
209830 -
磁盤
+關注
關注
1文章
379瀏覽量
25224 -
密鑰管理
+關注
關注
0文章
23瀏覽量
7634
發布評論請先 登錄
相關推薦
評論