第3章 暗号化
保護する必要のあるデータには、移動しないデータと移動するデータという 2 つのタイプのデータがあります。これらの異なるタイプのデータは同様の技術を使用して保護されますが、実装は完全に異なる可能性があります。単一の保護的実装は、同じ情報が保存され、異なる時点で移動する可能性がある、すべての不正アクセスを防ぎます。
3.1. 復元中のデータ
保持するデータは、ハードドライブ、テープ、CD、DVD、ディスク、またはその他のメディアに保存されているデータです。この情報の脅威は、物理的に盗まれたことが原因です。写真のラップトップ、CD はメールを経由し、誤った場所に残されたバックアップテープはすべて、盗難によりデータが危険にさらされるイベントの例です。メディア上でデータを暗号化すると、アクセスされるデータの可能性が低くなります。
3.1.1. 完全なディスク暗号化
完全なディスクまたはパーティションの暗号化は、データを保護する最善の方法の 1 つです。各ファイルが保護されているだけでなく、これらのファイルの一部を含む可能性のある一時ストレージも保護されます。完全なディスク暗号化は、すべてのファイルを保護するため、ファイルを保護するものを選択する必要がなく、不明なものを選択する必要はありません。
Red Hat Enterprise Linux 6 は、LUKS 暗号化をネイティブにサポートします。LUKS は、ハードドライブのパーティションを一括暗号化し、コンピューターがオフの間はデータを保護します。また、これにより、シングルユーザーモードを使用してコンピューターにログインしようとする、攻撃者やアクセスの取得を試みる攻撃者からコンピューターを保護します。
LUKS などの完全なディスク暗号化ソリューションは、コンピューターがオフの時にのみデータを保護します。コンピューターの電源がオンになり、LUKS がディスクを復号すると、そのディスクのファイルは、通常、そのディスクにアクセスできるすべてのユーザーが利用できます。このコンピューターの電源がオンのときにファイルを保護するには、ファイルベースの暗号化などの別のソリューションと組み合わせて完全なディスク暗号化を使用します。また、コンピューター外のときに必ずコンピューターをロックするのを忘れないでください。パスフレーズで保護されるスクリーンパーサーは、非アクティブを数分後にアクティブにするよう設定されていることは、侵入を防ぎます。LUKS の詳細はを参照してください 「LUKS ディスクの暗号化」。
3.1.2. ファイルベースの暗号化
ファイルベースの暗号化は、CD、フラッシュドライブ、外部ハードドライブなど、モバイルストレージデバイスのファイルの内容を保護するために使用されます。ファイルベースの暗号化ソリューションによっては、コンピューターに物理的にアクセスできる攻撃者は、暗号化したファイルが一部の状況下で回復できるままになる可能性があります。お使いのコンピューターにアクセスできる可能性のある攻撃者からこれらのファイルのコンテンツを保護するには、完全なディスク暗号化などの別のソリューションと組み合わせて、ファイルベースの暗号化を使用します。
3.1.3. LUKS ディスクの暗号化
Linux Unified Key Setup-on-disk-format(または LUKS)を使用すると、Linux コンピューターのパーティションを暗号化できます。これは、モバイルコンピューターやリムーバブルメディアの場合に特に重要です。LUKS は、複数のユーザー鍵が、パーティションのバルク暗号化に使用されるマスター鍵を復号化できるようにします。
LUKS の概要
- LUKS の機能
- LUKS は、ブロックデバイス全体を暗号化するため、リムーバブルストレージメディアやノート PC ディスクドライブなどのモバイルデバイスのコンテンツを保護するのに適しています。
- 暗号化されたブロックデバイスの基本的な内容は任意です。これにより、swap デバイスの暗号化に役立ちます。また、とりわけデータストレージ用にフォーマットしたブロックデバイスを使用する特定のデータベースに関しても有用です。
- LUKS は、既存のデバイスマッパーのカーネルサブシステムを使用します。
- LUKS は、パラフレーズの強化を提供し、辞書攻撃から保護します。
- LUKS デバイスには複数のキースロットが含まれているため、ユーザーはバックアップキー/パスフレーズを追加できます。
- LUKS が行わ ない こと
- LUKS は、多くのユーザーが同じデバイスにアクセスする鍵をそれぞれ所有することが必要となるアプリケーションには適していません。
- LUKS は、ファイルレベルの暗号化を必要とするアプリケーションには適していません。
3.1.3.1. Red Hat Enterprise Linux の LUKS 実装
Red Hat Enterprise Linux 6 は、LUKS を使用してファイルシステムの暗号化を行います。デフォルトではインストール時に、ファイルシステムを暗号化するオプションが指定されていません。ハードドライブを暗号化するオプションを選択すると、コンピューターを起動するたびにパスフレーズの入力が求められます。このパスフレーズは、パーティションの復号に使用されるバルク暗号鍵の「ロックを解除」します。デフォルトのパーティションテーブルの変更を選択すると、暗号化するパーティションを選択できます。この設定は、パーティションテーブル設定で行われます。
LUKS(を参照 cryptsetup --help)に使用されるデフォルトの暗号は aes-cbc-essiv:sha256 です。インストールプログラムである Anaconda は、XTS モード aes-xts-plain64 でデフォルトで AES 暗号を使用することに注意してください。LUKS のデフォルトの鍵サイズは 256 ビットです。Anaconda(XTS モード)を使用した LUKS のデフォルトの鍵サイズは 512 ビットです。
警告
デフォルトの暗号化属性を変更すると、システムのパフォーマンスに影響があり、さまざまなセキュリティーリスクにシステムが公開される可能性があります。暗号化に関する詳しい知識がなくても、システムのデフォルトの暗号化属性を変更しないでください。また、使用される暗号の組み合わせの機能を理解することはできません。
Red Hat では、デフォルトの暗号の使用を強く推奨します。デフォルトとして設定された暗号以外に暗号を使用する必要がある場合は、
--cipher
および --key-size
オプションを使用してパーティションを初期化できます。コマンドの構文は以下のとおりです。
cryptsetup --verify-passphrase
--cipher
<cipher>-<mode>-<iv> --key-size
<key-size> luksFormat <device>
<cipher> -<mode>- <iv> は、 使用される暗号を表す文字列です。文字列は、ブロック暗号、ブロック暗号モード、および初期ベクトル(IV)の 3 つの部分で構成されます。
ブロック暗号は、データブロック上で動作し、一括データの暗号化と復号を可能にする決定的なアルゴリズムです。Red Hat Enterprise Linux で利用可能なブロック暗号は次のとおりです。
- AES - Advanced Encryption Standard。128 ビット、192 ビット、および 256 ビットの長さを持つ暗号化キーを使用した 128 ビット対称ブロック暗号です。詳細は、FIPS PUB 197 を参照してください。
- Twofish - 範囲の暗号化キーを 128 ビットから 256 ビットまでで操作する 128 ビットのブロック暗号。
- serpent - 128 ビット、192- ビット、および 256 ビットの暗号化鍵を使用する 128 ビットブロック暗号。
- cast5 - 範囲の暗号鍵(40 ビットから 128 ビット)に対応する 64 ビットの Feistel 暗号。詳細は RFC 2144 を参照してください。
- cast6 - 128 ビット、160 ビット、192- ビット、224 ビット、または 256 ビット暗号鍵を使用する 128 ビットの Feistel 暗号鍵。詳細は RFC 2612 を参照してください。
ブロック暗号モードは、データを安全に暗号化または復号化するために一括データにブロック暗号を繰り返し適用する方法を示します。以下のモードを使用できます。
- CBC - Cipher Block Chaining - 詳細は NIST SP 800-38A を参照してください。
- XTS - XEX Tweakable Block Cipher with Ciphertext Bonaling。詳細は IEEE 1619 または NIST SP 800-38E を参照してください。
- CTR - Counter( NIST SP 800-38A )を参照してください。
- ECB: 電子コードブック(詳しくは NIST SP 800-38A を参照してください)。
- CFB - 暗号フィードバック。詳細は NIST SP 800-38A を参照してください。
- エラーメッセージ - 出力フィードバック。詳細は NIST SP 800-38A を参照してください。
最初のベクトルは、暗号文のランダム化に使用されるデータのブロックです。IV は、同じプレーンテキストの繰り返し暗号化によって、異なる暗号文の出力を提供するようになります。IV を同じ暗号鍵で再利用することはできません。CBC モードの暗号については、IV を 予測できない必要があり ます。そうしないと、システムが特定の基準攻撃に対して脆弱になる可能性があります(詳細は、LUKS/cryptsetup FAQ を参照してください)。Red Hat は、以下の IV を AES で使用することを推奨します。
- ESSIV - 暗号化された Salt-Sector Initialization Vector - この IV は CBC モードの暗号に使用する必要があります。デフォルトのハッシュ sha256 を使用する必要があります。
- plain64(または plain)- IV セクターオフセット - この IV は、XTS モードの暗号に使用する必要があります。
使用される暗号化キーの長さを指定することもできます。キーのサイズは、ブロック暗号モードとブロック暗号モードの使用される組み合わせによって異なります。キーの長さを指定しないと、LUKS は指定の組み合わせのデフォルト値を使用します。たとえば、CBC モードで AES に 128 ビットキーを使用する場合は、LUKS は AES-128 実装を使用してパーティションを暗号化し、XTS モードで AES-256 実装に 512 ビットキーを指定すると、AES-256 実装が使用されます。XTS モードは 2 つの鍵で動作します。1 つ目はツイータブル暗号化で決定され、2 番目は通常の暗号化の場合は 2 番目であることに注意してください。
3.1.3.2. ディレクトリーの手動暗号化
警告
この手順では、暗号化しているパーティションのデータをすべて削除します。WILL はすべての情報が失われます。この手順を開始する前に、データを外部ソースにバックアップしてください。
- root で次のコマンドを実行します。
telinit 1
- 既存の
/home
をアンマウントします。umount /home
- 前の手順のコマンドで失敗した場合は、を使用して
/home
fuser にカーソルを合わせ、これを強制終了します。fuser -mvk /home
/home
がマウントされていないことを確認します。grep home /proc/mounts
- パーティションにランダムデータを入力します。
shred -v --iterations=1 /dev/VG00/LV_home
このコマンドは、デバイスの連続書き込み速度で続行され、完了するのに時間がかかる場合があります。暗号化されていないデータが使用されているデバイスに残されないようにし、暗号化したデータが含まれるデバイスの部分をランダムなデータだけでなく、混乱させないようにすることが重要な手順です。 - パーティションを初期化します。
cryptsetup --verbose --verify-passphrase luksFormat /dev/VG00/LV_home
- 新規暗号化したデバイスを開きます。
cryptsetup luksOpen /dev/VG00/LV_home home
- デバイスが存在することを確認します。
ls -l /dev/mapper | grep home
- ファイルシステムを作成します。
mkfs.ext3 /dev/mapper/home
- ファイルシステムをマウントします。
mount /dev/mapper/home /home
- ファイルシステムが表示されることを確認します。
df -h | grep home
- 以下を
/etc/crypttab
ファイルに追加します。home /dev/VG00/LV_home none
/etc/fstab
ファイルを編集し、/home
の古いエントリーを削除し、以下の行を追加します。/dev/mapper/home /home ext3 defaults 1 2
- デフォルトの SELinux セキュリティーコンテキストを復元します。
/sbin/restorecon -v -R /home
- マシンを再起動します。
shutdown -r now
- のエントリー
/etc/crypttab
により、システムの起動時にluks
パスフレーズが要求されます。 - root としてログインし、バックアップを復元します。
これで、コンピューターの電源が切れている間は、すべてのデータに対して暗号化されたパーティションが安全に休止状態になりました。
3.1.3.3. 既存のデバイスへの新規パスフレーズの追加
以下のコマンドを使用して、既存のデバイスに新しいパスフレーズを追加します。
cryptsetup luksAddKey <device>
認証既存のパスのいずれかを要求すると、新しいパスフレーズを入力するように求められます。
3.1.3.4. 既存デバイスからのパスフレーズの削除
以下のコマンドを使用して、既存のデバイスからパスフレーズを削除します。
cryptsetup luksRemoveKey <device>
削除するパスフレーズの入力が求められてから、認証用に残りのパスフレーズを入力するよう求められます。
3.1.3.5. Anaconda での暗号化ブロックデバイスの作成
システムのインストール時に、暗号化されたデバイスを作成できます。これにより、暗号化されたパーティションでシステムを簡単に設定することができます。
ブロックデバイスの暗号化を有効にするには、パーティション、ソフトウェア RAID アレイ、または論理ボリュームを作成するときに自動パーティションを設定するチェックボックスを選択する場合は、システム の 暗号 化チェックボックスを選択します。パーティション設定が完了すると、暗号化パスフレーズの入力が求められます。このパスフレーズは、暗号化されたデバイスへのアクセスに必要です。LUKS デバイスが存在し、インストールプロセスの初期段階でそのデバイスに正しいパスフレーズを提供している場合は、パスフレーズの入力ダイアログボックスにもチェックボックスが含まれます。このチェックボックスをチェックすると、既存の暗号化済みブロックデバイスの利用可能なスロットに新しいパスフレーズを追加することが分かります。
注記
自動パーティション 設定画面で システムを暗号化 するチェックボックスを選択してからカスタムレイアウトを作成 しても、ブロックデバイスは自動的に暗号化されません。
注記
kickstart ファイルを使用すると、新しい暗号化したブロックデバイスごとに、個別のパスフレーズを設定できます。また、Anaconda のデフォルト暗号である aes-xts-plain64 が適切でない場合、Kickstart では異なるタイプの暗号化を指定できます。暗号化するデバイスの依存関係では、、、autopart part partition logvol、および raid ディレクティブ
--cipher=<cipher-string>
とともにを指定できます。このオプションは、オプションとともに使用する必要があります。この --encrypted
オプションを使用しないと、何も影響しません。<cipher-string> 形式および可能な暗号の組み合わせの詳細は、を参照してください 「Red Hat Enterprise Linux の LUKS 実装」。キックスタート設定の詳細は、『 Red Hat Enterprise Linux 6 インストールガイド』を参照してください。
3.1.3.6. その他のリソース
Red Hat Enterprise Linux で、LUKS またはハードドライブの暗号化に関する追加情報は、以下のいずれかのリンクを参照してください。