rfc-1847

Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted

J. Galvin, S. Murphy, S. Crocker, N. Freed
date1995-10 streamIETF areasec wgpem statusPROPOSED STANDARD pages11 canonicalhttps://www.rfc-editor.org/rfc/rfc1847 doi10.17487/RFC1847
This document defines a framework within which security services may be applied to MIME body parts. [STANDARDS-TRACK] This memo defines a new Simple Mail Transfer Protocol (SMTP) [1] reply code, 521, which one may use to indicate that an Internet host does not accept incoming mail. This memo defines an Experimental Protocol for the Internet community. This memo defines an extension to the SMTP service whereby an interrupted SMTP transaction can be restarted at a later time without having to repeat all of the commands and message content sent prior to the interruption. This memo defines an Experimental Protocol for the Internet community.

Extracted elements (19)

design-rationale §2

In multipart/signed the control information is in the second body part, while in multipart/encrypted the control information is in the first body part. This asymmetry reflects that decryption requires the key/control data before the encrypted payload can be processed.

email, crypto, security

design-rationale §2.1

The 7-bit constraint for SMTP-transported signed objects exists because conversion of 8bit/binary content to 7bit would necessarily invalidate the signature. Since conversion is not viable and the only alternative is a non-delivery notification, the content must be pre-encoded to 7 bits before signing.

email, security, crypto

design-rationale §2

The framework delegates all security semantics to an external protocol document identified by the protocol parameter. This allows the framework to be extended to accommodate a variety of protocols simply by registering new protocol parameter values, without modifying this specification.

email, security, registry

design-rationale §2.1

The micalg parameter is explicitly placed on the multipart/signed Content-Type header to support one-pass processing: implementations can compute MIC values while reading the first body part and stop when the second body part boundary is found, without needing to backtrack.

email, crypto

interoperability-note §2

A MIME agent that does not recognize the value of the protocol parameter cannot process the security multipart, but may continue to process any other body parts that may be present in the enclosing message.

email, security

interoperability-note §2.2

A MIME implementation should not attempt to display the received form of the second body part of a multipart/encrypted because encryption transforms the content in a way not described by MIME headers. Implementations must wait until encryption is removed before displaying the content.

email, security

normative-requirement §2.1 MUST

If a multipart/signed object is ever to be transferred over the standard Internet SMTP infrastructure, the MIME body is constrained to 7 bits. Material requiring 8bit or binary content-transfer-encoding MUST be encoded using quoted-printable or base64.

email, security

normative-requirement §2.1 MUST

If the MIC algorithm is specified in both the micalg parameter and the control information body part and the two values disagree, it must be treated as an error.

email, crypto, security

normative-requirement §2.1 MUST

The entire contents of a multipart/signed container MUST be treated as opaque while in transit from originator to recipient. Intermediate message transfer agents must not alter the content in any way, including changing content transfer encodings.

email, security, crypto

normative-requirement §2.1 REQUIRED

The MIME headers of the body part to be signed (multipart/signed) or encrypted (multipart/encrypted) are included in the cryptographic operation to protect the integrity or confidentiality of the MIME labeling of the protected data.

email, crypto, security

normative-requirement §3 MUST

The value of the protocol parameter and the processing it requires MUST be specified in the document defining the security protocol used. That document must also precisely specify the contents of the control information body part.

email, security

protocol-element §4

A complete MIME-based security protocol specification must include a mechanism for distributing cryptographic material (e.g., public keys for digital signature). The specification suggests optionally defining two additional body part types: one to request and one to return cryptographic information.

email, crypto, security

protocol-element §2.2

multipart/encrypted is a new MIME subtype containing exactly two body parts: the first carries decryption control information (labeled per the protocol parameter), and the second carries the encrypted data always labeled application/octet-stream. Required parameters are boundary and protocol.

email, crypto, security

protocol-element §2.1

multipart/signed is a new MIME subtype containing exactly two body parts: the first is the signed data (including its MIME headers), and the second contains the control information necessary to verify the digital signature. Required parameters are boundary, protocol, and micalg.

email, crypto, security

security-consideration §2.1

The digital signature in a multipart/signed applies only to material actually within the multipart/signed object. It does not apply to any enclosing message material nor to entities referenced (e.g., via MIME message/external-body) rather than included in the signed content.

email, security, crypto

security-consideration §5

This specification enhances MIME to support signed and encrypted body parts; the entire document is framed as a security mechanism. Actual security guarantees depend entirely on the specific security protocol referenced by the protocol parameter value.

email, security, crypto

wire-format §2.2

In multipart/encrypted, the second body part containing encrypted data is always labeled application/octet-stream. The encrypted content itself is a nested MIME body part whose true Content-Type is described in the control information of the first body part, not in its own MIME headers.

email, crypto

wire-format §2.1

The micalg parameter (multipart/signed only) specifies the Message Integrity Check algorithm(s) as a comma-separated list of tokens. The comma character is explicitly excluded from valid token characters. If multiple algorithms are listed, their purpose is defined by the protocol.

email, crypto

wire-format §2.1

The protocol parameter in both multipart/signed and multipart/encrypted is encoded as: protocol = <"> type "/" subtype <">, where type/subtype matches the Content-Type of the control information body part. This parameter is required to be present.

email, security