Freigeben über


PKCS #7 Cryptographic Messaging Syntax – Konzept

Die CryptoAPI-Nachrichtenfunktionen folgen dem Standard der PKCS #7 Cryptographic Message Syntax (CMS). Entwickler müssen mit dieser Spezifikation vertraut sein, um die Nachrichtenfunktionen auf niedriger Ebene am effektivsten verwenden zu können. Hier sind einige ihrer Definitionen im Detail.

Der PKCS #7-Standard beschreibt eine allgemeine Syntax für Daten, auf die Kryptografie angewendet werden kann, z. B. digitale Signaturen und digitale Umschläge. Die Syntax lässt Rekursion zu, sodass beispielsweise ein Umschlag in einen anderen geschachtelt werden kann, oder eine Partei digitale Daten signieren kann, die bereits in einen Umschlag eingefügt wurden. Außerdem können beliebige Attribute, z. B. die Signaturzeit, zusammen mit dem Inhalt einer Nachricht authentifiziert werden. Darüber hinaus werden andere Attribute bereitgestellt, z. B. Gegensignaturen, die einer Signatur zugeordnet werden sollen.

Der Datentyp, der in einer PKCS #7-Nachricht enthalten ist, wird als Inhaltstyp bezeichnet. Es gibt zwei Klassen von Inhaltstypen: Grundlegend und Erweitert.

  • Grundlegende Inhaltstypen enthalten nur Daten ohne kryptografische Erweiterungen. Derzeit gibt es nur einen Inhaltstyp in dieser Klasse, den Dateninhaltstyp.
  • Erweiterte Inhaltstypen enthalten Daten eines bestimmten Typs (möglicherweise verschlüsselt) und andere kryptografische Erweiterungen (z. B. Hashes oder Signaturen).

Der Inhalt in der erweiterten Klasse verwendet Kapselung und führt zu den Begriffen äußerer Inhalt (der die Erweiterungen enthält) und innerer Inhalt (welcher erweitert wird). Eine erweiterte Klasse kann z. B. einen Datentyp (grundlegende Klasse) enthalten, der eine Signatur enthält. In diesem Fall ist der Dateninhaltstyp der innere Inhalt und die Kombination des Datentyps und der Signatur bildet den äußeren Inhalt.

Die im PKCS #7-Standard definierten Inhaltstypen sind wie folgt.

Inhaltstyp Beschreibung
Daten Eine Oktettzeichenfolge (BYTE).
Signierte Daten Inhalt eines beliebigen Typs und verschlüsselte Nachrichtenhashes (Digests) des Inhalts für null oder mehr Signaturgeber.
Codierte Daten Verschlüsselter Inhalt eines beliebigen Typs und verschlüsselte Inhaltsverschlüsselungsschlüssel für einen oder mehrere Empfänger. Die Kombination aus verschlüsseltem Inhalt und verschlüsseltem Schlüssel für die Inhaltsverschlüsselung für einen Empfänger bildet einen digitalen Umschlag für diesen Empfänger.
Signierte und codierte Daten Verschlüsselte Inhalte jeglicher Art, verschlüsselte Inhaltsverschlüsselungsschlüssel für einen oder mehrere Empfänger und mehrfach verschlüsselte Nachrichten-Digets für einen oder mehrere Signaturgeber. Die Mehrfachverschlüsselung besteht aus einer Verschlüsselung mit dem privaten Schlüssel eines Signaturgebers gefolgt von einer Verschlüsselung mit dem Inhaltsverschlüsselungsschlüssel.
Verarbeitete Daten Inhalt eines beliebigen Typs und eines Nachrichtenhashs (Digest) des Inhalts.
Verschlüsselte Daten Verschlüsselte Inhalte jeglicher Art. Im Gegensatz zum codierten Dateninhaltstyp verfügt der Inhaltstyp für verschlüsselte Daten weder über Empfänger noch über verschlüsselte Inhaltsverschlüsselungsschlüssel. Es wird davon ausgegangen, dass Schlüssel von anderen Mitteln verwaltet werden.

 

Hinweis

Während der PKCS #7-Spezifikation beziehen sich die Begriffe Digest und Digested auf den Wert, der aus der Anwendung eines Hashingalgorithmus auf Daten erzeugt wird. In dieser Dokumentation werden die Begriffe Hash und Hashed für denselben Zweck verwendet. Der Datentyp, der mit den Nachrichtenfunktionen auf niedriger Ebene verwendet wird, wird beispielsweise als Hashed und nicht als Digested bezeichnet. Für die Zwecke dieser Dokumentation können die beiden Begriffsgruppen als austauschbar angesehen werden.