概要

どれほど強力な暗号アルゴリズムを使っても、鍵の管理がずさんであれば暗号化は無意味になります。鍵管理(Key Management) は暗号鍵の生成・保管・使用・ローテーション・失効・破棄という一連のライフサイクルを安全に運用する仕組みです。KMS(Key Management Service) はこれをソフトウェア/クラウドサービスとして提供し、HSM(Hardware Security Module) は鍵をハードウェアレベルで保護します。SC試験では暗号アルゴリズムそのものより「鍵をどう守り、どう運用するか」という管理面が問われます。

仕組みと動作原理

鍵のライフサイクル

暗号鍵は生成された瞬間から破棄されるまで、常に漏洩・不正利用のリスクにさらされています。ライフサイクル全体を管理することが鍵管理の本質です。

フェーズ内容主なリスク
生成(Generation)十分なエントロピーを持つ乱数から鍵を生成乱数品質が低いと鍵が推測可能に
保管(Storage)鍵をアプリケーションコードや平文設定から隔離して保護ソースコード・環境変数への直書き
配布(Distribution)必要なサービス・利用者にのみ安全に鍵を渡す鍵の平文でのメール送付・共有ドライブ保存
利用(Usage)暗号化・復号・署名などの操作に鍵を使用過剰な権限を持つ主体による濫用
ローテーション(Rotation)定期的に新しい鍵へ切り替える長期間同一鍵を使い続けることによる漏洩時の被害拡大
失効(Revocation)漏洩や退職等が発生した鍵を即座に無効化失効プロセスの遅延・手順不備
破棄(Destruction)不要になった鍵を復元不可能な形で完全に削除バックアップ等への鍵の残存
暗号鍵のライフサイクル
1
生成
十分なエントロピーで生成
2
保管
HSM/KMS内に隔離
3
利用
暗号化・署名に使用
4
ローテーション
定期的に新鍵へ切替
5
失効・破棄
漏洩時は即時失効

なぜ鍵をローテーションするのか

同一の鍵を使い続けると、以下のリスクが蓄積します。

  • 漏洩時の被害範囲が拡大:長期間使われた鍵ほど、暗号化された過去データの量が多く、漏洩時の影響が大きい
  • 鍵の推測・解析リスク:同一鍵で暗号化されたデータ量が増えるほど暗号解析の材料が増える
  • コンプライアンス要件:PCI DSSなど多くの基準が定期的な鍵ローテーションを要求

ローテーション時は、旧鍵で暗号化済みのデータをすぐに再暗号化する必要はなく、新旧の鍵を一定期間並存させる(旧鍵は復号のみ許可)運用が一般的です。

HSM(Hardware Security Module)の役割

HSMは鍵の生成・保管・暗号演算を行う専用のハードウェア装置です。ソフトウェアだけで鍵を扱う方式と比べて、以下の点で保護レベルが高くなります。

特性内容
鍵の非搬出性秘密鍵はHSM内部で生成され、平文の形では外部に一切出力されない
耐タンパー性物理的にこじ開けようとすると内部の鍵を自動消去する仕組みを持つ
FIPS 140-2/3認証米国政府標準の暗号モジュールセキュリティ要件に基づく第三者認証
専用処理性能大量の暗号演算(署名・復号)を高速に処理できる

HSMはルート認証局(Root CA)の秘密鍵管理、決済システムの鍵管理、コード署名など、鍵が漏洩した場合の被害が壊滅的なユースケースで使われます。

鍵管理を支える構成要素
HSM
ハードウェアで鍵を保護
クラウドKMS
マネージドな鍵管理サービス
ルートキー
他の鍵を保護する最上位鍵
データキー
実データの暗号化に使用
アクセス制御
IAMで鍵の使用権限を管理
監査ログ
鍵の使用履歴を記録
鍵管理
ライフサイクル全体の保護

クラウドKMSとオンプレHSMの違い

クラウドプロバイダが提供するKMS(AWS KMS・Azure Key Vault・Google Cloud KMSなど)は、内部的にHSMを利用しつつ、鍵管理をサービスとして抽象化したものです。

観点オンプレHSMクラウドKMS
導入コスト高い(専用機器の購入・設置)低い(従量課金)
運用負荷自社で物理的・論理的に管理プロバイダが基盤を管理
鍵の専有度完全専有(マルチテナントなし)共有HSM上に論理分離(プランにより専有HSMも選択可)
鍵の持ち出し不可能(設計上)不可能(KMS外に平文鍵は出ない)
スケーラビリティ台数分の物理制約あり容易にスケール
監査・アクセス制御自社で構築が必要IAM・CloudTrail等と統合済み
オンプレHSM と クラウドKMS の比較
オンプレHSM クラウドKMS
導入コスト
高い(専用機器)
低い(従量課金)
運用負荷
自社で全面管理
プロバイダが基盤管理
鍵の専有度
完全専有
論理分離(専有HSMも選択可)
スケーラビリティ
物理制約あり
容易にスケール
監査・IAM統合
自社で構築
クラウドIAMと統合済み

エンベロープ暗号化(Envelope Encryption)

大量のデータをHSM/KMSで直接暗号化すると、演算負荷や通信コストの点で非効率です。そこで鍵を階層化し、実データは高速なローカル鍵で暗号化し、そのローカル鍵だけをKMSで保護する方式が使われます。

1. アプリケーションがKMSに「データキー生成」を要求
2. KMSがデータキー(平文)+そのデータキーをルートキーで暗号化した暗号化データキーを返す
3. アプリケーションは平文データキーでデータを暗号化し、暗号化データキーと一緒に保存
4. 平文データキーはメモリ上で使い終わったら破棄(保存しない)
5. 復号時:暗号化データキーをKMSに送って復号を依頼 → 平文データキーを得てデータを復号
エンベロープ暗号化の流れ
1
アプリケーション
KMSにデータキー生成を要求
2
KMS
平文データキーと暗号化データキーを返却
ルートキーでデータキーを暗号化
3
アプリケーション
平文データキーでデータを暗号化
暗号化後、平文データキーは破棄
4
アプリケーション
暗号化データと暗号化データキーを保存
5
復号時
暗号化データキーをKMSに送り復号を依頼
KMS内でルートキーにより復号

この方式により、ルートキー(マスターキー)はKMS/HSMの外に一切出ることなく、大量データの暗号化を高速に行えます。ルートキーをローテーションする際も、データキー自体を再暗号化するだけで済み、実データの再暗号化は不要です。

SC試験での頻出ポイント

  • 鍵の非搬出性:HSM内で生成された秘密鍵は平文の形で外部に出力されない設計になっている
  • エンベロープ暗号化の目的:大量データの暗号化性能とルートキー保護を両立させる階層構造
  • 鍵ローテーションと再暗号化の関係:ローテーション時に過去データすべてを即座に再暗号化する必要はなく、新旧鍵を並存させる運用が現実的
  • クラウドKMSでも鍵は平文で取得できない:KMS外への鍵の持ち出しはAPI設計上できない(復号・署名等の演算をKMS内で完結させる)
  • ルートCA/ルートキーの保護レベル:被害が壊滅的になる最上位の鍵ほど、HSM・オフライン保管など強固な保護が必要

よくある誤問・ひっかけパターン

誤り① 「クラウドKMSは鍵をクラウド事業者が自由に見られるので危険」→ 。KMSは暗号演算をサービス内部で完結させる設計であり、平文鍵をAPI経由で取得することはできません。事業者側の運用者もアクセス制御・監査ログの対象です。

誤り② 「鍵をローテーションしたら過去に暗号化したデータはすぐに読めなくなる」→ 。一般的な運用では旧鍵を復号用として一定期間保持し、新規の暗号化にのみ新鍵を使います。即座にデータが読めなくなるわけではありません。

誤り③ 「エンベロープ暗号化は単に二重に暗号化しているだけで意味がない」→ 。目的は「性能」と「鍵保護」の両立です。実データは高速なローカル鍵で暗号化し、そのローカル鍵だけをHSM/KMSで守ることで、大量データでもマスターキーを外部に晒さずに済みます。

関連用語

重要キーワード

用語説明
KMS鍵の生成・保管・ローテーションをサービスとして提供する鍵管理システム
HSM鍵をハードウェアレベルで保護する耐タンパー性を持つ専用装置
エンベロープ暗号化データキーで実データを暗号化し、データキー自体をルートキーで保護する階層構造
ルートキー(マスターキー)他の鍵(データキー)を暗号化・保護するための最上位の鍵
鍵ローテーション漏洩時の被害範囲を限定するため定期的に鍵を新しいものへ切り替える運用
FIPS 140-2/3暗号モジュールのセキュリティ要件を定めた米国政府標準・認証制度