Amazon Lambda のペアは、小さなアプリケーション データを対称的に暗号化および復号化します。これを容易にするために Amazon KMS を使用したいと考えています。これは、シークレット ストレージとキー ローテーションの問題を解決し、さらにいくつかの問題を解決するためです。
Amazon KMS 開発者ガイドには次のように記載されています。
これらの操作は、データ キーを暗号化および復号化するように設計されています。暗号化操作で AWS KMS カスタマーマスターキー (CMK) を使用し、4 KB (4096 バイト) を超えるデータを受け入れることはできません。パスワードや RSA キーなどの少量のデータを暗号化するために使用することはできますが、アプリケーション データを暗号化するようには設計されていません。
さらに、アプリケーション データの暗号化にはAWS Encryption SDKまたはAmazon S3 暗号化クライアントを使用することを推奨しています。
AWS 暗号化 SDKの列挙された利点は明白であり、特に暗号学者ではない開発者にとって非常に魅力的ですが、この質問の目的のために、状況がそれらの代替手段にとって好ましくないと仮定しましょう.
アプリケーション データが 4k を超えることは絶対にないと確信しているのに、Amazon KMS を使用してこのデータを暗号化および復号化してはならないのはなぜですか?
使用事例
私のチームは、会社のサービスと API で使用される新しい認証レイヤーを実装しています。私たちは JWT 仕様を実装していますが、JWE / JWS 準拠のトークン署名を悩ませている広く文書化された暗号に関する不満を回避するつもりですが、ペイロードを対称的に暗号化しています。したがって、非暗号化トークン検証操作 (有効期限と残り) の標準ライブラリ実装の利点を維持し、暗号化の「フットガン」を残します。