FreeBSD は無許可のデータアクセスに対する優れたオンライン保護機能を提供します。 ファイルのパーミッションおよび強制的アクセスコントロール (MAC: Mandatory Access Control) (Mandatory Access Control (MAC) を参照) は、コンピュータが動作中で、OS が実行中であるときに、 無許可の第三者がデータにアクセスするのを防ぐことに役立ちます。 しかしながら、攻撃者がコンピュータに物理的にアクセスし、 機密データをコピーし分析するためにコンピュータのハードドライブを別のシステムに移動させることができれば、 OS によって強化された許可属性は意味をなさなくなります。
攻撃者が電源の落ちたコンピュータや ハードドライブを手にいれる手段にかかわらず、 GEOM ベースのディスク暗号化 (gbde: GEOM Based Disk Encryption) は、著しい資源を持ち本気で攻撃を仕掛けるつもりでやってきた攻撃者からさえもコンピュータのファイルシステム上にあるデータを保護することができます。 個々のファイルだけを暗号化する煩わしい方法と異なり、 gbde は全ファイルシステムを透過的に暗号化します。 平文テキストは決してハードドライブのプラッタに関係しません。
root になる
gbde の設定をするにはスーパユーザの権限が必要になります。 以下のコマンドを実行して、 root になってください。
% su - Password:
オペレーティングシステムのバージョンを確かめる
gbde(4) が動作するには FreeBSD 5.0 以降が必要です。 以下のコマンドを実行して、 オペレーティングシステムのバージョンを確認してください。
# uname -r 5.0-RELEASE
カーネルコンフィギュレーションファイルに gbde(4) 対応を追加する
お好みのテキストエディタを使用して、 以下の行をカーネルコンフィギュレーションファイルに加えます。
options GEOM_BDE
FreeBSD カーネルを設定、再コンパイル、インストールします。 この手順は Chapter 8 で説明されています。
新しいカーネルで再起動します。
以下の例では、システムに新しいハードディスクを追加しようとしています。このシステムは単一の暗号化されたパーティションを保持することになります。 このパーティションは /private としてマウントされます。gbde は /home および /var/mail を暗号化するのにも使用できますが、 より複雑な指示を必要となるのでこの解説の範疇を越えています。
新しいハードドライブを追加する
Section 15.3 で説明されている通りに新しいドライブをシステムに設置します。 この例では、新しいハードドライブは /dev/ad4s1c パーティションに 加えられたものとします。 /dev/ad0s1* デバイスは、この例のシステム上に存在する標準的な FreeBSD パーティションを表します。
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4
gbde ロックファイルを保持するディレクトリを作成する
# mkdir /etc/gbde
gbde ロックファイルには、 暗号化されたパーティションにアクセスするのに必要となる情報が格納されています。 ロックファイルにアクセスしない場合、 gbde は 膨大な手動による介在なしには (ソフトウェアは対応していません)、暗号化されたパーティションに含まれるデータを解読することはできないでしょう。 それぞれの暗号化されたパーティションは別々のロックファイルを使用します。
gbde パーティションを初期化する
gbde パーティションは使用する前に初期化されなければなりません。 この初期化は一度だけ実行される必要があります。
# gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c
エディタが開くので、 テンプレートをもとにさまざまなオプションを設定してください。 UFS1 または UFS2 で使用するには、sector_size を 2048 に設定してください。
$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $ # # Sector size is the smallest unit of data which can be read or written. # Making it too small decreases performance and decreases available space. # Making it too large may prevent filesystems from working. 512 is the # minimum and always safe. For UFS, use the fragment size # sector_size = 2048 [...]
gbde(8) はデータを保護するのに使用するパスフレーズを二度尋ます。 パスフレーズはそれぞれ同じでなければなりません。 データを保護する gbde の能力は、 あなたが選択したパスフレーズの品質に完全に依存します。 [1]
gbde init コマンドは gbde パーティションに対するロックファイルを作成します。この例では /etc/gbde/ad4s1c に格納されます。
Cautiongbde ロックファイルは、 すべての暗号化されたパーティションの内容とともにバックアップされなければ なりません。 ロックファイルだけを削除している間、 ロックファイルなしでは信念の固い攻撃者が gbde パーティションを解読することを防ぐことができない一方で、 正当な所有者は、gbde(8) およびこの設計者にまったく支持されない膨大な量の作業なしには、 暗号化されたパーティション上のデータにアクセスすることができないでしょう。
カーネルに暗号化されたパーティションを接続する
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
暗号化されたパーティションを初期化する際に選択したパスフレーズを入力するように求められます。 新しい暗号化デバイスは /dev に /dev/device_name.bde として現れます。
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde
暗号化デバイス上にファイルシステムを作成する
カーネルに暗号化デバイスが接続されると、 デバイス上にファイルシステムを作成できます。
暗号化デバイス上にファイルシステムを作成するには newfs(8) を使用します。従来の UFS1
ファイルシステムで初期化するより、 新しい UFS2
ファイルシステムで初期化した方が高速なので、 -O2
オプションとともに newfs(8) を使用することが推奨されています。
Note: FreeBSD 5.1-RELEASE 以降では、
-O2
オプションはデフォルトです。
# newfs -U -O2 /dev/ad4s1c.bde
Note: newfs(8) は、デバイス名に *.bde 拡張子によって認識される、 接続された gbde パーティションに対して実行されなければなりません。
暗号化パーティションをマウントする
暗号化ファイルシステムに対するマウントポイントを作成します。
# mkdir /private
暗号化ファイルシステムをマウントします。
# mount /dev/ad4s1c.bde /private
暗号化ファイルシステムが利用可能か確かめる
これで暗号化ファイルシステムは df(1) で見ることができ、 利用する準備ができました。
% df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1037M 72M 883M 8% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 8.1G 55K 7.5G 0% /home /dev/ad0s1e 1037M 1.1M 953M 0% /tmp /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr /dev/ad4s1c.bde 150G 4.1K 138G 0% /private
システムを起動する度に、すべての暗号化ファイルシステムは 使用前にカーネルに接続し、 エラーの有無をチェックし、マウントする必要があります。 必要なコマンドは root ユーザとして実行されなければなりません。
カーネルに gbde パーティションを接続する
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
パーティションの暗号化を初期化する際に選択したパスフレーズを入力するように求められるでしょう。
ファイルシステムのエラーをチェックする
暗号化ファイルシステムを自動的にマウントするために /etc/fstab に設定を掲載することはまだできないため、 マウントする前に fsck(8) を実行して、 ファイルシステムのエラーをチェックしなければなりません。
# fsck -p -t ffs /dev/ad4s1c.bde
暗号化ファイルをマウントする
# mount /dev/ad4s1c.bde /private
これで暗号化ファイルシステムが利用できるようになりました。
スクリプトを作成して、暗号化パーティションを自動的に接続、 チェック、マウントすることは可能です。しかしながら、 安全上の理由によりスクリプトに gbde(8) パスワードを含めるべきではありません。その代わりに、コンソールまたは ssh(1) による接続からパスワードを入力するようなスクリプトが手動で実行されることが推奨されます。
gbde(8) は 128bit AES の CBC モードを使用してセクタペイロードを暗号化します。 ディスク上のそれぞれのセクタは異なる AES 鍵で暗号化されます。 セクタ鍵がユーザが入力したパスフレーズからどのように導き出されるかを含め、 gbde の暗号手法の設計についての詳細は、 gbde(4) を参照してください。
sysinstall(8) は gbde 暗号化デバイスと互換性がありません。 sysinstall(8) を実行する前に *.bde デバイスはすべてカーネルから切断されなければなりません。 そうしないと、sysinstall(8) が初めにデバイスを走査する際にクラッシュしてしまうでしょう。 暗号化デバイスを切断するには、以下のコマンドを使用します。
# gbde detach /dev/ad4s1c
vinum(4) は geom(4) サブシステムを使用しないので、 vinum ボリュームと gbde を併用できないことにも注意してください。
[1] |
記憶するのが簡単で、 安全なパスフレーズを選択する方法については、 Diceware Passphrase ウェブサイトを参照してください。 |