星期三, 4月 15, 2009

[Linux]TPM 與 ecryptfs

基本都是參考:

另外遇到問題可以參考 IBM 的 troubleshooting,最近 IBM 不知道是網站改版還怎樣,之前留的網址都失聯了,你可以用 ibm ecryptfs troubleshooting 去 google 找。

下面的步驟最好全部以 root 或 sudo 來執行:
  1. 進 BIOS 把 TPM clear 掉
  2. 我的環境正好是用 infineon 的,所以用 modprobe tpm_infineon,一般好像是用 tpm_tis 就行了。
  3. 啟動 trousers:tcsd -f,不用 -f 的話,會掛...這個 daemon 提供 tspi 服務並且與 TPM device 溝通。
  4. 取得 ownership:tpm_takeownership ,這個步驟裡,SRK password 跟其後的 Confirm password 不要輸入!!否則要回到步驟 0 重設。SRK 是 Storage Root Key 的縮寫,不使用密碼保護的原因是為了 ecryptfs 取用方便。
  5. 掛載 ecryptfs:modprobe ecryptfs
  6. 啟動 ecryptfsd
  7. 產生 UUID:ecryptfs-generate-tpm-key -p 1 ,這個 UUID 是提領 key 用的,實際的 key 會透過 PCR 1 的 key 來取得(如果我沒理解錯的話)。


至此,準備工作已經完成,接下來就是操作,這裡我假設 private 是放置要加密的資料的地方:
  1. 先建立:mkdir private
  2. 進行掛載:mount -t ecryptfs private private
  3. 依序回答問題,第一個先選 tspi,第二個問題(cipher)選 aes,第三個問題(key bytes)選 16 bytes,第四個問題(passthrough)選 n,最後問題照預設值。第一個問題是加密方式,你也可以使用其他方式,但這樣就用不到 TPM 了;cipher 跟 key bytes 可以視需要自行調整。這樣就能 mount 上,mount 以後,ecryptfs 會把 UUID 存到 keyring (用 keyctl show 可以看 keyring 內容)裡。


在 private 資料夾裡的操作,基本上不能複寫,只能複製、貼上,但 vim 可編輯。

umount 之前,最好先輸入 mount,把參數記下。
umount 之後,可以直接以參數來掛載,這樣就不用再次回答問題:mount -t ecryptfs -o sig=UUID,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n private private
參數裡,有個 sig,這個 sig 就是填 UUID,不過你輸入 mount 時,看到的卻不是 UUID,而是一個較短的字串。這字串其實是一個提領 UUID 的鑰匙,ecryptfs 會用這個鑰匙去 keyring 裡(用 keyctl show 可以看到),取出 UUID,再以 UUID 去掛載。keyring 主要存放在 kernel 的某個地方,所以重開機以後就會消失,我還不知道怎麼把 keyring 內容存起來。

好吧,以上就是我這幾天跟 TPM 奮戰的紀錄...

沒有留言: