次の方法で共有


エンベロープ化および署名された CMS/PKCS #7 メッセージ

CMS/PKCS #7 では、メッセージに署名しエンベロープ化することができます。保護されたメッセージを入れ子にできるため、これが可能になります。メッセージのデジタル署名およびエンベロープ化では、「SignedCms メッセージ」および「EnvelopedCms メッセージ」のトピックでそれぞれ説明したセキュリティ サービスをすべて適用することにより、メッセージを保護します。

S/MIME セキュリティ標準を使用する電子メールは、メッセージの署名とエンベロープ化の両方を利用するアプリケーションの一例です。S/MIME では、電子メール メッセージの署名と暗号化の両方の機能の仕様を規定しています。アプリケーションで、高い確率でのデータの認証とデータの機密性が求められる場合は、デジタル署名とデジタル エンベロープ化を組み合わせて使用します。

これらのセキュリティ サービスはどちらが先でも適用できますが、最初にメッセージに署名してからエンベロープ化するほうが有利になる場合があります。の場合、署名するデータはまだ暗号化されていないので、データがわかりやすくなります。

SignedCms クラスと EnvelopedCms クラスを相互に組み合わせて使用することにより、メッセージの署名とエンベロープ化を行います。たとえば、アプリケーションの要件に従って、最初にメッセージに署名し、その後でエンベロープ化するとします。「SignedCms メッセージ」のトピックで説明したように、SignedCms クラスを使用してメッセージに署名します。System.Security.Cryptography.Pkcs.SignedCms.Encode メソッドを呼び出して、SignedCms メッセージをエンコードします。これにより、バイト配列でエンコードされます。このバイト配列を入力として使用し、ContentInfo オブジェクトを構築します。ContentInfo オブジェクトを入力として使用し、EnvelopedCms オブジェクトを構築します。

これで、EnvelopedCms オブジェクトの内部には、入れ子の SignedCms オブジェクトが内部コンテンツとして入ります。ここで、「EnvelopedCms メッセージ」の説明に従って、メッセージをエンベロープ化します。

メッセージの署名およびエンベロープ化を行うコード例については、「方法 :メッセージを署名してエンベロープ化する」のトピックを参照してください。

関連項目

概念

方法 :メッセージを署名してエンベロープ化する
CMS/PKCS #7 メッセージの種類

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.