第9章 Policy-Based Decryption を使用した暗号化ボリュームの自動ロック解除の設定
Policy-Based Decryption (PBD) を使用すると、物理マシンおよび仮想マシン上の暗号化されたルートボリュームとセカンダリーストレージボリュームのロックを解除できます。PBD では、ユーザーパスワード、Trusted Platform Module (TPM) デバイス、PKCS #11 デバイス、ネットワークサーバーなど、さまざまなロック解除方法が使用されます。
PBD を使用すると、ポリシーにさまざまなロックの解除方法を組み合わせて、さまざまな方法で同じボリュームのロックを解除できるようにすることができます。Red Hat Enterprise Linux における PBD の現在の実装は、Clevis フレームワークと ピン と呼ばれるプラグインで構成されています。ピンはそれぞれ個別のロック解除機能を提供します。現在利用できるピンは以下のとおりです。
tang- ネットワークサーバーを使用してボリュームのロックを解除できます。
tpm2- TPM2 ポリシーを使用してボリュームのロックを解除できます。
pkcs11- PKCS #11 URI を使用してボリュームのロックを解除できます。
sss- Shamir’s Secret Sharing (SSS) 暗号化スキームを使用して高可用性システムをデプロイできます。
9.1. Network-Bound Disk Encryption リンクのコピーリンクがクリップボードにコピーされました!
Network-bound Disc Encryption (NBDE) は、Policy-Based Decryption (PBD) のサブカテゴリーであり、暗号化されたボリュームを特別なネットワークサーバーにバインドできるようにします。NBDE の現在の実装には、Tang サーバー自体と、Tang サーバー用の Clevis ピンが含まれます。
Clevis および Tang は、一般的なクライアントおよびサーバーのコンポーネントで、ネットワークがバインドされた暗号化を提供します。RHEL では、Clevis と Tang は LUKS と組み合わせて使用され、ルートおよび非ルートストレージボリュームを暗号化および復号します。これにより、Network-bound Disk Encryption を実現します。
9.1.1. NBDE のコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
RHEL では、NBDE は次のコンポーネントとテクノロジーによって実装されます。
図9.1 LUKS1 で暗号化したボリュームを使用する場合の NBDE スキーム。LUKSmeta は LUKS2 ボリュームには使用されません。
- Tang
- Tang は、データをネットワークへの接続状態に結び付けるためのサーバーです。システムが特定のセキュアなネットワークにバインドされたときに、そのデータが含まれているシステムを利用可能な状態にします。Tang はステートレスで、TLS または認証は必要ありません。サーバーがすべての暗号鍵を保存し、これまでに使用されたすべての鍵を把握しているエスクローベースのソリューションとは異なり、Tang はクライアントの鍵に関与することはありません。したがって、クライアントから識別情報を取得することはありません。
- Clevis
-
Clevis は、自動化された復号用のプラグイン可能なフレームワークです。NBDE では、Clevis が LUKS ボリュームの自動ロック解除を提供します。
clevisパッケージは、クライアントで使用される機能を提供します。 - Clevis ピン
- Clevis ピンは、Clevis フレームワークへのプラグインです。そのようなピンの 1 つとして、NBDE サーバーである Tang との通信機能を実装したプラグインがあります。
- José
- José ライブラリーは、暗号化と復号の操作を実行するために、クライアント側とサーバー側の両方のコンポーネントによって使用されます。
- LUKSMeta
RHEL のデフォルトのディスク暗号化形式は、LUKS バージョン 2 (LUKS2) です。そのため、NBDE のプロビジョニング状態は、LUKS2 ヘッダーにトークンとして保存されます。
luksmetaパッケージによる NBDE のプロビジョニング状態は、LUKS1 で暗号化したボリュームにのみ使用されます。Tang 用の Clevis ピンは、特に指定をしなくても、LUKS1 と LUKS2 の両方をサポートしています。Clevis はプレーンテキストファイルを暗号化できますが、ブロックデバイスを暗号化するには
cryptsetupツールを使用する必要があります。
9.1.2. NBDE の原則 リンクのコピーリンクがクリップボードにコピーされました!
NBDE のプロビジョニングを開始すると、Tang サーバーの Clevis ピンは、Tang サーバーの、アドバタイズされている非対称鍵のリストを取得します。もしくは、鍵が非対称であるため、Tang の公開鍵のリストを帯域外に配布して、クライアントが Tang サーバーにアクセスしなくても動作できるようにします。このモードは オフラインプロビジョニング と呼ばれます。
Tang 用の Clevis ピンは、公開鍵の 1 つを使用して、暗号的に強力な一意の暗号鍵を生成します。この鍵を使用してデータを暗号化すると、この鍵は破棄されます。Clevis クライアントは、使いやすい場所に、このプロビジョニング操作で生成した状態を保存する必要があります。データを暗号化するこのプロセスは プロビジョニング手順 と呼ばれています。
そのデータにアクセスする準備ができたら、クライアントはプロビジョニング手順で生成されたメタデータを読み込み、暗号鍵を回復するために応答します。このプロセスは 復旧手順 と呼ばれます。
NBDE では、LUKS ボリュームを自動的にロック解除できるように、Clevis がピンを使用してボリュームをバインドします。バインドプロセスが正常に終了すると、提供されている Dracut アンロックを使用してディスクをアンロックできます。
詳細は、システム上の tang(8)、clevis(1)、jose(1)、および clevis-luks-unlockers(7) man ページを参照してください。
kdump カーネルクラッシュのダンプメカニズムが、システムメモリーのコンテンツを LUKS で暗号化したデバイスに保存するように設定されている場合には、2 番目のカーネル起動時にパスワードを入力するように求められます。