翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の概念 AWS Encryption SDK
このセクションでは、 で使用される概念を紹介し AWS Encryption SDK、用語集とリファレンスを提供します。これは、 の AWS Encryption SDK 仕組みと、その説明に使用する用語を理解するのに役立つように設計されています。
サポートが必要ですか?
-
がエンベロープ暗号化 AWS Encryption SDK を使用してデータを保護する方法について説明します。
-
どのラッピングキーを使用するかを決めるキーリングとマスターキープロバイダーについての説明。
-
暗号化プロセスの整合性を向上させる暗号化コンテキストについての説明。これはオプションですが、推奨されるベストプラクティスです。
-
暗号化メソッドが返す暗号化されたメッセージについての説明。
-
その後、お好みのプログラミング言語 AWS Encryption SDK で を使用する準備が整いました。
トピック
エンベロープ暗号化
暗号化されたデータのセキュリティは、復号できるデータキーを保護することによって部分的に異なります。1 つの受け入れられているデータキーを保護するベストプラクティスは暗号化することです。これを行うには、キー暗号化キーつまりラッピングキーと呼ばれる別の暗号化キーが必要です。データキーを暗号化するためにラッピングキーを使用するこの方法はエンベロープ暗号化と呼ばれています。
- データキーの保護
-
は、各メッセージを一意のデータキーで AWS Encryption SDK 暗号化します。その後、指定したラッピングキーでデータキーを暗号化します。返される暗号化されたメッセージの暗号化されたデータを使用して、暗号化されたデータキーが保存されます。
ラッピングキーを指定するには、キーリングまたはマスターキープロバイダーを使用します。
- 複数のラッピングキーで同じデータを暗号化する
-
複数のラッピングキーでデータキーを暗号化できます。ユーザーごとに異なるラッピングキーを指定したり、異なるタイプのラッピングキーを指定したり、場所ごとにそのように指定したい場合があります。各ラッピングキーでは、それぞれ同じデータキーを暗号化します。は、暗号化されたすべてのデータキーと暗号化されたデータを暗号化されたメッセージに AWS Encryption SDK 保存します。
データを復号するには、この暗号化されたデータキーのいずれかを復号できるラッピングキーを指定する必要があります。
- 複数のアルゴリズムの強度の結合
-
デフォルトでは、 は AES-GCM 対称暗号化、キー取得関数 (HKDF)、および署名を使用する高度なアルゴリズムスイート 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 識別できます。
ラッピングキー
ラッピングキー はキー暗号化キーであり、 AWS Encryption SDK ではこれを使用して、データを暗号化する データキー を暗号化します。それぞれのプレーンテキストのデータキーは、1 つまたは複数のラッピングキーで暗号化することができます。キーリングまたはマスターキープロバイダーの設定時に、データの保護に使用するラッピングキーを決定します。
注記
ラッピングキーは、キーリングまたはマスターキープロバイダー内のキーを参照します。マスターキーは一般的に、マスターキープロバイダーを使用するときにインスタンス化する MasterKey
クラスと関連します。
は、 (AWS KMS) 対称 AWS KMS keys (マルチリージョンキー を含む)、raw - (Advanced Encryption Standard/Galois Counter Mode) KMSキー、raw キーなど AWS Key Management Service 、一般的に使用されるラッピングRSAキーをいくつか AWS Encryption SDK サポートします。 AESGCMまた、独自のラッピングキーを拡張または実装することもできます。
エンベロープ暗号化を使用する場合は、認可されていないアクセスからラッピングキーを保護する必要があります。これは、次のいずれかの方法で行うことができます。
-
この目的のために設計された AWS Key Management Service (AWS KMS)
などのウェブサービスを使用します。 -
が提供するようなハードウェアセキュリティモジュール (HSM)
を使用しますAWS CloudHSM 。 -
他のキー管理ツールやサービスを使用します。
キー管理システムがない場合は、 をお勧めします AWS KMS。は AWS Encryption SDK と統合 AWS KMS され、ラッピングキーの保護と使用に役立ちます。ただし、 AWS Encryption SDK には AWS または AWS のサービスは必要ありません。
キーリングおよびマスターキープロバイダー
暗号化と復号に使用するラッピングキーを指定するには、キーリング (C、C# / .NET、および JavaScript) またはマスターキープロバイダー (Java、Python、) を使用しますCLI。が提供するキーリングとマスターキープロバイダーを使用することも AWS Encryption SDK 、独自の実装を設計することもできます。 AWS Encryption SDK では、言語制約の対象となりながらも相互に互換性のあるキーリングとマスターキープロバイダーが提供されます。詳細については、「キーリングの互換性」を参照してください。
キーリングは、データキーの生成、暗号化、復号を行います。キーリングを定義するとき、データキーを暗号化するラッピングキーを指定できます。ほとんどのキーリングは、少なくとも 1 つのラッピングキーを指定するか、ラッピングキーを提供および保護するサービスを指定します。追加の設定オプションを使用して、ラッピングキーのないキーリングや、より複雑なキーリングを定義することもできます。が AWS Encryption SDK 定義するキーリングの選択と使用については、「」を参照してくださいキーリングの使用。キーリングは、 の C、C# / .NET JavaScript、およびバージョン 3.x でサポートされています AWS Encryption SDK for Java。
マスターキープロバイダーはキーリングの代替品です。マスターキープロバイダーは、指定したラッピングキー (またはマスターキー) を返します。各マスターキーは 1 つのマスターキープロバイダーに関連付けられていますが、マスターキープロバイダーは通常複数のマスターキーを提供しています。マスターキープロバイダーは、Java、Python、および AWS Encryption でサポートされていますCLI。
暗号化には、キーリング (またはマスターキープロバイダー) を指定する必要があります。復号化には、同じキーリング (またはマスターキープロバイダー) を指定することも、別のキーリングを指定することもできます。暗号化時に、 AWS Encryption SDK は指定したすべてのラッピングキーを使用してデータキーを暗号化します。復号化するとき、 AWS Encryption SDK では、指定したラッピングキーのみを使用して、暗号化されたデータキーを復号します。復号用のラッピングキーの指定はオプションですが、 AWS Encryption SDK ベストプラクティスは です。
ラッピングキーの指定の詳細については、「ラッピングキーの選択」を参照してください。
暗号化コンテキスト
暗号化オペレーションのセキュリティを向上させるには、データを暗号化するためのすべてのリクエストに暗号化コンテキストを含めます。暗号化コンテキストの使用はオプションですが、暗号化のベストプラクティスとして使用することをお勧めします。
暗号化コンテキストは、任意のシークレットではない追加認証データを含む名前と値のペアのセットです。暗号化コンテキストには選択した任意のデータを含むことができますが、一般的には、ファイルの種類、目的、または所有権などの、ログ記録と追跡に有用なデータが含まれます。データを暗号化する場合、暗号化コンテキストは暗号化されたデータに暗号化されてバインドされます。これにより、データを復号するために同じ暗号化コンテキストが必要になります。 AWS Encryption SDK より返る暗号化されたメッセージのヘッダーには、プレーンテキストの暗号化コンテキストが含まれます。
が AWS Encryption SDK 使用する暗号化コンテキストは、指定した暗号化コンテキストと、暗号化マテリアルマネージャー (CMM) が追加するパブリックキーペアで構成されます。具体的には、 の署名で暗号化アルゴリズムを使用するたびに、 は、予約名、、およびパブリック検証キーを表す値で構成される名前aws-crypto-public-key
と値のペアを暗号化コンテキストCMMに追加します。暗号化コンテキストaws-crypto-public-key
の名前は によって予約 AWS Encryption SDK され、暗号化コンテキストの他のペアの名前として使用することはできません。詳細については、「メッセージ形式リファレンスAAD」の「」を参照してください。
次の暗号化コンテキストの例は、リクエストで指定された 2 つの暗号化コンテキストペアと、 がCMM追加するパブリックキーペアで構成されます。
"Purpose"="Test", "Department"="IT", aws-crypto-public-key=
<public key>
データを復号するには、暗号化されたメッセージを渡します。 AWS Encryption SDK は暗号化されたメッセージヘッダーから暗号化コンテキストを抽出できるため、暗号化コンテキストを個別に指定する必要はありません。ただし、暗号化コンテキストは、暗号化された適切なメッセージを復号していることを確認するのに役立ちます。
-
AWS Encryption SDK コマンドラインインターフェイス (CLI) で復号コマンドで暗号化コンテキストを指定すると、 CLI は、プレーンテキストデータを返す前に、暗号化されたメッセージの暗号化コンテキストに値が存在することを確認します。
-
他のプログラミング言語実装では、復号レスポンスに暗号化コンテキストとプレーンテキストデータが含まれます。アプリケーションの復号関数では、プレーンテキストデータを返す前に、復号レスポンスの暗号化コンテキストに暗号化リクスとの暗号化コンテキスト (またはサブセット) が含まれていることを常に確認する必要があります。
注記
AWS Encryption SDK 用の のバージョン 4.x NETおよび のバージョン 3.xAWS Encryption SDK for Javaでは、必要な暗号化コンテキスト を使用して、すべての暗号化リクエストで暗号化コンテキストを要求できますCMM。
暗号化コンテキストを選択する際、シークレットではないことに注意してください。暗号化コンテキストは、 AWS Encryption SDK が返す暗号化されたメッセージのヘッダーのプレーンテキストに表示されます。を使用している場合 AWS Key Management Service、暗号化コンテキストは、 などの監査レコードやログにプレーンテキストで表示される場合があります AWS CloudTrail。
コード内の暗号化コンテキストを送信および検証する例については、使用しているプログラミング言語の例を参照してください。
暗号化されたメッセージ
でデータを暗号化すると AWS Encryption SDK、暗号化されたメッセージが返されます。
暗号化されたメッセージは、データキーの暗号化されたコピーと共に暗号化されたデータを含む、小型で書式設定されたデータ構造、アルゴリズム ID、および必要に応じて暗号化コンテキストとデジタル署名です。 AWS Encryption SDK の暗号化オペレーションは暗号化されたメッセージを返し、復号オペレーションは暗号化されたメッセージを入力として受け取ります。
暗号化されたデータとその暗号化されたデータキーを組み合わせることで、復号オペレーションを合理化し、暗号化するデータから暗号化されたデータキーを個別に保存して管理する必要がなくなります。
暗号化されたメッセージに関する技術情報については、「暗号化されたメッセージの形式」を参照してください。
アルゴリズムスイート
AWS Encryption SDK はアルゴリズムスイートを使用して、暗号化および復号オペレーションが返す暗号化されたメッセージ内のデータを暗号化および署名します。 AWS Encryption SDK では、いくつかのアルゴリズムスイートがサポートされています。サポートされているすべてのスイートは、プライマリアルゴリズムとして Advanced Encryption Standard (AES) を使用し、他のアルゴリズムや値と組み合わせて使用します。
は、すべての暗号化オペレーションのデフォルトとして推奨アルゴリズムスイート AWS Encryption SDK を確立します。標準とベストプラクティスの向上に伴い、デフォルトは変更される可能性があります。データを暗号化するリクエストや暗号化マテリアルマネージャー (CMM) の作成時に代替アルゴリズムスイートを指定できますが、状況に応じて代替アルゴリズムスイートが必要でない限り、デフォルトを使用することをお勧めします。現在のデフォルトは AES-GCM で、 HMACベースの extract-and-expand キー取得関数
アプリケーションで高いパフォーマンスを必要とし、データを暗号化するユーザーとデータを復号化するユーザーが同等に信頼できる場合は、デジタル署名のないアルゴリズムスイートを指定することを検討してください。ただし、キーコミットメントとキー取得関数を含むアルゴリズムスイートを強くお勧めします。これらの機能のないアルゴリズムスイート機能は、下位互換性のためにのみサポートされています。
暗号化マテリアルマネージャー
暗号化マテリアルマネージャー (CMM) は、データの暗号化と復号に使用される暗号化マテリアルをアセンブルします。暗号化マテリアルには、プレーンテキストおよび暗号化されたデータキー、オプションのメッセージ署名キーが含まれます。とCMM直接やり取りすることはありません。このためには、暗号化メソッドおよび復号メソッドを使用します。
AWS Encryption SDK が提供するデフォルトCMMまたはキャッシュCMMを使用するか、カスタム を記述できますCMM。また、 を指定できますがCMM、必須ではありません。キーリングまたはマスターキープロバイダーを指定すると、 によってデフォルト AWS Encryption SDK が作成されますCMM。デフォルトでは、指定したキーリングまたはマスターキープロバイダーから暗号化または復号マテリアルCMMを取得します。これには、AWS Key Management Service(AWS KMS) などの暗号化サービスの呼び出しが含まれる場合があります。
は AWS Encryption SDK とキーリング (またはマスターキープロバイダー) の間の連絡役CMMとして機能するため、ポリシーの適用やキャッシュのサポートなど、カスタマイズと拡張に最適なポイントです。は、データキーキャッシュCMMをサポートするキャッシュ AWS Encryption SDK を提供します。 データキーキャッシュ
対称暗号化と非対称暗号化
対称暗号化では、データの暗号化と復号化に同じキーが使用されます。
非対称暗号化では、数学的に関連するデータキーペアが使用されます。ペアの 1 つのキーでデータが暗号化され、ペアの他のキーだけでデータが復号されます。詳細については、AWS 暗号化サービスおよびツールガイドの「暗号アルゴリズム」を参照してください。
はエンベロープ暗号化 AWS Encryption SDK を使用します。データは対称データキーで暗号化されます。対称データキーを 1 つ以上の対称または非対称のラッピングキーで暗号化します。返される暗号化されたメッセージには、暗号化されたデータおよび少なくとも 1 つの暗号化されたデータキーのコピーが含まれます。
- データの暗号化 (対称暗号化)
-
は、データを暗号化するために、対称データキーと、対称暗号化アルゴリズムを含むアルゴリズムスイート AWS Encryption SDK を使用します。データを復号するために、 は同じデータキーと同じアルゴリズムスイート AWS Encryption SDK を使用します。
- データキーの暗号化 (対称暗号化または非対称暗号化)
-
暗号化および復号化のオペレーションに指定するキーリングまたはマスターキープロバイダーにより、対称データキーの暗号化および復号化方法が決まります。キーリングなどの対称暗号化を使用するキーリングまたはマスター AWS KMS キープロバイダー、または raw キーリングや などの非対称暗号化を使用するキーリングまたはマスターRSAキープロバイダーを選択できます
JceMasterKey
。
キーコミットメント
は、キーコミットメント (堅牢性 と呼ばれることもあります) AWS Encryption SDK をサポートします。これは、各暗号文を 1 つのプレーンテキストにのみ復号化できることを保証するセキュリティプロパティです。これを行うために、キーコミットメントでは、メッセージを暗号化したデータキーのみが復号化に使用されることが保証されます。キーコミットメントによる暗号化と復号化は、AWS Encryption SDK のベストプラクティスです。
最新の対称暗号 ( を含むAES) のほとんどは、 が各プレーンテキストメッセージの暗号化に使用する一意のデータキーなど、1 つのシークレットキーでプレーンテキストを暗号化します AWS Encryption SDK 。同じデータキーでこのデータを復号すると、元のデータと同じプレーンテキストが返されます。別のキーで復号化すると、通常は失敗します。ただし、2 つの異なるキーで暗号化テキストを復号化することは可能です。まれに、数バイトの暗号化テキストを別の理解可能なプレーンテキストに復号化できるキーを見つけることは可能です。
は AWS Encryption SDK 、常に各プレーンテキストメッセージを 1 つの一意のデータキーで暗号化します。複数のラッピングキー (またはマスターキー) でそのデータキーを暗号化する場合がありますが、ラッピングキーは常に同じデータキーを暗号化します。ただし、手動で作成した高度な暗号化されたメッセージには、実際には異なるデータキーが含まれて、それぞれ異なるラッピングキーによって暗号化されることがあります。例えば、あるユーザーが暗号化されたメッセージを復号すると 0x0 (false) を返し、同じ暗号化されたメッセージを別のユーザーが復号すると 0x1 (true) となることがあります。
このシナリオを防ぐため、 は暗号化および復号化時にキーコミットメント AWS Encryption SDK をサポートします。がキーコミットメントでメッセージを AWS Encryption SDK 暗号化すると、暗号文を生成した一意のデータキーを、非シークレットデータキー識別子であるキーコミットメント文字列 に暗号的にバインドします。その後、キーコミットメント文字列は、暗号化されたメッセージのメタデータに保存されます。キーコミットメントを使用してメッセージを復号すると、 はデータキーがその暗号化されたメッセージの唯一のキー AWS Encryption SDK であることを確認します。データキーの検証が失敗すると、復号オペレーションは失敗します。
キーコミットメントのサポートは、バージョン 1.7.x で導入されました。このバージョンではキーコミットメントでメッセージを復号化できますが、キーコミットメントによる暗号化はできません。このバージョンを使用して、キーコミットメントで暗号化テキストを復号化する機能を完全にデプロイできます。バージョン 2.0.x では、キーコミットメントが完全にサポートされます。デフォルトでは、キーコミットメントでのみ暗号化および復号化が行われます。これは、 の以前のバージョンで暗号化された暗号文を復号する必要のないアプリケーションに最適な設定です AWS Encryption SDK。
キーコミットメントによる暗号化と復号化がベストプラクティスですが、使用時期を決定し、それを採用するペースを調整できます。バージョン 1.7.x 以降、 はデフォルトのアルゴリズムスイートを設定し、使用できるアルゴリズムスイートを制限するコミットメントポリシー AWS Encryption SDK をサポートしています。このポリシーにより、データをキーコミットメントで暗号化および復号化するかどうかが決まります。
キーコミットメントでは、暗号化メッセージがわずかに大きくなり (+ 30 バイト)、処理に時間がかかります。アプリケーションでサイズやパフォーマンスに注意が必要である場合は、キーコミットメントをオプトアウトすることもできます。しかし、必要である場合にのみオプトアウトしてください。
バージョン 1.7.x および 2.0.x への移行、およびキーコミットメント機能に関する詳細については、AWS Encryption SDK の移行 を参照してください。キーコミットメントに関する技術情報については、AWS Encryption SDK アルゴリズムリファレンス および AWS Encryption SDK メッセージ形式のリファレンス を参照してください。
コミットメントポリシー
コミットメントポリシーは、アプリケーションがキーコミットメントで暗号化および復号化を行うかどうかを決定する構成設定です。キーコミットメントによる暗号化と復号化は、AWS Encryption SDK のベストプラクティスです。
コミットメントポリシーには 3 つの値があります。
注記
テーブル全体を表示するには、水平または垂直にスクロールする必要があります。
コミットメントポリシーの値 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
値 | キーコミットメントで暗号化 | キーコミットメントなしで暗号化 | キーコミットメントで復号化 | キーコミットメントなしで復号化 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ForbidEncryptAllowDecrypt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RequireEncryptAllowDecrypt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RequireEncryptRequireDecrypt |
コミットメントポリシー設定は、 AWS Encryption SDK バージョン 1.7.x で導入されています。すべてのサポート対象プログラミング言語で有効です。
-
ForbidEncryptAllowDecrypt
は、キーコミットメントの有無にかかわらず復号しますが、キーコミットメントでは暗号化しません。この値は、バージョン 1.7.x で導入され、アプリケーションを実行しているすべてのホストがキーコミットメントで暗号化された暗号文に遭遇する前に、キーコミットメントで復号する準備をするように設計されています。 -
RequireEncryptAllowDecrypt
では常にキーコミットメントで暗号化されます。復号化は、キーコミットメントが使用されているかどうかにかかわらず可能です。バージョン 2.0.x で導入されたこの値では、キーコミットメントによる暗号化を開始できますが、キーコミットメントによらない従来の暗号化テキストを復号化できます。 -
RequireEncryptRequireDecrypt
では、キーコミットメントでのみ暗号化および復号化が行われます。この値がバージョン 2.0.x のデフォルトです。この値は、すべての暗号化テキストがキーコミットメントで暗号化されていることが確実な場合に使用します。
コミットメントポリシー設定により、使用できるアルゴリズムスイートが決まります。バージョン 1.7.x 以降、 は、署名の有無にかかわらず、キーコミットメントのアルゴリズムスイート AWS Encryption SDK をサポートしています。コミットメントポリシーと競合するアルゴリズムスイートを指定した場合、 AWS Encryption SDK はエラーを返します。
コミットメントポリシーの設定については、コミットメントポリシーの設定 を参照してください。
デジタル署名
システム間でのデジタルメッセージの整合性を確保するために、メッセージにデジタル署名を適用できます。デジタル署名は常に非対称です。プライベートキーを使用して署名を作成し、元のメッセージに追加します。受信者はパブリックキーを使用して、メッセージが署名後に変更されていないことを確認します。
は、認証された暗号化アルゴリズム AES- を使用してデータを暗号化しGCM、復号プロセスでは、デジタル署名を使用せずに暗号化されたメッセージの整合性と信頼性を検証 AWS Encryption SDK します。ただし、 AES-GCM は対称キーを使用するため、暗号文の復号化に使用されたデータキーを復号できるユーザーは誰でも、暗号化された新しい暗号文を手動で作成して、潜在的なセキュリティ上の懸念を引き起こす可能性があります。例えば、 AWS KMS キーをラッピングキーとして使用すると、Decrypt KMS アクセス許可を持つユーザーが KMSEncrypt を呼び出さずに暗号化された暗号文を作成できるようになります。
この問題を回避するために、 は、暗号化されたメッセージの末尾に楕円曲線デジタル署名アルゴリズム (ECDSA) 署名を追加すること AWS Encryption SDK をサポートしています。署名アルゴリズムスイートを使用すると、 は暗号化されたメッセージごとに一時的なプライベートキーとパブリックキーのペア AWS Encryption SDK を生成します。は AWS Encryption SDK 、パブリックキーをデータキーの暗号化コンテキストに保存し、プライベートキーを破棄します。パブリックキーで検証する別の署名を作成することはできません。アルゴリズムは、メッセージヘッダー内の追加認証データとしてパブリックキーを暗号化されたデータキーに結合するため、メッセージの復号化のみが可能なユーザーはパブリックキーを変更できません。
署名の検証では、復号化に大きなパフォーマンスコストがかかります。データを暗号化するユーザーとデータを復号化するユーザーが同等に信頼されている場合は、署名を含まないアルゴリズムスイートの使用を検討してください。