S3のKMSによる暗号化がいまいち文章だけでは頭に入ってこなかったので、図に起こしました
KMSは2つのKMSキーとデータキーの2つのキーを利用して、暗号化を行う
KMSキーは、データキーを暗号化するために使われるマスターキー
データキーは、実際にデータを暗号化・復号化するために使用されるキー
鍵が2つ登場するのが少しややこしい
S3の暗号化・復号化も、全く同じ仕組みで動く
暗号化
1. GenerateDataKey で、KMS へ鍵の生成を依頼
※ S3 では、Symmetric Key のみがサポート
When you use an AWS KMS key for server-side encryption in Amazon S3, you must choose a symmetric encryption KMS key. Amazon S3 supports only symmetric encryption KMS keys.
2. KMS にてキーを生成(「平文のキー」と「暗号化キー」)
3. 生成された鍵をレスポンスとして返却
4. 「平文のキー」を用いて、データを暗号化
「暗号化キー」は、復号用に保存する
5. 平文の鍵はセキュリティリスクとなるので、使用次第速やかに削除
復号化
1. Decrypt リクエスト
保存している「暗号化キー」を送信する
2. 送信されてきた「暗号化キー」を平文化
3. 「平文のキー」をレスポンスとして返却
4. 「平文のキー」を利用して、データを復号
5. 同様に「平文のキー」を削除する