キーリング - AWS Encryption SDK

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーリング

サポートされているプログラミング言語の実装では、キーリングを使用してエンベロープ暗号化を実行します。データキーの生成、暗号化、復号は、キーリングによって行われます。キーリングは、それぞれのメッセージを保護する一意のデータキーのソースと、そのデータキーを暗号化する ラッピングキー を決定します。キーリングは暗号化時に指定し、復号時には同じキーリングか別のキーリングを指定します。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 キーリング

KMSMasterKey (Java)

KMSMasterKeyProvider (Java)

KMSMasterKey (Python)

KMSMasterKeyProvider (Python)

注記

AWS Encryption SDK for Python および には、AWS KMS リージョン検出キーリングと同等のマスターキーまたはマスターキープロバイダー AWS Encryption SDK for Java は含まれません。

AWS KMS 階層キーリング

次のプログラミング言語とバージョンでサポートされています。

  • のバージョン 3.x AWS Encryption SDK for Java

  • .NET AWS Encryption SDK 用 のバージョン 4.x

  • オプションの Cryptographic Material Providers Library (MPL) 依存関係で使用する AWS Encryption SDK for Python場合のバージョン 4.x

  • AWS Encryption SDK for Rust のバージョン 1.x

  • AWS Encryption SDK for Go のバージョン 0.1.x 以降

AWS KMS ECDH キーリング

次のプログラミング言語とバージョンでサポートされています。

  • のバージョン 3.x AWS Encryption SDK for Java

  • .NET AWS Encryption SDK 用 のバージョン 4.x

  • オプションの Cryptographic Material Providers Library (MPL) 依存関係で使用する場合の AWS Encryption SDK for Pythonのバージョン 4.x

  • AWS Encryption SDK for Rust のバージョン 1.x

  • AWS Encryption SDK for Go のバージョン 0.1.x 以降

Raw AES キーリング

対称暗号化キーと一緒に使用する場合:

JceMasterKey (Java)

RawMasterKey (Python)

Raw RSA キーリング

非対称暗号化キーと一緒に使用する場合:

JceMasterKey (Java)

RawMasterKey (Python)

注記

Raw RSA キーリングは、非対称 KMS キーをサポートしません。非対称 RSA KMS キーを使用する場合、.NET AWS Encryption SDK 用 のバージョン 4.x では、対称暗号化 (SYMMETRIC_DEFAULT) または非対称 RSA を使用する AWS KMS キーリングがサポートされます AWS KMS keys。

Raw ECDH キーリング

次のプログラミング言語とバージョンでサポートされています。

  • のバージョン 3.x AWS Encryption SDK for Java

  • .NET AWS Encryption SDK 用 のバージョン 4.x

  • オプションの Cryptographic Material Providers Library (MPL) 依存関係で使用する AWS Encryption SDK for Python場合のバージョン 4.x

  • AWS Encryption SDK for Rust のバージョン 1.x

  • AWS Encryption SDK for Go のバージョン 0.1.x 以降