偏執的な人の為の?
NotePCセキュリティ HDD編
-小江戸らぐ1月のオフな集まり(第102回)-

KenichiroMATOHARA
matoken@gmail.com
http://hpv.cc/~maty/
資料 → http://goo.gl/2w2y9
●

据え置きのサーバ
●

●

設置場所に行かないと触れない.

NotePC
●

置き忘れや,席をたった時などに触れる.

●

本体を盗まれたりデータを盗まれる可能性.
PC 本体が盗まれると
●

ハードディスクの内容が盗まれる
●
●

/etc/passwd, /etc/shadow, ssh key, pgp key...

●
●

パーミッションは役に立たない.
作成したデータ,メール等…

メモリ内の情報が盗まれる
●

ログオン情報,TrueCrypt 情報,暗号化ディスク情報,勿
論?Windows/Mac も.

●

気づかないことも.
ハードディスクの内容が盗まれるのを防ぐ
●

パーミッションは役に立たない.
↓

●

暗号化ファイルシステムを利用.
●

ディスク全体を暗号化する
–

●

ホームディレクトリや,指定ディレクトリだけを暗号化する.
–

●

dm-crypt
eCryptfs

USB メモリや,特定の部分を暗号化する
–

TrueCrypt
dm-crypt?
●

kernel 2.6.4 から

●

cryptoloop から置き換えられた

●

Device-mapper を利用したmount
●

●

/dev/mapper/crypt0 の様な感じ.crypt0 は任意

最近のディストリビューションであればインストーラで対
応していることが多い
DebianSqueeze d-i RC1 での例
Dm-crypt 手動設定例
●

暗号化ファイルの作成例 1GB のimageを作成
dd if=/dev/zero of=./crypt bs=1M count=1024

●

/crypt を/dev/loop0 に関連付け。
sudo losetup /dev/loop0 ./crypt

●

Device mapper(crypt0)に関連づけ
●

●

cryptsetup luksFormat /dev/mapper/crypt0

暗号化
●

cryptsetup luksFormat /dev/mapper/crypt0

※このときの確認メッセージは大文字でYES と入力すること ※求められたパ
スフレーズを忘れないこと/後で変更可能
Dm-crypt 手動設定例
●

オープン
●

●

ファイルシステムを作成
●

●

umount /dev/mapper/myencryptedstuff

unlock
●

●

mount /dev/mapper/myencryptedstuff ~mk/cryptarea

umount
●

●

mkfs.ext3 /dev/mapper/myencryptedstuff

mount
●

●

cryptsetup luksOpen /dev/mapper/crypt0 myencryptedstuff

cryptsetup luksClose myencryptedstuff

mount
●

mount.crypt -o cipher=aes /dev/mapper/loop0 ~mk/cryptarea

●

Password: key slot 0 unlocked.

●

Command successful.
Dm-crypt 手動設定例
●

パスフレーズの追加
cryptsetup luksAddKey /dev/mapper/mk_cryptarea
Enter any LUKS passphrase:key slot 0 unlocked.
Enter new passphrase for key slot:
Verify passphrase:Command successful.

※key slot 0~6 迄7つまで設定できる.
●

パスフレーズの削除/1 のKey Slot 削除.
cryptsetup luksDelKey /dev/hoge 1
Dm-crypt 手動設定例
●

暗号化fs の確認/Key Slot0-1 に設定があることが解る
●

cryptsetup luksDump /dev/mapper/mk_cryptarea
--snip--

Key Slot 0: ENABLED
Iterations:
Salt:

18870
22 1b 6e 8b 2b 64 90 2f e9 25 84 48 6e 2f 48 b4
0e c2 1c 93 fa f3 a7 53 d9 12 05 96 80 d7 9c 13

Key material offset:
AF stripes:

8

4000

Key Slot 1: ENABLED
Iterations:
Salt:

19078
62 df c8 cb 91 29 89 85 46 48 fe 85 3f 3b db 04
1d b7 6b d1 80 5a 4b f9 0e 0c 39 9f ba 1d 48 ca

Key material offset:
AF stripes:

136

4000

Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED普段使いのKeyslot と忘れたとき用のKeyslot を用意すると良いかもしれません.
linuxmania.jp のオリジナルUSB メモリにも導入済み
eCryptFS
●

Kernel 2.6.19 から

●

Ubuntu の~ の暗号化などで使われている.

●

通常のファイルシステムの上で,1ファイル,ディレクトリ毎に暗号化し
ている.

●

そのディレクトリへのアクセス権があれば暗号化されたファイル,ディ
レクトリの存在は分かるしコピー削除等も出来る.

●

ファイル自体にメタ情報を持つため細かいファイルが大量にある場合
などには実容量よりずっと大量の領域が必要になったりする.

●

ファイルシステムごと暗号化をしないので,容量を気にせず手軽に利
用できる. > dm-crypt は固定
暗号化されたファイルの例
●

ファイル名も内容も暗号化されている.

$ file
ECRYPTFS_FNEK_ENCRYPTED.FWa6W.xHPLxHakQo3z4g5939yJq9YxAs0JapxHd.IOEqoeu4jBjYY2TV1U-ECRYPTFS_FNEK_ENCRYPTED.FWa6W.xHPLxHakQo3z4g5939yJq9YxAs0JapxHd.IOEqoeu4jBjYY2TV1U--:
data
$ cat
ECRYPTFS_FNEK_ENCRYPTED.FWa6W.xHPLxHakQo3z4g5939yJq9YxAs0JapxHd.IOEqoeu4jBjYY2TV1U-- |
od -xc | head
0000000 0000 0000 0000 3300 81db c0fc 00e7 354b
0 0 0 0 0 0 0 3 333 201 374 300 347 0 K 5
0000020 0003 0a00 0000 0010 0200 1d8c 0704 0103
003 0 0 n 0 0 020 0 0 002 214 035 004 a 003 001
0000040 1100 3322 5544 7766 7e60 945a 3cd4 4d7f
0 021 " 3 D U f w ` ~ Z 224 324 < 177 M
0000060 213a 45cd eef7 592d edb2 6216 5f08 4f43
: ! 315 E 367 356 - Y 262 355 026 b b _ C O
0000100 534e 4c4f 0045 0000 2d00 06ed f27e 0309
N S O L E 0 0 0 0 - 355 006 ~ 362 t 003
Ubuntu10.10 インストール時の設定画面
Ubuntu10.10 アカウント作成時の設定画面
EcryptFS のファイル名長制限
●

ファイル名も以下の様に暗号化される.

ECRYPTFS_FNEK_ENCRYPTED.FWa6W.xHPLxHakQo
3z4g5939yJq9YxAs0JapzUcbPZWNdvlP1iJonoS2UE-●

しかし,そのためにファイルシステムのファイル名長制限を
越えやすくなっている

●

255文字制限の環境では144byte 迄になってしまう.

●

ファイル名を暗号化しないオプションを指定るることで回
避は出来る.
EcryptFS のファイル名長制限
●

以下はXFS(ファイル長制限255文字)環境
●

ascii

$ touch
01234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901
23
touch:
`0123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890
123'にtouchできませんでした: File name too long
$ touch
01234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901
2
$ echo
'01234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901
2'|wc
1
1 144
EcryptFS のファイル名長制限
●

日本語(UTF-8)
$ touch 'あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお
あいう'
touch: `あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあ
いう'にtouchできませんでした: File name too long
$ touch 'あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお
あい'
$ echo 'あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあ
い' |wc
1
1 142
$ touch あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお
あい1
$ touch あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお
あい12
$ touch あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお
あい123
touch: `あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあ
い123'にtouchできませんでした: File name too long
EcryptFS 手動マウント
●

マシンが起動しなくなったりした時などに読む方法.
$ sudo mount -t ecryptfs -o
ecryptfs_sig=xxxxxxxxxxxxxxxx,ecryptfs_fnek_sig=xxxxxxxxxxxxxxxx,ecryptfs_cip
her=aes,ecryptfs_key_bytes=16 /home/USER/.Private /mnt
Passphrase:
Enable plaintext passthrough (y/n) [n]:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=xxxxxxxxxxxxxxxx
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=xxxxxxxxxxxxxxxx
Mounted eCryptfs
※ecryptfs_sig は(/home/.ecryptfs/$USER/.ecryptfs/Private.sig の1行目
ecryptfs_fnek_sig は2行目
TrueCrypt
●

マルチプラットホーム(Win/Mac/Linux)

●

システムを暗号化することは出来ない(Win は出来る)

●

ボリュームを隠すことが出来る

●

移動用にTrueCrypt の最低構成をUSB メモリに保存するモー
ドがある(Windowsのみ)
●

●
●

Mac/Linux でもバイナリをコピーしておくと同じことが出来
る
TrueCrypt の入っていないマシンでも読める

USB メモリなど持ち運びデバイスの暗号化に向いている
TrueCrypt の使い方
●

Slax で暗号化fs を持ち運ぶ 12 月のインストールパー
ティ in 電大鳩山 (20081220) 1 月のオフな集まり 第
78 回

http://www.slideshare.net/matoken/koedo200812
20-install-party
それぞれの使いどころ
●

dm-crypt
●

●

eCryptFS
●

●

OS 全ての暗号化向き
ホームディレクトリの暗号化

TrueCrypt
●

持ち運びデバイスの暗号化
暗号化fs の注意点
●

暗号化を解除した状態だと当たり前ですがPC を操作できる人は誰でも操作できます.
●

目を離すときにはスクリーンロック

●

スクリーンセーバ解除時にはパスワードを求めるように
–

自宅のネットワークではgnome-screensaver-command でスクリーンセーバを抑制
するといったことも可能 >

●

システムが遅くなりますorz

●

重要なものだけ暗号化する.
●

~/.ssh, ~/.gnupg 等うぃ暗号領域に置くなど

$ ln -s CRYPTDIR/.ssh ~/.ssh
$ ln -s CRYPTDIR/.gnupg ~/.gnupg
●

CPU によってはaes 支援が付いているのでそういったCPU の場合はおすすめです.
●

Core i / 組み込み向けのGeode 等
その他
●

TPM とかやってみたい…

偏執的な人の為の? NotePCセキュリティ HDD編 -小江戸らぐ1月のオフな集まり(第102回)-