NBDE (ネットワークバインドディスク暗号化) テクノロジー
目次
NBDE の紹介
Network-Bound Disk Encryption (NBDE) は、ディスク暗号化 と密接に連携しています。なぜ企業や個人がディスクを暗号化する必要があるのでしょうか?企業データや個人データが漏洩したくない場合は、追加の セキュリティー対策 として機密データを含むディスクを暗号化する必要があります。
ディスク暗号化には 2 つの使用例 があります。
- ハードウェアデバイス (セキュリティーで保護されていないサーバー、ラップトップなど) が 盗難または紛失した 場合、ディスク暗号化によりデータ漏洩のリスクが軽減されます。通常、これは物理的なセキュリティーを備えたエンタープライズグレードのデータセンターにとって脅威ではありません。
- 2 番目の使用例は、エンタープライズグレードのデータセンターに関連します。つまり、欠陥のため、またはテクノロジーの観点から見て古くなったために、遅かれ早かれ ディスクを交換する必要があります。また、組織では、拡張ストレージを取得するための交換も一般的です。交換したディスクはまったく消去できないため、ディスクのライフサイクルの終わりにはデータ漏洩が発生する可能性がありますが、必要な知識があれば、少なくとも部分的にデータにアクセスできる可能性があります。現在のディスクを消去するには、多くの時間がかかります (通常、ディスクをゼロで上書きするため、ランダムなデータであっても)。暗号化されたディスクは、消去したり物理的に破壊したりする必要がなく、単に廃棄するだけで済みます。
Linux のディスク暗号化の標準は LUKS (Linux Unified Key Setup) です。LUKS で暗号化されたデバイスを通常に使用するには、ディスクを復号化するためのパスワードを入力する必要があります。このため、LUKS は拡張できません。システムの起動時にパスフレーズを手動で入力する必要があり、データセンターではこれは禁止されています。
NBDE により、システム起動時にディスクのロックが自動解除され、手動によるパスワード入力が防止されます。これにより、マシンの再起動時にパスワードを手動で入力することなく、物理マシンおよび仮想マシン上のハードドライブのボリュームを暗号化できます。このため、NBDE は、さまざまな種類のデバイスで暗号化されたディスクを使用し、手動介入なしでシステムのブートプロセスを自動化したい組織にとって、LUKS にスケーリングを追加するのに最適なテクノロジーになります。これは、データセンターなどの大規模環境では重要な要件です。
NBDE テクノロジー
NBDE は、ネットワーク全体で暗号化キーを外部サーバーまたは一連のサーバーに安全かつ匿名でバインドします。これは、クライアントが暗号化キーを保存したり、ネットワーク経由で転送したりしない ため、キーエスクローで はありませんが、それ以外の点では、NBDE は同様に動作します。
NBDE は、次の 2 つの主要コンポーネントに基づく クライアント/サーバーアーキテクチャー に従っています。
-
Tang : サーバー 上で動作するソフトウェア。これは HTTP 上の JSON に基づいています。これは、制御された環境 (通常はデータセンター内のプライベートネットワーク) で実行されることを想定しており、Clevis (クライアント) が接続してキーを取得するための HTTP エンドポイントを提供します。これは、McCallum-Relyea 鍵交換に基づいており、次の項目によって特徴付けられます。
- これは、Diffie-Hellman アルゴリズム + 統合暗号化スキームに基づいています。
- 暗号化キーはクライアントから送信されません (秘密キーとして機能します)。
-
Clevis : クライアント として機能するソフトウェア。これは、ディスクを暗号化し、自動的にロックを解除する必要があるデバイス上で実行されます。Clevis が提供する自動復号化は、さまざまなピンに基づいています。ピンは、さまざまなテクノロジーを使用してこの自動復号化を提供するプラグインです。使用可能なピンは次のとおりです。
- tang : 本物の NBDE を提供します。HTTP 経由で Tang サーバーに接続できるようになります。
- tpm2 : マシン上の安全な暗号プロセッサー
- sss : 複合設定の場合 (例: 2 つ以上の Tang サーバーを使用して高可用性を実現)
Clevis と Tang は、NBDE を提供する汎用のクライアントおよびサーバーコンポーネントです。Red Hat Enterprise Linux は、これらのコンポーネントを Linux Unified Key Setup-on-disk-format (LUKS) と組み合わせて使用し、ルートおよび非ルートのストレージボリュームを暗号化および復号化し、ネットワークバインドディスク暗号化を実現します。
クライアントは起動すると、暗号化ハンドシェイクを実行することによって、事前定義された一連の Tang サーバーへの接続を試みます。Tang サーバーに到達できれば、ノードはディスク復号化キーを構築し、ディスクのロックを解除して起動を続行できます。ネットワークが停止したり、サーバーが利用できなくなったりしたことが原因で、ノードが Tang サーバーにアクセスできない場合に、ノードは起動できず、Tang サーバーが再び利用可能になるまで無限に再試行し続けます。キーはネットワーク内のノードの存在に事実上結び付けられているため、保存データへのアクセスを試みる攻撃者は、ノード上のディスクと Tang サーバーへのネットワークアクセスの両方を取得できる必要があります。
前述したように、NBDE の最も重要な特徴の 1 つは、McCallum-Relyea 鍵交換の使用です。次のセクションでは、この交換がどのように機能するかについて詳しく説明します。
マッカラムとレリエの鍵交換
McCallum-Relyea キー交換は、キーエスクローの代替方法であり、復号キーを取得せずに再生成できます。このアルゴリズムは 、Diffie-Hellman 鍵交換アルゴリズムの高度なバージョン です。アルゴリズムの前半は Diffie-Hellman 交換と同じように機能しますが、共有キーは追加の計算にのみ使用されます。追加の確率変数を使用して計算します。クライアントはサーバーに対して完全に匿名のままであり、このランダムデータがクライアントとサーバー間で転送されるときに暗号化はまったく必要ありません。
McCallum-Relyea 鍵交換は 2 つのステップで実行されます。
- プロビジョニング: 暗号化されたディスクを含むノードが Tang サーバーを使用してロック解除されるように Clevis ソフトウェアを介して設定されている場合、クライアントの秘密鍵がノードから流出することなく、 クライアントとサーバーの間で鍵交換が実行されます。
サーバーは、秘密鍵 S と公開鍵 s を含む鍵ペアを生成します。次に、公開鍵をアドバタイズします。クライアントはまた、秘密鍵 C と公開鍵 c を使用して鍵ペアを作成します。
その後、クライアントはサーバー公開鍵 s と自身の秘密鍵 C を使用して対称鍵 K を作成します。
ただし、この場合、クライアントは公開鍵 c を公開しません。つまり、クライアントだけが K を導出できること になります。クライアントは、LUKS スロットの 1 つに K を書き込みます。クライアントが K を保存すると、K とその秘密鍵 C の両方が破棄されます。つまり、クライアントは、少なくともサーバーの助けがなければ K を導出できなくなります。
次の図は、このプロセスを示しています。

- 回復: 暗号化されたディスクを含むデバイスが起動またはマウントされると、Clevis クライアントはサーバーから必要な情報を回復して秘密キーを生成する必要があります。クライアントは新しいキーペア e を生成し、サーバー用のメッセージキーを生成します。サーバーから返された内容に基づいて、クライアントは K を導出できます。K が導出されると、Clevis はこのキーを通常のディスクマウントプロセス (dmcrypt) に渡し、手動で入力されたパスワードを待たずにボリュームをマウントします。
次の図は、秘密キーの再生成プロセスを示しています。

前述のプロビジョニングおよびリカバリーのプロセスによれば、次の点に注意してください。
- プロビジョニング中に必要となるのはサーバーの公開キーのみです。この公開キーは、ネットワーク経由で起動する Clevis クライアント専用ではありません。これは、Clevis がオフラインで使用することも、Tang サーバーにアクセスできないプロビジョニングプロセス中に使用することもできます。
- サーバーには状態が ありません。復号キーは転送されません。つまり、エスクローは関与しません。
- 転送されるすべてのデータ (s、x、y) は公開されるか、盗聴者にとって無意味であるため 、TLS やその他のチャネルの暗号化は必要ありません。
NBDE とキーエスクローの比較
前のセクションでは、McCallum-Relyea 鍵交換の仕組みと、それが提供する特徴について詳しく説明しました。McCallum-Relyea キー交換は NBDE の中核であるため、次の表はその利点を キーエスクロー 交換方式と直接比較できます。
| 機能 | キー Escrow | NBDE |
|---|---|---|
| 単一ディスクの盗難からの保護 | ✅ | ✅ |
| サーバー全体に対する保護 | ✅ | ✅ |
| 暗号化キーがネットワーク経由で送信されることはありません | ❌ | ✅ |
| クライアントサーバー間のトランスポート暗号化は不要 | ❌ | ✅ |
| Red Hat のサポート | ❌ | ✅ |
| Ansible ロールを使用した自動化 | ❌ | ✅ |
| OpenShift にサポート | ❌ | ✅ |
| Libguestfs によるサポート | ❌ | ✅ |
| ストラティスによるサポート | ❌ | ✅ |
NBDE の使用は、次の理由から、リモートディスクの自動ロック解除に適しています。
- McCallum-Relyea キー交換は、より安全なメカニズム です (暗号化キーがネットワークに送信されることはありません)。
- McCallum-Relyea キー交換では、ディスクのロックを解除するためにクライアントとサーバー間のトラフィックを暗号化する必要がないため、この種のシナリオのデプロイメントが簡素化されます。
- NBDE の使用が統合されているさまざまなテクノロジー (OpenShift、Ansible、Libguestfs、または Stratis) があります。このような種類のテクノロジーは通常、キーエスクローには利用できません。または、利用できるとしても、その実装ははるかに複雑です。
NBDE 設定
このドキュメントは、NBDE の設定方法について詳細に説明することを目的としたものではありません。詳細なガイダンスについては、次の RHEL 製品ドキュメントを参照してください。
- クライアントソフトウェア Clevis のインストール。Clevis クライアントソフトウェアは、自動的にロックを解除する必要がある暗号化されたディスクを備えたすべてのシステムに適切にインストールする必要があります。
- サーバーソフトウェア Tang のインストール。Tang サーバーは、デプロイメントに含まれるすべてのシステムにインストールして起動する必要があります。
- バインドから Tang サーバーへのクライアントの設定。各クライアントは、起動プロセス中のキーの取得に 1 つまたは複数の Tang サーバーを使用するように適切に設定されている必要があります。
複数のクライアントとサーバーが関係する大規模なデプロイメントの場合は、NBDE Ansible ロール の使用を優先します。
キーのローテーション
キーのローテーションは、NBDE 環境のセキュリティーを長期的に維持するためのメカニズムです。デバイスの盗難など、データ漏洩の可能性がある場合には、キーのローテーションを推奨します。ローテーションも定期的に実行する必要があり、その期間は次のようなさまざまな側面に応じて異なります。
- 特定のデプロイメントにおけるセキュリティー制約
- キーのサイズ
- 機関の内部ポリシー
キーのローテーションには、次の 3 つの操作が含まれます。
- サーバー上で新しいキーを生成し、既存のアクティブなキーをローテーションします。新しく生成されたキーがアドバタイズされるキーになります。
- クライアントを新しく生成されたキーに再バインドします。クライアントは引き続き非表示の回転キーを使用して作業しますが、新しく生成されたキーを使用するために再バインドを実行することを強く推奨します。
- サーバー上の古いキーを削除します。すべての Clevis クライアントのキーが新しいキーで再設定されると、古いキーをサーバーから削除できます。すべての NBDE 暗号化ノードがキーの再生成を完了する前に古いキーを削除すると、それらのノードが他の設定されている Tang サーバーに依存するようになるため、この作業は慎重に行ってください。他にサーバーが存在しない場合、自動ロック解除はできません。要約すれば、ローテーションされたキーは、すべてのクライアントが新しいキーにバインドされた場合にのみ削除できます。そうしないと、データ損失が発生する可能性があります。
次のスキームは、キーのローテーション操作に含まれるさまざまなフェーズを示しています。
キーのローテーション操作にはさまざまな手順が含まれており、何らかの形で手動で行われるため、エラーが発生しやすくなります。ただし、NBDE Ansible ロールを 使用すると、キーローテーション操作を正しく実行でき、前の各ステップが自動化され、必要なすべてのアクションが正しい順序で正常に実行されるようになります。
NBDE シナリオ
NBDE シナリオは、次のようなデプロイメントに必要なパラメーターを使用して整理できます。
- ペリメトリックセキュリティー
- ロードバランシング
- 地理的な冗長性
単純な NBDE シナリオ
非常に単純なシナリオには、1 つまたは少数のクライアントと Tang サーバーが含まれます。
この種のシナリオは非常に限定されており、さまざまな障害点が発生する可能性があるため、非常に小規模なテストデプロイメントまたは概念実証にのみ使用することを推奨します。
- 内部ネットワークの停止
- Tang サーバーの停止
負荷分散を使用した NBDE シナリオ
前のシナリオと比較してより高度なシナリオには、1 つまたは少数のクライアントと複数の Tang サーバーが含まれており、クライアント間でトラフィックを分散するための負荷分散が行われます。
この種のシナリオは以前のシナリオほど制限されておらず、地理的に冗長なネットワークをデプロイメントする可能性がない小規模組織にとっては優れたエントリーポイントとなる可能性があります。考えられる障害点は次のとおりです。
- 内部ネットワークの停止
この種のシナリオには、SSS ピンを使用して、さまざまな Tang サーバーに対して Clevis を設定することが含まれます。
冗長ネットワークセグメントを使用した NBDE シナリオ
冗長ネットワークセグメントを使用したシナリオでは、重複したネットワークセグメントを含めることで、以前のデプロイメントにおける以前の障害ポイントを修正できます。
この種のシナリオには、すべての Tang サーバーに対して Clevis を設定することも含まれます。ネットワーク設計者は、SSS ピンを使用して、Clevis クライアントとすべての Tang サーバー間の負荷分散を設定します。
NBDE 導入は、使用方法や関係する組織の種類に応じて、複数のネットワークトポロジーを使用して設定できます。さまざまな要件 (負荷分散やバックアップなど) を分析し、特定の導入要件に適応させることができます。
NBDE 災害復旧に関する考慮事項
このセクションでは、NBDE デプロイメントで発生する可能性のあるいくつかの潜在的な災害状況と、それぞれの状況に対応する手順について説明します。
-
クライアントマシンの損失:
Tang サーバーを使用してディスクパーティションを復号化するクラスターノードが失われても、大惨事にはなりません。マシンが盗難されたか、ハードウェア障害が発生したか、または別の損失シナリオが発生したかは重要ではありません。ディスクは暗号化されており、回復不可能とみなされます。
ただし、盗難が発生した場合は、Tang サーバーのキーを予防的にローテーションし、残りのすべてのノードのキーを再設定して、後で Tang サーバーに不正アクセスできた場合に備え、ディスクが回復不能なままにしておくことが懸命です。
この状況から回復するには、ノードを再インストールするか交換します。 -
クライアントネットワーク接続の喪失:
個々のノードへのネットワーク接続が失われると、ノードは自動的に起動できなくなります。
ネットワーク接続の損失が発生する可能性のあるデプロイメントを計画している場合は、オンサイトのオペレーターが手動で使用するパスフレーズを公開し、後でキーをローテーションして無効にすることができます。
ノードへのネットワークアクセスがないと、ノードの機能およびブート機能に影響を与えることが予想されます。たとえ手動介入によってノードが起動できたとしても、ネットワークアクセスが不足すると、事実上役に立たなくなります。 -
ネットワークセグメントの損失:
複数のネットワークセグメントがあり、それぞれのセグメントに 1 つ以上の Tang サーバーが含まれているシナリオでは、ネットワークセグメントが失われ、Tang サーバーが一時的に使用できなくなると、次のような影響が生じます。- 他のサーバーが利用可能な場合、設定されたノードは通常どおり起動し続けます。
- 新規ノードは、ネットワークセグメントが復元されるまでその暗号化キーを確立できません。この場合、高可用性と冗長性を確保するために、地理的に離れた場所への接続を確保します。これは、新しいノードをインストールする場合、または既存のノードのキーを更新する場合、その操作で参照しているすべての Tang サーバーが使用可能であるか、プロビジョニング中に IP とともに Tang サーバーの公開キーのコピーが使用可能である必要があるためです。Tang サーバーのアドレス。
-
Tang サーバーの損失:
同一のキーマテリアルを持つ負荷分散されたサーバーのセット内の個々の Tang サーバーの損失は、クライアントには完全に透過的です。
同じ URL に関連付けられているすべての Tang サーバー、つまり負荷分散されたセット全体の一時的な障害は、ネットワークセグメントの損失と同じと考えることができます。既存のクライアントは、事前に設定された別の Tang サーバーが利用可能な限り、ディスクパーティションを復号化できます。これらのサーバーのいずれかが再びオンラインになるまで、新規クライアントは登録できません。
サーバーを再インストールするか、バックアップからサーバーを復元して、Tang サーバーの物理的な損失を軽減できます。キーマテリアルのバックアップおよび復元プロセスが不正アクセスから適切に保護されていることを確認してください。 -
キーマテリアルの侵害:
Tang サーバーまたは関連データの物理的な盗難など、Tang サーバー上の個々のキーマテリアルが侵害された場合は、キーをただちにローテーションする必要があります。具体的には、次のアクションを実行します。- 影響を受けた情報を保持する Tang サーバーのキーを再生成します。
- Tang サーバーを使用してすべてのクライアントのキーを再生成します。
- 元のキー情報を破棄します。
特定のノード上のマスター暗号化キーの侵害につながる可能性のあるキー素材の侵害を慎重に評価します。理想的には、サーバーをオフラインにして、ディスクの完全な再暗号化を実行します。同じ物理ハードウェア上での再フォーマットと再インストールは、クロックタイムは長くなりますが、より簡単で、より厳密に自動化およびテストできます。
まとめ
この記事では、NBDE テクノロジーと、それが使用するキー交換アルゴリズム (McCallum-Relyea) について詳しく説明しました。また 、キーエスクローなどの他のソリューションと比較して、暗号化されたディスクの自動ロック解除にとって NBDE が優れたキー取得ソリューションである 理由についても詳しく説明しました。
参考資料
1 OpenShift Container Platform: ディスク暗号化テクノロジーについて
2 RHEL 8 セキュリティー強化: 第 13 章。ポリシーベースの復号化を使用した暗号化ボリュームの自動ロック解除の設定
3 RHEL 9 システムロールを使用した管理および設定タスク: 第 16 章nbde_client および nbde_server システムロールの使用
Comments