implementing-envelope-encryption-with-aws-kms について
AWS KMS を使ったエンベロープ暗号化を実装する開発者やセキュリティ担当者向けのスキルです。ローカル暗号化、キーキャッシュ、ローテーション、マルチリージョンの災害復旧を扱います。
主な機能
- 01GenerateDataKey による DEK の生成
- 02AES-256-GCM によるローカル暗号化
- 03暗号化 DEK と暗号文の併存保存
- 04KMS 呼び出しを減らすキーキャッシュ
- 05ローテーションとマルチリージョン暗号化
活用シーン
- 01大量データへのエンベロープ暗号化の導入
- 02暗号化処理での KMS リクエスト依存の低減
- 03キー更新と災害復旧の計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-envelope-encryption-with-aws-kmsインストール後、Claude Code で/implementing-envelope-encryption-with-aws-kmsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
AWS KMS を使ったエンベロープ暗号化の実装
概要
エンベロープ暗号化は、データをデータ暗号化キー(DEK)で暗号化し、その DEK 自体を AWS KMS で管理されるマスターキー(KEK)で暗号化する戦略です。このアプローチにより、AWS が管理するハードウェアセキュリティモジュール(HSM)内でマスターキーを安全に保ちながら、大量のデータをローカルで暗号化できます。このスキルでは、AWS KMS の GenerateDataKey API を使ったエンベロープ暗号化の実装について説明します。
使用するタイミング
- 環境において、AWS KMS を使ったエンベロープ暗号化の機能をデプロイまたは構成するとき
- コンプライアンス要件に沿ったセキュリティ統制を確立するとき
- この領域のセキュリティアーキテクチャを構築または改善するとき
- この実装を必要とするセキュリティ評価を実施するとき
前提条件
- 暗号技術の概念とツールに関する知識があること
- 安全に実行するためのテストまたはラボ環境にアクセスできること
- 必要な依存関係がインストールされた Python 3.8 以降
- テスト活動に対する適切な許可を得ていること
目的
- エンベロープ暗号化のパターンとその利点を理解する
- AWS KMS の GenerateDataKey を使ってデータ暗号化キーを生成する
- DEK を使ってデータをローカルで暗号化・復号する
- 暗号化された DEK を暗号文と一緒に保存する
- KMS API の呼び出しを減らすためにキーのキャッシュを実装する
- 自動再暗号化を伴うキーローテーションを処理する
- 災害復旧のためのマルチリージョン暗号化を実装する
主要な概念
エンベロープ暗号化のフロー
kms:GenerateDataKeyを呼び出して、平文の DEK と暗号化された DEK を取得する- 平文の DEK を使ってデータをローカルで暗号化する(AES-256-GCM)
- 暗号化された DEK を暗号文と一緒に保存する
- メモリから平文の DEK を破棄する
- 復号時: 暗号化された DEK に対して
kms:Decryptを呼び出し、その後データを復号する
KMS の直接暗号化に対する利点
| 項目 | 直接 KMS | エンベロープ暗号化 |
|---|---|---|
| 最大データサイズ | 4 KB | 無制限 |
| レイテンシー | 操作ごとのネットワーク往復 | ローカル暗号化 |
| コスト | $0.03/10,000 リクエスト | KMS リクエストが少ない |
| オフライン | 不可 | 可能(キャッシュされた DEK を使用する場合) |
KMS キーの種類
- AWS マネージド: AWS が作成・管理する(
aws/s3、aws/ebs) - カスタマーマネージド: 作成し、ポリシーを管理する
- カスタムキーストア: CloudHSM クラスターによってバックアップされる
セキュリティ上の考慮事項
- 平文の DEK は決して保存せず、暗号化された DEK のみを保持する
- キーポリシーを使って、GenerateDataKey と Decrypt を呼び出せるユーザーを制限する
- すべての KMS API 呼び出しについて AWS CloudTrail のログ記録を有効にする
- キーローテーションを実装する(カスタマーマスターキーの自動年次ローテーション)
- 認証付き暗号化のメタデータには暗号化コンテキストを使用する
- KMS のスロットリングは指数バックオフで処理する
検証基準
- GenerateDataKey が平文の DEK と暗号化された DEK を返す
- 平文の DEK を使ってデータが AES-256-GCM で正しく暗号化される
- 暗号化された DEK を KMS Decrypt API で復号できる
- 復号された DEK によって元のデータが復元される
- 使用後、平文の DEK がメモリから消去される
- 復号時に暗号化コンテキストが検証される
- キーローテーションによって、DEK が新しいマスターキーで再暗号化される
コメント
Markdown 対応