翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
キーリング
サポートされているプログラミング言語の実装では、キーリングを使用してエンベロープ暗号化を実行します。データキーの生成、暗号化、復号は、キーリングによって行われます。キーリングは、それぞれのメッセージを保護する一意のデータキーのソースと、そのデータキーを暗号化する ラッピングキー を決定します。キーリングは暗号化時に指定し、復号時には同じキーリングか別のキーリングを指定します。SDK で提供されるキーリングを使用するか、互換性のある独自のカスタムキーリングを作成できます。
各キーリングを個別に使用するか、キーリングを組み合わせてマルチキーリングにすることができます。ほとんどのキーリングではデータキーを生成、暗号化、および復号することができますが、特定のオペレーションを 1 つのみ実行するキーリング (例: データキーのみを生成するキーリング) を作成し、他のキーリングと組み合わせて使用することができます。
ラッピングキーを保護し、 (AWS Key Management ServiceAWS KMS) を暗号化しないままに AWS KMS keys しない を使用するキーリングなど、安全な境界内で暗号化オペレーションを実行する AWS KMS キーリングを使用することをお勧めします。また、ハードウェアセキュリティモジュール (HSM) に保存されているラッピングキーや他のマスターキーサービスによって保護されているラッピングキーを使用するキーリングを作成することもできます。詳細については、AWS Encryption SDK
仕様のトピック「Keyring Interface
キーリングは、他のプログラミング言語の実装で使用されるマスターキーとマスターキープロバイダーの役割を果たします。 AWS Encryption SDK の異なる言語実装を使用してデータを暗号化および復号する場合は、必ず互換性のあるキーリングとマスターキープロバイダを使用してください。詳細については、「キーリングの互換性」を参照してください。
このトピックでは、 のキーリング機能を使用する方法 AWS Encryption SDK と、キーリングを選択する方法について説明します。
キーリングのしくみ
データを暗号化すると、 はキーリングに暗号化マテリアル AWS Encryption SDK を要求します。キーリングは、プレーンテキストデータのキーと、キーリングの各ラッピングキーによって暗号化されたデータキーのコピーを返します。 AWS Encryption SDK は、プレーンテキストキーを使用してデータを暗号化し、プレーンテキストデータキーを破棄します。次に、 は、暗号化されたデータキーと暗号化されたデータを含む暗号化されたメッセージ AWS Encryption SDK を返します。

データを復号する場合、データの暗号化に使用したのと同じキーリングを使用することも、別のキーリングを使用することもできます。データを復号するには、復号化キーリングが暗号化キーリングの少なくとも 1 つのラッピングキーを含んでいる (またはアクセスできる) 必要があります。
は、暗号化されたメッセージから暗号化されたデータキーをキーリングに AWS Encryption SDK 渡し、キーリングにそのいずれかを復号するように要求します。キーリングは、ラッピングキーを使用して暗号化されたデータキーのいずれかを復号し、プレーンテキストのデータキーを返します。 AWS Encryption SDK は、プレーンテキストのデータキーを使用してデータを復号します。キーリングのラッピングキーのいずれも暗号化されたデータキーを復号できない場合は、復号は失敗します。

単一のキーリングを使用するか、同じタイプまたは異なるタイプのキーリングを組み合わせてマルチキーリングにすることもできます。データを暗号化すると、マルチキーリングは、マルチキーリングを構成するすべてのキーリングのすべてのラッピングキーで暗号化されたデータキーのコピーを返します。データは、マルチキーリングのラッピングキーのいずれかでキーリングを使用して復号できます。
キーリングの互換性
の異なる言語実装 AWS Encryption SDK にはアーキテクチャ上の違いがいくつかありますが、言語の制約に応じて完全に互換性があります。ある言語実装によってデータを暗号化し、それを他の言語実装で復号することができます。ただし、データキーの暗号化と復号には、同じまたは対応するラッピングキーを使用する必要があります。言語の制約については、 トピックの など、各言語の互換性 AWS Encryption SDK for JavaScriptの実装に関する AWS Encryption SDK for JavaScript トピックを参照してください。
キーリングは、次のプログラミング言語でサポートされています。
-
AWS Encryption SDK for C
-
AWS Encryption SDK for JavaScript
-
AWS Encryption SDK .NET 用
-
のバージョン 3.x AWS Encryption SDK for Java
-
オプションの Cryptographic Material Providers Library
(MPL) 依存関係で使用する AWS Encryption SDK for Python場合のバージョン 4.x。 -
AWS Encryption SDK Rust 用
-
AWS Encryption SDK Go 用の
暗号化キーリングのさまざまな要件
以外の AWS Encryption SDK 言語実装では AWS Encryption SDK for C、暗号化キーリング (またはマルチキーリング) またはマスターキープロバイダーのすべてのラッピングキーがデータキーを暗号化できる必要があります。いずれかのラッピングキーが暗号化に失敗すると、暗号化メソッドは失敗します。そのため、呼び出し元は、キーリング内のすべてのキーについて必要な許可を持っている必要があります。検出キーリングを使用して、単独またはマルチキーリングでデータを暗号化すると、暗号化操作は失敗します。
例外は で AWS Encryption SDK for C、暗号化オペレーションでは標準の検出キーリングは無視されますが、マルチリージョンの検出キーリングを単独で指定するか、マルチキーリングで指定すると失敗します。
互換性があるキーリングおよびマスターキープロバイダー
次の表は、 AWS Encryption SDK が提供するキーリングと互換性のあるマスターキーとマスターキープロバイダーを示しています。言語の制約によるマイナーな非互換性については、言語実装に関するトピックで説明されています。
キーリング: | マスターキープロバイダー: |
---|---|
AWS KMS キーリング |
注記AWS Encryption SDK for Python および には、AWS KMS リージョン検出キーリングと同等のマスターキーまたはマスターキープロバイダー AWS Encryption SDK for Java は含まれません。 |
AWS KMS 階層キーリング | 次のプログラミング言語とバージョンでサポートされています。
|
AWS KMS ECDH キーリング | 次のプログラミング言語とバージョンでサポートされています。
|
Raw AES キーリング | 対称暗号化キーと一緒に使用する場合: JceMasterKeyRawMasterKey |
Raw RSA キーリング | 非対称暗号化キーと一緒に使用する場合: JceMasterKeyRawMasterKey 注記Raw RSA キーリングは、非対称 KMS キーをサポートしません。非対称 RSA KMS キーを使用する場合、.NET AWS Encryption SDK 用 のバージョン 4.x では、対称暗号化 ( |
Raw ECDH キーリング | 次のプログラミング言語とバージョンでサポートされています。
|