geliで遊ぶための自分用メモ
FreeBSDでは、ezjail-adminを使えば、-c eli とすることで、簡単にgeliで暗号化したjailを作ることができるが、jailの数が増えるとどうも管理が面倒になった。キーファイルを使えばjailの数だけいちいちパスフレーズを打つこともなさそうだが、マウントポイントが多いし、なにかオーバーヘッドが大きそうな気もする。不意にクラッシュした後にそれぞれfsckするのもめんどくさい。なので、ディスクまるごとgeliで暗号化して、jailはその上に置くことにしたい。
それに、「失われた友人の400GBに捧ぐ - 暗号化GELI(8)メタデータ保存機能追加」(gihyo.jp)とか恐ろしげな記事があるし、もうちょっと geli を自在に扱えるようになっておきたい。
というわけで、geli で遊ぶための知識をいくつか。
geliでは、物理的なデバイスの最後の512バイトにメタデータを置いている。メタデータの中身はおよそ次のとおり。
- マジックナンバー'GEOM::ELI'
- 暗号方式
- パーティションサイズ、セクタサイズ
- 64バイトのソルト
- 192バイトのマスターキー×2個(0番と1番)
- MD5ハッシュ
geli コマンドはほとんどメタデータにのみ作用する。サブコマンドの主なものは次のとおり。
- geli init: メタデータの新規作成。ソルトの生成(以降変化しない)。パスフレーズ、キーファイル、ソルトにより0番のマスターキーを生成。
- geli dump: メタデータの表示。
- geli backup: メタデータのファイルへの保存。
- geli restore: 保存したメタデータの復元。
- geli setkey: 指定した番号のマスターキーの変更。パスフレーズ、キーファイル、ソルトにより生成される。
- geli delkey: 指定した番号のマスターキーの破壊。
- geli kill: メタデータの破壊。乱数で上書き。
- geli clear: メタデータの破壊。ゼロで上書き。
上のgihyo.jpの記事は、init時に自動的にメタデータを保存するようになったというもの。backupを用いて手動で保存すれば同じ(はず)。
オプションで geli init -a aalgo を用いると、データ完全性検証をするので、セクタごとにハッシュ分の領域が食われる。少なくともinitは相当遅そう。attachも?通常使用のパフォーマンスはどうなんだろう。そもそも、誰かがattach前にデータを壊したことを知りたいという用途はかなり少ないかも。
0 件のコメント:
コメントを投稿