/home暗号化

環境はubuntu8

FS暗号化の種類

  • loop-AES ループバックデバイスを使用する。ループバックデバイスはあまりメンテナンスされてない。ある意味枯れた技術
  • dm-crypt

カーネル2.6以降。device-mapperに暗号化レイヤを追加する。
ブロックデバイス <=> 暗号化レイヤ <=> ファイルシステム
ブロックデバイスでないフラッシュメモリには使えない

  • FUSE : Filesystem in Userspace

ユーザ空間でファイルシステムの構築&マウントができるようにする。
ファイル名、内容は暗号化されるがパーミッションやファイルの数は暗号化ディレクトリを見ればわかってしまう

暗号化関連のメタデータをファイルのヘッダに付加する。これによってポータビリティを確保。
現状、ファイル名の暗号化はできない模様。

作成

素直にdm-crypt使うかな。
キーファイルをFDに保存してパスワード入れなくても自動ログインできる形に持ってく、つもり。

バックアップ。

mtdataは俺の自分用スクリプトだけど、ま、わかるっしょ。

mtdata
mkdir /mnt/data/backup`date '+%Y%m%d'`
mkdir /mnt/data/backup20080614/home
cd /home
sudo tar cvf - . | sudo tar xvpf - -C /mnt/data/backup20080614/home/
カーネル再構築
暗号化FS構築

LUKSを使うかどうかだけど…
LUKSの利点

  • ディストリによらない
  • Open何とかを使うとwinからでも読める
  • 複数のキーを使える

なんだけど、今回は既存のデータを保持したまま移行したいのでLUKSを使わない。
HDDが壊れて大規模な移動が必要になったらその時一緒に対応しよう

リカバリーでrootで入って

umount /home
fsck /dev/sda4
cryptsetup -s 256 -d keyfile.txt -c aes-cbc-essiv:sha256 -b `blockdev --getsize /dev/sda4` create cryptvol1 /dev/sda4
dd if=/dev/sda4 of=/dev/mapper/cryptvol1 bs=4k #データの移行
起動時の自動マウント設定
$ sudo gedit /etc/default/cryptdisks
CRYPTDISKS_MOUNT="/boot"

暗号化ディスクをマウントする前にマウントする必要のある所。この場合はキーファイルのある/bootを指定した。そのうちUSBメモリに変更しよう。

$ sudo getit /etc/crypttab
cryptvol1 /dev/sda4  /boot/keyfile.txt  cipher=aes-cbc-essiv:sha256

$ sudo getit /etc/fstab
/dev/mapper/cryptvol1 /home           jfs     defaults        0       2

今回はせっかくカーネル再構築してaesをカーネルに組み込んだんだけど裏目にでた。aesはi586に最適化したものとしてないものの二つあるのだけど、どうも選択してるようなのだ。
今回はカーネルに組み込んだので/lib/cryptsetup/cryptdisks.functionsの
load_optimized_aes_module ()の処理をコメントアウト

あとは普通に再起動

メモ

cat /boot/config-2.6.24.3my02 | grep SHA
CONFIG_CRYPTO_SHA256=m
モジュールになってる。場合によってはmodprobe sha256 がいるかも
仕方ないカーネル再構築からやるか

参考

[ file:///home/j/.mozilla/swiftweasel/1be5qhpq.default/ScrapBook/data/20080404163013/index.html : ITmedia エンタープライズファイルシステムごと暗号化する方法 (1/2)]
[ http://www.clover-leaf.info/cat/2006/09/linuxhome.html : CATch a TAIL!: Linuxで/homeをお手軽暗号化]
[ http://www.shige.idani.jp/tdiary/?date=20080104 : 夜更かし日記 - swap以外の暗号化その後4〜自動起動の設定 その2 , swap以外の暗号化その後5〜キーファイルを使用する , swap以外の暗号化そ..]
[ http://memo.blogdns.net/cryptfs.html : 暗号化ファイルシステム]
[ http://omake.accense.com/wiki/LinuxDiskVolumeCrypto : LinuxDiskVolumeCrypto - アクセンスのおまけ - Trac]
>|LUKSっていうのは...「パーティションヘッダ」の部分に鍵管理の情報を格納します。...このせいでパーティション先頭の32ブロックほどが使われてしまいます。

luksFormatの場合には考慮がいる、と
[ http://markopee.blogspot.com/2008/01/linux.html : Markopee::Notebook: Linux で暗号化ファイルシステムを使う]