CMS/PKCS #7 は、メッセージをデジタル エンベロープ化するための EnvelopedCms クラスを提供します。
メッセージのデジタル エンベロープ化では、データ機密性と呼ばれるセキュリティ サービスを適用することにより、メッセージを保護します。
デジタル エンベロープは、暗号化を使用してメッセージの機密性の保持に役立てます。セッション キーが生成され、メッセージの暗号化に使用されます。その後、受信者の公開キーを使用してセッション キー自体も暗号化されます。デジタル エンベロープは、暗号化されたメッセージと暗号化されたセッション キーの組み合わせで構成されます。セッション キーは、受信時に、受信者の秘密キーを使用して復号化されます。その後、メッセージは、セッション キーを使用して復号化されます。セッション キーは対称キーであるため、メッセージの暗号化と復号化の両方に使用できます。
データの機密性を最大限に高める必要があるアプリケーションでは、EnvelopedCms クラスを使用します。S/MIME セキュリティ標準を使用する電子メールは、EnvelopedCms クラスを使用してセキュリティを提供できる例の 1 つです。S/MIME は、他のセキュリティサービスに加えて、複数の受信者に対する電子メール メッセージを暗号化する機能の仕様を規定しています。デジタル エンベロープは、そうしたニーズに合わせて調整できます。
メッセージの暗号化には、EnvelopedCms クラスの Encrypt メソッドのいずれかを使用します。System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient) メソッドでは、アプリケーションは、CmsRecipient オブジェクトを作成して、最初にメッセージ受信者の特性をセットアップする必要があります。CmsRecipient クラスは、受信者の X509 証明書と、メッセージの送信者と受信者の間にセッション キーを確立する方法を格納します。System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt メソッドでは、ユーザーが適切な受信者の証明書を選択できるダイアログ ボックスが表示されます。
EnvelopedCms クラスは、複数の受信者に対するメッセージのエンベロープ化をサポートします。CmsRecipientCollection コレクションに受信者のグループをセットアップして、System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection) メソッドへの入力として使用します。
メッセージの送信者と受信者の間にセッション キーを確立する方法は 2 つあります。キー トランスポート アルゴリズムでは通常、RSA (https://go.microsoft.com/fwlink/?LinkId=98038https://go.microsoft.com/fwlink/?LinkId=98038) アルゴリズムを使用します。このアルゴリズムでは、送信元がキーを生成し、それを受信者に送信することにより、受信者との共有暗号化キーを確立します。キーの承諾アルゴリズムは通常、Diffie-Hellman キーの承諾 (https://go.microsoft.com/fwlink/?LinkId=98039https://go.microsoft.com/fwlink/?LinkId=98039) アルゴリズムを使用します。このアルゴリズムでは、両者がキーの生成に参加し、名前が示すとおり、そのキーを承諾することによって、共有暗号化キーを確立します。
EnvelopedCms メッセージの各受信者の情報は、System.Security.Cryptography.Pkcs.EnvelopedCms.RecipientInfos プロパティにあります。キー トランスポート アルゴリズムにより送信者とセッション キーを確立する受信者に関する情報は、KeyTransRecipientInfo オブジェクトにあります。キーの承諾アルゴリズムにより送信者とセッション キーを確立する受信者に関する情報は、KeyAgreeRecipientInfo オブジェクトにあります。
EnvelopedCms メッセージには、保護されていない属性を含めることができます。これらは暗号化されていない属性で、データの機密性を保持していません。これらの属性は、System.Security.Cryptography.Pkcs.EnvelopedCms.UnprotectedAttributes プロパティに格納されます。
エンベロープ化されたメッセージの復号化には、EnvelopedCms クラスの Decrypt メソッドのいずれかを使用します。EnvelopedCms メッセージには、復号化に必要な受信者の識別情報が含まれます。この情報は、RecipientInfos プロパティに含まれます。
EnvelopedCms メッセージを使用するコード例については、「System.Security.Cryptography.Pkcs の使用」を参照してください。
関連項目
タスク
方法 :単一の受信者に対するメッセージをエンベロープ化する
方法 :複数の受信者に対するメッセージをエンベロープ化する
参照
CmsRecipient
CmsRecipientCollection
EnvelopedCms
KeyAgreeRecipientInfo
KeyTransRecipientInfo
概念
方法 :メッセージを署名してエンベロープ化する
CMS/PKCS #7 メッセージの種類
Copyright © 2007 by Microsoft Corporation.All rights reserved.