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は、暗号化されたデータキーと、暗号化されたメッセージ内の暗号化されたデータキーを保存します。

データを復号するには、この暗号化されたデータキーのいずれかを復号できるラッピングキーを指定する必要があります。


                            各ラッピングキーは同じデータキーを暗号化しているため、ラッピングキーごとに 1 つの暗号化されたデータキーが作成されます。
複数のアルゴリズムの強度の結合

一般的に、対称キー暗号化アルゴリズムは迅速で、非対称またはパブリックキー暗号化よりも小さい暗号化テキストが生成されます。しかし、パブリックキーのアルゴリズムはロールを本質的に分離し、キー管理を簡単にします。それぞれの強みを組み合わせることをお勧めします。たとえば、対称キー暗号化で raw データを暗号化し、次にデータキーをパブリックキー暗号化で暗号化します。

データを暗号化するには、デフォルトでAWS Encryption SDKは、洗練されたアルゴリズムスイートAES-GCM対称暗号化、鍵導出関数(HKDF)、および署名を備えています。データキーを暗号化するには、対称または非対称暗号化アルゴリズムあなたのラッピングキーに適切です。

一般的に、対称キー暗号化アルゴリズムは迅速で、非対称またはパブリックキー暗号化よりも小さい暗号化テキストが生成されます。しかし、パブリックキーのアルゴリズムはロールを本質的に分離し、キー管理を簡単にします。それぞれの強みを組み合わせるには、対称キー暗号化でデータを暗号化し、次にデータキーをパブリックキー暗号化で暗号化します。

データキー

データキーは、データの暗号化に AWS Encryption SDK で使用される暗号化キーです。各データキーは、暗号化キーの要件に準拠したバイト配列です。データキーキャッシュを使用している場合を除き、AWS Encryption SDK では、一意のデータキーを使用して、各メッセージを暗号化します。

データキーを指定、生成、実装、拡張、保護、使用の必要はありません。AWS Encryption SDK で暗号化オペレーションや復号オペレーションを呼び出しても、上記のアクションは行われません。

データキーを保護するために、AWS Encryption SDK1 つ以上のキーの暗号化キーとして知られています。キーのラップまたはマスターキーを使用します。AWS Encryption SDK でプレーンテキストデータキーを使用して暗号化されたデータは、メモリから速やかに削除されます。その後、暗号化オペレーションで返る暗号化されたメッセージの暗号化されたデータを使用して、暗号化されたデータキーが保存されます。詳細については、「AWS Encryption SDK のしくみ」を参照してください。

ヒント

AWS Encryption SDK では、データ暗号化キーデータキーが区別されます。デフォルトのスイートを含むサポートされているアルゴリズムスイートのいくつかは、データキーが暗号化の上限に到達することを防ぐ、キー取得関数を使用します。キー取得関数は、データキーを入力として受け取り、データの暗号化に実際に使用されたデータ暗号化キーを返します。そのため、データは、データキー「によって」暗号化されているというよりは、データキーの「下で」暗号化されていると言えます。

暗号化された各データキーには、暗号化したラッピングキーの識別子を含むメタデータが含まれます。このメタデータを使用すると、AWS Encryption SDKを使用して、復号化時に有効なラッピングキーを識別します。

折り返しキー

Aキーのラップ(またはマスターキー) は、キー暗号化キーであり、AWS Encryption SDKを暗号化するために使用するデータキーデータを暗号化します。各プレーンテキストデータキーは、1 つまたは複数のラッピングキーで暗号化することができます。データの保護に使用されるラッピングキーを決定するには、キーリングまたはマスターキープロバイダー

注記

折り返しキーは、キーリングまたはマスターキープロバイダー内のキーを参照します。マスターキーは、通常、MasterKeyマスターキープロバイダーを使用するときにインスタンス化するクラス。

-AWS Encryption SDKは、いくつかの一般的に使用される折り返しキーをサポートしています。AWS Key Management Service(AWS KMS)対称カスタマーマスターキー(CMK)、raw AES-GCM (Advanced Encryption Mode)、raw RSAキー (Advanced Encryption Mode)、また、独自のラッピングキーを拡張または実装することもできます。

エンベロープの暗号化を使用する場合は、認可されていないアクセスからラッピングキーを保護する必要があります。これは、次のいずれかの方法で行うことができます。

キー管理システムがない場合は、AWS KMS をお勧めします。-AWS Encryption SDKの との統合AWS KMSラッピングキーを保護し、使用するのに役立ちます。ただし、AWS Encryption SDKはを必要としません。AWSまたは任意のAWSサービス。

キーリングとマスターキープロバイダー

暗号化および復号化に使用するラッピングキーを指定するには、キーリング(C および JavaScript)またはマスターキープロバイダー(Java、Python、CLI)を使用します。キーリングおよびマスターキープロバイダーを使用して、AWS Encryption SDKは、独自の実装を提供または設計します。-AWS Encryption SDKは、言語の制約に従って相互に互換性のあるキーリングとマスターキープロバイダーを提供します。詳細については、「キーリングの互換性」を参照してください。

キーリングは、データキーの生成、暗号化、復号を行います。キーリングを定義するときに、キーのラップデータキーを暗号化します。ほとんどのキーリングは、少なくとも 1 つのラッピングキーまたはラッピングキーを提供および保護するサービスを指定します。また、ラッピングキーを持たないキーリングや、追加の設定オプションを持つより複雑なキーリングを定義することもできます。キーリングの選択と使用については、AWS Encryption SDKでは、を参照してください。キーリングの使用。キーリングは C と JavaScript でサポートされています。

Aマスターキープロバイダーはキーリングの代替手段です。マスターキープロバイダは、指定したラッピングキー(またはマスターキー)を返します。各マスターキーは 1 つのマスターキープロバイダーに関連付けられていますが、マスターキープロバイダーは通常複数のマスターキーを提供しています。マスターキープロバイダは、Java、Python、およびAWS暗号化 CLI。

暗号化のキーリング(またはマスターキープロバイダー)を指定する必要があります。復号化には、同じキーリング(またはマスターキープロバイダー)または別のキーリングを指定できます。暗号化すると、AWS Encryption SDKは、指定したすべての折り返しキーを使用してデータキーを暗号化します。復号化すると、AWS Encryption SDKは、指定したラッピングキーのみを使用して、暗号化されたデータキーを復号します。復号化のためのラッピングキーを指定することはオプションですが、AWS Encryption SDK ベストプラクティス

ラッピングキーの指定

キーリング(またはマスターキープロバイダ)で折り返しキーを指定するには、キーリングが認識する識別子を使用する必要があります。

キーリング内の Raw AES および Raw RSA ラッピングキーの場合、ネームスペースと名前を指定する必要があります。(マスターキープロバイダーでは、Provider IDは名前空間に相当し、Key IDは名前に相当します。) 復号化するときは、各生のラッピングキーにまったく同じ名前空間と名前を使用する必要があります。別の名前空間または名前を使用する場合は、AWS Encryption SDKは、キーマテリアルが同じであっても、ラッピングキーを認識または使用しません。

ラッピングキーがAWS KMSカスタマーマスターキー (CMK) を使用するには、AWS KMSキー識別子。詳細については、「」を参照してください。キー識別子()AWS Key Management Service開発者ガイド

  • 暗号化の場合、使用するキー識別子は言語の実装によって異なります。たとえば、JavaScript で暗号化する場合、任意の有効なキー識別子 (キー ARN、エイリアス名、エイリアス ARN) を CMK ラッピングキーに使用できます。C で暗号化する場合、キー ID またはキー ARN のみを使用できます。

  • 復号時には、キー ARN を使用する必要があります。

    とき、AWS Encryption SDKが CMK ラッピングキーを使用してデータキーを暗号化すると、CMK のキー ARN が暗号化されたデータキーのメタデータに格納されます。strict モードで復号化すると、AWS Encryption SDK暗号化されたデータキーを復号する前に、同じキー ARN がキーリング (またはマスターキープロバイダー) に表示されていることを確認します。別のキー識別子を使用する場合、AWS Encryption SDKは、CMK が同じキーであっても CMK を認識または使用しません。

暗号化コンテキスト

暗号化オペレーションのセキュリティを向上させるには、データを暗号化するためのすべてのリクエストに暗号化コンテキストを含めます。暗号化コンテキストの使用はオプションですが、暗号化のベストプラクティスとして使用することをお勧めします。

暗号化コンテキストは、任意のシークレットではない追加認証データを含む名前と値のペアのセットです。暗号化コンテキストには選択した任意のデータを含むことができますが、一般的には、ファイルの種類、目的、または所有権などの、ログ記録と追跡に有用なデータが含まれます。データを暗号化する場合、暗号化コンテキストは暗号化されたデータに暗号化されてバインドされます。これにより、データを復号するために同じ暗号化コンテキストが必要になります。AWS Encryption SDK より返る暗号化されたメッセージのヘッダーには、プレーンテキストの暗号化コンテキストが含まれます。

暗号化コンテキストAWS Encryption SDK使用する暗号化コンテキストと、指定した暗号化コンテキストkey pair、暗号化マテリアルマネージャー(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コマンドラインインターフェイス (CKI) において、復号コマンドで暗号化コンテキストを指定した場合、CLI で、プレーンテキストのデータが返る前に、暗号化されたメッセージの暗号化コンテキストにその値が存在することが検証されます。

  • 他の言語では、復号レスポンスに暗号化コンテキストとプレーンテキストデータが含まれます。アプリケーションの復号関数では、プレーンテキストデータを返す前に、復号レスポンスの暗号化コンテキストに暗号化リクスとの暗号化コンテキスト (またはサブセット) が含まれていることを常に確認する必要があります。

暗号化コンテキストを選択する際、シークレットではないことに注意してください。暗号化コンテキストは、プレーンテキストで表示され、暗号化されたメッセージを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)ただし、状況からして代替が必須でない限り、デフォルトを使用することをお勧めします。現在のデフォルトは、HMAC ベースの抽出および展開を含む AES-GCM です。キー導出関数(HKDF)、コミットメント時楕円曲線デジタル署名アルゴリズム (ECDSA)署名と 256 ビット暗号化キーを使用します。

アプリケーションで高いパフォーマンスが必要で、データを暗号化しているユーザーとデータを復号しているユーザーが等しく信頼されている場合は、デジタル署名なしでアルゴリズムスイートを指定することを検討してください。ただし、キーコミットメントとキー導出関数を含むアルゴリズムスイートを強くお勧めします。これらの機能を持たないアルゴリズムスイートは、下位互換性のためにのみサポートされています。

暗号化マテリアルマネージャー

暗号化マテリアルマネージャー (CMM) は、暗号化と復号に使用される暗号化マテリアルを組み立てます。暗号化マテリアルには、プレーンテキストおよび暗号化されたデータキー、オプションのメッセージ署名キーが含まれます。CMMと直接やり取りすることはありません。このためには、暗号化メソッドおよび復号メソッドを使用します。

デフォルトの CMM を使用するか、CMM のキャッシュをAWS Encryption SDKが提供する、またはカスタムCMMを記述します。また、CMM を指定できますが、必須ではありません。キーリングまたはマスターキープロバイダーを指定すると、AWS Encryption SDKによってデフォルトの CMM が作成されます。デフォルトの CMM は、指定したキーリングまたはマスターキープロバイダーから暗号化マテリアルまたは復号マテリアルを取得します。これには、AWS Key Management Service (AWS KMS) などの暗号化サービスの呼び出しが含まれる場合があります。

CMMは、間の連絡として機能するため、AWS Encryption SDKキーリング (またはマスターキープロバイダー) とキーリングを使用する場合、ポリシーの適用やキャッシュのサポートなどのカスタマイズや拡張に理想的なポイントです。AWS Encryption SDK では、データキーキャッシュをサポートするためにキャッシュ CMM が提供されています。

対称暗号化と非対称暗号化

対称暗号化は、データの暗号化と復号に同じキーを使用します。

非対称暗号化は、数学的に関連するデータkey pair を使用します。ペア内の 1 つのキーでデータが暗号化され、ペア内のもう一方のキーだけがデータを復号化できます。詳細については、「」を参照してください。暗号化アルゴリズム()AWS暗号化サービスとツールガイド

-AWS Encryption SDKが使用エンベロープ暗号化。これは、対称データキーを使用してデータを暗号化します。1 つ以上の対称または非対称ラッピングキーを使用して、対称データキーを暗号化します。このメソッドは、暗号化されたメッセージこれには、暗号化されたデータと、データキーの暗号化されたコピーが少なくとも 1 つ含まれています。

データの暗号化(対称暗号化)

データを暗号化するには、AWS Encryption SDKは対称を使用します。データキーアルゴリズムスイートには対称暗号化アルゴリズムが含まれています。データを復号するには、AWS Encryption SDKは、同じデータキーと同じアルゴリズムスイートを使用します。

データキーの暗号化(対称または非対称の暗号化)

-キーリングまたはマスターキープロバイダーは、対称データキーの暗号化および復号化の方法を決定します。対称暗号化を使用するキーリングプロバイダーまたはマスターキープロバイダーを選択できます。たとえば、AWS KMSキーリング、または非対称暗号化を使用するもの(未加工の RSA キーリングやJceMasterKey

コミットメント事項

-AWS Encryption SDKが をサポートコミットメント時(時には堅牢性)、各暗号文が単一のプレーンテキストにのみ復号化できることを保証するセキュリティプロパティです。これを行うために、キーのコミットメントは、メッセージを暗号化したデータキーのみを使用して復号化することを保証します。キーコミットメントによる暗号化と復号化は、AWS Encryption SDKベストプラクティス

最新の対称暗号(AES を含む)のほとんどは、単一の秘密鍵の下で平文を暗号化します。例えば、一意のデータキーをAWS Encryption SDKは、各プレーンテキストメッセージを暗号化するために使用されます。このデータを同じデータキーで復号化すると、元のデータと同じプレーンテキストが返されます。通常、別のキーで復号化すると失敗します。しかし、2つの異なるキーの下で暗号文を復号することは可能です。まれに、数バイトの暗号文を異なるが、まだ分かりやすい平文に解読できる鍵を見つけることは実現可能です。

-AWS Encryption SDKは、常に 1 つの一意のデータキーの下で各平文メッセージを暗号化します。複数の折り返しキー(またはマスターキー)でそのデータキーを暗号化する可能性がありますが、折り返しキーは常に同じデータキーを暗号化します。それにもかかわらず、洗練された、手作業で細工された暗号化されたメッセージは実際には異なるデータキーを含み、それぞれ異なるラッピングキーで暗号化されている可能性があります。たとえば、あるユーザーが暗号化されたメッセージを復号化すると、0x0 (false) を返し、同じ暗号化されたメッセージを復号化している別のユーザーは 0x1 (true) を返します。

このシナリオを回避するには、AWS Encryption SDKは、暗号化および復号化時のキーのコミットメントをサポートします。とき、AWS Encryption SDKがメッセージをキーコミットメントで暗号化すると、暗号文を生成した一意のデータキーをキーコミットメント文字列、非秘密データキー識別子です。その後、暗号化されたメッセージのメタデータにキーコミットメント文字列を保存します。キーコミットメントでメッセージを復号化すると、AWS Encryption SDKは、データキーがその暗号化されたメッセージの唯一のキーであることを確認します。データキーの検証に失敗すると、復号化操作は失敗します。

バージョン 1.7 では、キーコミットメントSupport が導入されました。xを使用します。これは、キーのコミットメントでメッセージを復号できますが、キーのコミットメントで暗号化することはありません。このバージョンを使用して、キーのコミットメントで暗号文を復号化する機能を完全にデプロイできます。バージョン 2.0。xには、主要なコミットメントを完全にサポートしています。デフォルトでは、暗号化および復号化は、キーのコミットメントでのみ行われます。これは、以前のバージョンで暗号化された暗号文を復号化する必要がないアプリケーションにとって理想的な構成です。AWS Encryption SDK。

キーのコミットメントによる暗号化と復号化がベストプラクティスですが、使用するタイミングを決定し、使用するペースを調整できます。バージョン 1.7 以降。x,AWS Encryption SDKでは、コミットメントポリシーを設定する。デフォルトアルゴリズムスイートを使用し、使用できるアルゴリズムスイートを制限します。このポリシーは、データがキーのコミットメントで暗号化および復号化されるかどうかを決定します。

主なコミットメントの結果はわずかに大きい (+ 30 バイト) 暗号化されたメッセージ処理に時間がかかる。アプリケーションのサイズやパフォーマンスに非常に敏感な場合は、重要なコミットメントをオプトアウトすることもできます。しかし、あなたがしなければならない場合にのみそうしてください。

バージョン 1.7 への移行に関する詳細については、xと 2.0。x(主なコミットメント機能を含む)については、バージョン 2.0 への移行。x。主なコミットメントに関する技術情報については、」AWS Encryption SDK のアルゴリズムのリファレンスおよびAWS Encryption SDK のメッセージ形式のリファレンス

コミットメントポリシー

Aコミットメントポリシーは、アプリケーションが暗号化および復号化するかどうかを決定する構成設定です。コミットメント時。キーコミットメントによる暗号化と復号化は、AWS Encryption SDKベストプラクティス

コミットメントポリシーには、3 つの値があります。

注記

テーブル全体を表示するには、水平または垂直にスクロールする必要があります。

コミットメントポリシー値
キーコミットメントによる暗号化 鍵のコミットメントなしで暗号化 キーのコミットメントで復号化 キーのコミットメントなしで復号化
暗号化禁止解読
要求暗号化の許可復号化
要求暗号化要求復号化

コミットメントポリシー設定は、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はエラーを返します。

コミットメントポリシーの設定については、」コミットメントポリシーの設定

デジタル署名

システム間のデジタルメッセージの整合性を確保するために、メッセージにデジタル署名を適用できます。デジタル署名は常に非対称です。秘密鍵を使用して署名を作成し、元のメッセージに追加します。受信者は公開鍵を使用して、署名後にメッセージが変更されていないことを確認します。

-AWS Encryption SDKは、認証された暗号化アルゴリズム AES-GCM を使用してデータを暗号化します。復号化プロセスでは、デジタル署名を使用せずに、暗号化されたメッセージの完全性と信頼性を検証します。しかし、AES-GCM は対称キーを使用するため、暗号文の復号に使用されるデータキーを復号化できる人は、手動で新しい暗号化された暗号文を作成することもでき、潜在的なセキュリティ上の懸念を引き起こします。たとえば、AWS KMSキーを折り返しキーとして使用する場合、KMS 復号化アクセス許可を持つユーザーが KMS Encrypt を呼び出さずに暗号化された暗号テキストを作成できることを意味します。

この問題を回避するには、AWS Encryption SDKは、暗号化されたメッセージの末尾に楕円曲線 DSA (ECDSA) 署名を追加することをサポートしています。署名アルゴリズムスイートを使用すると、AWS Encryption SDKは、暗号化されたメッセージごとに一時的な秘密鍵と公開鍵のペアを生成します。-AWS Encryption SDKは、データキーの暗号化コンテキストに公開鍵を格納し、秘密鍵を破棄します。公開鍵で検証する別の署名を作成することはできません。このアルゴリズムは、メッセージヘッダー内の追加の認証データとして暗号化されたデータキーに公開鍵をバインドするため、メッセージのみを解読できるユーザーは公開鍵を変更できません。

署名検証は、復号化に多大なパフォーマンスコストを追加します。データを暗号化するユーザーとデータを復号するユーザーが等しく信頼されている場合は、署名を含まないアルゴリズムスイートを使用することを検討してください。