Freigeben über


Komponenten einer CMS/PKCS #7-Nachricht

Die CMS/PKCS #7-Nachrichtenstruktur erleichtert die Implementierung mindestens eines Sicherheitsdiensts in eine Nachricht. Der CMS/PKCS #7-Nachricht können ebenfalls Attribute zugeordnet werden, die zusätzliche Informationen über die Nachricht bereitstellen.

Zu schützende Daten

CMS/PKCS #7 erzielt die Möglichkeit zur Anwendung mehrere Sicherheitsdienste auf Daten, indem diese in einem ContentInfo-Objekt gespeichert werden. Dieses Objekt ist eine Eigenschaft der zwei primären Klassen SignedCms und EnvelopedCms, von denen Daten im System.Security.Cryptography.Pkcs-Namespace geschützt werden. Das ContentInfo-Objekt kann zwar ungeschützte Daten speichern, aber es kann ebenfalls Daten kapseln, die zuvor von einem CMS/PKCS #7-Sicherheitsdienst geschützt waren. Diese Kapselung ermöglicht die Anwendung geschachtelter Sicherheitsstufen auf die Daten. So können beispielsweise Daten, die bereits digital signiert wurden, digital verschachtelt werden.

Die Daten, die mit einer neuen Schutzstufe in einer CMS/PKCS #7-Nachricht bereitgestellt werden, die sich im ContentInfo-Objekt befindet, werden als innerer Inhalt der CMS/PKCS #7-Nachricht bezeichnet. Die Daten, die aus der Anwendung dieses Schutzes resultieren, werden als äußerer Inhalt der CMS/PKCS #7-Nachricht bezeichnet. Der äußere Inhalt wird durch Aufrufen der Encode-Methode des anwendbaren CMS/PKCS #7-Nachrichtenobjekts erzeugt. In der Praxis bedeutet dies das Aufrufen von System.Security.Cryptography.Pkcs.SignedCms.Encode oder System.Security.Cryptography.Pkcs.EnvelopedCms.Encode.

Weitere Informationen zu Daten, die durch mehrere Sicherheitsdienste geschützt sind, finden Sie unter Mit einem Umschlag versehene und signierte CMS/PKCS #7-Nachricht. Ein Codebeispiel zu Daten, die durch mehrere Sicherheitsdienste geschützt sind, finden Sie unter Verfahrensweise: Signieren und Versehen einer Nachricht mit einem Umschlag.

Attribute

CMS/PKCS #7 ermöglicht das Platzieren von Attributen in geschützten Nachrichten. Ein Attribut besteht aus einem Objektbezeichner (Oid), der angibt, um welche Art von Attribut es sich handelt, und Daten, die den Wert des Attributs beinhalten. Die Auswahl, der Speicherort und die Eigenschaften dieser Attribute sind vom Typ der CMS/PKCS #7-Nachricht abhängig.

Eine SignedCms-Nachricht kann zwei Typen von signaturspezifischen Attributen enthalten: zusammen mit dem Nachrichteninhalt signierte und unsignierte. Weitere Informationen finden Sie unter SignedCms-Nachricht. Eine EnvelopedCms-Nachricht kann Attribute enthalten, die unverschlüsselt bleiben. Weitere Informationen finden Sie unter EnvelopedCms-Nachricht.

Die folgenden Attributklassen sind im System.Security.Cryptography.Pkcs-Namespace enthalten. Einige davon sind gemäß den CMS/PKCS #7-Standards erforderlich, andere sind Attribute, die in vielen Anwendungsfällen nützlich sind:

Benutzerdefinierte Attribute können ebenfalls so gestaltet werden, dass sie die Anforderungen einer Anwendung erfüllen. Leiten Sie eine benutzerdefinierte Attributklasse von Pkcs9AttributeObject ab.

Antragsteller

Ein Antragsteller in einer CMS/PKCS #7-Nachricht ist eine an der Erzeugung oder Verwendung der Nachricht beteiligte Entität. In Abhängigkeit vom Verhalten einer Anwendung kann ein Antragsteller eine Vielzahl verschiedener Rollen übernehmen. Beispiele für solche Rollen sind Autor, Signierer, Gegensignierer, Empfänger oder Leser einer Nachricht und manchmal auch Kombinationen daraus. Der Antragsteller kann eine Person, eine Softwareanwendung oder jede andere Entität sein, die über eine eindeutige Identität verfügt. Die zwei Hauptklassen, von denen Antragsteller in System.Security.Cryptography.Pkcs dargestellt werden, sind CmsSigner und CmsRecipient.

Antragsteller in CMS/PKCS #7 verwenden kryptografische Anmeldeinformationen zum Durchführen der jeweiligen Vorgänge. Diese liegen in der Regel in Form eines Zertifikats mit öffentlichem Schlüssel mit einem zugeordneten privaten Schlüssel vor. Das Zertifikat mit öffentlichem Schlüssel eines Antragstellers identifiziert diesen und seinen Speicherort. Das Zertifikat kann auf eine von zwei Arten eindeutig identifiziert werden.

  • Anhand des DNs (Distinguished Name) des Ausstellers in Verbindung mit einer ausstellerspezifischen Zertifikatseriennummer.

  • Anhand einer Schlüsselbezeichners des Antragstellers.

Diese Identifizierungsmechanismen werden in der SubjectIdentifierType-Enumeration dargestellt. Einige der in den Klassen CmsSigner und CmsRecipient verwendeten Konstruktoren akzeptieren einen SubjectIdentifierType-Member als Eingabe.

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.