/home暗号化
環境はubuntu8
FS暗号化の種類
カーネル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 で暗号化ファイルシステムを使う]
カーネル再構築
やることは二つ
1.暗号化FSのためにCONFIG_CRYPTO_SHA256等を有効にする
2.UATAでケーブルは対応してるはずなのにスピードが出ないことの修正
2だけどdmesg | grep DMAでlimited to UDMA/33 due to 40-wire cableとか出てこない人には関係ない。
[ http://www.nabble.com/Speeding-up-UltraBay-PATA-HDs-tremendously-td14851195.html : Nabble - Linux Thinkpad - Speeding up UltraBay PATA HDs tremendously]
を参考にして
$ lspci | grep "IDE interface" 00:1f.1 IDE interface: Intel Corporation 82801BA IDE U100 Controller (rev 05)
$ lspci -nv ... 00:1f.1 0101: 8086:244b (rev 05) (prog-if 80 [Master]) Subsystem: 1019:0a50 Flags: bus master, medium devsel, latency 0 [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8] [virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1] [virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8] [virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1] I/O ports at f000 [size=16] ...
8086:244b ^^^^ Subsystem: 1019:0a50 ^^^^ ^^^^
この数字を覚えておく
カーネルの再構築
apt-get source linux-source-2.6.24 cd linux-2.6.24/
cd drivers/ata/ cp ata_piix.c ata_piix.c.org #修正 705行めに { 0x244b, 0x1019, 0x0a50 }, /* my pc */ を追加 cd ../..
cp /boot/config-2.6.24.3my02 .config make oldconfig make menuconfig コンフィグでCryptographic APIのSHA256とAESをyにしておく sudo nice -n 10 make-kpkg clean sudo nice -n 10 make-kpkg --initrd kernel_image kernel_headers