Freigeben über


EnvelopedCms-Nachricht

CMS/PKCS #7 stellt die EnvelopedCms-Klasse zum Versehen von Nachrichten mit einem digitalen Umschlag bereit.

Das Versehen einer Nachricht mit einem digitalen Umschlag schützt diese durch die Anwendung eines Sicherheitsdiensts, der als Datenvertraulichkeit bekannt ist.

Der digitale Umschlag verwendet Verschlüsselung, um die Nachricht vertraulich zu halten. Ein Sitzungsschlüssel wird generiert, mit dem die Nachricht verschlüsselt wird. Der Sitzungsschlüssel selbst wird dann mit dem öffentlichen Schlüssel des Empfängers verschlüsselt. Die Kombination aus verschlüsselter Nachricht und verschlüsseltem Sitzungsschlüssel macht den digitalen Umschlag aus. Bei Empfang der Nachricht wird der Sitzungsschlüssel mit dem privaten Schlüssel des Empfängers entschlüsselt. Anschließend wird die Nachricht mithilfe des Sitzungsschlüssels entschlüsselt. Der Sitzungsschlüssel kann sowohl zum Verschlüsseln als auch zum Entschlüsseln der Nachricht verwendet werden, weil es sich um einen symmetrischen Schlüssel handelt.

Verwenden Sie die EnvelopedCms-Klasse in allen Anwendungen, die die Anforderung haben, die Vertraulichkeit von Daten zu maximieren. E-Mail, die den S/MIME-Sicherheitsstandard verwendet, ist ein Beispiel für die Verwendung EnvelopedCms-Klasse, um Sicherheit bereitzustellen. Zusätzlich zu anderen Sicherheitsdiensten bietet S/MIME die Möglichkeit zum Verschlüsseln einer E-Mail-Nachricht für mehrere Empfänger. Digitale Umschläge werden an diese Anforderung angepasst.

Verwenden Sie eine der Verschlüsselungsmethoden der EnvelopedCms-Klasse, um eine Nachricht zu verschlüsseln. Bei der System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient)-Methode ist es erforderlich, dass die Anwendung zuerst die Eigenschaften des Nachrichtenempfängers einrichtet, indem ein CmsRecipient-Objekt konstruiert wird. Die CmsRecipient-Klasse speichert das X.509-Zertifikat des Empfängers und das Verfahren, mit dem ein Sitzungsschlüssel zwischen dem Absender und Empfänger der Nachricht eingerichtet wird. Die System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt-Methode zeigt ein Dialogfeld an, in dem der Benutzer das Zertifikat des entsprechenden Empfängers auswählen kann.

Die EnvelopedCms-Klasse unterstützt das Versehen einer Nachricht mit einem Umschlag für mehrere Empfänger. Richten Sie die Gruppe der Empfänger in einer CmsRecipientCollection-Sammlung ein, um sie als Eingabe für die System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection)-Methode zu verwenden.

Es gibt zwei Verfahren zum Einrichten des Sitzungsschlüssels zwischen dem Absender und Empfänger einer Nachricht. In Algorithmen für die Schlüsselübertragung wird i. d. R. der RSA-Algorithmus (https://go.microsoft.com/fwlink/?LinkId=98038https://go.microsoft.com/fwlink/?LinkId=98038) verwendet, in dem ein Absender einen mit einem Empfänger gemeinsam verwendeten kryptografischen Schlüssel einrichtet. Hierfür generiert er den betreffenden Schlüssel und überträgt ihn anschließend an den Empfänger. Algorithmen mit Schlüsselvereinbarung verwenden üblicherweise den Diffie-Hellman-Schlüsselvereinbarungsalgorithmus (https://go.microsoft.com/fwlink/?LinkId=98039https://go.microsoft.com/fwlink/?LinkId=98039). Dabei richten zwei Teilnehmer einen gemeinsam verwendeten kryptografischen Schlüssel ein, indem beide an dessen Generierung teilnehmen und dann – per definitionem – diesen Schlüssel vereinbaren.

Informationen zu jedem Empfänger einer EnvelopedCms-Nachricht sind in der System.Security.Cryptography.Pkcs.EnvelopedCms.RecipientInfos-Eigenschaft verfügbar. Informationen über einen Empfänger, der den Sitzungsschlüssel mit dem Absender mithilfe eines Schlüsselübertragungsalgorithmus einrichtet, befinden sich in einem KeyTransRecipientInfo-Objekt. Informationen über einen Empfänger, der den Sitzungsschlüssel mit dem Absender mithilfe eines Schlüsselvereinbarungsalgorithmus einrichtet, befinden sich in einem KeyAgreeRecipientInfo-Objekt.

Eine EnvelopedCms-Nachricht kann ungeschützte Attribute enthalten. Hierbei handelt es sich um Attribute, die nicht verschlüsselt sind, weshalb für sie keine Datenvertraulichkeit besteht. Diese Attribute werden in der System.Security.Cryptography.Pkcs.EnvelopedCms.UnprotectedAttributes-Eigenschaft gespeichert.

Verwenden Sie eine der Entschlüsselungsmethoden der EnvelopedCms-Klasse, um die mit Umschlag versehene Nachricht zu entschlüsseln. Die EnvelopedCms-Nachricht enthält die Identifikationsinformationen des Empfängers, die für die Entschlüsselung notwendig sind. Diese Informationen befinden sich in der RecipientInfos-Eigenschaft.

Mehrere Codebeispiele, in denen EnvelopedCms-Nachrichten verwendet werden, finden Sie unter Verwenden von "System.Security.Cryptography.Pkcs".

Siehe auch

Aufgaben

Verfahrensweise: Versehen einer Nachricht mit einem Umschlag für einen Empfänger
Verfahrensweise: Versehen einer Nachricht mit einem Umschlag für mehrere Empfänger

Referenz

CmsRecipient
CmsRecipientCollection
EnvelopedCms
KeyAgreeRecipientInfo
KeyTransRecipientInfo

Konzepte

Verfahrensweise: Signieren und Versehen einer Nachricht mit einem Umschlag
Typen von CMS/PKCS #7-Nachrichten

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.