Cryptographic Message Syntax (CMS) – standard stworzony przez Internet Engineering Task Force z myślą o zabezpieczaniu wiadomości. Może być użyty do podpisywania, szyfrowania, uwierzytelniania oraz zachowania integralności wiadomości. Struktura CMS opisywana jest w notacji ASN.1 i kodowana jako ().

Typy content Data Content Type Signed-data Content Type Enveloped-data Content Type Digested-data Content Type Encrypted-data Content Type Authenticated-data Content Type

Data Content Type Zawiera wiadomość, np. plik tekstowy ASCII. Interpretacja danych pozostawiona jest aplikacji.

id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }

Signed-data Content Type

Zawiera content jakiegokolwiek typu (EncapsulatedContentInfo) oraz jakakolwiek liczba podmiotów (SignerInfos) może równolegle złożyć podpis na jakimkolwiek typie content. Format również zezwala na przechowywanie ścieżki certyfikacyjnej oraz listy CRL. Kompatybilny z PKCS#7.

id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }

SignedData ::= SEQUENCE { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates IMPLICIT CertificateSet OPTIONAL, crls IMPLICIT RevocationInfoChoices OPTIONAL, signerInfos SignerInfos }

Enveloped-data Content Type

Zawiera zaszyfrowany content jakiegokolwiek typu oraz zaszyfrowany content-encryption keys dla jednego lub więcej odbiorców. Content-encryption key jest generowany losowo (klucz szyfrujący dane) i jest zaszyfrowany dla każdego odbiorcy jego kluczem publicznym. Wszystkie te zaszyfrowane Content-encryption key zgrupowane są w RecipientInfos. Proces odszyfrowania wiadomości polega na odszyfrowaniu jednego z content-encryption keys i odszyfrowaniu zawartości content przy użyciu odzyskanego klucza content-encryption key.

id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 }

EnvelopedData ::= SEQUENCE { version CMSVersion, originatorInfo IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs IMPLICIT UnprotectedAttributes OPTIONAL }

Digested-data Content Type

Zawiera content jakiegokolwiek typu oraz hash wyliczonym na tym content. Przeważnie używa się Digested-data Content Type do zapewnienia integralności wiadomości i rezultat Digested-data Content Type przeważnie jest wejściem enveloped-data content type.

id-digestedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 5 }

DigestedData ::= SEQUENCE { version CMSVersion, digestAlgorithm DigestAlgorithmIdentifier, encapContentInfo EncapsulatedContentInfo, digest Digest }

Encrypted-data Content Type

Zawiera zaszyfrowana wiadomość jakiegokolwiek typu w przeciwieństwie do enveloped-data content type wiadomość szyfrowana jest kluczem odbiorcy wiadomości.

id-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 }

EncryptedData ::= SEQUENCE { version CMSVersion, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs IMPLICIT UnprotectedAttributes OPTIONAL }

Authenticated-data Content Type

Zawiera content jakiegokolwiek typu nazwaną () oraz zaszyfrowane klucze autentykujące dla jednego lub więcej odbiorców. Kombinacja MAC i jednego zaszyfrowanego klucza autentykującego jest potrzebna do przeprowadzenia weryfikacji integralności zawartości content.

Message authentication key jest generowany losowo i jest szyfrowany dla każdego odbiorcy. Wszystkie zaszyfrowane Message authentication key trzymane w RecipientInfo.

id-ct-authData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 2 }

AuthenticatedData ::= SEQUENCE { version CMSVersion, originatorInfo IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, macAlgorithm MessageAuthenticationCodeAlgorithm, digestAlgorithm DigestAlgorithmIdentifier OPTIONAL, encapContentInfo EncapsulatedContentInfo, authAttrs IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, unauthAttrs IMPLICIT UnauthAttributes OPTIONAL }

Linki zewnętrzne RFC3852 - Cryptographic Message Syntax (CMS)

Kategoria:Standardy bezpieczeństwa teleinformatycznego