I.2 The Auth-Enveloped S/MIME type
33.3283GPPIP Multimedia Subsystem (IMS) media plane securityRelease 17TS
I.2.1 General
AuthEnvelopedData is a CMS type defined in IETF RFC 5083 [32] and is intended to be used with authenticated encryption modes, such as AES-CCM and AES-GCM. These algorithms allow arbitrary data to be both authenticated and encrypted using a single key. IMS clients compliant with this this specification shall support the authenticated encryption algorithms in Table I.2.
Table I.2: Authenticated encryption algorithms
|
Algorithm name |
Key size |
|
AES-CCM |
128, 256 |
|
AES-GCM |
128, 256 |
The content-authenticated-encryption key is generated at random and is sent alongside the protected data in the RecipientInfo field of AuthEnvelopedData. The format of this field varies depending on the key management technique. IMS clients implementing this specificiation shall support the KEKRecipientInfo type where the content-authenticated-encryption key is encrypted using a previously distributed symmetric key. Table I.3 shows the key encryption algorithms that the IMS client shall support (see RFC 3565 [33]).
Table I.3: Key encryption algorithms
|
Algorithm name |
Key size |
|
AES-WRAP |
128, 256 |
The data to protect (a MIME entity) shall be prepared as in standard S/MIME before it is passed on to CMS for encryption and authentication. The encrypted data shall be included in the EncryptedContent field and the ContentType shall be set to id-data (i.e., the plaintext is treated as arbitrary octet data by CMS).
I.2.2 Creating an Auth-Enveloped message
This Clause describes how a MIME entity is protected using the auth-envoloped S/MIME type. With the exception of the second step, the process is identical to the creation of an Enveloped-Only message in S/MIME [43].
a) The MIME entity to be protected is prepared according to Section 3.1 in S/MIME [43].
b) The MIME entity and other required data is processed into a CMS object of type AuthEnvelopedData. The key for the desired content-authenticated-encryption algorithm is generated at random and is sent encrypted in a KEKRecipientInfo. The previously distributed key encryption key is identified via a KEK identifier.
c) The AuthEnvelopedData object is wrapped in a CMS ContentInfo object.
d) The ContentInfo object is inserted into an application/pkcs7-mime MIME entity.
The smime-type parameter for auth-enveloped messages is "auth-enveloped-data". The file extension for this type of message is ".p7m". An example message is shown below.
Content-Type: application/pkcs7-mime;
smime-type=auth-enveloped-data;
name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m
***********************************************************
* Content-Type: text/plain *
* *
* All your base are belong to us. *
***********************************************************