0Pricing
AWS Security Academy · レッスン

エンベロープ暗号化とデータキー

KMSが実データを暗号化するデータキーを保護する仕組みを確認します。

「エンベロープ暗号化とデータキー」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。

大量データの問題

KMSが直接暗号化できるのは、小さなペイロード(約4 KB)だけです。実際のデータ、ファイル、ボリューム、データベースは、はるかに大きくなります。

この問題を解決するのがエンベロープ暗号化です。まずデータキーで大きなデータを暗号化し、そのデータキーをKMSキーで暗号化します。AWSは、大規模な暗号化にこの仕組みを使用しています。

データキーとは

データキーは、実際のデータを暗号化するためにKMSが生成する通常の暗号化キー(AES-256など)です。

  • KMSキーとは異なり、データキーのプレーンテキストは一時的にKMSの外へ出るため、使用できます。
  • KMSは、データキーの暗号化されたコピーも返します。

GenerateDataKey

KMSキーを指定してGenerateDataKeyを呼び出します。KMSは次を返します。

  • データを直ちに暗号化するためのプレーンテキストのデータキー。
  • 暗号文と一緒に保存する暗号化されたデータキー(KMSキーでラップされたもの)。

その後、メモリからプレーンテキストのデータキーを破棄します。

aws kms generate-data-key \
  --key-id alias/my-app-key \
  --key-spec AES_256

エンベロープパターン

処理の流れは次のとおりです。

  • プレーンテキストのデータキーでデータを暗号化します。
  • 暗号化されたデータキーを暗号文の隣に保存します。
  • プレーンテキストのデータキーを破棄します。

データキーがKMSキーによって封印された「エンベロープ(封筒)」に入っているように見えるため、この名前が付いています。

エンベロープを使った復号

復号時は、逆の手順を実行します。

  • 暗号化されたデータキーをKMSのDecryptに送信します。
  • KMSがプレーンテキストのデータキーを返します。
  • そのキーでデータを復号し、破棄します。

データキーをアンラップできるのはKMSだけなので、KMSキーへのアクセスがすべてを制御します。

エンベロープ暗号化の利点

エンベロープ暗号化は、両方の利点を実現します。

  • データキーによる大容量データの高速なローカル暗号化。
  • KMSキーがなければデータキーを使えないため、強力な一元管理。

1つのデータキーで大量のデータを保護できるため、KMSの呼び出し回数も減らせます。

データキーのキャッシュ

大容量のワークロードでは、AWS Encryption SDKを使ってデータキーをキャッシュし、多数の暗号化で再利用できます。

これにより、KMSリクエストのコストとレイテンシーを削減できます。キャッシュされたキーを長期間または広範囲に再利用しないよう制限を設定できるため、パフォーマンスとセキュリティのバランスを取れます。

サービス内部での利用方法

S3、EBS、またはRDSで暗号化を有効にすると、AWSがエンベロープ暗号化を代わりに実行します。

サービスはKMSキーからデータキーを要求し、データを暗号化して、ラップされたデータキーを保存します。ユーザーはKMSキーを選択するだけで、エンベロープの処理は自動的に行われます。

AWS Encryption SDK

AWS Encryption SDKは、独自のアプリケーションでエンベロープ暗号化を正しく実装するためのクライアント側ライブラリです。

データキーの生成、暗号化コンテキスト、ラップされたキーと暗号文の保存を処理するため、エラーが発生しやすい暗号処理を自分で実装する必要がありません。

GenerateDataKeyWithoutPlaintext

バリエーションであるGenerateDataKeyWithoutPlaintextは、暗号化されたデータキーだけを返します。

これは、データキーを今生成して保存し、使用時まで復号したくない場合に使用します。実際に必要になるまでプレーンテキストのキーをメモリに置かないため、事前に用意したキーの露出を抑えられます。

試験で重要な理由

エンベロープ暗号化を理解すると、KMSがスケールする理由と、1つのKMSキーでテラバイト単位のデータを保護できる仕組みが分かります。

GenerateDataKeyの流れ、KMSの外へ出るもの(短時間だけ存在するデータキー)、そしてKMSキーを制御することで派生データ全体を制御できる理由が問われます。

クイックチェック

エンベロープの流れを確認しましょう。

まとめ

エンベロープ暗号化について学びました。

  • GenerateDataKeyは、プレーンテキストのデータキーと暗号化されたデータキーを返します。
  • プレーンテキストのキーでデータをローカルに暗号化し、ラップされたキーを保存して、プレーンテキストを破棄します。
  • データキーをアンラップできるのはKMSキーだけであり、すべてのデータを一元管理できます。

よくある質問

「エンベロープ暗号化とデータキー」レッスンは無料ですか?

はい。「エンベロープ暗号化とデータキー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。

「エンベロープ暗号化とデータキー」で何を学びますか?

KMSが実データを暗号化するデータキーを保護する仕組みを確認します。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「エンベロープ暗号化とデータキー」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. KMSキーとは何か、何ができるか
  2. 対称キー、非対称キー、マルチリージョンキー
  3. キーポリシー、グラント、条件
  4. エンベロープ暗号化とデータキー
← AWS Security Academyに戻る