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 カーネルを設定、再コンパイル、インストールします。 この手順は 8章FreeBSD カーネルのコンフィグレーション で説明されています。
新しいカーネルで再起動します。
以下の例では、システムに新しいハードディスクを追加しようとしています。このシステムは単一の暗号化されたパーティションを保持することになります。
このパーティションは /private
としてマウントされます。gbde は
/home
および /var/mail
を暗号化するのにも使用できますが、
より複雑な指示を必要となるのでこの解説の範疇を越えています。
新しいハードドライブを追加する
「ディスクの追加」 で説明されている通りに新しいドライブをシステムに設置します。
この例では、新しいハードドライブは
/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 の能力は、 あなたが選択したパスフレーズの品質に完全に依存します。 [6]
gbde init
コマンドは
gbde
パーティションに対するロックファイルを作成します。この例では
/etc/gbde/ad4s1c
に格納されます。
gbde ロックファイルは、 すべての暗号化されたパーティションの内容とともにバックアップされなければ なりません。 ロックファイルだけを削除している間、 ロックファイルなしでは信念の固い攻撃者が 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)
を使用することが推奨されています。
FreeBSD 5.1-RELEASE 以降では、-O2
オプションはデフォルトです。
#
newfs -U -O2 /dev/ad4s1c.bde
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) は 128bit AES の CBC モードを使用してセクタペイロードを暗号化します。 ディスク上のそれぞれのセクタは異なる AES 鍵で暗号化されます。 セクタ鍵がユーザが入力したパスフレーズからどのように導き出されるかを含め、 gbde の暗号手法の設計についての詳細は、 gbde(4) を参照してください。
sysinstall(8) は
gbde 暗号化デバイスと互換性がありません。
sysinstall(8) を実行する前に
*.bde
デバイスはすべてカーネルから切断されなければなりません。
そうしないと、sysinstall(8) が初めにデバイスを走査する際にクラッシュしてしまうでしょう。
暗号化デバイスを切断するには、以下のコマンドを使用します。
#
gbde detach /dev/ad4s1c
本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。