ディスク暗号化
1 つの統合と 3 つのオンホストエンジン — LUKS、Cryhod、BitLocker — を、DuoKey vault に保持された鍵暗号化鍵でアンロックします。
概要
ディスク暗号化は、アプリカタログ内の単一のアプリタイプであり、1 つ以上のボリュームを保護します。各ボリュームは 3 つのオンホスト暗号化エンジンのいずれかにバインドされます。いずれの場合も、ボリューム自身のデータ暗号化鍵がホストの外に出ることはなく、DuoKey がそれを変更することもありません。DuoKey が保持するのは、そのデータ暗号化鍵へのアクセスをラップする鍵暗号化鍵(KEK)です。ホスト側のエンジンは、KEK をローカルに保存する代わりに、DuoKey が提供するインターフェース(LUKS と Cryhod では PKCS#11 プロバイダー、BitLocker では CNG Key Storage Provider の証明書)を通じて KEK にアクセスします。そのため、生の鍵素材が平文でディスクに置かれることはなく、DuoKey Cockpit のデータベースに保存されることもありません。KEK はリンクされた vault の内部にとどまり、アンラップのためにその内部でのみ使用されます。
3 つのエンジンはいずれも、DuoKey が提供するインターフェースを通じて vault に保持された鍵暗号化鍵にアクセスします。KEK の秘密鍵部分が vault の外に出ることはありません。
| エンジン | ホスト OS | インターフェース | アンロックの仕組み |
|---|---|---|---|
| LUKS | Linux | PKCS#11 プロバイダー | PKCS#11 トークン URI を介して、キースロットが vault に保持された KEK にバインドされます。ドライバーはブート時にプロバイダーへボリューム鍵のアンラップを要求します。 |
| Prim'X Cryhod | Windows | PKCS#11 プロバイダー | Cryhod の暗号化センターが DuoKey の PKCS#11 デバイスを選択し、設定されたタグによって KEK を特定します。 |
| Microsoft BitLocker | Windows | CNG Key Storage Provider | vault の KEK がスマートカード証明書として公開され、BitLocker のキープロテクターとして追加されます。 |
ディスク暗号化はアプリカタログ内の単一のアプリです。作成時にエンジン(luks、cryhod、bitlocker)を選択します。その後は、エンジンにかかわらず、ボリューム、その KEK、エンロール状態が同じ方法で管理されます。
ボリュームと鍵暗号化鍵
各ディスク暗号化アプリは 1 つ以上のボリュームを保護します。ボリュームを作成すると、ホストに対して、また任意でワークロードラベルとともに登録されます。ワークロードラベルは、そのボリュームがどのデータディレクトリを保護しているかを示す純粋に情報提供目的のタグ(例えば elasticsearch)です。これらのエンジンはその上で何が動作しているかにかかわらず基盤となるボリュームを保護するため、ラベルによってボリュームの暗号化方法が変わることはありません。
ボリュームをエンロールすると、その KEK — RSA 鍵(デフォルトは 2048 ビット、または 4096 ビット)— がリンクされた vault(デフォルトではテナントのソフトウェア vault、または選択した vault)の内部に作成されます。KEK はマネージド鍵として作成されるため、その vault の配下で鍵モジュールにも表示されます。KEK は非対称鍵であるため、ボリュームのアンロックは vault アダプター内部で実行される、ラップされたボリューム鍵の RSA-OAEP 復号となります — KEK の秘密鍵部分が外に出ることはありません。
| ボリュームのフィールド | 意味 |
|---|---|
| エンロール状態 | pending(登録済みだが KEK は未バインド)、enrolled(KEK がバインドされ使用可能)、failed、または rotating(鍵のローテーションが進行中)。 |
| 状態 | active(アンロック可能)、suspended(アンロックを拒否)、または revoked。 |
| KEK アルゴリズム | RSA-2048(デフォルト)または RSA-4096。エンロール時またはローテーション時に選択できます。 |
ボリュームの状態が active 以外になると、DuoKey はそのボリュームに対するすべてのアンロック要求を拒否します — 正当なブートも含まれます。ボリュームの一時停止や失効は意図的な場合のみ行い、その前に代替のアンロック手段(例えば BitLocker の回復キー)があることを確認してください。
ボリュームのエンロール
アプリを作成しボリュームを登録する
エンジン(luks、cryhod、bitlocker)を選択し、ボリュームに名前を付けます。任意で、ホスト ID、ホスト OS、オンホストのボリューム参照(デバイスパスまたはドライブレター)を記録します。
ボリュームをエンロールする
DuoKey がリンクされた vault に RSA KEK を作成し、エンロールメントバンドルを返します。バンドルには、このボリューム用の DuoKey プロバイダーのエンドポイント、オンホストのライブラリ/設定ファイルのパス、選択したエンジン向けのホスト側セットアップ手順が順序付きで含まれます。
ホスト側の手順を実行する
生成された手順をホスト上で実行します — DuoKey プロバイダーをインストールし、それをエンジンにバインドします(LUKS のキースロット、Cryhod のデバイス選択、または BitLocker のキープロテクター)。
アンロックを検証する
暫定的な/ローカルのアンロック方法を削除する前に、プロバイダー経由でボリュームがアンロックされることを確認します。その後、ボリュームのステータスを確認し、KEK がバインドされていること、vault に到達可能であることを確認します。
LUKS のセットアップ
| 手順 | 内容 |
|---|---|
| DuoKey PKCS#11 プロバイダーをインストールする | プロバイダーライブラリをホストにコピーし、その設定(サーバー URL とアクセストークン)を書き込みます。 |
| vault に保持された KEK を LUKS のキースロットにエンロールする | プロバイダーが公開する RSA KEK に新しいキースロットをバインドし、ボリューム鍵が vault に対してラップされるようにします。 |
| crypttab にトークンを登録する | PKCS#11 トークン URI のエントリを追加し、vault に保持された KEK によってブート時にボリュームが自動的にアンロックされるようにします。 |
| アンロックを検証する | ディスク暗号化ツールがプロバイダーだけでボリュームを開けることを確認します。 |
ホストが KEK を保存することはありません。systemd-cryptenroll と cryptsetup は、アンロックのたびに DuoKey PKCS#11 プロバイダーを通じて KEK にアクセスします。
Cryhod のセットアップ
| 手順 | 内容 |
|---|---|
| DuoKey PKCS#11 プロバイダー(Windows)をインストールする | プロバイダーを登録し、Cryhod の暗号化センターが KEK を列挙できるように設定を書き込みます。 |
| 暗号化センターで PKCS#11 デバイスを選択する | 「スマートカードまたは USB デバイスに保存された鍵(PKCS#11)」のオプションを選択し、設定されたタグによって KEK を選択します。 |
BitLocker のセットアップ
| 手順 | 内容 |
|---|---|
| vault の KEK を CNG-KSP 証明書として公開する | DuoKey Key Storage Provider をインストールし、秘密鍵が vault に保持された KEK であるスマートカード証明書をエンロールします。 |
| 証明書をキープロテクターとして追加する | 証明書ベースの BitLocker キープロテクターを介して、ボリュームの暗号化鍵を vault に保持された KEK にバインドします。 |
ボリュームの鍵のローテーション
ボリュームをローテーションすると、新しい KEK が作成され(任意で異なる RSA 強度、または異なる vault 内に)、ボリュームがその KEK に再バインドされ、新しいエンロールメントバンドルが返されます。ローテーション後に以前の KEK が再利用されることはありません。エンジンが新しい鍵を認識できるよう、該当するホスト側のエンロール手順を再実行してください。
BitLocker の回復キーのエスクローと回復
BitLocker のボリュームは、DuoKey がエンロールする証明書ベースのキープロテクターとは独立に、独自の回復プロテクター(数値の回復パスワード、外部キーファイル、またはその両方)を生成します。vault で保護されたアンロック経路とローカルに保存された回復キーの両方へのアクセスを失うと、マシンが恒久的にロックされてしまうため、ディスク暗号化はこれらの回復プロテクター向けに専用の一元化されたエスクローフローを備えています。表計算シートやローカルの印刷物に頼る代わりに、回復シークレット自体がそのボリューム自身の vault に保持された KEK でラップされ、一元的に保存されます。
プロテクターのエスクロー、一覧表示、回復は BitLocker のボリュームに適用されます。LUKS と Cryhod のボリュームはこのフローを使用しません。
回復シークレットは、主要なアンロック経路と同じ vault に保持された KEK でラップされ、開示はすべて監査証跡に記録されます。
回復キーのエスクロー
ホスト上で回復プロテクターを生成する
標準的な BitLocker のツールを使用して、ボリュームに回復プロテクター(数値の回復パスワード、外部キー、またはその両方)を追加します。これはボリュームの KEK がエンロールされた後に実行する必要があります。
エスクローのために送信する
回復シークレット、その種別(recovery_password、external_key、numerical_password)、任意のプロテクター ID/ラベルを DuoKey に送信します。シークレットは保存される前にボリュームの vault に保持された KEK で暗号化されます — DuoKey が平文で永続化することはありません。
エスクローを確認する
エスクローされたプロテクターは、その種別とラベルで識別され、ボリュームのプロテクター一覧に表示されます。ラップされたシークレット自体が一覧表示で返されることはありません。
ロックされたマシンの回復
ロックされたボリュームとプロテクターを特定する
使用するボリュームと、対象となるエスクロー済みプロテクターを見つけます(1 台のマシンがその運用期間中に複数のエスクロー済みプロテクターを持つ場合があります)。
シークレットを回復する
適切な権限を持つ運用担当者が回復を要求します。DuoKey はボリュームの vault に保持された KEK を使用してプロテクターのシークレットをアンラップし、返却します。
マシンをアンロックする
BitLocker の回復プロンプトで、回復した回復パスワードを入力する(または回復した外部キーを指定する)ことでマシンをアンロックします。
エスクロー済みプロテクターの回復(開示)は機微な操作として扱われます。要求したユーザーに紐付けて監査証跡とアクティビティフィードに記録され、プロテクターの最終回復日時が更新されます。回復プロテクターをアンラップする権限は、ディスクの回復を扱うことを認可された運用担当者に限定してください。
前提条件
前提条件
- ボリュームの KEK を保持する DuoKey vault(何も選択しない場合はテナントのデフォルトのソフトウェア vault が自動的に使用されます)
- DuoKey プロバイダー(PKCS#11 または CNG-KSP)をインストールするためのホスト上の管理者アクセス権
- LUKS の場合:cryptsetup / systemd-cryptenroll をサポートする Linux ホスト
- Cryhod の場合:Windows ホストに Prim'X Cryhod がすでに導入されていること
- BitLocker の場合:Windows ホストで BitLocker がすでに有効化されている、または有効化できる状態であること
各ボリュームはステータスチェックを公開しており、そのエンロール状態と、KEK を保持する vault に現在到達可能かどうかを報告します — 新しくエンロールしたボリュームを本番で利用する前に活用してください。