AWS Encryption SDK のバージョン - AWS Encryption SDK

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

AWS Encryption SDK のバージョン

AWS Encryption SDK の言語実装ではセマンティックバージョニングを使用し、各リリースの変更の規模を識別しやすくしています。1.x.x から 2.x.x のようなメジャーバージョン番号の変更は、コードの変更と計画的デプロイが必要になる可能性のある重大な変更を示します。x.1.x から x.2.x のようなマイナーバージョンの変更では、常に下位互換性がありますが、非推奨の要素が含まれている可能性があります。

可能な場合は、選択したプログラミング言語で AWS Encryption SDK の最新バージョンを使用してください。各バージョンのメンテナンスとサポートのポリシーは、プログラミング言語の実装によって異なります。ご使用のプログラミング言語でサポートされるバージョンの詳細については、SUPPORT_POLICY.rstGitHubリポジトリ内のファイルを参照してください

アップグレードに、暗号化や復号化のエラーを防ぐために特別な設定が必要な新機能が含まれる場合は、中間バージョンとその使用方法の詳細な説明を提供します。たとえば、バージョン 1.7 などです。 x と 1.8。 x は 1.7 より前のバージョンからのアップグレードに役立つ移行バージョンとして設計されています。 x からバージョン 2.0 へ。 x およびそれ以降。詳細については、「移行するAWS Encryption SDK」を参照してください。

使用しているプログラミング言語の各バージョンでの変更の詳細は、各リポジトリの Changelog を参照してください。

注記

バージョン番号の x は、メジャーバージョンとマイナーバージョンのパッチを示します。例えば、バージョン 1.7.x は 1.7 で始まるすべてのバージョンを表し、1.7.1 および 1.7.9 が含まれます。

新しいセキュリティ機能は、AWS Encryption CLI バージョン 1.7.x および 2.0.x で最初にリリースされました。ただし、AWS暗号化 CLI バージョン 1.8。 x はバージョン 1.7 に置き換わります。 x AWS と暗号化 CLI 2.1。 x が 2.0 に取って代わります。 x。詳細については、aws-encryption-sdk-cliのリポジトリにある関連するセキュリティアドバイザリを参照してください GitHub。

以下のリストでは、AWS Encryption SDK でサポートされているバージョンの主な相違点を示します。

1.7 より前のバージョン。 x

注記

すべて 1. xx AWS Encryption SDK end-of-support 個のバージョンがフェーズに入っています。できる限り早く、AWS Encryption SDKご使用のプログラミング言語に対応した最新のバージョンにアップグレードしてください。1.7 AWS Encryption SDK より前のバージョンからアップグレードすること。 x では、まず 1.7 にアップグレードする必要があります。 x。詳細については、「移行するAWS Encryption SDK」を参照してください。

1.7 AWS Encryption SDK より前のバージョン。 x には、ガロア/カウンターモードの高度暗号化標準アルゴリズム (AES-GCM) による暗号化、HMAC extract-and-expand ベースの鍵導出関数 (HKDF)、署名、256 ビットの暗号化鍵など、重要なセキュリティ機能が搭載されています。ただし、これらのバージョンでは、キーコミットメントなど、推奨ベストプラクティスがサポートされません。

バージョン 1.7。 x

注記

すべて 1. xx AWS Encryption SDK end-of-support 個のバージョンがフェーズに入っています

バージョン 1.7。 x は、の以前のバージョンを使用しているユーザーがバージョン 2.0 AWS Encryption SDK にアップグレードしやすいように設計されています。 x 以降。AWS Encryption SDK を初めて使用する場合は、このバージョンをスキップして、使用しているプログラミング言語で利用可能な最新バージョンから始めることができます。

バージョン 1.7.x には完全な下位互換性があり、重大な変更の導入や AWS Encryption SDK の動作の変更はありません。上位互換性もあり、バージョン 2.0.x と互換性があるようにコードを更新できます。これには新機能が含まれますが、完全に有効になるわけではありません。また、準備が整うまで、すべての新機能をすぐには採用できないようにする設定値が必要です。

バージョン 1.7.x には次の変更が含まれています。

AWS KMS マスターキープロバイダーの更新 (必須)

バージョン 1.7.x では、AWS Encryption SDK for Java および AWS Encryption SDK for Python に新しいコンストラクタが導入され、Strict モードか Discovery モードで AWS KMS マスターキープロバイダーが明示的に作成されます。このバージョンでは、同様の変更が AWS Encryption SDK コマンドラインインターフェイス (CLI) にも追加されます。詳細については、「AWS KMS マスターキープロバイダーの更新」を参照してください。

  • AWS KMS マスターキープロバイダーでは、Strict モードの場合、ラッピングキーのリストが必要で、指定したラッピングキーのみで暗号化と復号化が行われます。これが AWS Encryption SDK のベストプラクティスで、使用を意図したラッピングキーを使用していることが保証されます。

  • AWS KMS マスターキープロバイダーでは、Discovery モードの場合、ラッピングキーが使用されません。ラッピングキーを暗号化に使用することはできません。復号時には、ラッピングキーを使用して、暗号化されたデータキーを復号できます。ただし、復号化に使用するラッピングキーは、特定の AWS アカウント のものに制限できます。アカウントのフィルタリングはオプションですが、お勧めのベストプラクティスです。

前バージョンの AWS KMS マスターキープロバイダーを作成するコンストラクタは、バージョン 1.7.x で非推奨となり、バージョン 2.0.x で削除されます。これらのコンストラクタは、指定したラッピングキーを使用して暗号化するマスターキープロバイダーをインスタンス化します。ただし、指定したラッピングキーに関係なく、暗号化したラッピングキーを使用して、暗号化されたデータキーを復号化します。ユーザーは、他の AWS アカウント とリージョンの AWS KMS keys など、使用を意図しないラッピングキーでメッセージを意図せずに復号化する可能性があります。

AWS KMS マスターキーのコンストラクタに変更はありません。AWS KMS マスターキーでは、暗号化および復号化を行うとき、指定した AWS KMS key のみが使用されます。

AWS KMS キーリングの更新 (オプション)

バージョン 1.7.x では、新しいフィルターが AWS Encryption SDK for C と AWS Encryption SDK for JavaScript の実装に追加され、AWS KMS 探索キーリングが特定の AWS アカウント に制限されます。この新しいアカウントフィルターはオプションですが、お勧めのベストプラクティスです。詳細については、「AWS KMS キーリングの更新」を参照してください。

AWS KMS キーリングのコンストラクタに変更はありません。標準の AWS KMS キーリングは、Strict モードでマスターキープロバイダーのように動作します。AWS KMS 探索キーリングは探索モードで明示的に作成されます。

キー ID を AWS KMS 復号化に渡す

バージョン 1.7.x 以降、暗号化されたデータキーを復号化する場合、AWS Encryption SDK では AWS KMS復号化オペレーションの呼び出しで AWS KMS key を常に指定します。AWS Encryption SDK は、暗号化された各データキーのメタデータから AWS KMS key のキー ID 値を取得します。この機能では、コードの変更は必要ありません。

対称暗号化 KMS キーで暗号化された暗号文を復号化する場合、のキー ID を指定する必要はありませんが、AWS KMS keyこれがベストプラクティスです。AWS KMSキープロバイダーでラッピングキーを指定するのと同様に、この方法では、使用を意図したラッピングキーを使用する場合のみ AWS KMS が復号化されることが保証されます。

キーコミットメントで暗号化テキストを復号化する

バージョン 1.7.x では、キーコミットメントを使用しているかどうかに関係なく、暗号化された暗号化テキストを復号化できます。ただし、キーコミットメントによって暗号化テキストを暗号化することはできません。このプロパティを使用すると、キーコミットメントで暗号化された暗号化テキストを復号化できるアプリケーションを完全にデプロイしてから、そのような暗号化テキストを処理できます。このバージョンでは、キーコミットメントなしで暗号化されたメッセージを復号化するため、暗号化テキストを再暗号化する必要はありません。

この動作を実装するため、バージョン 1.7.x には、AWS Encryption SDK がキーコミットメントを使用して暗号化または復号化できるかどうかを判断する、新しいコミットメントポリシー設定が含まれています。バージョン 1.7.x では、コミットメントポリシーの有効な値、ForbidEncryptAllowDecrypt が暗号化と復号化のすべてのオペレーションで使用されます。この値により、AWS Encryption SDK がキーコミットメントを含む新しいアルゴリズムスイートのいずれかで暗号化することが防止されます。AWS Encryption SDK は、キーコミットメントを使用しているかどうかにかかわらず暗号化テキストを復号化できます。

バージョン 1.7.x には有効なコミットメントポリシーの値が 1 つしかありませんが、このリリースで導入された新しい API を使用する場合は、この値を明示的に設定してください。値を明示的に設定すると、バージョン 2.1.x へのアップグレード時にコミットメントポリシーが自動的に require-encrypt-require-decrypt に変更されなくなります。その代わりに、コミットメントポリシーを段階的に移行できます。

キーコミットメントを使用するアルゴリズムスイート

バージョン 1.7.xには新しい 2 つのアルゴリズムスイートが組み込まれて、キーコミットメントがサポートされます。一方は署名を含み、もう一方は署名を含みません。以前にサポートされていたアルゴリズムスイートと同様に、これらの新しいアルゴリズムスイートにはどちらも AES-GCM による暗号化、256 ビットの暗号化キー、および HMAC ベースのキー派生関数 (HKDF) が含まれています。 extract-and-expand

ただし、暗号化に使用されるデフォルトのアルゴリズムスイートは変更されません。これらのアルゴリズムスイートはバージョン 1.7 に追加されました。 x を使用して、バージョン 2.0 でそれらを使用するようにアプリケーションを準備します。 x 以降。

CMM 実装の変更

バージョン 1.7.x では、キーコミットメントをサポートするために、デフォルト暗号化マテリアルマネージャ (CMM) インターフェイスが変更されました。この変更は、カスタム CMM を作成した場合にのみ影響します。詳細については、使用しているプログラミング言語の API GitHub ドキュメントまたはリポジトリを参照してください。

バージョン 1.8。 x

注記

すべて 1. xx AWS Encryption SDK end-of-support 個のバージョンがフェーズに入っています

AWS Encryption CLI の場合、バージョン 1.8.xは、1.7.x より前のバージョンとバージョン 2.1.x 以降の間の移行バージョンです。AWS Encryption CLI の場合、バージョン 1.8.x には完全な下位互換性があり、重大な変更の導入や AWS Encryption SDK の動作の変更はありません。上位互換性もあり、バージョン 2.0.x と互換性があるようにコードを更新できます。これには新機能が含まれますが、完全に有効になるわけではありません。準備が整うまで、すべての新機能をすぐには採用できないようにする設定値が必要です。

AWS Encryption CLI のバージョン 1.8.x の詳細については、バージョン 1.7。 x を参照してください。

バージョン 1.9。 x

注記

すべて 1. xx AWS Encryption SDK end-of-support 個のバージョンがフェーズに入っています

バージョン 1.9。 x は、バージョン 2.2 で強化された電子署名セキュリティをサポートしています。 x。現在アプリケーションで電子署名を使用していて、バージョン 2.0 AWS Encryption SDK より前のバージョンを使用している場合。 x の場合は、バージョン 1.9 にアップグレードする必要があります。 x で改善点を生かしてください。

バージョン 1.9.x では、信頼できないソースから復号するメッセージ内の暗号化されたデータキーの数の制限もサポートされます。このベストプラクティス機能を使用すると、メッセージを暗号化するときに誤って構成されたマスターキープロバイダーまたはキーリングを検出し、メッセージの復号化時には悪意のある暗号テキストを検出できます。

バージョン 1.7 と同じ。 x、バージョン 1.9。 x は 1.7 より前のバージョンと下位互換性があります。 x 以降はバージョン 2.0 と互換性があります。 x およびそれ以降。バージョン 2.0 に搭載されている新機能が含まれています。 x 以降ですが、安全なデフォルトを実装しています。バージョン 1.9 を使用している場合。 x では、バージョン 2.2 に安全にアップグレードできます。 x。コミットメントポリシー設定の移行方法の詳細については、を参照してくださいコミットメントポリシーの設定

バージョン 2.0。 x

バージョン 2.0.x では、指定されたラッピングキーとキーコミットメントなど、AWS Encryption SDK で提供される新しいセキュリティ機能がサポートされます。バージョン 2.0.x では、これらの機能をサポートするため、前バージョンの AWS Encryption SDK が大きく変更されています。バージョン 1.7.x をデプロイすれば、これらの変更に備えることができます。バージョン 2.0.x には、バージョン 1.7.x で導入されたすべての新機能が含まれており、以下の追加・変更点もあります。

AWS KMS マスターキープロバイダー

バージョン 1.7.x で非推奨となった元の AWS KMS マスターキープロバイダーコンストラクタは、バージョン 2.0.x で削除されます。AWS KMS マスターキープロバイダーは、Strict モードまたは Discovery モードで明示的に構築する必要があります。

キーコミットメントによる暗号化テキストの暗号化と復号化

バージョン 2.0.x では、キーコミットメントを使用しているかどうかに関係なく、暗号化テキストの暗号化と復号化ができます。その動作は、コミットメントポリシー設定によって決まります。デフォルトでは、常にキーコミットメントで暗号化し、キーコミットメントで暗号化された暗号化テキストのみを復号します。コミットメントポリシーを変更しない限り、AWS Encryption SDK では、バージョン 1.7.x を含む AWS Encryption SDK の旧バージョンで暗号化された暗号化テキストが復号化されません。

重要

デフォルトの場合、バージョン 2.0.x では、キーコミットメントなしで暗号化された暗号化テキストは復号化されません。キーコミットなしで暗号化された暗号化テキストをアプリケーションで処理する可能性がある場合は、コミットメントポリシーの値を AllowDecrypt で設定してください。

バージョン 2.0.x の場合、コミットメントポリシー設定には次の 3 つの有効な値があります。

  • ForbidEncryptAllowDecrypt — AWS Encryption SDK では、キーコミットメントで暗号化することはできません。キーコミットメントが使用されているかどうかにかかわらず、暗号化された暗号化テキストを復号化できます。

  • RequireEncryptAllowDecrypt — AWS Encryption SDK では、キーコミットメントで暗号化する必要があります。キーコミットメントが使用されているかどうかにかかわらず、暗号化された暗号化テキストを復号化できます。

  • RequireEncryptRequireDecrypt (デフォルト) — AWS Encryption SDK では、キーコミットメントで暗号化する必要があります。キーコミットメントによる暗号化テキストのみを復号化します。

AWS Encryption SDK の前バージョンからバージョン 2.0.x に移行する場合は、アプリケーションで処理する可能性のある既存の暗号化テキストをすべて復号化できる値にコミットメントポリシーを設定します。この設定は時間の経過とともに調整することになる可能性があります。

バージョン 2.1。 x

AWS Encryption CLI の場合、バージョン 2.1.x は、指定されたラッピングキーとキーコミットメントを含むバージョンです。その他のプログラミング言語では、バージョン 2.0.x と同等です。

AWS Encryption CLI のバージョン 2.1.x の詳細については、バージョン 2.0。 x を参照してください。

バージョン 2.2。 x

デジタル署名のサポートと暗号化されたデータキーの制限を追加します。

デジタル署名

復号化時のデジタル署名の取り扱いを改善するため、AWS Encryption SDK には次の機能が含まれます。

  • 非ストリーミングモード — デジタル署名がある場合の確認を含め、すべての入力を処理した後にのみプレーンテキストを返します。この機能を使用すると、デジタル署名を検証するまでプレーンテキストを使用できなくなります。この機能は、デジタル署名 (デフォルトのアルゴリズムスイート) で暗号化されたデータを復号化するときに使用します。例えば、AWS Encryption CLI は常にストリーミングモードでデータを処理するため、デジタル署名による暗号化テキストを復号化するときは --buffer パラメータを使用します。

  • 未署名のみの復号化モード — この機能は署名のない暗号文のみを復号化します。復号化で暗号化テキスト内にデジタル署名が検出されると、オペレーションは失敗します。この機能を使用して、署名を検証する前に、署名付きメッセージのプレーンテキストを意図せずに処理しないようにします。

暗号化されたデータキーの制限

暗号化されたメッセージ内の暗号化されたデータキーの数を制限できます。この機能は、暗号化時に誤って構成されたマスターキープロバイダーまたはキーリングを検出したり、復号時に悪意のある暗号化テキストを特定したりするのに役立ちます。

信頼できない送信元からのメッセージを復号する場合は、暗号化されたデータキーを制限してください。不必要でコストがかかり、潜在的に網羅的な方法によって、キーインフラストラクチャを呼び出すことを防止できます。

バージョン 2.3。 x

AWS KMS マルチリージョンキーがサポートされるようになりました。詳細については、「マルチリージョンの使用 AWS KMS keys」を参照してください。

注記

AWS Encryption CLI では、バージョン 3.0.x からマルチリージョンキーがサポートされます。

バージョン 2。 x。 の x AWS Encryption SDK for Python AWS と暗号化 CLI end-of-supportはフェーズ中です

AWS Encryption SDKお好みのプログラミング言語でのこのバージョンのサポートとメンテナンスについてはSUPPORT_POLICY.rstGitHubリポジトリ内のファイルを参照してください

バージョン 2.4。 x

注記

バージョン 2。 x。 の x AWS Encryption SDK for Python AWS と暗号化 CLI end-of-supportはフェーズ中です

AWS Encryption SDK for Javaバージョン 2.4.0 では、のサポートが追加されています。AWS SDK for Java 2.xバージョン 2.4.0 以降、AWS SDK for Javaはバージョン 1 AWS Encryption SDK for Java をサポートします。 x とバージョン 2。 x。AWS SDK for Javaの使用は任意です。は、AWS Key Management Service (AWS KMS) AWS Encryption SDK for Java AWS SDK for Java をマスターキープロバイダとして使用する場合にのみ必要です。

詳細については、「前提条件」を参照してください。

バージョン 3.0。 x

AWS Encryption CLI バージョン 3.0.x から、AWS KMS マルチリージョンキーがサポートされます。詳細については、AWS Key Management Service デベロッパーガイドを参照してください。(その他の AWS Encryption SDK プログラミング言語では、マルチリージョンキーがバージョン 2.3.x からサポートされます。)

.NET AWS Encryption SDK 向けが導入されました。

バージョン 4。 x

AWS Encryption SDK.NET バージョン 4 用。 x には、AWS KMS階層型キーリング必要な暗号化コンテキスト CMMおよび非対称 RSA キーリングのサポートが追加されています。AWS KMS