3

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 準拠のトークン署名を悩ませている広く文書化された暗号に関する不満を回避するつもりですが、ペイロードを対称的に暗号化しています。したがって、非暗号化トークン検証操作 (有効期限と残り) の標準ライブラリ実装の利点を維持し、暗号化の「フットガン」を残します。

4

2 に答える 2

5

それはパフォーマンスに関するものだと思います。スケーリングとレイテンシです。

KMS の暗号化/復号化には、アカウントあたり 5500 要求/秒の制限があり、これは他の KMS 操作と共有されます。

"どうして?" また、FAQ でもう少し詳しく説明されています。

エンベロープ暗号化を使用する理由 データを AWS KMS に送信して直接暗号化してみませんか?

AWS KMS は暗号化する 4 KB 未満のデータの送信をサポートしていますが、エンベロープ暗号化によりパフォーマンスが大幅に向上します。KMS を使用して直接データを暗号化する場合は、ネットワーク経由で転送する必要があります。エンベロープ暗号化は、アプリケーションまたは AWS クラウド サービスのネットワーク負荷を軽減します。KMS を介したデータ キーの要求と履行のみがネットワークを経由する必要があります。データ キーは常に暗号化された形式で保存されるため、データ キーが公開されることを心配することなく、必要な場所にそのキーを簡単かつ安全に配布できます。暗号化されたデータ キーは AWS KMS に送信され、マスター キーで復号化されるため、最終的にデータを復号化できます。データのブロック全体を AWS KMS に送信してネットワークレイテンシーに悩まされることなく、データキーをアプリケーションで直接利用できます。

https://aws.amazon.com/kms/faqs/

于 2018-01-27T05:58:24.357 に答える