draft-ietf-smime-3278bis-00.txt   draft-ietf-smime-3278bis-01.txt 
S/MIME WG Sean Turner, IECA S/MIME WG Sean Turner, IECA
Internet Draft Dan Brown, Certicom Internet Draft Dan Brown, Certicom
Intended Status: Informational June 3, 2008 Intended Status: Informational June 30, 2008
Obsoletes: 3278 (once approved) Obsoletes: 3278 (once approved)
Expires: December 3, 2008 Expires: December 30, 2008
Use of Elliptic Curve Cryptography (ECC) Algorithms Use of Elliptic Curve Cryptography (ECC) Algorithms
in Cryptographic Message Syntax (CMS) in Cryptographic Message Syntax (CMS)
draft-ietf-smime-3278bis-00.txt draft-ietf-smime-3278bis-01.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 35 skipping to change at page 1, line 35
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on December 3, 2008. This Internet-Draft will expire on December 30, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2008). Copyright (C) The IETF Trust (2008).
Abstract Abstract
This document describes how to use Elliptic Curve Cryptography (ECC) This document describes how to use Elliptic Curve Cryptography (ECC)
public-key algorithms in the Cryptographic Message Syntax (CMS). The public-key algorithms in the Cryptographic Message Syntax (CMS). The
ECC algorithms support the creation of digital signatures and the ECC algorithms support the creation of digital signatures and the
skipping to change at page 2, line 17 skipping to change at page 2, line 17
Discussion Discussion
This draft is being discussed on the 'ietf-smime' mailing list. To This draft is being discussed on the 'ietf-smime' mailing list. To
subscribe, send a message to ietf-smime-request@imc.org with the subscribe, send a message to ietf-smime-request@imc.org with the
single word subscribe in the body of the message. There is a Web site single word subscribe in the body of the message. There is a Web site
for the mailing list at <http://www.imc.org/ietf-smime/>. for the mailing list at <http://www.imc.org/ietf-smime/>.
Table of Contents Table of Contents
1. Introduction...................................................3 1. Introduction...................................................2
1.1. Requirements Terminology..................................3 1.1. Requirements Terminology..................................3
1.2. Changes since RFC 3278....................................3 1.2. Changes since RFC 3278....................................3
2. SignedData using ECC...........................................4 2. SignedData using ECC...........................................4
2.1. SignedData using ECDSA....................................4 2.1. SignedData using ECDSA....................................4
2.1.1. Fields of the SignedData.............................5
2.1.2. Actions of the sending agent.........................5
2.1.3. Actions of the receiving agent.......................6
3. EnvelopedData using ECC Algorithms.............................6 3. EnvelopedData using ECC Algorithms.............................6
3.1. EnvelopedData using (ephemeral-static) ECDH...............6 3.1. EnvelopedData using (ephemeral-static) ECDH...............6
3.1.1. Fields of KeyAgreeRecipientInfo......................6
3.1.2. Actions of the sending agent.........................7
3.1.3. Actions of the receiving agent.......................7
3.2. EnvelopedData using 1-Pass ECMQV..........................7 3.2. EnvelopedData using 1-Pass ECMQV..........................7
3.2.1. Fields of KeyAgreeRecipientInfo......................8 4. AuthenticatedData and AuthEnvelopedData using ECC..............9
3.2.2. Actions of the sending agent.........................8
3.2.3. Actions of the receiving agent.......................9
4. AuthenticatedData using ECC....................................9
4.1. AuthenticatedData using 1-pass ECMQV......................9 4.1. AuthenticatedData using 1-pass ECMQV......................9
4.1.1. Fields of the KeyAgreeRecipientInfo.................10 4.2. AuthEnvelopedData using 1-pass ECMQV.....................10
4.1.2. Actions of the sending agent........................10
4.1.3. Actions of the receiving agent......................10
5. Recommended Algorithms and Elliptic Curves....................10 5. Recommended Algorithms and Elliptic Curves....................10
6. Certificates using ECC........................................11 6. Certificates using ECC........................................12
7. SMIMECapabilities Attribute and ECC...........................12 7. SMIMECapabilities Attribute and ECC...........................12
8. ASN.1 Syntax..................................................14 8. ASN.1 Syntax..................................................15
8.1. Algorithm Identifiers....................................14 8.1. Algorithm Identifiers....................................15
8.2. Other Sytnax.............................................17 8.2. Other Syntax.............................................18
9. Security Considerations.......................................18 9. Security Considerations.......................................19
10. IANA Considerations..........................................22 10. IANA Considerations..........................................24
11. References...................................................22 11. References...................................................24
11.1. Normative...............................................22 11.1. Normative...............................................24
11.2. Informative.............................................23 11.2. Informative.............................................26
Annex A ASN.1 Modules............................................25 Appendix A ASN.1 Modules.........................................27
Annex A.1 1988 ASN.1 Module...................................25 Appendix A.1 1988 ASN.1 Module................................27
Annex A.2 2004 ASN.1 Module...................................25 Appendix A.2 2004 ASN.1 Module................................34
1. Introduction 1. Introduction
The Cryptographic Message Syntax (CMS) is cryptographic algorithm The Cryptographic Message Syntax (CMS) is cryptographic algorithm
independent. This specification defines a profile for the use of independent. This specification defines a profile for the use of
Elliptic Curve Cryptography (ECC) public key algorithms in the CMS. Elliptic Curve Cryptography (ECC) public key algorithms in the CMS.
The ECC algorithms are incorporated into the following CMS content The ECC algorithms are incorporated into the following CMS content
types: types:
- 'SignedData' to support ECC-based digital signature methods - 'SignedData' to support ECC-based digital signature methods
skipping to change at page 3, line 41 skipping to change at page 3, line 30
1.1. Requirements Terminology 1.1. Requirements Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [MUST]. document are to be interpreted as described in [MUST].
1.2. Changes since RFC 3278 1.2. Changes since RFC 3278
The following summarizes the changes: The following summarizes the changes:
- Paragraph 2.1 added sentence indicating SHA is used with EDSA. - Section 2.1 added sentence indicating SHA is used with EDSA.
- Paragraph 2.1.1 limited the digest algorithm to SHA-1. This - Section 2.1.1 limited the digest algorithm to SHA-1. This document
document expands the allowed algorithms to SHA-224, SHA-256, SHA- expands the allowed algorithms to SHA-224, SHA-256, SHA-384, and
384, and SHA-512. SHA-512.
- Paragraph 3.1.1 used SHA1 in the KDF with ECDH std and cofactor - Section 2.1.2 and 2.1.3 - Delete e paragraph and update ANSI X9.42
references.
- Section 3.1 - Updates reference to CMS-ALG vice CMS for DH.
- Section 3.1.1 used SHA1 in the KDF with ECDH std and cofactor
methods. This document expands the set of allowed algorithms by methods. This document expands the set of allowed algorithms by
adding SHA-224, SHA-256, SHA-384, and SHA-512. adding SHA-224, SHA-256, SHA-384, and SHA-512.
- Paragraph 3.2.1 used SHA1 in the KDF with ECMQV. This document - Section 3.2.1 used SHA1 in the KDF with ECMQV. This document
expands the set of allowed algorithms by adding SHA-224, SHA-256, expands the set of allowed algorithms by adding SHA-224, SHA-256,
SHA-384, and SHA-512. SHA-384, and SHA-512.
- Paragraph 5 is updated to include requirements for hash algorithms - Section 4.2 was added to address ECMQV use of AuthEnvelopedData.
- Section 5 is updated to include requirements for hash algorithms
and recommendations for matching curves and hash algorithms. It and recommendations for matching curves and hash algorithms. It
also was expanded to indicate which ECDH and ECMQV variants are also was expanded to indicate which ECDH and ECMQV variants, key
required. wrap algorithms, and content encryption algorithms are required
for each of the content types used in this document..
- Paragraph 7 is updated to include S/MIME capabilities for ECDSA - Section 7 is updated to include S/MIME capabilities for ECDSA with
with SHA-224, SHA-256, SHA-384, and SHA-512. It was also updated SHA-224, SHA-256, SHA-384, and SHA-512. It was also updated to
to include S/MIME capabilities for ECDH and ECMQV using SHA2 include S/MIME capabilities for ECDH and ECMQV using SHA2
algorithms as the KDF. algorithms as the KDF.
- Paragraph 8.1 listed the algorithm identifiers for SHA-1 and SHA-1 - Section 8.1 listed the algorithm identifiers for SHA-1 and SHA-1
with ECDSA. This document adds algorithm identifiers for SHA-224, with ECDSA. This document adds algorithm identifiers for SHA-224,
SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA-256, SHA- SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA-256, SHA-
384, and SHA-512 with ECDSA. This document also updates the list 384, and SHA-512 with ECDSA. This document also updates the list
of algorithm identifiers for ECDH std, ECDH cofactor, and ECMQV of algorithm identifiers for ECDH std, ECDH cofactor, and ECMQV
with SHA2 algorithms as the KDF. with SHA2 algorithms as the KDF.
- Deleted summary paragraph. - Deleted summary paragraph.
- Updated references. - Updated references.
skipping to change at page 5, line 37 skipping to change at page 5, line 34
When using ECDSA, the SignedData certificates field MAY include the When using ECDSA, the SignedData certificates field MAY include the
certificate(s) for the EC public key(s) used in the generation of the certificate(s) for the EC public key(s) used in the generation of the
ECDSA signatures in SignedData. ECC certificates are discussed in ECDSA signatures in SignedData. ECC certificates are discussed in
Section 6. Section 6.
2.1.2. Actions of the sending agent 2.1.2. Actions of the sending agent
When using ECDSA with SignedData, the sending agent uses the message When using ECDSA with SignedData, the sending agent uses the message
digest calculation process and signature generation process for digest calculation process and signature generation process for
SignedData that are specified in [CMS]. To sign data, the sending SignedData that are specified in [CMS]. To sign data, the sending
agent uses the signature method specified in [X9.62, Section 5.3] agent uses the signature method specified in [X9.62, Section 7.3].
with the following exceptions:
- In [X9.62, Section 5.3.1], the integer "e" is instead determined
by converting the message digest generated according to [CMS,
Section 5.4] to an integer using the data conversion method in
[X9.62, Section 4.3.2].
The sending agent encodes the resulting signature using the ECDSA- The sending agent encodes the resulting signature using the ECDSA-
Sig-Value syntax (see Section 8.2) and places it in the Sig-Value syntax (see Section 8.2) and places it in the
SignerInfosignature field. SignerInfosignature field.
2.1.3. Actions of the receiving agent 2.1.3. Actions of the receiving agent
When using ECDSA with SignedData, the receiving agent uses the When using ECDSA with SignedData, the receiving agent uses the
message digest calculation process and signature verification process message digest calculation process and signature verification process
for SignedData that are specified in [CMS]. To verify SignedData, for SignedData that are specified in [CMS]. To verify SignedData,
the receiving agent uses the signature verification method specified the receiving agent uses the signature verification method specified
in [X9.62, Section 5.4] with the following exceptions: in [X9.62, Section 7.3].
- In [X9.62, Section 5.4.1] the integer "e'" is instead determined
by converting the message digest generated according to [CMS,
Section 5.4] to an integer using the data conversion method in
[X9.62, Section 4.3.2].
In order to verify the signature, the receiving agent retrieves the In order to verify the signature, the receiving agent retrieves the
integers r and s from the SignerInfo signature field of the received integers r and s from the SignerInfo signature field of the received
message. message.
3. EnvelopedData using ECC Algorithms 3. EnvelopedData using ECC Algorithms
This section describes how to use ECC algorithms with the CMS This section describes how to use ECC algorithms with the CMS
EnvelopedData format. EnvelopedData format.
3.1. EnvelopedData using (ephemeral-static) ECDH 3.1. EnvelopedData using (ephemeral-static) ECDH
This section describes how to use the ephemeral-static Elliptic Curve This section describes how to use the ephemeral-static Elliptic Curve
Diffie-Hellman (ECDH) key agreement algorithm with EnvelopedData. Diffie-Hellman (ECDH) key agreement algorithm with EnvelopedData.
Ephemeral-static ECDH is specified in [SEC1] and [IEEE1363]. Ephemeral-static ECDH is specified in [SEC1] and [IEEE1363].
Ephemeral-static ECDH is the the elliptic curve analog of the Ephemeral-static ECDH is the elliptic curve analog of the
ephemeral-static Diffie-Hellman key agreement algorithm specified ephemeral-static Diffie-Hellman key agreement algorithm specified
jointly in the documents [CMS, Section 12.3.1.1] and [CMS-DH]. jointly in the documents [CMS-ALG, Section 4.1.1] and [CMS-DH].
In an implementation that uses ECDH with CMS EnvelopedData with key In an implementation that uses ECDH with CMS EnvelopedData with key
agreement, the following techniques and formats MUST be used. agreement, the following techniques and formats MUST be used.
3.1.1. Fields of KeyAgreeRecipientInfo 3.1.1. Fields of KeyAgreeRecipientInfo
When using ephemeral-static ECDH with EnvelopedData, the fields of When using ephemeral-static ECDH with EnvelopedData, the fields of
KeyAgreeRecipientInfo are as in [CMS], but with the following KeyAgreeRecipientInfo are as in [CMS], but with the following
restrictions: restrictions:
skipping to change at page 8, line 31 skipping to change at page 8, line 15
certificates. certificates.
ukm MUST be present. The ukm field MUST contain an octet string ukm MUST be present. The ukm field MUST contain an octet string
which is the DER encoding of the type MQVuserKeyingMaterial (see which is the DER encoding of the type MQVuserKeyingMaterial (see
Section 8.2). The MQVuserKeyingMaterial ephemeralPublicKey Section 8.2). The MQVuserKeyingMaterial ephemeralPublicKey
algorithm field MUST contain the id-ecPublicKey object identifier algorithm field MUST contain the id-ecPublicKey object identifier
(see Section 8.1) with NULL parameters field. The (see Section 8.1) with NULL parameters field. The
MQVuserKeyingMaterial ephemeralPublicKey publicKey field MUST MQVuserKeyingMaterial ephemeralPublicKey publicKey field MUST
contain the DER-encoding of the ASN.1 type ECPoint (see Section contain the DER-encoding of the ASN.1 type ECPoint (see Section
8.2) representing sending agent's ephemeral EC public key. The 8.2) representing the sending agent's ephemeral EC public key.
MQVuserKeyingMaterial addedukm field, if present, SHOULD contain The MQVuserKeyingMaterial addedukm field, if present, SHOULD
an octet string of additional user keying material of the sending contain an octet string of additional user keying material of the
agent. sending agent.
keyEncryptionAlgorithm MUST be the key encryption algorithm keyEncryptionAlgorithm MUST be the key encryption algorithm
identifier (see Section 8.1), with the parameters field identifier (see Section 8.1), with the parameters field
KeyWrapAlgorithm. The KeyWrapAlgorithm indicates the symmetric KeyWrapAlgorithm. The KeyWrapAlgorithm indicates the symmetric
encryption algorithm used to encrypt the CEK with the KEK encryption algorithm used to encrypt the CEK with the KEK
generated using the 1-Pass ECMQV algorithm. Algorithm generated using the 1-Pass ECMQV algorithm. Algorithm
requirements are found in paragraph 5. requirements are found in paragraph 5.
3.2.2. Actions of the sending agent 3.2.2. Actions of the sending agent
skipping to change at page 9, line 34 skipping to change at page 9, line 19
ECC-CMS-SharedInfo (see Section 8.2), and the integer "keydatalen" ECC-CMS-SharedInfo (see Section 8.2), and the integer "keydatalen"
from the key-size, in bits, of the KeyWrapAlgorithm. The receiving from the key-size, in bits, of the KeyWrapAlgorithm. The receiving
agent then retrieves the static and ephemeral EC public keys of the agent then retrieves the static and ephemeral EC public keys of the
originator, from the originator and ukm fields as described in field originator, from the originator and ukm fields as described in field
and checks that the domain parameters are the same. The receiving and checks that the domain parameters are the same. The receiving
agent then performs the key agreement operation of the Elliptic Curve agent then performs the key agreement operation of the Elliptic Curve
MQV Scheme [SEC1, Section 6.2]. As a result, the receiving agent MQV Scheme [SEC1, Section 6.2]. As a result, the receiving agent
obtains a shared secret bit string "K" which is used as the pairwise obtains a shared secret bit string "K" which is used as the pairwise
key-encryption key to unwrap the CEK. key-encryption key to unwrap the CEK.
4. AuthenticatedData using ECC 4. AuthenticatedData and AuthEnvelopedData using ECC
This section describes how to use ECC algorithms with the CMS This section describes how to use ECC algorithms with the CMS
AuthenticatedData format. AuthenticatedData lacks non-repudiation, AuthenticatedData format. AuthenticatedData lacks non-repudiation,
and so in some instances is preferable to SignedData. (For example, and so in some instances is preferable to SignedData. (For example,
the sending agent might not want the message to be authenticated when the sending agent might not want the message to be authenticated when
forwarded.) forwarded.)
This section also describes how to use ECC algorithms with the CMS
AuthEnvelopedData format [CMS-AUTHENV]. AuthEnvelopedData supports
authentication and encryption, and in some instances is preferable to
signing and than encrypting data.
4.1. AuthenticatedData using 1-pass ECMQV 4.1. AuthenticatedData using 1-pass ECMQV
This section describes how to use the 1-Pass elliptic curve MQV This section describes how to use the 1-Pass elliptic curve MQV
(ECMQV) key agreement algorithm with AuthenticatedData. ECMQV is (ECMQV) key agreement algorithm with AuthenticatedData. ECMQV is
specified in [SEC1]. An advantage of using 1-Pass ECMQV is that it specified in [SEC1]. An advantage of using 1-Pass ECMQV is that it
can be used with both EnvelopedData and AuthenticatedData. can be used with EnvelopedData, AuthenticatedData, and
AuthEnvelopedData.
4.1.1. Fields of the KeyAgreeRecipientInfo 4.1.1. Fields of the KeyAgreeRecipientInfo
The AuthenticatedData KeyAgreeRecipientInfo fields are used in the The AuthenticatedData KeyAgreeRecipientInfo fields are used in the
same manner as the fields for the corresponding EnvelopedData same manner as the fields for the corresponding EnvelopedData
KeyAgreeRecipientInfo fields of Section 3.2.1 of this document. KeyAgreeRecipientInfo fields of Section 3.2.1 of this document.
4.1.2. Actions of the sending agent 4.1.2. Actions of the sending agent
The sending agent uses the same actions as for EnvelopedData with 1- The sending agent uses the same actions as for EnvelopedData with
Pass ECMQV, as specified in Section 3.2.2 of this document. 1-Pass ECMQV, as specified in Section 3.2.2 of this document.
The ephemeral public key can be re-used with an EnvelopedData for The ephemeral public key can be re-used with an EnvelopedData for
greater efficiency. greater efficiency.
Note: if there are multiple recipients, an attack is possible where Note: if there are multiple recipients, an attack is possible where
one recipient modifies the content without other recipients noticing one recipient modifies the content without other recipients noticing
[BON]. A sending agent who is concerned with such an attack SHOULD [BON]. A sending agent who is concerned with such an attack SHOULD
use a separate AuthenticatedData for each recipient. use a separate AuthenticatedData for each recipient.
4.1.3. Actions of the receiving agent 4.1.3. Actions of the receiving agent
The receiving agent uses the same actions as for EnvelopedData with The receiving agent uses the same actions as for EnvelopedData with
1-Pass ECMQV, as specified in Section 3.2.3 of this document. 1-Pass ECMQV, as specified in Section 3.2.3 of this document.
Note: see Note in Section 4.1.2. Note: see Note in Section 4.1.2.
4.2. AuthEnvelopedData using 1-pass ECMQV
This section describes how to use the 1-Pass elliptic curve MQV
(ECMQV) key agreement algorithm with AuthEnvelopedData. ECMQV is
specified in [SEC1]. An advantage of using 1-Pass ECMQV is that it
can be used with EnvelopedData, AuthenticatedData, and
AuthEnvelopedData.
4.2.1. Fields of the KeyAgreeRecipientInfo
The AuthEnvelopedData KeyAgreeRecipientInfo fields are used in the
same manner as the fields for the corresponding EnvelopedData
KeyAgreeRecipientInfo fields of Section 3.2.1 of this document.
4.2.2. Actions of the sending agent
The sending agent uses the same actions as for EnvelopedData with 1-
Pass ECMQV, as specified in Section 3.2.2 of this document.
The ephemeral public key can be re-used with an EnvelopedData for
greater efficiency.
4.2.3. Actions of the receiving agent
The receiving agent uses the same actions as for EnvelopedData with
1-Pass ECMQV, as specified in Section 3.2.3 of this document.
5. Recommended Algorithms and Elliptic Curves 5. Recommended Algorithms and Elliptic Curves
Implementations of this specification MUST implement either Implementations of this specification MUST implement either
SignedData with ECDSA or EnvelopedData with ephemeral-static ECDH. SignedData with ECDSA or EnvelopedData with ephemeral-static ECDH.
Implementations of this specification SHOULD implement both Implementations of this specification SHOULD implement both
SignedData with ECDSA and EnvelopedData with ephemeral-static ECDH. SignedData with ECDSA and EnvelopedData with ephemeral-static ECDH.
Implementations MAY implement the other techniques specified, such as Implementations MAY implement the other techniques specified, such as
AuthenticatedData and 1-Pass ECMQV. AuthenticatedData and 1-Pass ECMQV.
Furthermore, in order to encourage interoperability, implementations Furthermore, in order to encourage interoperability, implementations
SHOULD use the elliptic curve domain parameters specified by ANSI SHOULD use the elliptic curve domain parameters specified by ANSI
[X9.62], NIST [DSS] and SECG [SEC2]. It is RECOMMENDED that the P- [X9.62], NIST [DSS] and SECG [SEC2]. It is RECOMMENDED that the
256 curve be used with SHA-256, the P-384 curve be used with SHA-384, P-256 curve be used with SHA-256, the P-384 curve be used with
and the P-521 curve be used with SHA-512. SHA-384, and the P-521 curve be used with SHA-512.
Implementations of this specification MUST implement the SHA-256 hash Implementations of this specification MUST implement the SHA-256 hash
algorithm. The SHA-1, SHA-224, SHA-384, SHA-512 hash algorithms MAY algorithm. The SHA-1, SHA-224, SHA-384, SHA-512 hash algorithms MAY
be supported. be supported.
When ECDSA, ECDH, or ECMQV is used, it is RECOMMENDED that the When ECDSA, ECDH, or ECMQV is used, it is RECOMMENDED that the
P-256 curve be used with SHA-256, the P-384 curve be used with SHA- P-256 curve be used with SHA-256, the P-384 curve be used with
384, and the P-521 curve be used with SHA-512. SHA-384, and the P-521 curve be used with SHA-512.
Implementations of this specification that support EnvelopedData with Implementations of this specification that support EnvelopedData with
ephemeral-static ECDH standard primitive MUST support the ephemeral-static ECDH standard primitive MUST support the
dhSinglePass-stdDH-sha256kdf-scheme algorithm. They MUST also support dhSinglePass-stdDH-sha256kdf-scheme algorithm. They MUST also support
the id-aes128-wrap algorithm. The dhSinglePass-stdDH-sha1kdf-scheme, the id-aes128-wrap key wrap and id-aes128-cbc content encryption
dhSinglePass-stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf- algorithms. The dhSinglePass-stdDH-sha1kdf-scheme, dhSinglePass-
scheme, and dhSinglePass-stdDH-sha512kdf-scheme algorithms MAY be stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf-scheme, and
supported. Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and id- dhSinglePass-stdDH-sha512kdf-scheme algorithms MAY be supported.
aes256wrap MAY be supported. Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap
key wrap algorithms and the id-aes192-cbc and id-aes256-cbc content
encryption algorithms MAY be supported.
Implementations of this specification that support EnvelopedData with Implementations of this specification that support EnvelopedData with
ephemeral-static ECDH cofactor primitive MUST support the ephemeral-static ECDH cofactor primitive MUST support the
dhSinglePass-cofactorDH-sha256kdf-scheme algorithm. They MUST also dhSinglePass-cofactorDH-sha256kdf-scheme algorithm. They MUST also
support the id-aes128-wrap algorithm. The dhSinglePass-cofactorDH- support the id-aes128-wrap key wrap and id-aes128-cbc content
sha1kdf-scheme, dhSinglePass-cofactorDH-sha224kdf-scheme, encryption algorithms. The dhSinglePass-cofactorDH-sha1kdf-scheme,
dhSinglePass-cofactorDH-sha384kdf-scheme, and dhSinglePass- dhSinglePass-cofactorDH-sha224kdf-scheme, dhSinglePass-cofactorDH-
cofactorDH-sha512kdf-scheme algorithms MAY be supported. Likewise, sha384kdf-scheme, and dhSinglePass-cofactorDH-sha512kdf-scheme
the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256wrap MAY be algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap, id-
supported. aes192-wrap, and id-aes256-wrap MAY be supported.
Implementations of this specification that support EnvelopedData with Implementations of this specification that support EnvelopedData with
ECMQV MUST support the mqvSinglePass-sha256kdf-scheme algorithm. They ECMQV MUST support the mqvSinglePass-sha256kdf-scheme algorithm. They
MUST also support the id-aes128-wrap algorithm. The mqvSinglePass- MUST also support the id-aes128-wrap and id-aes128-cbc algorithms.
sha1kdf-scheme, mqvSinglePass-sha224kdf-scheme, mqvSinglePass- The mqvSinglePass-sha1kdf-scheme, mqvSinglePass-sha224kdf-scheme,
sha384kdf-scheme, and mqvSinglePass-sha512kdf-scheme algorithms MAY mqvSinglePass-sha384kdf-scheme, and mqvSinglePass-sha512kdf-scheme
be supported. Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap, id-
id-aes256wrap MAY be supported. aes192-wrap, and id-aes256-wrap key wrap algorithms and the id-
aes192-cbc and id-aes256-cbc content encryption algorithms MAY be
supported.
Implementations of this specification that support AuthenticatedData Implementations of this specification that support AuthenticatedData
with ECMQV MUST support the with ECMQV MUST support the
mqvSinglePass-sha256kdf-scheme algorithm. They MUST also support the mqvSinglePass-sha256kdf-scheme algorithm. They MUST also support the
id-aes128-wrap algorithm. The mqvSinglePass-sha1kdf-scheme, id-aes128-wrap key wrap, id-aes128-cbc content encryption, and id-
mqvSinglePass-sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and hmacWithSHA256 message digest algorithms. The mqvSinglePass-sha1kdf-
mqvSinglePass-sha512kdf-scheme algorithms MAY be supported. Likewise, scheme, mqvSinglePass-sha224kdf-scheme, mqvSinglePass-sha384kdf-
the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256wrap MAY be scheme, and mqvSinglePass-sha512kdf-scheme algorithms MAY be
supported. Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and id-
aes256-wrap key wrap algorithms and the id-aes192-cbc and id-aes256-
cbc content encryption algorithms MAY be supported. The
id-hmacWithSHA1, id-hmacWithSHA224, id-hmacWithSHA384, and id-
hmacWithSHA512 MAY be supported.
Implementations of this specification that support AuthEnvelopedData
with ECMQV MUST support the
mqvSinglePass-sha256kdf-scheme algorithm. They MUST also support the
id-aes128-wrap key wrap and id-aes128-cbc content encryption
algorithm. The mqvSinglePass-sha1kdf-scheme, mqvSinglePass-sha224kdf-
scheme, mqvSinglePass-sha384kdf-scheme, and mqvSinglePass-sha512kdf-
scheme algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap,
id-aes192-wrap, and id-aes256-wrap key wrap algorithms and the id-
aes192-cbc and id-aes256-cbc content encryption algorithms MAY be
supported. supported.
6. Certificates using ECC 6. Certificates using ECC
Internet X.509 certificates [PKI] can be used in conjunction with Internet X.509 certificates [PKI] can be used in conjunction with
this specification to distribute agents' public keys. The use of ECC this specification to distribute agents' public keys. The use of ECC
algorithms and keys within X.509 certificates is specified in algorithms and keys within X.509 certificates is specified in
[PKI-ALG]. [PKI-ALG].
7. SMIMECapabilities Attribute and ECC 7. SMIMECapabilities Attribute and ECC
skipping to change at page 17, line 8 skipping to change at page 18, line 8
x9(840) x9-63(63) schemes(0) } x9(840) x9-63(63) schemes(0) }
and and
secg-scheme OBJECT IDENTIFIER ::= { secg-scheme OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) certicom(132) schemes(1) } iso(1) identified-organization(3) certicom(132) schemes(1) }
When the object identifiers are used here within an algorithm When the object identifiers are used here within an algorithm
identifier, the associated parameters field contains the CMS identifier, the associated parameters field contains the CMS
KeyWrapAlgorithm algorithm identifier. KeyWrapAlgorithm algorithm identifier.
8.2. Other Sytnax 8.2. Other Syntax
The following additional syntax is used here. The following additional syntax is used here.
When using ECDSA with SignedData, ECDSA signatures are encoded using When using ECDSA with SignedData, ECDSA signatures are encoded using
the type: the type:
ECDSA-Sig-Value ::= SEQUENCE { ECDSA-Sig-Value ::= SEQUENCE {
r INTEGER, r INTEGER,
s INTEGER } s INTEGER }
skipping to change at page 18, line 29 skipping to change at page 19, line 29
Within CMS, ECC-CMS-SharedInfo is DER-encoded and used as input to Within CMS, ECC-CMS-SharedInfo is DER-encoded and used as input to
the key derivation function, as specified in [SEC1, Section 3.6.1]. the key derivation function, as specified in [SEC1, Section 3.6.1].
Note that ECC-CMS-SharedInfo differs from the OtherInfo specified in Note that ECC-CMS-SharedInfo differs from the OtherInfo specified in
[CMS-DH]. Here, a counter value is not included in the keyInfo field [CMS-DH]. Here, a counter value is not included in the keyInfo field
because the key derivation function specified in [SEC1, Section because the key derivation function specified in [SEC1, Section
3.6.1] ensures that sufficient keying data is provided. 3.6.1] ensures that sufficient keying data is provided.
9. Security Considerations 9. Security Considerations
This specification is based on [CMS], [X9.62] and [SEC1] and the Cryptographic algorithms will be broken or weakened over time.
appropriate security considerations of those documents apply. Implementers and users need to check that the cryptographic
algorithms listed in this document continue to provide the expected
level of security. The IETF from time to time may issue documents
dealing with the current state of the art.
This specification is based on [CMS], [CMS-AUTHENV], [CMS-ALG], [CMS-
AESCG], [X9.62], and [SEC1] and the appropriate security
considerations of those documents apply.
In addition, implementors of AuthenticatedData should be aware of the In addition, implementors of AuthenticatedData should be aware of the
concerns expressed in [BON] when using AuthenticatedData to send concerns expressed in [BON] when using AuthenticatedData to send
messages to more than one recipient. Also, users of MQV should be messages to more than one recipient. Also, users of MQV should be
aware of the vulnerability in [K]. aware of the vulnerability in [K].
When implementing EnvelopedData or AuthenticatedData, there are five When implementing EnvelopedData, AuthenticatedData, and
algorithm related choices that need to be made: AuthEnvelopedData, there are five algorithm related choices that need
to be made:
1) What is the public key size? 1) What is the public key size?
2) What is the KDF? 2) What is the KDF?
3) What is the key wrap algorithm? 3) What is the key wrap algorithm?
4) What is the content encryption algorithm? 4) What is the content encryption algorithm?
5) What is the curve? 5) What is the curve?
Consideration must be given to strength of the security provided by Consideration must be given to strength of the security provided by
each of these choices. Security is measured in bits, where a strong each of these choices. Security is measured in bits, where a strong
symmetric cipher with a key of X bits is said to provide X bits of symmetric cipher with a key of X bits is said to provide X bits of
skipping to change at page 20, line 4 skipping to change at page 22, line 4
---------+----------+------------+----------+-------------+--------- ---------+----------+------------+----------+-------------+---------
192 | 384-511 | SHA224 | AES-192 | AES-192 CBC | secp384r1 192 | 384-511 | SHA224 | AES-192 | AES-192 CBC | secp384r1
| | SHA256 | AES-256 | AES-256 CBC | sect409k1 | | SHA256 | AES-256 | AES-256 CBC | sect409k1
| | SHA384 | | | sect409r1 | | SHA384 | | | sect409r1
| | SHA512 | | | | | SHA512 | | |
---------+----------+------------+----------+-------------+--------- ---------+----------+------------+----------+-------------+---------
256 | 512+ | SHA256 | AES-256 | AES-256 CBC | secp521r1 256 | 512+ | SHA256 | AES-256 | AES-256 CBC | secp521r1
| | SHA384 | | | sect571k1 | | SHA384 | | | sect571k1
| | SHA512 | | | sect571r1 | | SHA512 | | | sect571r1
---------+----------+------------+----------+-------------+--------- ---------+----------+------------+----------+-------------+---------
To promote interoperability, the following choices are REOMMENDED: To promote interoperability, the following choices are RECOMMENDED:
Minimum | ECDH or | Key | Key | Content | Curve Minimum | ECDH or | Key | Key | Content | Curve
Bits of | ECQMV | Derivation | Wrap | Encryption | Bits of | ECQMV | Derivation | Wrap | Encryption |
Security | Key Size | Function | Alg. | Alg. | Security | Key Size | Function | Alg. | Alg. |
---------+----------+------------+----------+-------------+---------- ---------+----------+------------+----------+-------------+----------
80 | 192 | SHA256 | 3DES | 3DES CBC | secp192r1 80 | 192 | SHA256 | 3DES | 3DES CBC | secp192r1
---------+----------+------------+----------+-------------+---------- ---------+----------+------------+----------+-------------+----------
112 | 224 | SHA256 | 3DES | 3DES CBC | secp224r1 112 | 224 | SHA256 | 3DES | 3DES CBC | secp224r1
---------+----------+------------+----------+-------------+---------- ---------+----------+------------+----------+-------------+----------
128 | 256 | SHA256 | AES-128 | AES-128 CBC | secp256r1 128 | 256 | SHA256 | AES-128 | AES-128 CBC | secp256r1
skipping to change at page 22, line 13 skipping to change at page 24, line 13
---------+----------+-----------+----------- ---------+----------+-----------+-----------
10. IANA Considerations 10. IANA Considerations
None. None.
11. References 11. References
11.1. Normative 11.1. Normative
[CMS] Housley, R., "Cryptographic Message Syntax", RFC 3852, [CMS] Housley, R., "Cryptographic Message Syntax", RFC
July. 3852, July 2004.
[CMS-AES] Schaad, J., "Use of the Advanced Encryption Standard [CMS-AES] Schaad, J., "Use of the Advanced Encryption Standard
(AES) Encryption Algorithm in Cryptographic Message (AES) Encryption Algorithm in Cryptographic Message
Syntax (CMS)", RFC 3565, July 2003. Syntax (CMS)", RFC 3565, July 2003.
[CMS-AESCG] Housley, R., "Using AES-CCM and AES-GCM Authenticated [CMS-AESCG] Housley, R., "Using AES-CCM and AES-GCM Authenticated
Encryption in the Cryptographic Message Syntax (CMS)", Encryption in the Cryptographic Message Syntax
RFC 5084, November 2007. (CMS)", RFC 5084, November 2007.
[CMS-ALG] Housley, R., "Cryptographic Message Syntax (CMS) [CMS-ALG] Housley, R., "Cryptographic Message Syntax (CMS)
Algorithms", RFC 3370, August 2002. Algorithms", RFC 3370, August 2002.
[CMS-AUTHENV] Housley, R. "Cryptographic Message Syntax (CMS)
Authenticated-Enveloped-Data Content Type", RFC 5083,
November 2007.
[CMS-DH] Rescorla, E., "Diffie-Hellman Key Agreement Method", [CMS-DH] Rescorla, E., "Diffie-Hellman Key Agreement Method",
RFC 2631, June 1999. RFC 2631, June 1999.
[IEEE1363] IEEE P1363, "Standard Specifications for Public Key [IEEE1363] IEEE P1363, "Standard Specifications for Public Key
Cryptography", Institute of Electrical and Electronics Cryptography", Institute of Electrical and
Engineers, 2000. Electronics Engineers, 2000.
[DSS] FIPS 186-2, "Digital Signature Standard", National [DSS] FIPS 186-2, "Digital Signature Standard", National
Institute of Standards and Technology, January 2000. Institute of Standards and Technology, January 2000.
[HMAC-SHA] Nystrom, M., "Identifiers and Test Vectors for HMAC-
SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-
512", RFC 4231, December 2005.
[MUST] Bradner, S., "Key Words for Use in RFCs to Indicate [MUST] Bradner, S., "Key Words for Use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[MSG] Ramsdell, B., and S. Turner, "S/MIME Version 3.2 [MSG] Ramsdell, B., and S. Turner, "S/MIME Version 3.2
Message Specification", work-in-progress. Message Specification", work-in-progress.
[PKI] Cooper, D., Santesson, S., Farrell, S., Boeyen, S. [PKI] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.
Housley, R., and W. Polk, "Internet X.509 Public Key Housley, R., and W. Polk, "Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation Infrastructure Certificate and Certificate Revocation
List (CRL) Profile", RFC 5280, May 2008. List (CRL) Profile", RFC 5280, May 2008.
skipping to change at page 23, line 13 skipping to change at page 25, line 22
Information", work-in-progress. Information", work-in-progress.
[SEC1] SECG, "Elliptic Curve Cryptography", Standards for [SEC1] SECG, "Elliptic Curve Cryptography", Standards for
Efficient Cryptography Group, 2000. Available from Efficient Cryptography Group, 2000. Available from
www.secg.org/collateral/sec1.pdf. www.secg.org/collateral/sec1.pdf.
[SEC2] SECG, "Recommended Elliptic Curve Domain Parameters", [SEC2] SECG, "Recommended Elliptic Curve Domain Parameters",
Standards for Efficient Cryptography Group, 2000. Standards for Efficient Cryptography Group, 2000.
Available from www.secg.org/collateral/sec2.pdf. Available from www.secg.org/collateral/sec2.pdf.
[SHS] National Institute of Standards and Technology (NIST), [SHS] National Institute of Standards and Technology
FIPS Publication 180-2: Secure Hash Standard, August (NIST), FIPS Publication 180-2: Secure Hash Standard,
2002. August 2002.
[SMIME-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic [SMIME-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic
Message Syntax", work-in-progress. Message Syntax", work-in-progress.
[X9.62] ANSI X9.62-2005, "Public Key Cryptography For The [X9.62] ANSI X9.62-2005, "Public Key Cryptography For The
Financial Services Industry: The Elliptic Curve Digital Financial Services Industry: The Elliptic Curve
Signature Algorithm (ECDSA)", American National Digital Signature Algorithm (ECDSA)", American
Standards Institute, 2005. National Standards Institute, 2005.
[X.208] CCITT Recommendation X.208: Specification of Abstract [X.208] ITU-T Recommendation X.208 (1998) | ISO/IEC 8824-
Syntax Notation One (ASN.1), 1988. 1:1998. Specification of Abstract Syntax Notation One
(ASN.1).
[X.680] ITU-T Recommendation X.680: Information Technology - [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-
Abstract Syntax Notation One, 1997. 1 :2002. Information Technology - Abstract Syntax
Notation One.
[X.681] ITU-T Recommendation X.680: Information Technology - [X.681] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-
Abstract Syntax Notation One: Information Object 2 :2002. Information Technology - Abstract Syntax
Specification, 1997. Notation One: Information Object Specification.
[X.682] ITU-T Recommendation X.682: Information Technology - [X.682] ITU-T Recommendation X.682 (2002) | ISO/IEC 8824-
Abstract Syntax Notation One: Constraint Specification, 3 :2002. Information Technology - Abstract Syntax
2002. Notation One: Constraint Specification.
[X.683] ITU-T Recommendation X.683: Information Technology - [X.683] ITU-T Recommendation X.683 (2002) | ISO/IEC 8824-
Abstract Syntax Notation One: Parameterization of ASN.1 4:2002. Information Technology - Abstract Syntax
Notation One: Parameterization of ASN.1
Specifications, 2002. Specifications, 2002.
11.2. Informative 11.2. Informative
[BON] D. Boneh, "The Security of Multicast MAC", Presentation [BON] D. Boneh, "The Security of Multicast MAC",
at Selected Areas of Cryptography 2000, Center for Presentation at Selected Areas of Cryptography 2000,
Applied Cryptographic Research, University of Waterloo, Center for Applied Cryptographic Research, University
2000. Paper version available from of Waterloo, 2000. Paper version available from
http://crypto.stanford.edu/~dabo/papers/mmac.ps http://crypto.stanford.edu/~dabo/papers/mmac.ps
[CMS-KEA] Pawling, J., "CMS KEA and SKIPJACK Conventions", RFC [CMS-KEA] Pawling, J., "CMS KEA and SKIPJACK Conventions", RFC
2876, July 2000. 2876, July 2000.
[K] B. Kaliski, "MQV Vulnerability", Posting to ANSI X9F1 [K] B. Kaliski, "MQV Vulnerability", Posting to ANSI X9F1
and IEEE P1363 newsgroups, 1998. and IEEE P1363 newsgroups, 1998.
Annex A ASN.1 Modules [NISTSP800-57] National Institute of Standards and Technology
(NIST), Special Publication 800-57: Recommendation
for Key Management, August 2005.
Appendix A ASN.1 Modules
Appendix A.1 provides the normative ASN.1 definitions for the Appendix A.1 provides the normative ASN.1 definitions for the
structures described in this specification using ASN.1 as defined in structures described in this specification using ASN.1 as defined in
[X.208]. [X.208].
Appendix A.2 provides an informative ASN.1 definitions for the Appendix A.2 provides an informative ASN.1 definitions for the
structures described in this specification using ASN.1 as defined in structures described in this specification using ASN.1 as defined in
[X.680], [X.681], [X.682], [X.683]. This appendix contains the same [X.680], [X.681], [X.682], [X.683]. This appendix contains the same
information as Appendix A.1 in a more recent (and precise) ASN.1 information as Appendix A.1 in a more recent (and precise) ASN.1
notation, however Appendix A.1 takes precedence in case of conflict. notation, however Appendix A.1 takes precedence in case of conflict.
Annex A.1 1988 ASN.1 Module Appendix A.1 1988 ASN.1 Module
Annex A.2 2004 ASN.1 Module SMIMEECCAlgs-1988
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) TBD }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL
IMPORTS
-- From [PKI]
AlgorithmIdentifier
FROM PKIX1Explicit88
{ iso(1) identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7) mod(0)
pkix1-explicit(18) }
-- From [CMS-AES]
id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV,
id-aes128-wrap, id-aes192-wrap, id-aes1256-wrap
FROM CMSAesRsaesOaep
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) id-mod-cms-aes(19) }
-- From [CMS-AESCG]
id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters
id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters
FROM CMS-AES-CCM-and-AES-GCM
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) id-mod-cms-aes(32) }
-- From [CMS]
OriginatorPublicKey, UserKeyingMaterial
FROM CryptographicMessageSyntax2004
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) cms-2004(24) }
-- From [CMS-ALG]
hMAC-SHA1, id-alg-CMS3DESwrap, CBCParameter
FROM CryptographicMessageSyntaxAlgorithms
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) cmsalg-2001(16) }
-- From [PKI-ALG]
id-ecPublicKey, ecdsa-with-SHA1
FROM PKIXAlgs-1988
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) TBD }
;
--
-- ECDSA with SHA-2 Algorithms
--
-- Parameters are NULL
-- ecdsa-with-SHA1 Parameters are NULL
ecdsa-with-SHA224 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 1 }
ecdsa-with-SHA256 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840)ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 2 }
ecdsa-with-SHA384 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 3 }
ecdsa-with-SHA512 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 4 }
-- ECDSA Signature Value
-- Contents of SignatureValue OCTET STRING
ECDSA-Sig-Value ::= SEQUENCE {
r INTEGER,
s INTEGER
}
--
-- Key Agreement Algorithms
--
x9-63-scheme OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) tc68(133) country(16) x9(840)
x9-63(63) schemes(0) }
secg-scheme OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) certicom(132) schemes(1) }
--
-- Diffie-Hellman Single Pass, Standard, with KDFs
--
-- Parameters are always present and indicate the Key Wrap Algorithm
dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 2 }
dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 0 }
dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 1 }
dhSinglePass-stdDH-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 2 }
dhSinglePass-stdDH-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 3 }
--
-- Diffie-Hellman Single Pass, Cofactor, with KDFs
--
dhSinglePass-cofactorDH-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 3 }
dhSinglePass-cofactorDH-sha224kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 0 }
dhSinglePass-cofactorDH-sha256kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 1 }
dhSinglePass-cofactorDH-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 2 }
dhSinglePass-cofactorDH-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 3 }
--
-- MQV Single Pass, Cofactor, with KDFs
--
mqvSinglePass-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 16 }
mqvSinglePass-sha224kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 0 }
mqvSinglePass-sha256kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 1 }
mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 2 }
mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 3 }
--
-- Key Wrap Algorithms
--
-- id-alg-CMS3DESwrap Parameters are NULL
-- id-aes128-wrap Parameters are ABSENT
-- id-aes192-wrap Parameters are ABSENT
-- id-aes256-wrap Parameters are ABSENT
--
-- Content Encryption Algorithms
--
-- des-ede3-cbc Parameters are CBCParameter
-- id-aes128-CBC Parameters are AES-IV
-- id-aes192-CBC Parameters are AES-IV
-- id-aes256-CBC Parameters are AES-IV
-- id-aes128-CCM Parameters are CCMParameters
-- id-aes192-CCM Parameters are CCMParameters
-- id-aes256-CCM Parameters are CCMParameters
-- id-aes128-GCM Parameters are GCMParameters
-- id-aes192-GCM Parameters are GCMParameters
-- id-aes256-GCM Parameters are GCMParameters
--
-- Message Digest Algorithms
--
-- Parameters are NULL
-- HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384,
-- HMAC with SHA-512 are specified in [HMAC-SHA]
-- hMACWithSHA1
id-hmacWithSHA224 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 8 }
id-hmacWithSHA256 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 9 }
id-hmacWithSHA384 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 10 }
id-hmacWithSHA512 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 11 }
--
-- Originator Public Key Algorithms
--
-- id-ecPublicKey Parameters are NULL
-- Format for both ephemeral and static public keys
ECPoint ::= OCTET STRING
-- Format of KeyAgreeRecipientInfo ukm field when used with
-- ECMQV
MQVuserKeyingMaterial ::= SEQUENCE {
ephemeralPublicKey OriginatorPublicKey,
addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL
}
-- Format for ECDH and ECMQV key-encryption keys when using
-- EnvelopedData or AuthenticatedData
ECC-CMS-SharedInfo ::= SEQUENCE {
keyInfo AlgorithmIdentifier,
entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL,
suppPubInfo [2] EXPLICIT OCTET STRING
}
--
-- S/MIME Capabilities
--
--
-- S/MIME Capabilities: ECDSA with SHA2 Algorithms
--
-- ecdsa-with-SHA1 Type NULL
-- ecdsa-with-SHA224 Type NULL
-- ecdsa-with-SHA256 Type NULL
-- ecdsa-with-SHA384 Type NULL
-- ecdsa-with-SHA512 Type NULL
--
-- S/MIME Capabilities: ECDH, Single Pass, Standard
--
-- dhSinglePass-stdDH-sha1kdf Type is the Key Wrap Algorithm
-- dhSinglePass-stdDH-sha224kdf Type is the Key Wrap Algorithm
-- dhSinglePass-stdDH-sha256kdf Type is the Key Wrap Algorithm
-- dhSinglePass-stdDH-sha384kdf Type is the Key Wrap Algorithm
-- dhSinglePass-stdDH-sha512kdf Type is the Key Wrap Algorithm
--
-- S/MIME Capabilities: ECDH, Single Pass, Cofactor
--
-- dhSinglePass-cofactorDH-sha1kdf Type is the Key Wrap Algorithm
-- dhSinglePass-cofactorDH-sha224kdf Type is the Key Wrap Algorithm
-- dhSinglePass-cofactorDH-sha256kdf Type is the Key Wrap Algorithm
-- dhSinglePass-cofactorDH-sha384kdf Type is the Key Wrap Algorithm
-- dhSinglePass-cofactorDH-sha512kdf Type is the Key Wrap Algorithm
--
-- S/MIME Capabilities: ECMQV, Single Pass, Standard
--
-- mqvSinglePass-sha1kdf Type is the Key Wrap Algorithm
-- mqvSinglePass-sha224kdf Type is the Key Wrap Algorithm
-- mqvSinglePass-sha256kdf Type is the Key Wrap Algorithm
-- mqvSinglePass-sha384kdf Type is the Key Wrap Algorithm
-- mqvSinglePass-sha512kdf Type is the Key Wrap Algorithm
END
Appendix A.2 2004 ASN.1 Module
SMIMEECCAlgs-2008 SMIMEECCAlgs-2008
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) TBD } smime(16) modules(0) TBD }
DEFINITIONS EXPLICIT TAGS ::= DEFINITIONS EXPLICIT TAGS ::=
BEGIN BEGIN
-- EXPORTS ALL -- EXPORTS ALL
skipping to change at page 25, line 45 skipping to change at page 34, line 31
ALGORITHM, algorithmIdentifier, MessageDigestAlgorithms, ALGORITHM, algorithmIdentifier, MessageDigestAlgorithms,
SignatureAlgorithms SignatureAlgorithms
ow-sha1, ow-sha224, ow-sha256, ow-sha384, ow-sha512, ow-sha1, ow-sha224, ow-sha256, ow-sha384, ow-sha512,
sa-ecdsaWithSHA1 sa-ecdsaWithSHA1
FROM PKIXAlgs-2008 FROM PKIXAlgs-2008
{ iso(1) identified-organization(3) dod(6) internet(1) { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) TBD } security(5) mechanisms(5) pkix(7) id-mod(0) TBD }
-- From [CMS-AES] -- From [CMS-AES]
id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV,
id-aes128-wrap, id-aes192-wrap, id-aes1256-wrap id-aes128-wrap, id-aes192-wrap, id-aes1256-wrap
FROM CMSAesRsaesOaep FROM CMSAesRsaesOaep
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) id-mod-cms-aes(19) } smime(16) modules(0) id-mod-cms-aes(19) }
-- From [CMS-AESCG] -- From [CMS-AESCG]
id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters,
id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters
FROM CMS-AES-CCM-and-AES-GCM FROM CMS-AES-CCM-and-AES-GCM
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) id-mod-cms-aes(32) } smime(16) modules(0) id-mod-cms-aes(32) }
-- From [CMS] -- From [CMS]
OriginatorPublicKey, UserKeyingMaterial OriginatorPublicKey, UserKeyingMaterial
FROM CryptographicMessageSyntax2004 FROM CryptographicMessageSyntax2004
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
skipping to change at page 27, line 4 skipping to change at page 35, line 36
-- Constrains the SignedData SignerInfo signatureAlgorithm field -- Constrains the SignedData SignerInfo signatureAlgorithm field
SignatureAlgorithms ALGORITHM ::= { SignatureAlgorithms ALGORITHM ::= {
sa-ecdsaWithSHA1 | sa-ecdsaWithSHA1 |
sa-ecdsaWithSHA224 | sa-ecdsaWithSHA224 |
sa-ecdsaWithSHA256 | sa-ecdsaWithSHA256 |
sa-ecdsaWithSHA384 | sa-ecdsaWithSHA384 |
sa-ecdsaWithSHA512 , sa-ecdsaWithSHA512 ,
... -- Extensible ... -- Extensible
} }
--
-- ECDSA with SHA-2 Algorithms
--
-- Parameters are NULL
-- sa-ecdsa-withSHA1
sa-ecdsa-with-SHA224 ALGORITHM ::= { sa-ecdsa-with-SHA224 ALGORITHM ::= {
OID ecdsa-with-SHA224 PARMS NULL } OID ecdsa-with-SHA224 PARMS NULL }
ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { ecdsa-with-SHA224 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 1 } ecdsa-with-SHA2(3) 1 }
sa-ecdsa-with-SHA256 ALGORITHM ::= { sa-ecdsa-with-SHA256 ALGORITHM ::= {
OID ecdsa-with-SHA256 PARMS NULL } OID ecdsa-with-SHA256 PARMS NULL }
ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { ecdsa-with-SHA256 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840)ansi-X9-62(10045) signatures(4) iso(1) member-body(2) us(840)ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 2 } ecdsa-with-SHA2(3) 2 }
sa-ecdsa-with-SHA384 ALGORITHM ::= { sa-ecdsa-with-SHA384 ALGORITHM ::= {
OID ecdsa-with-SHA384 PARMS NULL } OID ecdsa-with-SHA384 PARMS NULL }
skipping to change at page 28, line 4 skipping to change at page 37, line 4
iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
ecdsa-with-SHA2(3) 4 } ecdsa-with-SHA2(3) 4 }
-- ECDSA Signature Value -- ECDSA Signature Value
-- Contents of SignatureValue OCTET STRING -- Contents of SignatureValue OCTET STRING
ECDSA-Sig-Value ::= SEQUENCE { ECDSA-Sig-Value ::= SEQUENCE {
r INTEGER, r INTEGER,
s INTEGER s INTEGER
} }
--
-- Key Agreement Algorithms
--
-- Constrains the EnvelopedData RecipientInfo KeyAgreeRecipientInfo -- Constrains the EnvelopedData RecipientInfo KeyAgreeRecipientInfo
-- keyEncryption Algorithm field -- keyEncryption Algorithm field
-- Constrains the AuthenticatedData RecipientInfo -- Constrains the AuthenticatedData RecipientInfo
-- KeyAgreeRecipientInfo keyEncryption Algorithm field -- KeyAgreeRecipientInfo keyEncryption Algorithm field
-- Constrains the AuthEnvelopedData RecipientInfo -- Constrains the AuthEnvelopedData RecipientInfo
-- KeyAgreeRecipientInfo keyEncryption Algorithm field -- KeyAgreeRecipientInfo keyEncryption Algorithm field
-- DH variants are not used with AuthenticatedData or -- DH variants are not used with AuthenticatedData or
-- AuthEnvelopedData -- AuthEnvelopedData
skipping to change at page 28, line 39 skipping to change at page 38, line 4
kaa-mqvSinglePass-sha512kdf, kaa-mqvSinglePass-sha512kdf,
... -- Extensible ... -- Extensible
} }
x9-63-scheme OBJECT IDENTIFIER ::= { x9-63-scheme OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) tc68(133) country(16) x9(840) iso(1) identified-organization(3) tc68(133) country(16) x9(840)
x9-63(63) schemes(0) } x9-63(63) schemes(0) }
secg-scheme OBJECT IDENTIFIER ::= { secg-scheme OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) certicom(132) schemes(1) } iso(1) identified-organization(3) certicom(132) schemes(1) }
--
-- Diffie-Hellman Single Pass, Standard, with KDFs
--
-- Parameters are always present and indicate the Key Wrap Algorithm
kaa-dhSinglePass-stdDH-sha1kdf ALGORITHM ::= { kaa-dhSinglePass-stdDH-sha1kdf ALGORITHM ::= {
OID dhSinglePass-stdDH-sha1kdf-scheme PARMS KeyWrapAlgorithms } OID dhSinglePass-stdDH-sha1kdf-scheme PARMS KeyWrapAlgorithms }
dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 2 } x9-63-scheme 2 }
kaa-dhSinglePass-stdDH-sha224kdf ALGORITHM ::= { kaa-dhSinglePass-stdDH-sha224kdf ALGORITHM ::= {
OID dhSinglePass-stdDH-sha224kdf-scheme PARMS KeyWrapAlgorithms } OID dhSinglePass-stdDH-sha224kdf-scheme PARMS KeyWrapAlgorithms }
skipping to change at page 29, line 22 skipping to change at page 38, line 40
dhSinglePass-stdDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-stdDH-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 2 } secg-scheme 11 2 }
kaa-dhSinglePass-stdDH-sha512kdf ALGORITHM ::= { kaa-dhSinglePass-stdDH-sha512kdf ALGORITHM ::= {
OID dhSinglePass-stdDH-sha512kdf-scheme PARMS KeyWrapAlgorithms } OID dhSinglePass-stdDH-sha512kdf-scheme PARMS KeyWrapAlgorithms }
dhSinglePass-stdDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-stdDH-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 11 3 } secg-scheme 11 3 }
--
-- Diffie-Hellman Single Pass, Cofactor, with KDFs
--
kaa-dhSinglePass-cofactorDH-sha1kdf ALGORITHM ::= { kaa-dhSinglePass-cofactorDH-sha1kdf ALGORITHM ::= {
OID dhSinglePass-cofactorDH-sha1kdf-scheme PARMS KeyWrapAlgorithms } OID dhSinglePass-cofactorDH-sha1kdf-scheme PARMS KeyWrapAlgorithms }
dhSinglePass-cofactorDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-cofactorDH-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 3 } x9-63-scheme 3 }
kaa-dhSinglePass-cofactorDH-sha224kdf ALGORITHM ::= { kaa-dhSinglePass-cofactorDH-sha224kdf ALGORITHM ::= {
OID dhSinglePass-cofactorDH-sha224kdf-scheme OID dhSinglePass-cofactorDH-sha224kdf-scheme
PARMS KeyWrapAlgorithms } PARMS KeyWrapAlgorithms }
dhSinglePass-cofactorDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-cofactorDH-sha224kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 0 } secg-scheme 14 0 }
kaa-dhSinglePass-cofactorDH-sha256kdf ALGORITHM ::= { kaa-dhSinglePass-cofactorDH-sha256kdf ALGORITHM ::= {
OID dhSinglePass-cofactorDH-sha256kdf-scheme OID dhSinglePass-cofactorDH-sha256kdf-scheme
PARMS KeyWrapAlgorithms } PARMS KeyWrapAlgorithms }
skipping to change at page 30, line 4 skipping to change at page 39, line 24
dhSinglePass-cofactorDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-cofactorDH-sha256kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 1 } secg-scheme 14 1 }
kaa-dhSinglePass-cofactorDH-sha384kdf ALGORITHM ::= { kaa-dhSinglePass-cofactorDH-sha384kdf ALGORITHM ::= {
OID dhSinglePass-cofactorDH-sha384kdf-scheme OID dhSinglePass-cofactorDH-sha384kdf-scheme
PARMS KeyWrapAlgorithms } PARMS KeyWrapAlgorithms }
dhSinglePass-cofactorDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-cofactorDH-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 2 } secg-scheme 14 2 }
kaa-dhSinglePass-cofactorDH-sha512kdf ALGORITHM ::= { kaa-dhSinglePass-cofactorDH-sha512kdf ALGORITHM ::= {
OID dhSinglePass-cofactorDH-sha512kdf-scheme OID dhSinglePass-cofactorDH-sha512kdf-scheme
PARMS KeyWrapAlgorithms } PARMS KeyWrapAlgorithms }
dhSinglePass-cofactorDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { dhSinglePass-cofactorDH-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 14 3 } secg-scheme 14 3 }
--
-- MQV Single Pass, Cofactor, with KDFs
--
kaa-mqvSinglePass-sha1kdf ALGORITHM ::= { kaa-mqvSinglePass-sha1kdf ALGORITHM ::= {
OID mqvSinglePass-sha1kdf-scheme PARMS KeyWrapAlgorithms } OID mqvSinglePass-sha1kdf-scheme PARMS KeyWrapAlgorithms }
mqvSinglePass-sha1kdf-scheme OBJECT IDENTIFIER ::= { mqvSinglePass-sha1kdf-scheme OBJECT IDENTIFIER ::= {
x9-63-scheme 16 } x9-63-scheme 16 }
kaa-mqvSinglePass-sha224kdf ALGORITHM ::= { kaa-mqvSinglePass-sha224kdf ALGORITHM ::= {
OID mqvSinglePass-sha224kdf-scheme PARMS KeyWrapAlgorithms } OID mqvSinglePass-sha224kdf-scheme PARMS KeyWrapAlgorithms }
mqvSinglePass-sha224kdf-scheme OBJECT IDENTIFIER ::= { mqvSinglePass-sha224kdf-scheme OBJECT IDENTIFIER ::= {
skipping to change at page 30, line 41 skipping to change at page 40, line 19
mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= { mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 2 } secg-scheme 15 2 }
kaa-mqvSinglePass-sha512kdf ALGORITHM ::= { kaa-mqvSinglePass-sha512kdf ALGORITHM ::= {
OID mqvSinglePass-sha512kdf-scheme PARMS KeyWrapAlgorithms } OID mqvSinglePass-sha512kdf-scheme PARMS KeyWrapAlgorithms }
mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= { mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= {
secg-scheme 15 3 } secg-scheme 15 3 }
--
-- Key Wrap Algorithms
--
KeyWrapAlgorithms ALGORITHM ::= { KeyWrapAlgorithms ALGORITHM ::= {
kwa-3des | kwa-3des |
kwa-aes128 | kwa-aes128 |
kwa-aes192 | kwa-aes192 |
kwa-aes256, kwa-aes256,
... -- Extensible ... -- Extensible
} }
kwa-3des ALGORITHM :: = { kwa-3des ALGORITHM :: = {
OID id-alg-CMS3DESwrap PARMS NULL } OID id-alg-CMS3DESwrap PARMS NULL }
skipping to change at page 31, line 4 skipping to change at page 40, line 33
KeyWrapAlgorithms ALGORITHM ::= { KeyWrapAlgorithms ALGORITHM ::= {
kwa-3des | kwa-3des |
kwa-aes128 | kwa-aes128 |
kwa-aes192 | kwa-aes192 |
kwa-aes256, kwa-aes256,
... -- Extensible ... -- Extensible
} }
kwa-3des ALGORITHM :: = { kwa-3des ALGORITHM :: = {
OID id-alg-CMS3DESwrap PARMS NULL } OID id-alg-CMS3DESwrap PARMS NULL }
kwa-aes128 ALGORITHM ::= { kwa-aes128 ALGORITHM ::= {
OID id-aes128-wrap PARMS ABSENT } OID id-aes128-wrap PARMS ABSENT }
kwa-aes192 ALGORITHM ::= { kwa-aes192 ALGORITHM ::= {
OID id-aes192-wrap PARMS ABSENT } OID id-aes192-wrap PARMS ABSENT }
kwa-aes256 ALGORITHM ::= { kwa-aes256 ALGORITHM ::= {
OID id-aes256-wrap PARMS ABSENT } OID id-aes256-wrap PARMS ABSENT }
--
-- Content Encryption Algorithms
--
-- Constrains the EnvelopedData EncryptedContentInfo encryptedContent -- Constrains the EnvelopedData EncryptedContentInfo encryptedContent
-- field -- field and the AuthEnvelopedData EncryptedContentInfo
-- contentEncryptionAlgorithm field
ContentEncryptionAlgorithms ALGORITHM ::= { ContentEncryptionAlgorithms ALGORITHM ::= {
cea-des-ede3-cbc | cea-des-ede3-cbc |
cea-aes128-cbc | cea-aes128-cbc |
cea-aes192-cbc | cea-aes192-cbc |
cea-aes256-cbc | cea-aes256-cbc |
cea-aes128-ccm | cea-aes128-ccm |
cea-aes192-ccm | cea-aes192-ccm |
cea-aes256-ccm | cea-aes256-ccm |
cea-aes128-gcm | cea-aes128-gcm |
cea-aes192-gcm | cea-aes192-gcm |
cea-aes256-gcm, cea-aes256-gcm,
... -- Extensible ... -- Extensible
} }
-- des-ede3-cbc and aes*-cbc are used with EnvelopedData and
-- EncryptedData
cea-des-ede3-cbc ALGORITHM ::= { cea-des-ede3-cbc ALGORITHM ::= {
OID des-ede3-cbc PARMS CBCParameter } OID des-ede3-cbc PARMS CBCParameter }
cea-aes128-cbc ALGORITHM ::= { cea-aes128-cbc ALGORITHM ::= {
OID id-aes128-CBC PARMS AES-IV } OID id-aes128-CBC PARMS AES-IV }
cea-aes192-cbc ALGORITHM ::= { cea-aes192-cbc ALGORITHM ::= {
OID id-aes192-CBC PARMS AES-IV } OID id-aes192-CBC PARMS AES-IV }
cea-aes256-cbc ALGORITHM ::= { cea-aes256-cbc ALGORITHM ::= {
OID id-aes256-CBC PARMS AES-IV } OID id-aes256-CBC PARMS AES-IV }
-- aes*-ccm are used with AuthEnvelopedData
cea-aes128-ccm ALGORITHM ::= { cea-aes128-ccm ALGORITHM ::= {
OID id-aes128-CCM PARMS CCMParameters } OID id-aes128-CCM PARMS CCMParameters }
cea-aes192-ccm ALGORITHM ::= { cea-aes192-ccm ALGORITHM ::= {
OID id-aes192-CCM PARMS CCMParameters } OID id-aes192-CCM PARMS CCMParameters }
cea-aes256-ccm ALGORITHM ::= { cea-aes256-ccm ALGORITHM ::= {
OID id-aes256-CCM PARMS CCMParameters } OID id-aes256-CCM PARMS CCMParameters }
-- aes*-gcm are used with AuthEnvelopedData
cea-aes128-gcm ALGORITHM ::= { cea-aes128-gcm ALGORITHM ::= {
OID id-aes128-GCM PARMS GCMParameters } OID id-aes128-GCM PARMS GCMParameters }
cea-aes192-gcm ALGORITHM ::= { cea-aes192-gcm ALGORITHM ::= {
OID id-aes192-GCM PARMS GCMParameters } OID id-aes192-GCM PARMS GCMParameters }
cea-aes256-gcm ALGORITHM ::= { cea-aes256-gcm ALGORITHM ::= {
OID id-aes256-GCM PARMS GCMParameters } OID id-aes256-GCM PARMS GCMParameters }
--
-- Message Digest Algorithms
--
-- HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384,
-- HMAC with SHA-512 are specified in [HMAC-SHA]
-- Constrains the AuthenticatedData -- Constrains the AuthenticatedData
-- MessageAuthenticationCodeAlgorithm field -- MessageAuthenticationCodeAlgorithm field
-- Constrains the AuthEnvelopedData -- Constrains the AuthEnvelopedData
-- MessageAuthenticationCodeAlgorithm field -- MessageAuthenticationCodeAlgorithm field
MessageAuthenticationCodeAlgorithms ALGORITHM ::= { MessageAuthenticationCodeAlgorithms ALGORITHM ::= {
maca-sha1 | maca-sha1 |
maca-sha224 | maca-sha224 |
maca-sha256 | maca-sha256 |
maca-sha384 | maca-sha384 |
skipping to change at page 33, line 18 skipping to change at page 43, line 22
iso(1) member-body(2) us(840) rsadsi(113549) iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 10 } digestAlgorithm(2) 10 }
maca-sha512 ALGORITHM ::= { maca-sha512 ALGORITHM ::= {
OID id-hmacWithSHA512 PARMS NULL } OID id-hmacWithSHA512 PARMS NULL }
id-hmacWithSHA512 OBJECT IDENTIFIER ::= { id-hmacWithSHA512 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) iso(1) member-body(2) us(840) rsadsi(113549)
digestAlgorithm(2) 11 } digestAlgorithm(2) 11 }
--
-- Originator Public Key Algorithms
--
-- Constraints on KeyAgreeRecipientInfo OriginatorIdentifierOrKey -- Constraints on KeyAgreeRecipientInfo OriginatorIdentifierOrKey
-- OriginatorPublicKey algorithm field -- OriginatorPublicKey algorithm field
-- PARMS are NULL -- PARMS are NULL
OriginatorPKAlgorithms ALGORITHM ::= { OriginatorPKAlgorithms ALGORITHM ::= {
opka-ec, opka-ec,
... -- Extensible ... -- Extensible
} }
skipping to change at page 33, line 42 skipping to change at page 44, line 4
ECPoint ::= OCTET STRING ECPoint ::= OCTET STRING
-- Format of KeyAgreeRecipientInfo ukm field when used with -- Format of KeyAgreeRecipientInfo ukm field when used with
-- ECMQV -- ECMQV
MQVuserKeyingMaterial ::= SEQUENCE { MQVuserKeyingMaterial ::= SEQUENCE {
ephemeralPublicKey OriginatorPublicKey, ephemeralPublicKey OriginatorPublicKey,
addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL
} }
-- Format for ECDH and ECMQV key-encryption keys when using -- Format for ECDH and ECMQV key-encryption keys when using
-- EnvelopedData or AuthenticatedData -- EnvelopedData or AuthenticatedData
ECC-CMS-SharedInfo ::= SEQUENCE { ECC-CMS-SharedInfo ::= SEQUENCE {
keyInfo AlgorithmIdentifier { KeyWrapAlgorithms }, keyInfo AlgorithmIdentifier { KeyWrapAlgorithms },
entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL, entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL,
suppPubInfo [2] EXPLICIT OCTET STRING suppPubInfo [2] EXPLICIT OCTET STRING
} }
--
-- S/MIME Capabilities
--
SMIME-CAPS ::= CLASS { SMIME-CAPS ::= CLASS {
&Type OPTIONAL, &Type OPTIONAL,
&id OBJECT IDENTIFIER UNIQUE &id OBJECT IDENTIFIER UNIQUE
} }
WITH SYNTAX {TYPE &Type IDENTIFIED BY &id } WITH SYNTAX {TYPE &Type IDENTIFIED BY &id }
SMIMECapability ::= SEQUENCE { SMIMECapability ::= SEQUENCE {
capabilityID SMIME-CAPS.&id({SMimeCapsSet}), capabilityID SMIME-CAPS.&id({SMimeCapsSet}),
parameters SMIME-CAPS. parameters SMIME-CAPS.
&Type({SMimeCapsSet}{@capabilityID}) OPTIONAL &Type({SMimeCapsSet}{@capabilityID}) OPTIONAL
skipping to change at page 34, line 40 skipping to change at page 45, line 28
cap-dhSinglePass-cofactorDH-sha384kdf | cap-dhSinglePass-cofactorDH-sha384kdf |
cap-dhSinglePass-cofactorDH-sha512kdf | cap-dhSinglePass-cofactorDH-sha512kdf |
cap-mqvSinglePass-sha1kdf | cap-mqvSinglePass-sha1kdf |
cap-mqvSinglePass-sha224kdf | cap-mqvSinglePass-sha224kdf |
cap-mqvSinglePass-sha256kdf | cap-mqvSinglePass-sha256kdf |
cap-mqvSinglePass-sha384kdf | cap-mqvSinglePass-sha384kdf |
cap-mqvSinglePass-sha512kdf, cap-mqvSinglePass-sha512kdf,
... -- Extensible ... -- Extensible
} }
--
-- S/MIME Capabilities: ECDSA with SHA2 Algorithms
--
cap-ecdsa-with-SHA1 SMIME-CAPS ::= { cap-ecdsa-with-SHA1 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA1 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA1 }
cap-ecdsa-with-SHA224 SMIME-CAPS ::= { cap-ecdsa-with-SHA224 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA224 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA224 }
cap-ecdsa-with-SHA256 SMIME-CAPS ::= { cap-ecdsa-with-SHA256 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA256 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA256 }
cap-ecdsa-with-SHA384 SMIME-CAPS ::= { cap-ecdsa-with-SHA384 SMIME-CAPS ::= {
skipping to change at page 35, line 4 skipping to change at page 45, line 43
TYPE NULL IDENTIFIED BY ecdsa-with-SHA1 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA1 }
cap-ecdsa-with-SHA224 SMIME-CAPS ::= { cap-ecdsa-with-SHA224 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA224 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA224 }
cap-ecdsa-with-SHA256 SMIME-CAPS ::= { cap-ecdsa-with-SHA256 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA256 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA256 }
cap-ecdsa-with-SHA384 SMIME-CAPS ::= { cap-ecdsa-with-SHA384 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA384 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA384 }
cap-ecdsa-with-SHA512 SMIME-CAPS ::= { cap-ecdsa-with-SHA512 SMIME-CAPS ::= {
TYPE NULL IDENTIFIED BY ecdsa-with-SHA512 } TYPE NULL IDENTIFIED BY ecdsa-with-SHA512 }
--
-- S/MIME Capabilities: ECDH, Single Pass, Standard
--
cap-dhSinglePass-stdDH-sha1kdf SMIME-CAPS ::= { cap-dhSinglePass-stdDH-sha1kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha1kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha1kdf }
cap-dhSinglePass-stdDH-sha224kdf SMIME-CAPS ::= { cap-dhSinglePass-stdDH-sha224kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha224kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha224kdf }
cap-dhSinglePass-stdDH-sha256kdf SMIME-CAPS ::= { cap-dhSinglePass-stdDH-sha256kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha256kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha256kdf }
cap-dhSinglePass-stdDH-sha384kdf SMIME-CAPS ::= { cap-dhSinglePass-stdDH-sha384kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha384kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha384kdf }
cap-dhSinglePass-stdDH-sha512kdf SMIME-CAPS ::= { cap-dhSinglePass-stdDH-sha512kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha512kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha512kdf }
--
-- S/MIME Capabilities: ECDH, Single Pass, Cofactor
--
cap-dhSinglePass-cofactorDH-sha1kdf SMIME-CAPS ::= { cap-dhSinglePass-cofactorDH-sha1kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms TYPE KeyWrapAlgorithms
IDENTIFIED BY dhSinglePass-cofactorDH-sha1kdf } IDENTIFIED BY dhSinglePass-cofactorDH-sha1kdf }
cap-dhSinglePass-cofactorDH-sha224kdf SMIME-CAPS ::= { cap-dhSinglePass-cofactorDH-sha224kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms TYPE KeyWrapAlgorithms
IDENTIFIED BY dhSinglePass-cofactorDH-sha224kdf } IDENTIFIED BY dhSinglePass-cofactorDH-sha224kdf }
cap-dhSinglePass-cofactorDH-sha256kdf SMIME-CAPS ::= { cap-dhSinglePass-cofactorDH-sha256kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms TYPE KeyWrapAlgorithms
IDENTIFIED BY dhSinglePass-cofactorDH-sha256kdf } IDENTIFIED BY dhSinglePass-cofactorDH-sha256kdf }
cap-dhSinglePass-cofactorDH-sha384kdf SMIME-CAPS ::= { cap-dhSinglePass-cofactorDH-sha384kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms TYPE KeyWrapAlgorithms
IDENTIFIED BY dhSinglePass-cofactorDH-sha384kdf } IDENTIFIED BY dhSinglePass-cofactorDH-sha384kdf }
cap-dhSinglePass-cofactorDH-sha512kdf SMIME-CAPS ::= { cap-dhSinglePass-cofactorDH-sha512kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms TYPE KeyWrapAlgorithms
IDENTIFIED BY dhSinglePass-cofactorDH-sha512kdf } IDENTIFIED BY dhSinglePass-cofactorDH-sha512kdf }
--
-- S/MIME Capabilities: ECMQV, Single Pass, Standard
--
cap-mqvSinglePass-sha1kdf SMIME-CAPS ::= { cap-mqvSinglePass-sha1kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha1kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha1kdf }
cap-mqvSinglePass-sha224kdf SMIME-CAPS ::= { cap-mqvSinglePass-sha224kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha224kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha224kdf }
cap-mqvSinglePass-sha256kdf SMIME-CAPS ::= { cap-mqvSinglePass-sha256kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha256kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha256kdf }
cap-mqvSinglePass-sha384kdf SMIME-CAPS ::= { cap-mqvSinglePass-sha384kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha384kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha384kdf }
cap-mqvSinglePass-sha512kdf SMIME-CAPS ::= { cap-mqvSinglePass-sha512kdf SMIME-CAPS ::= {
TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha512kdf } TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha512kdf }
END END
Acknowledgements Acknowledgements
skipping to change at page 37, line 14 skipping to change at page 48, line 14
Acknowledgements Acknowledgements
The methods described in this document are based on work done by the The methods described in this document are based on work done by the
ANSI X9F1 working group. The authors wish to extend their thanks to ANSI X9F1 working group. The authors wish to extend their thanks to
ANSI X9F1 for their assistance. The authors also wish to thank Peter ANSI X9F1 for their assistance. The authors also wish to thank Peter
de Rooij for his patient assistance. The technical comments of de Rooij for his patient assistance. The technical comments of
Francois Rousseau were valuable contributions. Francois Rousseau were valuable contributions.
Many thanks go out to the other authors of RFC 3278: Simon Blake- Many thanks go out to the other authors of RFC 3278: Simon Blake-
Wilson, Paul Lambert, and Dan Brown. Without the initial version of Wilson and Paul Lambert. Without the initial version of RFC3278 this
RFC3278 this version wouldn't exist. version wouldn't exist.
The authors also wish to thank Alfred Hines, Jim Schaad, and Russ The authors also wish to thank Alfred Hoenes, Jim Schaad, and Russ
Housley for their valuable input. Housley for their valuable input.
Author's Addresses Author's Addresses
Sean Turner Sean Turner
IECA, Inc. IECA, Inc.
3057 Nutley Street, Suite 106 3057 Nutley Street, Suite 106
Fairfax, VA 22031 Fairfax, VA 22031
USA USA
 End of changes. 86 change blocks. 
137 lines changed or deleted 551 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/