CMS/PKCS #7 メッセージのコンポーネント

CMS/PKCS #7 メッセージ構造により、1 つ以上のセキュリティ サービスをメッセージに容易に実装できます。CMS/PKCS #7 メッセージに属性を関連付けて、メッセージに関する情報を追加できます。

保護されるデータ

CMS/PKCS #7 では、ContentInfo オブジェクトにデータを格納することにより、複数のセキュリティ サービスをそのデータに適用できます。このオブジェクトは、System.Security.Cryptography.Pkcs 名前空間、SignedCms、および EnvelopedCms のデータを保護する 2 つのプライマリ クラスのプロパティです。ContentInfo オブジェクトは保護されていないデータを格納する場合もありますが、CMS/PKCS #7 セキュリティ サービスによって既に保護されているデータをカプセル化することもあります。このカプセル化により、入れ子になったセキュリティ レイヤをデータに適用できます。たとえば、デジタル署名付きのデータをデジタル エンベロープ化できます。

CMS/PKCS #7 メッセージで新しい保護レイヤが提供されているデータは、ContentInfo オブジェクトにあり、CMS/PKCS #7 メッセージの内部コンテンツと呼ばれます。この保護を適用した結果発生するデータは、CMS/PKCS #7 メッセージの外部コンテンツと呼ばれます。外部コンテンツは、該当する CMS/PKCS #7 メッセージ オブジェクトの Encode メソッドを呼び出すことで取得されます。実際には、これは System.Security.Cryptography.Pkcs.SignedCms.Encode または System.Security.Cryptography.Pkcs.EnvelopedCms.Encode を呼び出すことを意味します。

複数のセキュリティ サービスで保護されたデータの詳細については、「エンベロープ化および署名された CMS/PKCS #7 メッセージ」を参照してください。複数のセキュリティ サービスで保護されたデータのコード例については、「方法 :メッセージを署名してエンベロープ化する」を参照してください。

属性

CMS/PKCS #7 を使用すると、保護されたメッセージに属性を配置できます。属性は、属性の種類を識別するオブジェクト識別子 (Oid) と、属性の値を格納するデータで構成されます。これらの属性の選択、場所、および特性は、CMS/PKCS #7 メッセージによって異なります。

SignedCms メッセージには、メッセージの内容と共に署名された属性と、署名されないままの属性の 2 種類の署名固有の属性を含めることができます。詳細については、「SignedCms メッセージ」を参照してください。EnvelopedCms メッセージには、暗号化されないままの属性を含めることができます。詳細については、「EnvelopedCms メッセージ」を参照してください。

System.Security.Cryptography.Pkcs 名前空間に存在する属性クラスは次のとおりです。一部は CMS/PKCS #7 標準で必須となっていますが、その他は多数のアプリケーション シナリオで役立つ属性です。

カスタム属性は、アプリケーションのニーズに合わせて作成することもできます。カスタム属性クラスは、Pkcs9AttributeObject から派生して作成します。

サブジェクト

CMS/PKCS #7 メッセージのサブジェクトは、メッセージの作成または使用にかかわるエンティティです。アプリケーションの動作に応じて、サブジェクトはさまざまな役割を果たします。そうした役割には、たとえば、メッセージの送信者、作成者、署名者、副署名者、受信者、読者や、それらの組み合わせなどがあります。サブジェクトは、人、ソフトウェア アプリケーション、または一意の ID を持つその他の任意のエンティティです。System.Security.Cryptography.Pkcs にサブジェクトを含む主なクラスは、CmsSigner および CmsRecipient の 2 つです。

CMS/PKCS #7 のサブジェクトでは、暗号化資格情報を使用して操作を実行します。これらは通常、関連付けられた秘密キーを伴う公開キー証明書の形式を取ります。サブジェクトは、公開キー証明書により識別され、特定されます。証明書は、次の 2 ついずれかの方法で一意に識別できます。

  • 発行者の識別名と、発行者固有の証明書シリアル番号

  • サブジェクト キー ID

こうした識別機構は、SubjectIdentifierType 列挙型で表現されます。CmsSigner クラスおよび CmsRecipient クラスで使用されるコンストラクタの一部は、入力として SubjectIdentifierType メンバを取ります。

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.