Security, Identity, and Compliance

AWS Encryption SDK

クライアント側暗号化ライブラリ。データキーをラッピングキー(AWS KMS等)で保護するエンベロープ暗号化を、アルゴリズム選定を意識せず実装できます。GenAIの主役ではなく、機密データを扱うパイプラインの暗号化手段として出ます。

  • C|周辺
  • D3 安全性・セキュリティ・ガバナンス

ひとことで言うと

クライアント側でデータを暗号化・復号するためのオープンソースライブラリです。「どのアルゴリズムを使うか」「鍵をどう保護するか」を自分で設計しなくても、エンベロープ暗号化のベストプラクティスに従った実装を提供します。AWSアカウントは必須ではなく、AWS KMSを使う場合にのみ必要です。

要するに、鍵のかけ方の教科書ごと渡してくれるキットです。データごとに固有のデータキーを作り、そのデータキーをさらに別の鍵(ラッピングキー)で包む——この面倒な手順を、SDKが暗号化メッセージという1つの形式にまとめてくれます。

何に使うか

用途中身
エンベロープ暗号化データオブジェクトごとに固有のデータキーを生成し、1つ以上のラッピングキーで保護
鍵の可搬性複数のラッピングキー(例: KMSキー+オンプレHSMの鍵)で同じデータキーを保護し、どちらでも復号可能に
暗号化データの一体管理暗号化データキーと暗号化データを1つのメッセージ形式にまとめて保存・受け渡し

試験でどう問われるか

問われ方正解に寄る条件引っかけ
「アプリ側で機密データを暗号化してから保存・送信したい」クライアント側暗号化を自前実装せずに標準的な方式で行いたい → AWS Encryption SDKAWS KMS の Encrypt/Decrypt API 直接呼び出し(Encryption SDK が返す暗号化メッセージとは互換性がない別の形式)

主役では出ません。 D3(データセキュリティとプライバシー)の文脈で、PII等の機密データを扱うパイプラインの暗号化手段の1つとして挙がります。

互換性の罠。 AWS Encryption SDK で暗号化したデータは、AWS KMS の Decrypt API では復号できません(逆も同様)。DynamoDB Encryption Client や Amazon S3 クライアント側暗号化とも暗号化メッセージの形式が異なり、相互に復号できません。暗号化と復号は同じライブラリで揃える必要があります。

取り違えやすいもの

迷う相手切り分けの一言
AWS KMSKMS は鍵の生成・保管・アクセス制御を行う鍵管理サービス。Encryption SDK はクライアント側での暗号化処理そのものを担い、ラッピングキーとしてKMSを使うこともできる(対立ではなく組み合わせ)
AWS KMS の Encrypt/Decrypt API直接呼び出しKMS APIを直接呼ぶ場合は暗号化データキーの管理を自分で行う必要がある。Encryption SDK はその管理(メッセージ形式・複数ラッピングキー対応)を肩代わりする

想起チェック

Q1. AWS Encryption SDK で暗号化したデータを、AWS KMS の Decrypt API で復号できますか。

できません。 両者は異なる暗号化メッセージ形式を使うため、暗号化と復号は同じ方式(同じSDK)で揃える必要があります。

出典(AWS公式)