自己言及器官

プログラマーワナビー

UbuntuのeCryptfsで暗号化したホームディレクトリを読み込む方法

VirtualBoxVM(Debian sid)上でビルドしていたら、突然PCがホストごとフリーズしてうんともすんとも 言わなくなったので電源を切って入れなおしたのだが、
(initramfs)とかBusybox などが表示されている黒画面しかでなくなったので、そのときの復旧メモ。

とりあえず喪失すると後で手に入らなくなる可能性のあるデータだけ救出しようとして、 今使っているXubuntu(Ubuntuのフレーバーディストリ、Xfceがデフォルト)のisoをUSBメモリに焼いてブートしたのだが。ホームディレクトリが読み込めない、そういえばインストール時に暗号化したのだった……、復号キーはあるけど読み込み方がわからん…となった。 そのものズバリの情報があまり見つからなかったので書いておく。
簡単に言うと、eCryptfsでマウントすれば読み込める。

xubuntu@xubuntu:~$ sudo mount -t ecryptfs  /media/xubuntu/AAAAaaaa-AAAA-aaaa-AAAA-aaaaAAAAaaaa/home/.ecryptfs/tsr/.Private /mnt/mda1
Passphrase: 
Select cipher: 
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32
 2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: 
Select key bytes: 
 1) 16
 2) 32
 3) 24
Selection [16]: 
Enable plaintext passthrough (y/n) [n]: 
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [xxxxxxxxXXXXXXXX]: XXXXXXXXxxxxxxxx
Attempting to mount with the following options:
  ecryptfs_unlink_sigs  ecryptfs_fnek_sig=XXXXXXXXxxxxxxxx
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=1356f7a19d526101
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key 
before. This could mean that you have typed your 
passphrase wrong.

Would you like to proceed with the mount (yes/no)? : yes
Would you like to append sig [XXXXXXXXxxxxxxxx] to
[/root/.ecryptfs/sig-cache.txt] 
in order to avoid this warning in the future (yes/no)? : yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs

とやると、/mnt/mda1 からホームフォルダが読み込めた。
AとかXで続いている部分は環境依存とか復号関連のキーとかなので読み変えてください。
一番最初に入れるpassphraseはインストール時にメモっておくように表示される32桁ぐらいの16進数のパスフレーズである。
これだけではダメでfilename encryptionの解除に
/home/.ecryptfs/username/.ecryptfs/Private.sigの下の行に書いてあるフレーズを
Filename Encryption Key (FNEK) Signatureを聞かれた時に入力すれば良い。(上の手順の18行目)
Private.sigの上の行はpasspharseと対応しているようなので、自分の入力が間違っていないかの確認をするのに使える。

 $ sudo ecryptfs-add-passphrase --fnek

で、passphraseを入れても確認できる。情報元
最後のin order to avoid this warning in the future? に yesと答えないと何故かうまくいかないので注意。


PCの障害そのものはやはりファイルシステム不整合だったようで、

 # 使ってるシステムのルートのパスをmount(8)で調べて/dev/XXXX/YYYYを置き換える。
 $ sudo fsck -y /dev/XXXX/YYYY

をUSBブートしたXubuntuのコンソールから実行して、再起動したら治った(はず)
たぶんinitramfsからfsck(8)しても治るはず。


Written by tSU-RooT. Unless otherwise noted, the text of this page is released under a "CC0 1.0 Universal Public Domain Dedication"

このブログの記事は必要である範囲で他の著作物を引用していることがあります。また指摘・修正を受け付けます