KMSキーと暗号化方式を理解する

KMSを使う設計を、データキーの流れ・許可・暗号化コンテキスト・リージョン・ライフサイクルに分解します。

この単元で学ぶこと

  • エンベロープ暗号化の処理と保管情報を説明する
  • KMSの認可とコンテキスト条件を評価する
  • ローテーションと複数リージョンの境界を説明する

本文解説

1. 大きなデータは外側で暗号化 エンベロープ暗号化ではアプリがデータキーでファイルを暗号化し、KMSキーでデータキーを保護します。GenerateDataKeyは平文キーと暗号化したコピーを返します。KMSが返したデータキーを使ってファイル全体を自動暗号化するのではなく、アプリや暗号ライブラリがデータを処理します。

2. 復号時の処理 保存した暗号化データキーをKMSへ渡して復号し、得られた平文キーでファイルを復号します。平文キーは不要になり次第除去します。KMSはデータキーを利用者の代わりに保管・追跡しないので、暗号文、暗号化データキー、必要なアルゴリズム情報等を欠落させない設計が必要です。

3. キーポリシーが認可の基礎 各KMSキーにはキーポリシーがあります。IAMポリシーによるAllowを利用するには、その利用をキーポリシー側で有効にする必要があります。キーポリシーから直接許可する経路やgrantもあるため、常にIAMのAllow一つだけで判断しません。管理者と利用者のActionを分け、明示的Denyや組織の制限も確認します。

4. コンテキストで結び付ける 対称暗号化の暗号化コンテキストは、例えばDepartment=Financeという非秘密のキーと値です。暗号文と結び付く追加認証データで、復号に同じ値が必要になります。ポリシーの条件にも利用できますが、CloudTrail等へ平文で残るため、顧客の秘密やパスワードを入れません。

5. 論理キーと鍵素材 自動ローテーションはAWS_KMS由来の対称暗号化キーで利用します。同じキーIDの内部で素材を更新し、過去の復号には旧素材を使います。非対称キーやHMACキーまで同じ自動更新の対象ではありません。インポート素材の対称キーはオンデマンド更新に対応しますが、自動更新の対象と混同しません。

6. 別キーへの切替 新しいキーを作ってエイリアスを変更する方式は、既存キー内部の素材更新とは異なります。エイリアス変更は既存暗号文を書き換えず、古いキーが必要なデータは残ります。削除前に復号依存を確認し、必要なら再暗号化を計画します。既存データキーの漏えい対応もKMSキー更新だけでは完結しません。

7. 関連するマルチリージョンキー 同じセットに属するマルチリージョンキーは同じキーIDと鍵素材を共有し、対応する暗号文を別リージョンで復号できます。しかしグローバルな単一資源ではなく、レプリカの作成先を選び、各地のキーポリシーやエイリアス等を個別管理します。業務データも自動複製されるわけではありません。

8. サービス連携を確認する マルチリージョンキーを指定しても、AWSサービスが特別な相互運用を利用するとは限りません。例えばS3のリージョン間複製は関連キーでも宛先キーでデータキーを暗号化し直します。クライアント側の暗号化方式とサービスの保存時暗号化を分け、宛先権限と復旧テストまで設計します。

図解

復号に必要な三つの条件
正しい暗号文を持つだけでも、許可だけがあるだけでも、必要な復号条件は揃いません。

重要ポイント

  • データキーを保管・利用する責任を明確にする。
  • コンテキストは非秘密で復号時に一致させる。
  • マルチリージョンキーでもポリシーとデータ複製は別。

間違えやすい点

  • IAM Allowだけを無条件の利用許可とみなす。
  • エイリアス変更を既存暗号文の更新と考える。

用語解説

暗号化コンテキスト
対称暗号文に結び付ける非秘密の追加認証データ。
grant
特定のKMSキーへの許可を委任する仕組み。
マルチリージョンキー
異なるリージョンで同じキーIDと鍵素材を共有する関連キーのセット。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。