rfc-6032

Cryptographic Message Syntax (CMS) Encrypted Key Package Content Type

S. Turner, R. Housley
date2010-12 streamIETF wgnon working group statusPROPOSED STANDARD pages11 canonicalhttps://www.rfc-editor.org/rfc/rfc6032 doi10.17487/RFC6032
This document defines the Cryptographic Message Syntax (CMS) encrypted key package content type, which can be used to encrypt a content that includes a key package, such as a symmetric key package or an asymmetric key package. It is transport independent. CMS can be used to digitally sign, digest, authenticate, or further encrypt this content type. It is designed to be used with the CMS Content Constraints (CCC) extension, which does not constrain the EncryptedData, EnvelopedData, and AuthEnvelopedData. [STANDARDS-TRACK]

Extracted elements (18)

design-rationale §1

In CCC terminology, the EncryptedKeyPackage is a leaf node. This means additional authorization checks are required after decryption of the inner content (e.g., verifying the SignedData signature and certification path on the inner symmetric key package), enabling multi-layer authorization chains.

crypto, security, pkix

design-rationale §1

The encrypted key package content type was created to close an authorization gap in the CMS Content Constraints (CCC) extension: CCC can authorize originators of plaintext key packages but cannot constrain EncryptedData, EnvelopedData, or AuthEnvelopedData layers. A distinct content type allows the CCC OID to be placed in an originator's certificate to authorize production of encrypted key packages at intermediate relay points that cannot decrypt the content.

crypto, security, pkix

interoperability-note §2

Interoperability between an originator and a recipient that do not support the same innermost content type (e.g., originator produces AsymmetricKeyPackage while recipient expects SymmetricKeyPackage) is not addressed by this specification; originators are expected to be aware of recipient capabilities, but the capability exchange mechanism is out of scope.

crypto, security

normative-requirement §2 MUST

An EncryptedKeyPackage content type MUST contain at least one SymmetricKeyPackage or AsymmetricKeyPackage. Implementations MAY support additional encapsulating layers.

crypto, security

normative-requirement §2 MUST

Implementations MUST support the EnvelopedData choice for the EncryptedKeyPackage content type.

crypto, security

normative-requirement §2 SHOULD

Implementations SHOULD support the EncryptedData choice and MAY support the AuthEnvelopedData choice for the EncryptedKeyPackage content type.

crypto, security

normative-requirement §2 MUST

Implementations that support AuthEnvelopedData to encapsulate with this content type MUST support an EncryptedKeyPackage that encapsulates either a SymmetricKeyPackage or an AsymmetricKeyPackage directly (without an intervening SignedData).

crypto, security

normative-requirement §2 MUST

Implementations that support EnvelopedData or EncryptedData to encapsulate with this content type MUST support an EncryptedKeyPackage that encapsulates a SignedData further encapsulating either a SymmetricKeyPackage (RFC 6031) or an AsymmetricKeyPackage (RFC 5958).

crypto, security, pkix

normative-requirement §3 MUST

There MUST be only one instance of the content-decryption-key-identifier attribute and there MUST be only one value for that attribute within a given layer.

crypto, security

normative-requirement §4 MUST

When this content type is used, the CMS SignedData (RFC 5652) validation rules MUST be used. The PKCS #7 (RFC 2315) validation rules MUST NOT be used.

crypto, security

protocol-element §3

The content-decryption-key-identifier attribute (id-aa-KP-contentDecryptKeyID) is an unprotected attribute for use with EncryptedData to identify the symmetric keying material needed for decryption when ambiguity exists. Its value is an OCTET STRING (ContentDecryptKeyID) with no imposed structure.

crypto, security

protocol-element §2

The EncryptedKeyPackage content type is a CHOICE among three CMS protecting structures: encrypted (EncryptedData), enveloped ([0] EnvelopedData), and authEnveloped ([1] AuthEnvelopedData). It is identified by OID id-ct-KP-encryptedKeyPkg and differs from the underlying protecting content types only in its OID and one tag.

crypto, security

protocol-element §2

The object identifier for the encrypted key package content type is id-ct-KP-encryptedKeyPkg, assigned in the joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) dod(2) infosec(1) formats(2) key-package-content-types(78) arc at value 2.

crypto, registry

protocol-element §3

The OID for the content-decryption-key-identifier attribute is id-aa-KP-contentDecryptKeyID, assigned at joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) dod(2) infosec(1) attributes(5) 66.

crypto, registry

registry §5

This document uses OIDs under the SMIME Working Group arc delegated by RSADSI to identify the content type (id-ct-KP-encryptedKeyPkg), the unprotected attribute (id-aa-KP-contentDecryptKeyID), and the ASN.1 module. No new IANA registries are created; the OIDs are pre-assigned in the DoD infosec arc.

registry, crypto

security-consideration §4

Implementers are strongly encouraged to apply generally accepted principles of secure key management when integrating this capability within an overall security architecture. Security considerations from RFC 5083, 5652, 5911, 5912, 5958, 6031, and (if CCC is used) RFC 6010 apply.

crypto, security

security-consideration §4

The encrypted key package content type may not provide proof of origin if the content encryption algorithm does not support authenticated key exchange. To provide proof of origin, SignedData encapsulation of the SymmetricKeyPackage or AsymmetricKeyPackage is required for the EnvelopedData and EncryptedData choices.

crypto, security

wire-format §3

ContentDecryptKeyID is encoded as an ASN.1 OCTET STRING. The attribute definition follows the ATTRIBUTE class from RFC 5912. No particular internal structure is imposed on the identifier value.

crypto