| < draft-ietf-smime-3278bis-02.txt | draft-ietf-smime-3278bis-03.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 September 22, 2008 | Intended Status: Informational October 22, 2008 | |||
| Obsoletes: 3278 (once approved) | Obsoletes: 3278 (once approved) | |||
| Expires: March 22, 2009 | Expires: April 22, 2009 | |||
| 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-02.txt | draft-ietf-smime-3278bis-03.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 March 22, 2008. | This Internet-Draft will expire on April 22, 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 | |||
| exchange of keys to encrypt or authenticate content. The definition | exchange of keys to encrypt or authenticate content. The definition | |||
| of the algorithm processing is based on the NIST FIPS 186-3 for | of the algorithm processing is based on the NIST FIPS 186-3 for | |||
| digital signature, NIST SP800-56A for key agreement, RFC 3565 for key | digital signature, NIST SP800-56A for key agreement, RFC 3565 and RFC | |||
| wrap and content encryption, NIST FIPS 180-3 for message digest, and | 3370 for key wrap and content encryption, NIST FIPS 180-3 for message | |||
| RFCs 2104 and 4231 for message authentication code standards. | digest, and RFC 2104 and RFC 4231 for message authentication code | |||
| standards. This document will obsolete RFC 3278. | ||||
| 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...........................................5 | 2. SignedData using ECC...........................................5 | |||
| 2.1. SignedData using ECDSA....................................5 | 2.1. SignedData using ECDSA....................................6 | |||
| 3. EnvelopedData using ECC Algorithms.............................6 | 3. EnvelopedData using ECC Algorithms.............................7 | |||
| 3.1. EnvelopedData using (ephemeral-static) ECDH...............6 | 3.1. EnvelopedData using (ephemeral-static) ECDH...............7 | |||
| 3.2. EnvelopedData using 1-Pass ECMQV..........................8 | 3.2. EnvelopedData using 1-Pass ECMQV..........................9 | |||
| 4. AuthenticatedData and AuthEnvelopedData using ECC.............11 | 4. AuthenticatedData and AuthEnvelopedData using ECC.............12 | |||
| 4.1. AuthenticatedData using 1-pass ECMQV.....................11 | 4.1. AuthenticatedData using 1-pass ECMQV.....................12 | |||
| 4.2. AuthEnvelopedData using 1-pass ECMQV.....................12 | 4.2. AuthEnvelopedData using 1-pass ECMQV.....................13 | |||
| 5. Certificates using ECC........................................13 | 5. Certificates using ECC........................................14 | |||
| 6. SMIMECapabilities Attribute and ECC...........................13 | 6. SMIMECapabilities Attribute and ECC...........................14 | |||
| 7. ASN.1 Syntax..................................................16 | 7. ASN.1 Syntax..................................................17 | |||
| 7.1. Algorithm Identifiers....................................16 | 7.1. Algorithm Identifiers....................................17 | |||
| 7.2. Other Syntax.............................................19 | 7.2. Other Syntax.............................................20 | |||
| 8. Recommended Algorithms and Elliptic Curves....................20 | 8. Recommended Algorithms and Elliptic Curves....................22 | |||
| 9. Security Considerations.......................................22 | 9. Security Considerations.......................................24 | |||
| 10. IANA Considerations..........................................27 | 10. IANA Considerations..........................................29 | |||
| 11. References...................................................27 | 11. References...................................................29 | |||
| 11.1. Normative...............................................27 | 11.1. Normative...............................................29 | |||
| 11.2. Informative.............................................29 | 11.2. Informative.............................................31 | |||
| Appendix A ASN.1 Modules.........................................30 | Appendix A ASN.1 Modules.........................................33 | |||
| Appendix A.1 1988 ASN.1 Module................................30 | Appendix A.1 1988 ASN.1 Module................................33 | |||
| Appendix A.2 2004 ASN.1 Module................................37 | Appendix A.2 2004 ASN.1 Module................................40 | |||
| 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 | |||
| (ECDSA) to sign content | (ECDSA) to sign content; | |||
| - 'EnvelopedData' to support ECC-based public-key agreement | - 'EnvelopedData' to support ECC-based public-key agreement | |||
| methods (ECDH and ECMQV) to generate pairwise key-encryption | methods (ECDH and ECMQV) to generate pairwise key-encryption | |||
| keys to encrypt content-encryption keys used for content | keys to encrypt content-encryption keys used for content | |||
| encryption | encryption; | |||
| - 'AuthenticatedData' to support ECC-based public-key agreement | - 'AuthenticatedData' to support ECC-based public-key agreement | |||
| methods (ECMQV) to generate pairwise key-encryption keys to | methods (ECMQV) to generate pairwise key-encryption keys to | |||
| encrypt MAC keys used for content authentication and integrity. | encrypt message authenticate code (MAC) keys used for content | |||
| authentication and integrity; and, | ||||
| - 'AuthEnvelopedData' to support ECC-based public-key agreement | - 'AuthEnvelopedData' to support ECC-based public-key agreement | |||
| methods (ECMQV) to generate pairwise key-encryption keys to | methods (ECMQV) to generate pairwise key-encryption keys to | |||
| encrypt MAC keys used for authenticated encryption modes. | encrypt MAC keys used for authenticated encryption modes. | |||
| Certification of EC public keys is also described to provide public- | Certification of EC public keys is also described to provide public- | |||
| key distribution in support of the specified techniques. | key distribution in support of the specified techniques. | |||
| The document will obsolete [CMS-ECC]. | ||||
| 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: | |||
| - Abstract: The basis of the document was change to refer to NIST | - Abstract: The basis of the document was changed to refer to NIST | |||
| FIPP 186-3 and SP800-56A. | FIPP 186-3 and SP800-56A. | |||
| - Section 1: A bullet was added to address AuthEnvelopedData. | - Section 1: A bullet was added to address AuthEnvelopedData. | |||
| - Section 2.1: A sentence was added to indicate [FIPS180-3] is used | - Section 2.1: A sentence was added to indicate FIPS180-3 is used | |||
| with ECDSA. Replaced reference to [X9.62] with [FIPS186-3]. | with ECDSA. Replaced reference to ANSI X9.62 with FIPS186-3. | |||
| - Section 2.1.1: The permitted digest algorithms were expanded from | - Section 2.1.1: The permitted digest algorithms were expanded from | |||
| SHA-1 to SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512. | SHA-1 to SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512. | |||
| - Section 2.1.2 and 2.1.3: The bullet addressing integer "e" was | - Section 2.1.2 and 2.1.3: The bullet addressing integer "e" was | |||
| deleted. | deleted. | |||
| - Section 3: Added explanation of why static-static ECDH is not | - Section 3: Added explanation of why static-static ECDH is not | |||
| included. | included. | |||
| - Section 3.1: The reference for DH was changed from CMS to CMS- | - Section 3.1: The reference for DH was changed from CMS to CMS- | |||
| ALG. Provided text to indicate fields of EnvelopedData are as | ALG. Provided text to indicate fields of EnvelopedData are as | |||
| in CMS. | in CMS. | |||
| - Section 3.1.1: The permitted digest algorithms for use with ECDH | - Section 3.1.1: The permitted digest algorithms for use with ECDH | |||
| std and cofactor methods were expanded from SHA-1 to SHA-1, SHA- | std and cofactor methods were expanded from SHA-1 to SHA-1, SHA- | |||
| 224, SHA-256, SHA-384, and SHA-512. Updated to include | 224, SHA-256, SHA-384, and SHA-512. Updated to include | |||
| description of all KeyAgreeRecipientInfo fields. Parameters for | description of all KeyAgreeRecipientInfo fields. Parameters for | |||
| id-ecPublicKey field changed from NULL to ABSENT or ECPoint. | id-ecPublicKey field changed from NULL to absent or ECPoint. | |||
| Additional information about ukm was added. | ||||
| - Section 3.2: The sentence describing the advantages of 1-Pass | ||||
| ECMQV was rewritten. | ||||
| - Section 3.2.1: The permitted digest algorithms for use with ECMQV | - Section 3.2.1: The permitted digest algorithms for use with ECMQV | |||
| were expanded from SHA-1 to SHA-1, SHA-224, SHA-256, SHA-384, | were expanded from SHA-1 to SHA-1, SHA-224, SHA-256, SHA-384, | |||
| and SHA-512. Updated to include description of all fields. | and SHA-512. Updated to include description of all fields. | |||
| Parameters for id-ecPublicKey field changed from NULL to ABSENT | Parameters for id-ecPublicKey field changed from NULL to absent | |||
| or ECPoint. | or ECPoint. | |||
| - Sections 3.2.2 and 4.1.2: The re-use of ephemeral keys paragraph | ||||
| was reworded. | ||||
| - Section 4.1: The sentences describing the advantages of 1-Pass | ||||
| ECMQV was moved to Section 4. | ||||
| - Section 4.1.2: The note about the attack was moved to Section 4. | ||||
| - Section 4.2: This section was added to address AuthEnvelopedData | - Section 4.2: This section was added to address AuthEnvelopedData | |||
| with ECMQV. | with ECMQV. | |||
| - Section 5: This section was moved to Section 8. The 1st paragraph | - Section 5: This section was moved to Section 8. The 1st | |||
| was modified as the requirements are difficult to test. The | paragraph was modified to require both SignedData and | |||
| requirements were updated for hash algorithms and | EnvelopedData. The requirements were updated for hash | |||
| recommendations for matching curves and hash algorithms. Also | algorithms and recommendations for matching curves and hash | |||
| expanded to indicate which ECDH and ECMQV variants, key wrap | algorithms. Also the requirements were expanded to indicate | |||
| algorithms, and content encryption algorithms are required for | which ECDH and ECMQV variants, key wrap algorithms, and content | |||
| each of the content types used in this document. | encryption algorithms are required for each of the content types | |||
| used in this document. | ||||
| - Section 5 (formerly 6): This section was updated to allow for | ||||
| SMIMECapabilities to be present certificates. | ||||
| - Section 6 (formerly 7): The S/MIME capabilities for ECDSA with | - Section 6 (formerly 7): The S/MIME capabilities for ECDSA with | |||
| SHA-224, SHA-256, SHA-384, and SHA-512 were added to the list of | SHA-224, SHA-256, SHA-384, and SHA-512 were added to the list of | |||
| S/MIME Capabilities. Also updated to include S/MIME capabilities | S/MIME Capabilities. Also updated to include S/MIME | |||
| for ECDH and ECMQV using SHA2 algorithms as the KDF. | capabilities for ECDH and ECMQV using the SHA-224, SHA-256, SHA- | |||
| 384, and SHA-512 algorithms as the KDF. | ||||
| - Section 7.1 (formerly 8.1): Added sub-sections for digest, | - Section 7.1 (formerly 8.1): Added sub-sections for digest, | |||
| signature, originator public key, key agreement, content | signature, originator public key, key agreement, content | |||
| encryption, and message authentication code algorithms. SHA- | encryption, and message authentication code algorithms. Pointed | |||
| 224, SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA-256, | to algorithms and parameters in appropriate docummments for: | |||
| SHA-384, and SHA-512 with ECDSA were added. Also added algorithm | SHA-224, SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA- | |||
| identifiers for ECDH std, ECDH cofactor, and ECMQV with SHA2 | 256, SHA-384, and SHA-512 with ECDSA. Also added algorithm | |||
| algorithms as the KDF. Message Authentication Code, Content | identifiers for ECDH std, ECDH cofactor, and ECMQV with SHA-224, | |||
| Encryption, Key Wrap. | SHA-256, SHA-384, and SHA-512 algorithms as the KDF. Changed | |||
| id-ecPublicKey parameters to be absent, NULL, and ECParameters | ||||
| and if present the originator's ECParameters must match the | ||||
| recipient's ECParameters. | ||||
| - Section 7.2 (formerly 8.2): Updated to include AuthEnvelopedData. | - Section 7.2 (formerly 8.2): Updated to include AuthEnvelopedData. | |||
| Also, added text to address support requirement for compressed | Also, added text to address support requirement for compressed | |||
| and uncompressed keys, changed pointers to ANSI X9.61 to PKIX | and uncompressed keys, changed pointers from ANSI X9.61 to PKIX | |||
| (where ECDSA-Sig-Value is imported), changed pointers from SEC1 | (where ECDSA-Sig-Value is imported), changed pointers from SECG | |||
| to NIST specs, and updated example of suppPubInfo to be AES-256. | to NIST specs, and updated example of suppPubInfo to be AES-256. | |||
| keyInfo's parameters changed from NULL to any associated | keyInfo's parameters changed from NULL to any associated | |||
| parameters (AES wraps have absent parameters). | parameters (AES wraps have absent parameters). | |||
| - Section 9: Replaced text, which was a summary paragraph, with an | - Section 9: Replaced text, which was a summary paragraph, with an | |||
| updated security considerations section. Paragraph referring to | updated security considerations section. Paragraph referring to | |||
| definitions of SHA-224, SHA-256, SHA-384, and SHA-512 is | definitions of SHA-224, SHA-256, SHA-384, and SHA-512 is | |||
| deleted. | deleted. | |||
| - Updated references. | ||||
| - Added ASN.1 modules. | - Added ASN.1 modules. | |||
| - Updated acknowledgements section. | - Updated acknowledgements section. | |||
| 2. SignedData using ECC | 2. SignedData using ECC | |||
| This section describes how to use ECC algorithms with the CMS | This section describes how to use ECC algorithms with the CMS | |||
| SignedData format to sign data. | SignedData format to sign data. | |||
| 2.1. SignedData using ECDSA | 2.1. SignedData using ECDSA | |||
| skipping to change at page 5, line 45 ¶ | skipping to change at page 6, line 23 ¶ | |||
| In an implementation that uses ECDSA with CMS SignedData, the | In an implementation that uses ECDSA with CMS SignedData, the | |||
| following techniques and formats MUST be used. | following techniques and formats MUST be used. | |||
| 2.1.1. Fields of the SignedData | 2.1.1. Fields of the SignedData | |||
| When using ECDSA with SignedData, the fields of SignerInfo are as in | When using ECDSA with SignedData, the fields of SignerInfo are as in | |||
| [CMS], but with the following restrictions: | [CMS], but with the following restrictions: | |||
| - digestAlgorithm MUST contain the algorithm identifier of the hash | - digestAlgorithm MUST contain the algorithm identifier of the hash | |||
| algorithm (see Section 7.1) which MUST be one of the following: | algorithm (see Section 7.1) which MUST be one of the following: | |||
| id-sha1, id-sha224, id-sha256 identifies, id-sha384, and id- | id-sha1, id-sha224, id-sha256, id-sha384, or id-sha512. | |||
| sha512. | ||||
| - signatureAlgorithm contains the signature algorithm identifier | - signatureAlgorithm contains the signature algorithm identifier | |||
| (see Section 7.1): ecdsa-with-SHA1, ecdsa-with-SHA224, ecdsa- | (see Section 7.1): ecdsa-with-SHA1, ecdsa-with-SHA224, ecdsa- | |||
| with-SHA256, ecdsa-with-SHA384, or ecdsa-with-SHA512. | with-SHA256, ecdsa-with-SHA384, or ecdsa-with-SHA512. | |||
| - signature MUST contain the DER encoding (as an octet string) of a | - signature MUST contain the DER encoding (as an octet string) of a | |||
| value of the ASN.1 type ECDSA-Sig-Value (see Section 7.2). | value of the ASN.1 type ECDSA-Sig-Value (see Section 7.2). | |||
| 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 | |||
| skipping to change at page 6, line 41 ¶ | skipping to change at page 7, line 17 ¶ | |||
| 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. | |||
| This document does not specify the static-static ECDH, method C(0,2, | ||||
| ECC CDH) from [SP800-56A]. Static-static ECDH is analogous to | ||||
| static-static DH, which is specified in [CMS-ALG]. Ephemeral-static | ||||
| ECDH and 1-Pass ECMQV were specified because they provide better | ||||
| security due the originator's ephemeral contribution to the key | ||||
| agreement scheme. | ||||
| 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, | |||
| method C(1, 1, ECC CDH) from [SP800-56A]. Ephemeral-static ECDH is | method C(1, 1, ECC CDH) from [SP800-56A]. Ephemeral-static ECDH is | |||
| the elliptic curve analog of the ephemeral-static Diffie-Hellman key | the elliptic curve analog of the ephemeral-static Diffie-Hellman key | |||
| agreement algorithm specified jointly in the documents [CMS-ALG] and | agreement algorithm specified jointly in the documents [CMS-ALG] and | |||
| [CMS-DH]. | [CMS-DH]. | |||
| In an implementation uses ECDH with CMS EnvelopedData, the following | If an implementation uses ECDH with CMS EnvelopedData, then the | |||
| techniques and formats MUST be used. | following techniques and formats MUST be used. | |||
| The fields of EnvelopedData are as in [CMS], as ECDH is a key | The fields of EnvelopedData are as in [CMS], as ECDH is a key | |||
| agreement algorithm the RecipientInfo kari choice is used. When | agreement algorithm the RecipientInfo kari choice is used. When | |||
| using ECDH, the EnvelopedData originatorInfo field MAY include the | using ECDH, the EnvelopedData originatorInfo field MAY include the | |||
| certificate(s) for the EC public key(s) used in the formation of the | certificate(s) for the EC public key(s) used in the formation of the | |||
| pairwise key. ECC certificates are discussed in Section 5. | pairwise key. ECC certificates are discussed in Section 5. | |||
| 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 follows: | KeyAgreeRecipientInfo are as follows: | |||
| - version MUST be 3. | - version MUST be 3. | |||
| - originator MUST be the alternative originatorKey. The | - originator MUST be the alternative originatorKey. The | |||
| originatorKey algorithm field MUST contain the id-ecPublicKey | originatorKey algorithm field MUST contain the id-ecPublicKey | |||
| object identifier (see Section 7.1). The parameters associated | object identifier (see Section 7.1). The parameters associated | |||
| with id-ecPublicKey MUST be absent or ECPoint. NOTE: The | with id-ecPublicKey MUST be absent or ECParameters. NOTE: The | |||
| previous version of this document required NULL be present, | previous version of this document required NULL to be present, | |||
| support for this is OPTIONAL. The originatorKey publicKey field | support for this legacy form is OPTIONAL. The originatorKey | |||
| MUST contain the value of the ASN.1 type ECPoint (see Section | publicKey field MUST contain the value of the ASN.1 type ECPoint | |||
| 7.2), which represents the sending agent's ephemeral EC public | (see Section 7.2), which represents the sending agent's | |||
| key. The ECPoint in uncompressed form MUST be supported. | ephemeral EC public key. The ECPoint in uncompressed form MUST | |||
| be supported. | ||||
| - ukm MAY be present or absent. However, message originators SHOULD | - ukm MAY be present or absent. However, message originators | |||
| include the ukm. As specified in RFC 3852 [CMS], implementations | SHOULD include the ukm. As specified in RFC 3852 [CMS], | |||
| MUST support ukm message recipient processing, so | implementations MUST support ukm message recipient processing, | |||
| interoperability is not a concern if the ukm is present or | so interoperability is not a concern if the ukm is present or | |||
| absent. When present, the ukm is used to ensure that a | absent. The ukm is placed in the entityUInfo field of the ECC- | |||
| different key-encryption key is generated, even when the | CMS-SharedInfo structure. When present, the ukm is used to | |||
| ephemeral private key is improperly used more than once, by | ensure that a different key-encryption key is generated, even | |||
| using the ECC-Shared-Info as input to in the key derivation | when the ephemeral private key is improperly used more than | |||
| function (see Section 7.2). | once, by using the ECC-CMS-SharedInfo as an input to the key | |||
| derivation function (see Section 7.2). | ||||
| - keyEncryptionAlgorithm MUST contain the key encryption algorithm | - keyEncryptionAlgorithm MUST contain the key encryption algorithm | |||
| object identifier (see Section 7.1). The parameters field | object identifier (see Section 7.1). The parameters field | |||
| contains KeyWrapAlgorithm. The KeyWrapAlgorithm is the | contains KeyWrapAlgorithm. The KeyWrapAlgorithm is the | |||
| algorithm identifier that indicates the symmetric encryption | algorithm identifier that indicates the symmetric encryption | |||
| algorithm used to encrypt the content-encryption key (CEK) with | algorithm used to encrypt the content-encryption key (CEK) with | |||
| the key-encryption key (KEK) and any associated parameters. | the key-encryption key (KEK) and any associated parameters. | |||
| Algorithm requirements are found in Section 8. | Algorithm requirements are found in Section 8. | |||
| - recipientEncryptedKeys contains an identifier and an encrypted | - recipientEncryptedKeys contains an identifier and an encrypted | |||
| skipping to change at page 8, line 39 ¶ | skipping to change at page 9, line 26 ¶ | |||
| 3.1.3. Actions of the receiving agent | 3.1.3. Actions of the receiving agent | |||
| When using ephemeral-static ECDH with EnvelopedData, the receiving | When using ephemeral-static ECDH with EnvelopedData, the receiving | |||
| agent determines the bit string "SharedInfo", which is the DER | agent determines the bit string "SharedInfo", which is the DER | |||
| encoding of ECC-CMS-SharedInfo (see Section 7.2), and the integer | encoding of ECC-CMS-SharedInfo (see Section 7.2), and the integer | |||
| "keydatalen" from the key-size, in bits, of the KeyWrapAlgorithm. The | "keydatalen" from the key-size, in bits, of the KeyWrapAlgorithm. The | |||
| receiving agent retrieves the ephemeral EC public key from the bit | receiving agent retrieves the ephemeral EC public key from the bit | |||
| string KeyAgreeRecipientInfo originator, with a value of the type | string KeyAgreeRecipientInfo originator, with a value of the type | |||
| ECPoint (see Section 7.2) encapsulated as a bit string, and if | ECPoint (see Section 7.2) encapsulated as a bit string, and if | |||
| present original supplied additional user key material from the ukm | present, originally supplied additional user key material from the | |||
| field. The receiving agent performs the key agreement operation of | ukm field. The receiving agent performs the key agreement operation | |||
| the Elliptic Curve Diffie-Hellman Scheme specified in [SP800-56A]. | of the Elliptic Curve Diffie-Hellman Scheme specified in [SP800-56A]. | |||
| As a result, the receiving agent obtains a shared secret bit string | As a result, the receiving agent obtains a shared secret bit string | |||
| "K", which is used as the pairwise key-encryption key to unwrap the | "K", which is used as the pairwise key-encryption key to unwrap the | |||
| CEK. | CEK. | |||
| 3.2. EnvelopedData using 1-Pass ECMQV | 3.2. EnvelopedData 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 EnvelopedData, method | (ECMQV) key agreement algorithm with EnvelopedData, method | |||
| C(1, 2, ECC MQV) from [SP800-56A]. Like the KEA algorithm [CMS-KEA], | C(1, 2, ECC MQV) from [SP800-56A]. Like the KEA algorithm [CMS-KEA], | |||
| 1-Pass ECMQV uses three key pairs: an ephemeral key pair, a static | 1-Pass ECMQV uses three key pairs: an ephemeral key pair, a static | |||
| key pair of the sending agent, and a static key pair of the receiving | key pair of the sending agent, and a static key pair of the receiving | |||
| agent. An advantage of using 1-Pass ECMQV is that it can be used | agent. Using an algorithm with the sender static key pair allows for | |||
| with both EnvelopedData and AuthenticatedData. | knowledge of the message creator, this means that authentication can, | |||
| in some circumstances, be obtained for AuthEnvelopedData and | ||||
| AuthenticatedData. This means that 1-Pass ECMQV can be a common | ||||
| algorithm for EnvelopedData, AuthenticatedData and AuthEnvelopedData, | ||||
| while ECDH can only be used in EnvelopedData. | ||||
| In an implementation uses 1-Pass ECMQV with CMS EnvelopedData, the | If an implementation uses 1-Pass ECMQV with CMS EnvelopedData, then | |||
| following techniques and formats MUST be used. | the following techniques and formats MUST be used. | |||
| The fields of EnvelopedData are as in [CMS], as 1-Pass ECMQV is a key | The fields of EnvelopedData are as in [CMS], as 1-Pass ECMQV is a key | |||
| agreement algorithm the RecipientInfo kari choice is used. When | agreement algorithm the RecipientInfo kari choice is used. When | |||
| using 1-Pass ECMQV, the EnvelopedData originatorInfo field MAY | using 1-Pass ECMQV, the EnvelopedData originatorInfo field MAY | |||
| include the certificate(s) for the EC public key(s) used in the | include the certificate(s) for the EC public key(s) used in the | |||
| formation of the pairwise key. ECC certificates are discussed in | formation of the pairwise key. ECC certificates are discussed in | |||
| Section 5. | Section 5. | |||
| 3.2.1. Fields of KeyAgreeRecipientInfo | 3.2.1. Fields of KeyAgreeRecipientInfo | |||
| When using 1-Pass ECMQV with EnvelopedData, the fields of | When using 1-Pass ECMQV with EnvelopedData, the fields of | |||
| KeyAgreeRecipientInfo are: | KeyAgreeRecipientInfo are: | |||
| - version MUST be 3. | - version MUST be 3. | |||
| - originator identifies the static EC public key of the sender. It | - originator identifies the static EC public key of the sender. It | |||
| SHOULD be one of the alternatives, issuerAndSerialNumber or | SHOULD be one of the alternatives, issuerAndSerialNumber or | |||
| subjectKeyIdentifier, and point to one of the sending agent's | subjectKeyIdentifier, and point to one of the sending agent's | |||
| certificates. | certificates. | |||
| - ukm MUST be present. The ukm field MUST contain an octet string | - ukm MUST be present. The ukm field is an octet string which MUST | |||
| which is the DER encoding of the type MQVuserKeyingMaterial (see | contain the DER encoding of the type MQVuserKeyingMaterial (see | |||
| Section 7.2). The MQVuserKeyingMaterial ephemeralPublicKey | Section 7.2). The MQVuserKeyingMaterial ephemeralPublicKey | |||
| algorithm field MUST contain the id-ecPublicKey object | algorithm field MUST contain the id-ecPublicKey object | |||
| identifier (see Section 7.1). The parameters associated with id- | identifier (see Section 7.1). The parameters associated with | |||
| ecPublicKey MUST be abent or ECPoint. NOTE: The previous | id-ecPublicKey MUST be absent or ECParameters. NOTE: The | |||
| version of this document required NULL be present, support is | previous version of this document required NULL to be present, | |||
| OPTIONAL. The MQVuserKeyingMaterial ephemeralPublicKey | support for this legacy form is OPTIONAL. The | |||
| publicKey field MUST contain the DER-encoding of the ASN.1 type | MQVuserKeyingMaterial ephemeralPublicKey publicKey field MUST | |||
| ECPoint (see Section 7.2) representing the sending agent's | contain the DER-encoding of the ASN.1 type ECPoint (see Section | |||
| ephemeral EC public key. The MQVuserKeyingMaterial addedukm | 7.2) representing the sending agent's ephemeral EC public key. | |||
| field, if present, SHOULD contain an octet string of additional | The MQVuserKeyingMaterial addedukm field, if present, contains | |||
| user keying material of the sending agent. | additional user keying material from the sending agent. | |||
| - keyEncryptionAlgorithm MUST be the key encryption algorithm | - keyEncryptionAlgorithm MUST be the key encryption algorithm | |||
| identifier (see Section 7.1), with the parameters field | identifier (see Section 7.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 and any associated | generated using the 1-Pass ECMQV algorithm and any associated | |||
| parameters. Algorithm requirements are found in Section 8. | parameters. Algorithm requirements are found in Section 8. | |||
| - recipientEncryptedKeys contains an identifier and an encrypted | - recipientEncryptedKeys contains an identifier and an encrypted | |||
| key for each recipient. The RecipientEncryptedKey | key for each recipient. The RecipientEncryptedKey | |||
| KeyAgreeRecipientIdentifier MUST contain either the | KeyAgreeRecipientIdentifier MUST contain either the | |||
| issuerAndSerialNumber identifying the recipient's certificate or | issuerAndSerialNumber identifying the recipient's certificate or | |||
| the RecipientKeyIdentifier containing the subject key identifier | the RecipientKeyIdentifier containing the subject key identifier | |||
| from the recipient's certificate. In both cases, the recipient's | from the recipient's certificate. In both cases, the | |||
| certificate contains the recipient's static ECMQV public key. | recipient's certificate contains the recipient's static ECMQV | |||
| RecipientEncryptedKey EncryptedKey MUST contain the content- | public key. RecipientEncryptedKey EncryptedKey MUST contain the | |||
| encryption key encrypted with the 1-Pass ECMQV-generated | content-encryption key encrypted with the 1-Pass ECMQV-generated | |||
| pairwise key-encryption key using the algorithm specified by the | pairwise key-encryption key using the algorithm specified by the | |||
| KeyWrapAlgorithm. | KeyWrapAlgorithm. | |||
| 3.2.2. Actions of the sending agent | 3.2.2. Actions of the sending agent | |||
| When using 1-Pass ECMQV with EnvelopedData, the sending agent first | When using 1-Pass ECMQV with EnvelopedData, the sending agent first | |||
| obtains the recipient's EC public key and domain parameters (e.g. | obtains the recipient's EC public key and domain parameters (e.g. | |||
| from the recipient's certificate), and checks that the domain | from the recipient's certificate), and checks that the domain | |||
| parameters are the same, as the sender's domain parameters. The | parameters are the same as the sender's domain parameters. The | |||
| sending agent then determines an integer "keydatalen", which is the | sending agent then determines an integer "keydatalen", which is the | |||
| KeyWrapAlgorithm symmetric key-size in bits, and also a bit string | KeyWrapAlgorithm symmetric key-size in bits, and also a bit string | |||
| "SharedInfo", which is the DER encoding of ECC-CMS-SharedInfo (see | "SharedInfo", which is the DER encoding of ECC-CMS-SharedInfo (see | |||
| Section 7.2). The sending agent then performs the key deployment and | Section 7.2). The sending agent then performs the key deployment and | |||
| key agreement operations of the Elliptic Curve MQV Scheme specified | key agreement operations of the Elliptic Curve MQV Scheme specified | |||
| in [SP800-56A]. As a result, the sending agent obtains: | in [SP800-56A]. As a result, the sending agent obtains: | |||
| - an ephemeral public key, which is represented as a value of type | - an ephemeral public key, which is represented as a value of type | |||
| ECPoint (see Section 7.2), encapsulated in a bit string, placed | ECPoint (see Section 7.2), encapsulated in a bit string, placed | |||
| in an MQVuserKeyingMaterial ephemeralPublicKey publicKey field | in an MQVuserKeyingMaterial ephemeralPublicKey publicKey field | |||
| (see Section 7.2), and | (see Section 7.2), and | |||
| - a shared secret bit string "K", which is used as the pairwise | - a shared secret bit string "K", which is used as the pairwise | |||
| key-encryption key for that recipient, as specified in [CMS]. | key-encryption key for that recipient, as specified in [CMS]. | |||
| The ephemeral public key can be re-used with an AuthenticatedData for | In a single message, if there are multiple layers for a recipient, | |||
| greater efficiency. | then the ephemeral public key can be reused by the originator for | |||
| that recipient in each of the different layers. | ||||
| 3.2.3. Actions of the receiving agent | 3.2.3. Actions of the receiving agent | |||
| When using 1-Pass ECMQV with EnvelopedData, the receiving agent | When using 1-Pass ECMQV with EnvelopedData, the receiving agent | |||
| determines the bit string "SharedInfo", which is the DER encoding of | determines the bit string "SharedInfo", which is the DER encoding of | |||
| ECC-CMS-SharedInfo (see Section 7.2), and the integer "keydatalen" | ECC-CMS-SharedInfo (see Section 7.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 | originator, from the originator and ukm fields as described in | |||
| Section 3.2.1, and its static EC public key identified in the rid | Section 3.2.1, and its static EC public key identified in the rid | |||
| field and checks that the domain parameters are the same. The | field and checks that the domain parameters are the same as the | |||
| receiving agent then performs the key agreement operation of the | recipient's domain parameters. The receiving agent then performs the | |||
| Elliptic Curve MQV Scheme [SP800-56A]. As a result, the receiving | key agreement operation of the Elliptic Curve MQV Scheme [SP800-56A]. | |||
| agent obtains a shared secret bit string "K" which is used as the | As a result, the receiving agent obtains a shared secret bit string | |||
| pairwise key-encryption key to unwrap the CEK. | "K" which is used as the pairwise key-encryption key to unwrap the | |||
| CEK. | ||||
| 4. AuthenticatedData and AuthEnvelopedData 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 | This section also describes how to use ECC algorithms with the CMS | |||
| AuthEnvelopedData format [CMS-AUTHENV]. AuthEnvelopedData supports | AuthEnvelopedData format [CMS-AUTHENV]. AuthEnvelopedData supports | |||
| authentication and encryption, and in some instances is preferable to | authentication and encryption, and in some instances is preferable to | |||
| signing and then encrypting data. | signing and then encrypting data. | |||
| For both AuthentictedData and AuthEnvelopedData, data origin | ||||
| authentication with 1-Pass ECMQV can only be provided when there is | ||||
| one and only one recipient. When there are multiple recipients, an | ||||
| attack is possible where one recipient modifies the content without | ||||
| other recipients noticing [BON]. A sending agent who is concerned | ||||
| with such an attack SHOULD use a separate AuthenticatedData or | ||||
| AuthEnvelopedData for each recipient. | ||||
| Using an algorithm with the sender static key pair allows for | ||||
| knowledge of the message creator, this means that authentication can, | ||||
| in some circumstances, be obtained for AuthEnvelopedData and | ||||
| AuthenticatedData. This means that 1-Pass ECMQV can be a common | ||||
| algorithm for EnvelopedData, AuthenticatedData, and AuthEnvelopedData | ||||
| while ECDH can only be used in EnvelopedData. | ||||
| 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 | |||
| method C(1, 2, ECC MQV) from [SP800-56A]. An advantage of using 1- | method C(1, 2, ECC MQV) from [SP800-56A]. | |||
| Pass ECMQV is that it can be used with EnvelopedData, | ||||
| AuthenticatedData, and AuthEnvelopedData. | ||||
| When using ECMQV with AuthenticatedData, the fields of | When using ECMQV with AuthenticatedData, the fields of | |||
| AuthenticatedData are as in [CMS], but with the following | AuthenticatedData are as in [CMS], but with the following | |||
| restrictions: | restrictions: | |||
| - macAlgorithm MUST contain the algorithm identifier of the message | - macAlgorithm MUST contain the algorithm identifier of the message | |||
| authentication code algorithm (see Section 7.1) which MUST be | authentication code algorithm (see Section 7.1) which MUST be | |||
| one of the following: id-hmacWithSHA1, id-hmacWITHSHA224, id- | one of the following: hmac-SHA1, id-hmacWITHSHA224, id- | |||
| hmacWITHSHA256, id-hmacWITHSHA384, and id-hmacWITHSHA512. | hmacWITHSHA256, id-hmacWITHSHA384, or id-hmacWITHSHA512. | |||
| - digestAlgorithm MUST contain the algorithm identifier of the hash | - digestAlgorithm MUST contain the algorithm identifier of the hash | |||
| algorithm (see Section 7.1) which MUST be one of the following: | algorithm (see Section 7.1) which MUST be one of the following: | |||
| id-sha1, id-sha224, id-sha256, id-sha384, and id-sha512. | id-sha1, id-sha224, id-sha256, id-sha384, and id-sha512. | |||
| The fields of AuthenticatedData are as in [CMS], as 1-Pass ECMQV is a | As 1-Pass ECMQV is a key agreement algorithm, the RecipientInfo kari | |||
| key agreement algorithm the RecipientInfo kari choice is used. When | choice is used in the AuthenticatedData. When using 1-Pass ECMQV, | |||
| using 1-Pass ECMQV, the AuthenticatedData originatorInfo field MAY | the AuthenticatedData originatorInfo field MAY include the | |||
| include the certificate(s) for the EC public key(s) used in the | certificate(s) for the EC public key(s) used in the formation of the | |||
| formation of the pairwise key. ECC certificates are discussed in | pairwise key. ECC certificates are discussed in Section 5. | |||
| Section 5. | ||||
| 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 | The sending agent uses the same actions as for EnvelopedData with | |||
| 1-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 | In a single message, if there are multiple layers for a recipient, | |||
| greater efficiency. | then the ephemeral public key can be reused by the originator for | |||
| that recipient in each of the different layers. | ||||
| Note: if there are multiple recipients, an attack is possible where | ||||
| one recipient modifies the content without other recipients noticing | ||||
| [BON]. A sending agent who is concerned with such an attack SHOULD | ||||
| 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. | ||||
| 4.2. AuthEnvelopedData using 1-pass ECMQV | 4.2. AuthEnvelopedData 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 AuthEnvelopedData. ECMQV is | (ECMQV) key agreement algorithm with AuthEnvelopedData. ECMQV is | |||
| method C(1, 2, ECC MQV) from [SP800-56A]. An advantage of using 1- | method C(1, 2, ECC MQV) from [SP800-56A]. | |||
| Pass ECMQV is that it can be used with EnvelopedData, | ||||
| AuthenticatedData, and AuthEnvelopedData. | ||||
| The fields of AuthEnvelopedData are as in [CMS], as 1-Pass ECMQV is a | When using ECMQV with AuthEnvelopedData, the fields of | |||
| key agreement algorithm the RecipientInfo kari choice is used. When | AuthenticatedData are as in [CMS-AUTHENV], but with the following | |||
| using 1-Pass ECMQV, the AuthEnvelopedData originatorInfo field MAY | restriction: | |||
| include the certificate(s) for the EC public key(s) used in the | ||||
| formation of the pairwise key. ECC certificates are discussed in | - macAlgorithm MUST contain the algorithm identifier of the message | |||
| Section 5. | authentication code algorithm (see Section 7.1) which MUST be | |||
| one of the following: hmac-SHA1, id-hmacWITHSHA224, id- | ||||
| hmacWITHSHA256, id-hmacWITHSHA384, or id-hmacWITHSHA512. | ||||
| As 1-Pass ECMQV is a key agreement algorithm, the RecipientInfo kari | ||||
| choice is used. When using 1-Pass ECMQV, the AuthEnvelopedData | ||||
| originatorInfo field MAY include the certificate(s) for the EC public | ||||
| key(s) used in the formation of the pairwise key. ECC certificates | ||||
| are discussed in Section 5. | ||||
| 4.2.1. Fields of the KeyAgreeRecipientInfo | 4.2.1. Fields of the KeyAgreeRecipientInfo | |||
| The AuthEnvelopedData KeyAgreeRecipientInfo fields are used in the | The AuthEnvelopedData 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.2.2. Actions of the sending agent | 4.2.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 1- | |||
| Pass ECMQV, as specified in Section 3.2.2 of this document. | Pass ECMQV, as specified in Section 3.2.2 of this document. | |||
| The ephemeral public key can be re-used with an EnvelopedData for | In a single message, if there are multiple layers for a recipient, | |||
| greater efficiency. | then the ephemeral public key can be reused by the originator for | |||
| that recipient in each of the different layers. | ||||
| 4.2.3. Actions of the receiving agent | 4.2.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. | |||
| 5. Certificates using ECC | 5. 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- | |||
| [PKI-ALG]. | ALG]. | |||
| 6. SMIMECapabilities Attribute and ECC | 6. SMIMECapabilities Attribute and ECC | |||
| A sending agent MAY announce to receiving agents that it supports one | A sending agent MAY announce to receiving agents that it supports one | |||
| or more of the ECC algorithms in this document by using the | or more of the ECC algorithms specified in this document by using the | |||
| SMIMECapabilities signed attribute [MSG]. | SMIMECapabilities signed attribute [MSG] in either a signed message | |||
| or a certificate [CERTCAP]. | ||||
| The SMIMECapability value to indicate support for one of the ECDSA | The SMIMECapability value to indicate support for one of the ECDSA | |||
| signature algorithms is a SEQUENCE with the capabilityID field | signature algorithms is a SEQUENCE with the capabilityID field | |||
| containing the object identifier ecdsa-with-SHA* object identifiers | containing the object identifier ecdsa-with-SHA* (where * is 1, 224, | |||
| (where * is 1, 224, 256, 384, or 512) and with NULL parameters. The | 256, 384, or 512) with NULL parameters. The DER encodings are: | |||
| DER encodings are: | ||||
| ecdsa-with-SHA1: 30 0b 06 07 2a 86 48 ce 3d 04 01 05 00 | ecdsa-with-SHA1: 30 0b 06 07 2a 86 48 ce 3d 04 01 05 00 | |||
| ecdsa-with-SHA224: 30 0c 06 08 2a 86 48 ce 3d 04 03 01 05 00 | ecdsa-with-SHA224: 30 0c 06 08 2a 86 48 ce 3d 04 03 01 05 00 | |||
| ecdsa-with-SHA256: 30 0c 06 08 2a 86 48 ce 3d 04 03 02 05 00 | ecdsa-with-SHA256: 30 0c 06 08 2a 86 48 ce 3d 04 03 02 05 00 | |||
| ecdsa-with-SHA384: 30 0c 06 08 2a 86 48 ce 3d 04 03 03 05 00 | ecdsa-with-SHA384: 30 0c 06 08 2a 86 48 ce 3d 04 03 03 05 00 | |||
| ecdsa-with-SHA512: 30 0c 06 08 2a 86 48 ce 3d 04 03 04 05 00 | ecdsa-with-SHA512: 30 0c 06 08 2a 86 48 ce 3d 04 03 04 05 00 | |||
| NOTE: The S/MIME Capabilities indicates that parameters for ECDSA | ||||
| with SHA-* are NULL (where * is 1, 224, 256, 384, or 512), however, | ||||
| the parameters are absent when used to generate a digital signature. | ||||
| The SMIMECapability value to indicate support for | The SMIMECapability value to indicate support for | |||
| a) the standard ECDH key agreement algorithm, | a) the standard ECDH key agreement algorithm, | |||
| b) the cofactor ECDH key agreement algorithm, or | b) the cofactor ECDH key agreement algorithm, or | |||
| c) the 1-Pass ECMQV key agreement algorithm | c) the 1-Pass ECMQV key agreement algorithm | |||
| is a SEQUENCE with the capabilityID field containing the object | is a SEQUENCE with the capabilityID field containing the object | |||
| identifier | identifier | |||
| a) dhSinglePass-stdDH-sha*kdf-scheme, | a) dhSinglePass-stdDH-sha*kdf-scheme, | |||
| b) dhSinglePass-cofactorDH-sha*kdf-scheme, or | b) dhSinglePass-cofactorDH-sha*kdf-scheme, or | |||
| c) mqvSinglePass-sha*kdf-scheme | c) mqvSinglePass-sha*kdf-scheme | |||
| respectively (where * is 1, 224, 256, 384, or 512) with the | respectively (where * is 1, 224, 256, 384, or 512) with the | |||
| parameters present. The parameters indicate the supported key- | parameters present. The parameters indicate the supported key- | |||
| encryption algorithm with the KeyWrapAlgorithm algorithm identifier. | encryption algorithm with the KeyWrapAlgorithm algorithm identifier. | |||
| Example DER encodings that indicate some capabilities are as follows | Example DER encodings that indicate some capabilities are as follows | |||
| (KA is key agreement, KDF is key derivation function, and Wrap is key | (KA is key agreement, KDF is key derivation function, and Wrap is key | |||
| wrap algorithm): | wrap algorithm): | |||
| KA=ECDH standard KDF=SHA1 Wrap=3DES | KA=ECDH standard KDF=SHA-1 Wrap=Triple-DES | |||
| 30 1c | 30 1c | |||
| 06 09 2b 81 05 10 86 48 3f 00 02 | 06 09 2b 81 05 10 86 48 3f 00 02 | |||
| 30 0f | 30 0f | |||
| 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | |||
| 05 00 | 05 00 | |||
| KA=ECDH standard KDF=SHA256 Wrap=AES128 | KA=ECDH standard KDF=SHA-256 Wrap=AES-128 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0B 01 | 06 06 2b 81 04 01 0B 01 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 05 | 06 09 60 86 48 01 65 03 04 01 05 | |||
| 05 00 | 05 00 | |||
| KA=ECDH standard KDF=SHA384 Wrap=AES256 | KA=ECDH standard KDF=SHA-384 Wrap=AES-256 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0B 02 | 06 06 2b 81 04 01 0B 02 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 2D | 06 09 60 86 48 01 65 03 04 01 2D | |||
| 05 00 | 05 00 | |||
| KA=ECDH cofactor KDF=SHA1 Wrap=3DES | KA=ECDH cofactor KDF=SHA-1 Wrap=Triple-DES | |||
| 30 1c | 30 1c | |||
| 06 09 2b 81 05 10 86 48 3f 00 03 | 06 09 2b 81 05 10 86 48 3f 00 03 | |||
| 30 0f | 30 0f | |||
| 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | |||
| 05 00 | 05 00 | |||
| KA=ECDH cofactor KDF=SHA256 Wrap=AES128 | KA=ECDH cofactor KDF=SHA-256 Wrap=AES-128 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0E 01 | 06 06 2b 81 04 01 0E 01 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 05 | 06 09 60 86 48 01 65 03 04 01 05 | |||
| 05 00 | 05 00 | |||
| KA=ECDH cofactor KDF=SHA384 Wrap=AES256 | KA=ECDH cofactor KDF=SHA-384 Wrap=AES-256 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0E 02 | 06 06 2b 81 04 01 0E 02 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 2D | 06 09 60 86 48 01 65 03 04 01 2D | |||
| 05 00 | 05 00 | |||
| KA=ECMQV 1-Pass KDF=SHA1 Wrap=3DES | KA=ECMQV 1-Pass KDF=SHA-1 Wrap=Triple-DES | |||
| 30 1c | 30 1c | |||
| 06 09 2b 81 05 10 86 48 3f 00 10 | 06 09 2b 81 05 10 86 48 3f 00 10 | |||
| 30 0f | 30 0f | |||
| 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | 06 0b 2a 86 48 86 f7 0d 01 09 10 03 06 | |||
| 05 00 | 05 00 | |||
| KA=ECMQV 1-Pass KDF=SHA256 Wrap=AES128 | KA=ECMQV 1-Pass KDF=SHA-256 Wrap=AES-128 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0F 01 | 06 06 2b 81 04 01 0F 01 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 05 | 06 09 60 86 48 01 65 03 04 01 05 | |||
| 05 00 | 05 00 | |||
| KA=ECMQV 1-Pass KDF=SHA384 Wrap=AES256 | KA=ECMQV 1-Pass KDF=SHA-384 Wrap=AES-256 | |||
| 30 17 | 30 17 | |||
| 06 06 2b 81 04 01 0F 02 | 06 06 2b 81 04 01 0F 02 | |||
| 30 0d | 30 0d | |||
| 06 09 60 86 48 01 65 03 04 01 2D | 06 09 60 86 48 01 65 03 04 01 2D | |||
| 05 00 | 05 00 | |||
| NOTE: The S/MIME Capabilities indicates that parameters for the key | ||||
| wrap algorithm AES-* (where * is 128, 192, or 256) are NULL; however, | ||||
| the parameters are absent when used to encrypt/decrypt a content | ||||
| encryption key. | ||||
| 7. ASN.1 Syntax | 7. ASN.1 Syntax | |||
| The ASN.1 syntax used in this document is gathered in this section | The ASN.1 syntax used in this document is gathered in this section | |||
| for reference purposes. | for reference purposes. | |||
| 7.1. Algorithm Identifiers | 7.1. Algorithm Identifiers | |||
| This section provides the object identifiers for the algorithms used | This section provides the object identifiers for the algorithms used | |||
| in this document along with any associated parameters. | in this document along with any associated parameters. | |||
| 7.1.1. Digest Algorithms | 7.1.1. Digest Algorithms | |||
| Digest algorithm object identifiers are used in the SignedData | Digest algorithm object identifiers are used in the SignedData | |||
| digestAlgorithms and digestAlgorithm fields, the AuthenticatedData | digestAlgorithms and digestAlgorithm fields and the AuthenticatedData | |||
| digestAlgorithm field, and the AuthEnvelopedData digestAlgorithm | digestAlgorithm field. The digest algorithms used in this document | |||
| field. The digest algorithms used in this document are: SHA-1, | are: SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512. The object | |||
| SHA224, SHA-256, SHA-384, and SHA-512. The object identifiers and | identifiers and parameters associated with these algorithms are found | |||
| parameters associated with these algorithms are found in [SMIME- | in [CMS-ALG] and [CMS-SHA2]. | |||
| SHA2]. | ||||
| 7.1.2. Originator Public Key | 7.1.2. Originator Public Key | |||
| The KeyAgreeRecipientInfo originator filed use the following object | The KeyAgreeRecipientInfo originator field use the following object | |||
| identifier to indicate an elliptic curve public key: | identifier to indicate an elliptic curve public key: | |||
| id-ecPublicKey OBJECT IDENTIFIER ::= { | id-ecPublicKey OBJECT IDENTIFIER ::= { | |||
| ansi-x9-62 keyType(2) 1 } | ansi-x9-62 keyType(2) 1 } | |||
| where | where | |||
| ansi-x9-62 OBJECT IDENTIFIER ::= { | ansi-x9-62 OBJECT IDENTIFIER ::= { | |||
| iso(1) member-body(2) us(840) 10045 } | iso(1) member-body(2) us(840) 10045 } | |||
| When the object identifier id-ecPublicKey is used here with an | When the object identifier id-ecPublicKey is used here with an | |||
| algorithm identifier, the associated parameters MUST be either absent | algorithm identifier, the associated parameters MUST be either absent | |||
| or ECPoint. Implementations MUST accept id-ecPublicKey with the | or ECParameters. Implementations MUST accept id-ecPublicKey with | |||
| parameters field with absent, NULL, and ECPoint parameters. If | absent, and ECParameters parameters. If ECParameters is present, its | |||
| ECPoint is present its value is ignored. Implementations SHOULD | value MUST match the recipients ECParameters. Implementations SHOULD | |||
| generate absent parameters for the id-ecPublicKey object identifier | generate absent parameters for the id-ecPublicKey object identifier | |||
| in the KeyAgreeRecipientInfo originator field. | in the KeyAgreeRecipientInfo originator field. | |||
| NOTE: [CMS-ECC] indicated the parameters were NULL. Support for NULL | ||||
| parameters is OPTIONAL. | ||||
| 7.1.3. Signature Algorithms | 7.1.3. Signature Algorithms | |||
| Signature algorithm identifiers are used in the SignedData | Signature algorithm identifiers are used in the SignedData | |||
| signatureAlgorithm and signature field. The signature algorithms | signatureAlgorithm and signature field. The signature algorithms | |||
| used in this document are ECDSA with SHA-1, ECDSA with SHA-224, ECDSA | used in this document are ECDSA with SHA-1, ECDSA with SHA-224, ECDSA | |||
| with SHA-256, ECDSA with SHA-384, and ECDSA with SHA-512. The object | with SHA-256, ECDSA with SHA-384, and ECDSA with SHA-512. The object | |||
| identifiers and parameters associated with these algorithms are found | identifiers and parameters associated with these algorithms are found | |||
| in [PKI-ALG]. | in [PKI-ALG]. | |||
| NOTE: [CMS-ECC] indicated the parameters were NULL. Support for NULL | ||||
| parameters is OPTIONAL. | ||||
| 7.1.4. Key Agreement Algorithms | 7.1.4. Key Agreement Algorithms | |||
| Key agreement algorithms are used in EnvelopedData, | Key agreement algorithms are used in EnvelopedData, | |||
| AuthenticatedData, and AuthEnvelopedData in the KeyAgreeRecipientInfo | AuthenticatedData, and AuthEnvelopedData in the KeyAgreeRecipientInfo | |||
| keyEncryptionAlgorithm field. The following object identifiers | keyEncryptionAlgorithm field. The following object identifiers | |||
| indicate the key agreement algorithms used in this document [SP800- | indicate the key agreement algorithms used in this document [SP800- | |||
| 56A]: | 56A]: | |||
| dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 2 } | x9-63-scheme 2 } | |||
| skipping to change at page 18, line 33 ¶ | skipping to change at page 20, line 9 ¶ | |||
| 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 KeyWrapAlgorithm | identifier, the associated parameters field contains KeyWrapAlgorithm | |||
| to indicate the key wrap algorithm and any associated parameters. | to indicate the key wrap algorithm and any associated parameters. | |||
| 7.1.5. Key Wrap Algorithms | 7.1.5. Key Wrap Algorithms | |||
| Key wrap algorithms are used as part of the parameters in the key | Key wrap algorithms are used as part of the parameters in the key | |||
| agreement algorithm. The key wrap algorithms used in this document | agreement algorithm. The key wrap algorithms used in this document | |||
| are Triple-DES, AES-128, AES-192, AES-256. The object identifier and | are Triple-DES, AES-128, AES-192, and AES-256. The object | |||
| parameters for these algorithms are found in [CMS-ALG] and [CMS-AES]. | identifiers and parameters for these algorithms are found in [CMS- | |||
| ALG] and [CMS-AES]. | ||||
| 7.1.6. Content Encryption Algorithms | 7.1.6. Content Encryption Algorithms | |||
| Content encryption algorithms are used in EnvelopedData and | Content encryption algorithms are used in EnvelopedData and | |||
| AuthEnvelopedData in the EncryptedContentInfo | AuthEnvelopedData in the EncryptedContentInfo | |||
| contentEncryptionAlgorithm field. The content encryption algorithms | contentEncryptionAlgorithm field. The content encryption algorithms | |||
| used with EnvelopedData in this document are AES-128 in CBC mode, | used with EnvelopedData in this document are 3-Key Triple DES in CBC | |||
| AES-192 in CBC mode, and AES-256 in CBC mode. The object identifiers | mode, AES-128 in CBC mode, AES-192 in CBC mode, and AES-256 in CBC | |||
| and parameters associated with these algorithms are found in [CMS- | mode. The object identifiers and parameters associated with these | |||
| AES]. The content encryption algorithms used with AuthEnvelopedData | algorithms are found in [CMS-ALG] and [CMS-AES]. The content | |||
| in this document are AES-128 in CCM mode, AES-192 in CCM mode, AES- | encryption algorithms used with AuthEnvelopedData in this document | |||
| 256 in CCM mode, AES-128 in GCM mode, AES-192 in GCM mode, and AES- | are AES-128 in CCM mode, AES-192 in CCM mode, AES-256 in CCM mode, | |||
| 256 in GCM mode. The object identifiers and parameters associated | AES-128 in GCM mode, AES-192 in GCM mode, and AES-256 in GCM mode. | |||
| with these algorithms are found in [CMS-AESCG]. | The object identifiers and parameters associated with these | |||
| algorithms are found in [CMS-AESCG]. | ||||
| 7.1.7. Message Authentication Code Algorithms | 7.1.7. Message Authentication Code Algorithms | |||
| Message authentication code algorithms are used in AuthenticatedData | Message authentication code algorithms are used in AuthenticatedData | |||
| and AuthEnvelopedData in the macAlgorithm field. The message | and AuthEnvelopedData in the macAlgorithm field. The message | |||
| authentication code algorithms used in this document are HMAC with | authentication code algorithms used in this document are HMAC with | |||
| SHA-1, HMAC with SHA-224, HMAC with SHA-1, HMAC with SHA-1, and HMAC | SHA-1, HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384, and | |||
| with SHA-1. The object identifiers and parameters associated with | HMAC with SHA-512. The object identifiers and parameters associated | |||
| these algorithms are found in [HMAC-SHA1] and [HMAC-SHA2]. | with these algorithms are found in [HMAC-SHA1] and [HMAC-SHA2]. | |||
| 7.2. Other Syntax | 7.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, | |||
| skipping to change at page 19, line 44 ¶ | skipping to change at page 21, line 20 ¶ | |||
| ECPoint ::= OCTET STRING | ECPoint ::= OCTET STRING | |||
| When using ECMQV with EnvelopedData, AuthenticatedData, and | When using ECMQV with EnvelopedData, AuthenticatedData, and | |||
| AuthEnvelopedData, the sending agent's ephemeral public key and | AuthEnvelopedData, the sending agent's ephemeral public key and | |||
| additional keying material are encoded using the type: | additional keying material are encoded using the type: | |||
| MQVuserKeyingMaterial ::= SEQUENCE { | MQVuserKeyingMaterial ::= SEQUENCE { | |||
| ephemeralPublicKey OriginatorPublicKey, | ephemeralPublicKey OriginatorPublicKey, | |||
| addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | |||
| The ECPoint syntax in used to represent the ephemeral public key and | The ECPoint syntax is used to represent the ephemeral public key and | |||
| placed in the ephemeralPublicKey field. The additional user keying | is placed in the ephemeralPublicKey.publicKey field. The additional | |||
| material is placed in the addedukm field. Then the | user keying material is placed in the addedukm field. Then the | |||
| MQVuserKeyingMaterial value is DER-encoded and placed within a ukm | MQVuserKeyingMaterial value is DER-encoded and placed within the ukm | |||
| field of EnvelopedData, AuthenticatedData, or AuthEnvelopedData. | field of EnvelopedData, AuthenticatedData, or AuthEnvelopedData. | |||
| When using ECDH or ECMQV with EnvelopedData, AuthenticatedData, or | When using ECDH or ECMQV with EnvelopedData, AuthenticatedData, or | |||
| AuthEnvelopedData, the key-encryption keys are derived by using the | AuthEnvelopedData, the key-encryption keys are derived by using the | |||
| type: | type: | |||
| ECC-CMS-SharedInfo ::= SEQUENCE { | ECC-CMS-SharedInfo ::= SEQUENCE { | |||
| keyInfo AlgorithmIdentifier, | keyInfo AlgorithmIdentifier, | |||
| entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL, | entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL, | |||
| suppPubInfo [2] EXPLICIT OCTET STRING } | suppPubInfo [2] EXPLICIT OCTET STRING } | |||
| skipping to change at page 20, line 42 ¶ | skipping to change at page 22, line 16 ¶ | |||
| the key derivation function, as specified in [SP800-56A]. | the key derivation function, as specified in [SP800-56A]. | |||
| 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 [SP800-56A] ensures | because the key derivation function specified in [SP800-56A] ensures | |||
| that sufficient keying data is provided. | that sufficient keying data is provided. | |||
| 8. Recommended Algorithms and Elliptic Curves | 8. Recommended Algorithms and Elliptic Curves | |||
| It is RECOMMEND that implementations of this specification support | It is RECOMMEND that implementations of this specification support | |||
| SignedData. Support for EnvelopedData and AuthenticatedData is | SignedData and EnvelopedData. Support for AuthenticatedData and | |||
| OPTIONAL. | AuthEnvelopedData is OPTIONAL. | |||
| In order to encourage interoperability, implementations SHOULD use | In order to encourage interoperability, implementations SHOULD use | |||
| the elliptic curve domain parameters specified by [PKI-ALG]. | the elliptic curve domain parameters specified by [PKI-ALG]. | |||
| Implementations that support SignedData with ECDSA: | Implementations that support SignedData with ECDSA: | |||
| - MUST support ECDSA with SHA-256. | - MUST support ECDSA with SHA-256; and, | |||
| - MAY support ECDSA with SHA-1, ECDSA with SHA-224, ECDSA with SHA- | - MAY support ECDSA with SHA-1, ECDSA with SHA-224, ECDSA with SHA- | |||
| 384, and ECDSA with SHA-512. | 384, and ECDSA with SHA-512. Other digital signature algorithms | |||
| MAY also be supported. | ||||
| When using ECDSA, it is RECOMMENDED that the P-224 curve be used with | When using ECDSA, it is RECOMMENDED that the P-224 curve be used with | |||
| SHA-224, the P-256 curve be used with SHA-256, the P-384 curve be | SHA-224, the P-256 curve be used with SHA-256, the P-384 curve be | |||
| used with SHA-384, and the P-521 curve be used with SHA-512. | used with SHA-384, and the P-521 curve be used with SHA-512. | |||
| If EnvelopedData is supported, then ephemeral-static ECDH standard | If EnvelopedData is supported, then ephemeral-static ECDH standard | |||
| primitive MUST be supported. | primitive MUST be supported. Support for ephemeral-static ECDH co- | |||
| factor is OPTIONAL and support for 1-Pass ECMQV is also OPTIONAL. | ||||
| Implementations that support EnvelopedData with the ephemeral-static | Implementations that support EnvelopedData with the ephemeral-static | |||
| ECDH standard primitive: | ECDH standard primitive: | |||
| - MUST support the dhSinglePass-stdDH-sha256kdf-scheme key | - MUST support the dhSinglePass-stdDH-sha256kdf-scheme key | |||
| agreement algorithm, the id-aes128-wrap key wrap algorithm, and | agreement algorithm, the id-aes128-wrap key wrap algorithm, and | |||
| the id-aes128-cbc content encryption algorithm | the id-aes128-cbc content encryption algorithm; and, | |||
| - MAY support the dhSinglePass-stdDH-sha1kdf-scheme, dhSinglePass- | - MAY support the dhSinglePass-stdDH-sha1kdf-scheme, dhSinglePass- | |||
| stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf-scheme and | stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf-scheme and | |||
| dhSinglePass-stdDH-sha512kdf-scheme key agreement algorithms, | dhSinglePass-stdDH-sha512kdf-scheme key agreement algorithms, | |||
| the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key | the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key | |||
| wrap algorithms and the id-aes192-cbc and id-aes256-cbc content | wrap algorithms and the des-ede3-cbc, id-aes192-cbc and id- | |||
| encryption algorithms. | aes256-cbc content encryption algorithms. Other algorithms MAY | |||
| also be supported. | ||||
| Implementations that support EnvelopedData with the ephemeral-static | Implementations that support EnvelopedData with the ephemeral-static | |||
| ECDH cofactor primitive: | ECDH cofactor primitive: | |||
| - MUST support the dhSinglePass-cofactorDH-sha256kdf-scheme key | - MUST support the dhSinglePass-cofactorDH-sha256kdf-scheme key | |||
| agreement algorithm, the id-aes128-wrap key wrap algorithm, and | agreement algorithm, the id-aes128-wrap key wrap algorithm, and | |||
| the id-aes128-cbc content encryption algorithm. | the id-aes128-cbc content encryption algorithm; and, | |||
| - MAY support the dhSinglePass-cofactorDH-sha1kdf-scheme, | - MAY support the dhSinglePass-cofactorDH-sha1kdf-scheme, | |||
| dhSinglePass-cofactorDH-sha224kdf-scheme, dhSinglePass- | dhSinglePass-cofactorDH-sha224kdf-scheme, dhSinglePass- | |||
| cofactorDH-sha384kdf-scheme, and dhSinglePass-cofactorDH- | cofactorDH-sha384kdf-scheme, and dhSinglePass-cofactorDH- | |||
| sha512kdf-scheme key agreement, the id-alg-CMS3DESwrap, id- | sha512kdf-scheme key agreement, the id-alg-CMS3DESwrap, id- | |||
| aes192-wrap, and id-aes256-wrap key wrap algorithms and the id- | aes192-wrap, and id-aes256-wrap key wrap algorithms and the des- | |||
| aes192-cbc and id-aes256-cbc content encryption algorithms. | ede3-cbc, id-aes192-cbc and id-aes256-cbc content encryption | |||
| algorithms. Other algorithms MAY also be supported. | ||||
| Implementations that support EnvelopedData with 1-Pass ECMQV: | Implementations that support EnvelopedData with 1-Pass ECMQV: | |||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement | - MUST support the mqvSinglePass-sha256kdf-scheme key agreement | |||
| algorithm, the id-aes128-wrap key wrap algorithm, and the id- | algorithm, the id-aes128-wrap key wrap algorithm, and the id- | |||
| aes128-cbc content encryption algorithm. | aes128-cbc content encryption algorithm; and, | |||
| - MAY support mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | - MAY support mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | |||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | |||
| mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | |||
| alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | |||
| algorithms and the id-aes192-cbc and id-aes256-cbc content | algorithms and the des-ede3-cbc, id-aes192-cbc and id-aes256-cbc | |||
| encryption algorithms. | content encryption algorithms. Other algorithms MAY also be | |||
| supported. | ||||
| Implementations that support AuthenticatedData with 1-Pass ECMQV: | Implementations that support AuthenticatedData with 1-Pass ECMQV: | |||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | |||
| the id-aes128-wrap key wrap, and the id-aes128-cbc content | the id-aes128-wrap key wrap, the id-sha256 message digest, and | |||
| encryption, the id-sha256 message digest, and id-hmacWithSHA256 | id-hmacWithSHA256 message authentication code algorithms; and, | |||
| message authentication code algorithms. | ||||
| - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | |||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, mqvSinglePass- | sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, mqvSinglePass- | |||
| sha512kdf-scheme key agreement algorithms, the id-alg- | sha512kdf-scheme key agreement algorithms, the id-alg- | |||
| CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | |||
| algorithms, the id-aes192-cbc and id-aes256-cbc content | algorithms, the id-sha1, id-sha224, id-sha384, and id-sha512, | |||
| encryption algorithms, the id-sha1, id-sha224, id-sha384, and | message digest algorithms, and the hmac-SHA1, id-hmacWithSHA224, | |||
| id-sha512, message digest algorithms, and the id-hmacWithSHA1, | id-hmacWithSHA384, id-hmacWithSHA512 message authentication code | |||
| id-hmacWithSHA224, id-hmacWithSHA384, id-hmacWithSHA512 message | algorithms. Other algorithms MAY also be supported. | |||
| authentication code algorithms. | ||||
| Implementations that support AuthEnvelopedData with 1-Pass ECMQV: | Implementations that support AuthEnvelopedData with 1-Pass ECMQV: | |||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | |||
| the id-aes128-wrap key wrap, the id-aes128-ccm authenticated- | the id-aes128-wrap key wrap, the id-aes128-ccm authenticated- | |||
| content encryption, the id-sha256 message digest, and the id- | content encryption, and the id-hmacWithSHA256 message | |||
| hmacWithSHA256 message authentication cod algorithms. | authentication code algorithms; and, | |||
| - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | |||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | |||
| mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | |||
| alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | |||
| algorithms, the id-aes192-ccm and id-aes256-ccm authenticated- | algorithms, the id-aes192-ccm and id-aes256-ccm authenticated- | |||
| content encryption algorithms, the id-sha1, id-sha224, id- | content encryption algorithms, and hmac-SHA1, id-hmacWithSHA224, | |||
| sha384, and id-sha512, message digest algorithms, and id- | id-hmacWithSHA384, id-hmacWithSHA512 message authentication code | |||
| hmacWithSHA1, id-hmacWithSHA224, id-hmacWithSHA384, id- | algorithms. Other algorithms MAY also be supported. | |||
| hmacWithSHA512 message authentication code algorithms. | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| Cryptographic algorithms will be broken or weakened over time. | Cryptographic algorithms will be broken or weakened over time. | |||
| Implementers and users need to check that the cryptographic | Implementers and users need to check that the cryptographic | |||
| algorithms listed in this document continue to provide the expected | algorithms listed in this document continue to provide the expected | |||
| level of security. The IETF from time to time may issue documents | level of security. The IETF from time to time may issue documents | |||
| dealing with the current state of the art. | dealing with the current state of the art. | |||
| Cryptographic algorithms rely on random number. See [RANDOM] for | Cryptographic algorithms rely on random number. See [RANDOM] for | |||
| guidance on generation of random numbers. | guidance on generation of random numbers. | |||
| Receiving agents that validate signatures and sending agents that | Receiving agents that validate signatures and sending agents that | |||
| encrypt messages, need to be cautious of cryptographic processing | encrypt messages need to be cautious of cryptographic processing | |||
| usage when validating signatures and encrypting messages using keys | usage when validating signatures and encrypting messages using keys | |||
| larger than those mandated in this specification. An attacker could | larger than those mandated in this specification. An attacker could | |||
| send certificates with keys which would result in excessive | send keys and/or certificates with keys which would result in | |||
| cryptographic processing, for example keys larger than those mandated | excessive cryptographic processing, for example keys larger than | |||
| in this specification, which could swamp the processing element. | those mandated in this specification, which could swamp the | |||
| Agents which use such keys without first validating the certificate | processing element. Agents which use such keys without first | |||
| to a trust anchor are advised to have some sort of cryptographic | validating the certificate to a trust anchor are advised to have some | |||
| resource management system to prevent such attacks. | sort of cryptographic resource management system to prevent such | |||
| attacks. | ||||
| Using secret keys of an appropriate size is crucial to the security | Using secret keys of an appropriate size is crucial to the security | |||
| of a Diffie-Hellman exchange. For elliptic curve groups, the size of | of a Diffie-Hellman exchange. For elliptic curve groups, the size of | |||
| the secret key must be equal to the size of n (the order of the group | the secret key must be equal to the size of n (the order of the group | |||
| generated by the point g). Using larger secret keys provides | generated by the point g). Using larger secret keys provides | |||
| absolutely no additional security, and using smaller secret keys is | absolutely no additional security, and using smaller secret keys is | |||
| likely to result in dramatically less security. (See [SP800-56A] for | likely to result in dramatically less security. (See [SP800-56A] for | |||
| more information on selecting secret keys.) | more information on selecting secret keys.) | |||
| This specification is based on [CMS], [CMS-AUTHENV], [CMS-ALG], | This specification is based on [CMS], [CMS-AES], [CMS-AESCG], [CMS- | |||
| [CMS-AESCG], [X9.62], [SEC1], and [SEC2] and the appropriate security | ALG], [CMS-AUTHENV], [CMS-DH], [CMS_SHA2], [FIPS180-3], [FIPS186-3], | |||
| [HMAC-SHA1], and [HMAC-SHA2], and the appropriate security | ||||
| considerations of those documents apply. | considerations of those documents apply. | |||
| In addition, implementors of AuthenticatedData should be aware of the | In addition, implementors of AuthenticatedData and AuthEnvelopedData | |||
| concerns expressed in [BON] when using AuthenticatedData to send | should be aware of the concerns expressed in [BON] when using | |||
| messages to more than one recipient. Also, users of MQV should be | AuthenticatedData and AuthEnvelopedData to send messages to more than | |||
| aware of the vulnerability in [K]. | one recipient. Also, users of MQV should be aware of the | |||
| vulnerability in [K]. | ||||
| When implementing EnvelopedData, AuthenticatedData, and | When implementing EnvelopedData, AuthenticatedData, and | |||
| AuthEnvelopedData, there are five algorithm related choices that need | AuthEnvelopedData, there are five algorithm related choices that need | |||
| to be made: | 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? | |||
| skipping to change at page 24, line 11 ¶ | skipping to change at page 26, line 9 ¶ | |||
| security. It is recommended that the bits of security provided by | security. It is recommended that the bits of security provided by | |||
| each are roughly equivalent. The following table provides comparable | each are roughly equivalent. The following table provides comparable | |||
| minimum bits of security [SP800-57] for the ECDH/ECMQV key sizes, | minimum bits of security [SP800-57] for the ECDH/ECMQV key sizes, | |||
| KDFs, key wrapping algorithms, and content encryption algorithms. It | KDFs, key wrapping algorithms, and content encryption algorithms. It | |||
| also lists curves [PKI-ALG] for the key sizes. | also lists curves [PKI-ALG] for the key sizes. | |||
| Minimum | ECDH or | Key | Key | Content | Curves | Minimum | ECDH or | Key | Key | Content | Curves | |||
| 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 | 160-223 | SHA1 | 3DES | 3DES CBC | sect163k1 | 80 | 160-223 | SHA-1 | 3DES | 3DES CBC | sect163k1 | |||
| | | SHA224 | AES-128 | AES-128 CBC | secp163r2 | | | SHA-224 | AES-128 | AES-128 CBC | secp163r2 | |||
| | | SHA256 | AES-192 | AES-192 CBC | secp192r1 | | | SHA-256 | AES-192 | AES-192 CBC | secp192r1 | |||
| | | SHA384 | AES-256 | AES-256 CBC | | | | SHA-384 | AES-256 | AES-256 CBC | | |||
| | | SHA512 | | | | | | SHA-512 | | | | |||
| ---------+----------+------------+----------+-------------+--------- | ---------+----------+------------+----------+-------------+--------- | |||
| 112 | 224-255 | SHA1 | 3DES | 3DES CBC | secp224r1 | 112 | 224-255 | SHA-1 | 3DES | 3DES CBC | secp224r1 | |||
| | | SHA224 | AES-128 | AES-128 CBC | sect233k1 | | | SHA-224 | AES-128 | AES-128 CBC | sect233k1 | |||
| | | SHA256 | AES-192 | AES-192 CBC | sect233r1 | | | SHA-256 | AES-192 | AES-192 CBC | sect233r1 | |||
| | | SHA384 | AES-256 | AES-256 CBC | | | | SHA-384 | AES-256 | AES-256 CBC | | |||
| | | SHA512 | | | | | | SHA-512 | | | | |||
| ---------+----------+------------+----------+-------------+--------- | ---------+----------+------------+----------+-------------+--------- | |||
| 128 | 256-383 | SHA1 | AES-128 | AES-128 CBC | secp256r1 | 128 | 256-383 | SHA-1 | AES-128 | AES-128 CBC | secp256r1 | |||
| | | SHA224 | AES-192 | AES-192 CBC | sect283k1 | | | SHA-224 | AES-192 | AES-192 CBC | sect283k1 | |||
| | | SHA256 | AES-256 | AES-256 CBC | sect283r1 | | | SHA-256 | AES-256 | AES-256 CBC | sect283r1 | |||
| | | SHA384 | | | | | | SHA-384 | | | | |||
| | | SHA512 | | | | | | SHA-512 | | | | |||
| ---------+----------+------------+----------+-------------+--------- | ---------+----------+------------+----------+-------------+--------- | |||
| 192 | 384-511 | SHA224 | AES-192 | AES-192 CBC | secp384r1 | 192 | 384-511 | SHA-224 | AES-192 | AES-192 CBC | secp384r1 | |||
| | | SHA256 | AES-256 | AES-256 CBC | sect409k1 | | | SHA-256 | AES-256 | AES-256 CBC | sect409k1 | |||
| | | SHA384 | | | sect409r1 | | | SHA-384 | | | sect409r1 | |||
| | | SHA512 | | | | | | SHA-512 | | | | |||
| ---------+----------+------------+----------+-------------+--------- | ---------+----------+------------+----------+-------------+--------- | |||
| 256 | 512+ | SHA256 | AES-256 | AES-256 CBC | secp521r1 | 256 | 512+ | SHA-256 | AES-256 | AES-256 CBC | secp521r1 | |||
| | | SHA384 | | | sect571k1 | | | SHA-384 | | | sect571k1 | |||
| | | SHA512 | | | sect571r1 | | | SHA-512 | | | sect571r1 | |||
| ---------+----------+------------+----------+-------------+--------- | ---------+----------+------------+----------+-------------+--------- | |||
| To promote interoperability, the following choices are RECOMMENDED: | 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 | SHA-256 | 3DES | 3DES CBC | secp192r1 | |||
| ---------+----------+------------+----------+-------------+---------- | ---------+----------+------------+----------+-------------+---------- | |||
| 112 | 224 | SHA256 | 3DES | 3DES CBC | secp224r1 | 112 | 224 | SHA-256 | 3DES | 3DES CBC | secp224r1 | |||
| ---------+----------+------------+----------+-------------+---------- | ---------+----------+------------+----------+-------------+---------- | |||
| 128 | 256 | SHA256 | AES-128 | AES-128 CBC | secp256r1 | 128 | 256 | SHA-256 | AES-128 | AES-128 CBC | secp256r1 | |||
| ---------+----------+------------+----------+-------------+---------- | ---------+----------+------------+----------+-------------+---------- | |||
| 192 | 384 | SHA384 | AES-256 | AES-256 CBC | secp384r1 | 192 | 384 | SHA-384 | AES-256 | AES-256 CBC | secp384r1 | |||
| ---------+----------+------------+----------+-------------+---------- | ---------+----------+------------+----------+-------------+---------- | |||
| 256 | 512 | SHA512 | AES-256 | AES-256 CBC | secp521r1 | 256 | 512 | SHA-512 | AES-256 | AES-256 CBC | secp521r1 | |||
| ---------+----------+------------+----------+-------------+---------- | ---------+----------+------------+----------+-------------+---------- | |||
| When implementing SignedData, there are three algorithm related | When implementing SignedData, there are three algorithm related | |||
| choices that need to be made: | choices that need to be made: | |||
| 1) What is the public key size? | 1) What is the public key size? | |||
| 2) What is the hash algorithm? | 2) What is the hash algorithm? | |||
| 3) What is the curve? | 3) What is the curve? | |||
| Consideration must be given to the bits of security provided by each | Consideration must be given to the bits of security provided by each | |||
| skipping to change at page 26, line 9 ¶ | skipping to change at page 28, line 9 ¶ | |||
| security. It is recommended that the bits of security provided by | security. It is recommended that the bits of security provided by | |||
| each choice are roughly equivalent. The following table provides | each choice are roughly equivalent. The following table provides | |||
| comparable minimum bits of security [SP800-57] for the ECDSA key | comparable minimum bits of security [SP800-57] for the ECDSA key | |||
| sizes and message digest algorithms. It also lists curves [PKI-ALG] | sizes and message digest algorithms. It also lists curves [PKI-ALG] | |||
| for the key sizes. | for the key sizes. | |||
| Minimum | ECDSA | Message | Curve | Minimum | ECDSA | Message | Curve | |||
| Bits of | Key Size | Digest | | Bits of | Key Size | Digest | | |||
| Security | | Algorithm | | Security | | Algorithm | | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 80 | 160-223 | SHA1 | sect163k1 | 80 | 160-223 | SHA-1 | sect163k1 | |||
| | | SHA224 | secp163r2 | | | SHA-224 | secp163r2 | |||
| | | SHA256 | secp192r1 | | | SHA-256 | secp192r1 | |||
| | | SHA384 | | | | SHA-384 | | |||
| | | SHA512 | | | | SHA-512 | | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 112 | 224-255 | SHA224 | secp224r1 | 112 | 224-255 | SHA-224 | secp224r1 | |||
| | | SHA256 | sect233k1 | | | SHA-256 | sect233k1 | |||
| | | SHA384 | sect233r1 | | | SHA-384 | sect233r1 | |||
| | | SHA512 | | | | SHA-512 | | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 128 | 256-383 | SHA256 | secp256r1 | 128 | 256-383 | SHA-256 | secp256r1 | |||
| | | SHA384 | sect283k1 | | | SHA-384 | sect283k1 | |||
| | | SHA512 | sect283r1 | | | SHA-512 | sect283r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 192 | 384-511 | SHA384 | secp384r1 | 192 | 384-511 | SHA-384 | secp384r1 | |||
| | | SHA512 | sect409k1 | | | SHA-512 | sect409k1 | |||
| | | | sect409r1 | | | | sect409r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 256 | 512+ | SHA512 | secp521r1 | 256 | 512+ | SHA-512 | secp521r1 | |||
| | | | sect571k1 | | | | sect571k1 | |||
| | | | sect571r1 | | | | sect571r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| To promote interoperability, the following choices are RECOMMENDED: | To promote interoperability, the following choices are RECOMMENDED: | |||
| Minimum | ECDSA | Message | Curve | Minimum | ECDSA | Message | Curve | |||
| Bits of | Key Size | Digest | | Bits of | Key Size | Digest | | |||
| Security | | Algorithm | | Security | | Algorithm | | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 80 | 192 | SHA256 | sect192r1 | 80 | 192 | SHA-256 | sect192r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 112 | 224 | SHA256 | secp224r1 | 112 | 224 | SHA-256 | secp224r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 128 | 256 | SHA256 | secp256r1 | 128 | 256 | SHA-256 | secp256r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 192 | 384 | SHA384 | secp384r1 | 192 | 384 | SHA-384 | secp384r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 256 | 512+ | SHA512 | secp521r1 | 256 | 512+ | SHA-512 | secp521r1 | |||
| ---------+----------+-----------+----------- | ---------+----------+-----------+----------- | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| None. | This document makes extensive use of object identifiers to register | |||
| originator public key types and algorithms. The algorithms object | ||||
| identifiers are registered in the ANSI X9.62, ANSI X9.63, NIST, RSA, | ||||
| and SECG arcs. Additionally, object identifiers are used to identify | ||||
| the ASN.1 modules found in Appendix A. These are defined in an arc | ||||
| delegated by IANA to the SMIME Working Group. No further action by | ||||
| IANA is necessary for this document or any anticipated updates. | ||||
| 11. References | 11. References | |||
| 11.1. Normative | 11.1. Normative | |||
| [CMS] Housley, R., "Cryptographic Message Syntax", RFC | [CMS] Housley, R., "Cryptographic Message Syntax", RFC | |||
| 3852, July 2004. | 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 | Encryption in the Cryptographic Message Syntax | |||
| (CMS)", 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-ASN] Hoffman, P., and J. Schaad, "New ASN.1 Modules for | ||||
| CMS", draft-ietf-smime-new-asn1, work-in-progress. | ||||
| [CMS-AUTHENV] Housley, R. "Cryptographic Message Syntax (CMS) | [CMS-AUTHENV] Housley, R. "Cryptographic Message Syntax (CMS) | |||
| Authenticated-Enveloped-Data Content Type", RFC 5083, | Authenticated-Enveloped-Data Content Type", RFC 5083, | |||
| November 2007. | 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. | |||
| [CMS-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic | ||||
| Message Syntax", work-in-progress. | ||||
| [FIPS180-3] National Institute of Standards and Technology | [FIPS180-3] National Institute of Standards and Technology | |||
| (NIST), FIPS Publication 180-3: Secure Hash Standard, | (NIST), FIPS Publication 180-3: Secure Hash Standard, | |||
| June 2003. | (draft) June 2003. | |||
| [FIPS186-3] National Institute of Standards and Technology | [FIPS186-3] National Institute of Standards and Technology | |||
| (NIST), FIPS Publication 186-3: Digital Signature | (NIST), FIPS Publication 186-3: Digital Signature | |||
| Standard, March 2006. | Standard, (draft) March 2006. | |||
| [HMAC-SHA1] Krawczyk, M., Bellare, M., and R. Canetti, "HMAC: | [HMAC-SHA1] Krawczyk, M., Bellare, M., and R. Canetti, "HMAC: | |||
| Keyed-Hashing for Message Authentication", RFC 2104, | Keyed-Hashing for Message Authentication", RFC 2104, | |||
| February 1997. | February 1997. | |||
| [HMAC-SHA2] Nystrom, M., "Identifiers and Test Vectors for HMAC- | [HMAC-SHA2] Nystrom, M., "Identifiers and Test Vectors for HMAC- | |||
| SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA- | SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA- | |||
| 512", RFC 4231, December 2005. | 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 | |||
| skipping to change at page 28, line 22 ¶ | skipping to change at page 30, line 30 ¶ | |||
| [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. | |||
| [PKI-ALG] Turner, S., Brown, D., Yiu, K., Housley, R., and W. | [PKI-ALG] Turner, S., Brown, D., Yiu, K., Housley, R., and W. | |||
| Polk, "Elliptic Curve Cryptography Subject Public Key | Polk, "Elliptic Curve Cryptography Subject Public Key | |||
| Information", draft-ietf-pkix-ecc-subpubkeyinfo, | Information", draft-ietf-pkix-ecc-subpubkeyinfo, | |||
| work-in-progress. | work-in-progress. | |||
| [PKI-ASN] Hoffman, P., and J. Schaad, "New ASN.1 Modules for | ||||
| PKIX", draft-ietf-pkix-new-asn1, work-in-progress. | ||||
| [RANDOM] Eastlake 3rd, D., Crocker, S., and J. Schiller, | [RANDOM] Eastlake 3rd, D., Crocker, S., and J. Schiller, | |||
| "Randomness Recommendations for Security", RFC 4086, | "Randomness Recommendations for Security", RFC 4086, | |||
| June 2005. | June 2005. | |||
| [RSAOAEP] Schaad, J., Kaliski, B., and R. Housley, "Additional | [RSAOAEP] Schaad, J., Kaliski, B., and R. Housley, "Additional | |||
| Algorithms and Identifiers for RSA Cryptography for | Algorithms and Identifiers for RSA Cryptography for | |||
| use in the Internet X.509 Public Key Infrastructure | use in the Internet X.509 Public Key Infrastructure | |||
| Certificate and Certificate Revocation List (CRL) | Certificate and Certificate Revocation List (CRL) | |||
| Profile", RFC 4055, June 2005. | Profile", RFC 4055, June 2005. | |||
| [SEC1] SECG, "Elliptic Curve Cryptography", Standards for | ||||
| Efficient Cryptography Group, 2000. Available from | ||||
| www.secg.org/collateral/sec1.pdf. | ||||
| [SEC2] SECG, "Recommended Elliptic Curve Domain Parameters", | ||||
| Standards for Efficient Cryptography Group, 2000. | ||||
| Available from www.secg.org/collateral/sec2.pdf. | ||||
| [SMIME-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic | ||||
| Message Syntax", work-in-progress. | ||||
| [SP800-56A] National Institute of Standards and Technology | [SP800-56A] National Institute of Standards and Technology | |||
| (NIST), Special Publication 800-56A: Recommendation | (NIST), Special Publication 800-56A: Recommendation | |||
| Pair-Wise Key Establishment Schemes Using Discrete | Pair-Wise Key Establishment Schemes Using Discrete | |||
| Logarithm Cryptography (Revised), March 2007. | Logarithm Cryptography (Revised), March 2007. | |||
| [X9.62] American National Standards Institute (ANSI), ANS | ||||
| X9.62-2005: The Elliptic Curve Digital Signature | ||||
| Algorithm (ECDSA), 2005. | ||||
| [X.208] ITU-T Recommendation X.208 (1988) | ISO/IEC 8824- | [X.208] ITU-T Recommendation X.208 (1988) | ISO/IEC 8824- | |||
| 1:1988. Specification of Abstract Syntax Notation One | 1:1988. Specification of Abstract Syntax Notation One | |||
| (ASN.1). | (ASN.1). | |||
| [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | ||||
| 1 :2002. Information Technology - Abstract Syntax | ||||
| Notation One. | ||||
| [X.681] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | ||||
| 2 :2002. Information Technology - Abstract Syntax | ||||
| Notation One: Information Object Specification. | ||||
| [X.682] ITU-T Recommendation X.682 (2002) | ISO/IEC 8824- | ||||
| 3 :2002. Information Technology - Abstract Syntax | ||||
| Notation One: Constraint Specification. | ||||
| [X.683] ITU-T Recommendation X.683 (2002) | ISO/IEC 8824- | ||||
| 4:2002. Information Technology - Abstract Syntax | ||||
| Notation One: Parameterization of ASN.1 | ||||
| Specifications, 2002. | ||||
| 11.2. Informative | 11.2. Informative | |||
| [BON] D. Boneh, "The Security of Multicast MAC", | [BON] D. Boneh, "The Security of Multicast MAC", | |||
| Presentation at Selected Areas of Cryptography 2000, | Presentation at Selected Areas of Cryptography 2000, | |||
| Center for Applied Cryptographic Research, University | Center for Applied Cryptographic Research, University | |||
| of Waterloo, 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 | |||
| [CERTCAP] Santesson, S., "X.509 Certificate Extension for | ||||
| Secure/Multipurpose Internet Mail Extensions (S/MIME) | ||||
| Capabilities", RFC 4262, December 2005. | ||||
| [CMS-ECC] Blake-Wilson, S., Brown, D., and P. Lambert, "Use of | ||||
| Elliptic Curve Cryptography (ECC) Algorithms in | ||||
| Cryptographic Message Syntax (CMS)", RFC 3278, April | ||||
| 2002. | ||||
| [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. | |||
| [CMS-ASN] Hoffman, P., and J. Schaad, "New ASN.1 Modules for | ||||
| CMS", draft-ietf-smime-new-asn1, work-in-progress. | ||||
| [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. | |||
| [PKI-ASN] Hoffman, P., and J. Schaad, "New ASN.1 Modules for | ||||
| PKIX", draft-ietf-pkix-new-asn1, work-in-progress. | ||||
| [SP800-57] National Institute of Standards and Technology | [SP800-57] National Institute of Standards and Technology | |||
| (NIST), Special Publication 800-57: Recommendation | (NIST), Special Publication 800-57: Recommendation | |||
| for Key Management, August 2005. | for Key Management - Part 1 (Revised), March 2007. | |||
| [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | ||||
| 1 :2002. Information Technology - Abstract Syntax | ||||
| Notation One. | ||||
| [X.681] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | ||||
| 2 :2002. Information Technology - Abstract Syntax | ||||
| Notation One: Information Object Specification. | ||||
| [X.682] ITU-T Recommendation X.682 (2002) | ISO/IEC 8824- | ||||
| 3 :2002. Information Technology - Abstract Syntax | ||||
| Notation One: Constraint Specification. | ||||
| [X.683] ITU-T Recommendation X.683 (2002) | ISO/IEC 8824- | ||||
| 4:2002. Information Technology - Abstract Syntax | ||||
| Notation One: Parameterization of ASN.1 | ||||
| Specifications, 2002. | ||||
| Appendix A ASN.1 Modules | 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], and [X.683]. This appendix contains the | |||
| information as Appendix A.1 in a more recent (and precise) ASN.1 | same 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. | |||
| Appendix A.1 1988 ASN.1 Module | Appendix A.1 1988 ASN.1 Module | |||
| SMIMEECCAlgs-1988 | SMIMEECCAlgs-1988 | |||
| { 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) TBA } | |||
| DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS IMPLICIT TAGS ::= | |||
| BEGIN | BEGIN | |||
| -- EXPORTS ALL | -- EXPORTS ALL | |||
| IMPORTS | IMPORTS | |||
| -- From [PKI] | -- From [PKI] | |||
| AlgorithmIdentifier | AlgorithmIdentifier | |||
| skipping to change at page 31, line 10 ¶ | skipping to change at page 34, line 10 ¶ | |||
| FROM PKIX1-PSS-OAEP-Algorithms | FROM PKIX1-PSS-OAEP-Algorithms | |||
| { 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) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| id-mod-pkix1-rsa-pkalgs(33) } | id-mod-pkix1-rsa-pkalgs(33) } | |||
| -- From [PKI-ALG] | -- From [PKI-ALG] | |||
| id-sha1, ecdsa-with-SHA1, ecdsa-with-SHA224, | id-sha1, ecdsa-with-SHA1, ecdsa-with-SHA224, | |||
| ecdsa-with-SHA256, ecdsa-with-SHA384, ecdsa-with-SHA512, | ecdsa-with-SHA256, ecdsa-with-SHA384, ecdsa-with-SHA512, | |||
| id-ecPublicKey, ECDSA-Sig-Value, ECPoint | id-ecPublicKey, ECDSA-Sig-Value, ECPoint | |||
| FROM PKIXAlgs-1988 | 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) TBA } | |||
| -- 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) | |||
| smime(16) modules(0) cms-2004(24) } | smime(16) modules(0) cms-2004(24) } | |||
| -- From [CMS-ALG] | -- From [CMS-ALG] | |||
| skipping to change at page 31, line 45 ¶ | skipping to change at page 35, line 4 ¶ | |||
| -- 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) } | |||
| ; | ; | |||
| -- | -- | |||
| -- ECDSA with SHA-2 Algorithms | -- ECDSA with SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 | |||
| -- Algorithms. | ||||
| -- | -- | |||
| -- ecdsa-with-SHA1 Parameters are NULL | -- ecdsa-with-SHA1 Parameters are NULL | |||
| -- ecdsa-with-SHA224 Parameters are ABSENT | -- ecdsa-with-SHA224 Parameters are absent | |||
| -- ecdsa-with-SHA256 Parameters are absent | ||||
| -- ecdsa-with-SHA256 Parameters are ABSENT | -- ecdsa-with-SHA384 Parameters are absent | |||
| -- ecdsa-with-SHA384 Parameters are ABSENT | ||||
| -- ecdsa-with-SHA512 Parameters are absent | -- ecdsa-with-SHA512 Parameters are absent | |||
| -- 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 | |||
| -- } | -- } | |||
| skipping to change at page 34, line 12 ¶ | skipping to change at page 37, line 12 ¶ | |||
| mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 3 } | secg-scheme 15 3 } | |||
| -- | -- | |||
| -- Key Wrap Algorithms | -- Key Wrap Algorithms | |||
| -- | -- | |||
| KeyWrapAlgorithm ::= AlgorithmIdentifier | KeyWrapAlgorithm ::= AlgorithmIdentifier | |||
| -- id-alg-CMS3DESwrap Parameters are NULL | -- id-alg-CMS3DESwrap Parameters are NULL | |||
| -- id-aes128-wrap Parameters are ABSENT | -- id-aes128-wrap Parameters are absent | |||
| -- id-aes192-wrap Parameters are ABSENT | -- id-aes192-wrap Parameters are absent | |||
| -- id-aes256-wrap Parameters are ABSENT | -- id-aes256-wrap Parameters are absent | |||
| -- | -- | |||
| -- Content Encryption Algorithms | -- Content Encryption Algorithms | |||
| -- | -- | |||
| -- des-ede3-cbc Parameters are CBCParameter | -- des-ede3-cbc Parameters are CBCParameter | |||
| -- id-aes128-CBC Parameters are AES-IV | -- id-aes128-CBC Parameters are AES-IV | |||
| -- id-aes192-CBC Parameters are AES-IV | -- id-aes192-CBC Parameters are AES-IV | |||
| -- id-aes256-CBC Parameters are AES-IV | -- id-aes256-CBC Parameters are AES-IV | |||
| -- id-aes128-CCM Parameters are CCMParameters | -- id-aes128-CCM Parameters are CCMParameters | |||
| -- id-aes192-CCM Parameters are CCMParameters | -- id-aes192-CCM Parameters are CCMParameters | |||
| -- id-aes256-CCM Parameters are CCMParameters | -- id-aes256-CCM Parameters are CCMParameters | |||
| -- id-aes128-GCM Parameters are GCMParameters | -- id-aes128-GCM Parameters are GCMParameters | |||
| -- id-aes192-GCM Parameters are GCMParameters | -- id-aes192-GCM Parameters are GCMParameters | |||
| -- id-aes256-GCM Parameters are GCMParameters | -- id-aes256-GCM Parameters are GCMParameters | |||
| -- | -- | |||
| -- Message Digest Algorithms | -- Message Digest Algorithms | |||
| -- | -- | |||
| -- HMAC with SHA-1 | ||||
| -- Parameters SHOULD be absent, MAY be NULL | ||||
| -- hMAC-SHA1 | ||||
| -- HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384, | -- HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384, | |||
| -- HMAC with SHA-512 are specified in [HMAC-SHA2] | -- and HMAC with SHA-512 | |||
| -- Parameters are ABSENT | ||||
| -- hMACWithSHA1 | -- Parameters are absent | |||
| id-hmacWithSHA224 OBJECT IDENTIFIER ::= { | id-hmacWithSHA224 OBJECT IDENTIFIER ::= { | |||
| iso(1) member-body(2) us(840) rsadsi(113549) | iso(1) member-body(2) us(840) rsadsi(113549) | |||
| digestAlgorithm(2) 8 } | digestAlgorithm(2) 8 } | |||
| id-hmacWithSHA256 OBJECT IDENTIFIER ::= { | id-hmacWithSHA256 OBJECT IDENTIFIER ::= { | |||
| iso(1) member-body(2) us(840) rsadsi(113549) | iso(1) member-body(2) us(840) rsadsi(113549) | |||
| digestAlgorithm(2) 9 } | digestAlgorithm(2) 9 } | |||
| id-hmacWithSHA384 OBJECT IDENTIFIER ::= { | id-hmacWithSHA384 OBJECT IDENTIFIER ::= { | |||
| skipping to change at page 35, line 13 ¶ | skipping to change at page 38, line 21 ¶ | |||
| digestAlgorithm(2) 10 } | digestAlgorithm(2) 10 } | |||
| 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 | -- Originator Public Key Algorithms | |||
| -- | -- | |||
| -- id-ecPublicKey Parameters are NULL | -- id-ecPublicKey Parameters are absent, NULL, or ECParameters | |||
| -- Format for both ephemeral and static public keys | -- Format for both ephemeral and static public keys | |||
| -- 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, | |||
| skipping to change at page 35, line 35 ¶ | skipping to change at page 39, line 4 ¶ | |||
| } | } | |||
| -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | |||
| -- EnvelopedData, AuthenticatedData, or AuthEnvelopedData | -- EnvelopedData, AuthenticatedData, or AuthEnvelopedData | |||
| ECC-CMS-SharedInfo ::= SEQUENCE { | ECC-CMS-SharedInfo ::= SEQUENCE { | |||
| keyInfo AlgorithmIdentifier, | keyInfo AlgorithmIdentifier, | |||
| 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 | -- S/MIME Capabilities | |||
| -- | -- | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECDSA with SHA1 and SHA2 Algorithms | -- S/MIME Capabilities: ECDSA with SHA-1, SHA-224, SHA-256, SHA-384, | |||
| -- and SHA-512 Algorithms | ||||
| -- | -- | |||
| -- ecdsa-with-SHA1 Type NULL | -- ecdsa-with-SHA1 Type NULL | |||
| -- ecdsa-with-SHA224 Type NULL | -- ecdsa-with-SHA224 Type NULL | |||
| -- ecdsa-with-SHA256 Type NULL | -- ecdsa-with-SHA256 Type NULL | |||
| -- ecdsa-with-SHA384 Type NULL | -- ecdsa-with-SHA384 Type NULL | |||
| -- ecdsa-with-SHA512 Type NULL | -- ecdsa-with-SHA512 Type NULL | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECDH, Single Pass, Standard | -- S/MIME Capabilities: ECDH, Single Pass, Standard | |||
| -- | -- | |||
| -- dhSinglePass-stdDH-sha1kdf Type is the KeyWrapAlgorithm | -- dhSinglePass-stdDH-sha1kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha224kdf Type is the KeyWrapAlgorithm | -- dhSinglePass-stdDH-sha224kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha256kdf Type is the KeyWrapAlgorithm | -- dhSinglePass-stdDH-sha256kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha384kdf Type is the KeyWrapAlgorithm | -- dhSinglePass-stdDH-sha384kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha512kdf Type is the KeyWrapAlgorithm | -- dhSinglePass-stdDH-sha512kdf Type is the KeyWrapAlgorithm | |||
| skipping to change at page 37, line 9 ¶ | skipping to change at page 40, line 9 ¶ | |||
| -- mqvSinglePass-sha256kdf Type is the KeyWrapAlgorithm | -- mqvSinglePass-sha256kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha384kdf Type is the KeyWrapAlgorithm | -- mqvSinglePass-sha384kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha512kdf Type is the KeyWrapAlgorithm | -- mqvSinglePass-sha512kdf Type is the KeyWrapAlgorithm | |||
| END | END | |||
| Appendix A.2 2004 ASN.1 Module | 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) TBA } | |||
| DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS IMPLICIT TAGS ::= | |||
| BEGIN | BEGIN | |||
| -- EXPORTS ALL | -- EXPORTS ALL | |||
| IMPORTS | IMPORTS | |||
| -- FROM [PKI-ASN] | -- FROM [PKI-ASN] | |||
| KEY-WRAP, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, ALGORITHM, | KEY-WRAP, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, ALGORITHM, | |||
| PUBLIC-KEY, MAC-ALGORITHM, CONTENT-ENCRYPTION, KEY-AGREE | PUBLIC-KEY, MAC-ALGORITHM, CONTENT-ENCRYPTION, KEY-AGREE | |||
| FROM AlgorithmInformation | FROM AlgorithmInformation | |||
| { 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) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| id-mod-algorithInformation(TBD)} | id-mod-algorithInformation(TBA) } | |||
| -- From [PKI-ASN] | -- From [PKI-ALG] | |||
| id-ecPublicKey, ECDSA-Sig-Value, ECPoint | ||||
| FROM PKIXAlgIDs-2008 | ||||
| { iso(1) identified-organization(3) dod(6) internet(1) | ||||
| security(5) mechanisms(5) pkix(7) id-mod(0) TBA } | ||||
| -- From [PKI-ALG] | ||||
| mda-sha1, sa-ecdsaWithSHA1, sa-ecdsaWithSHA224, sa-ecdsaWithSHA256, | mda-sha1, sa-ecdsaWithSHA1, sa-ecdsaWithSHA224, sa-ecdsaWithSHA256, | |||
| sa-ecdsaWithSHA384, sa-ecdsaWithSHA512, id-ecPublicKey, | sa-ecdsaWithSHA384, sa-ecdsaWithSHA512, ECParameters | |||
| ECDSA-Sig-Value, ECPoint | ||||
| 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) TBA } | |||
| -- From [PKI-ASN] | -- From [PKI-ASN] | |||
| mda-sha224, mda-sha256, mda-sha384, mda-sha512 | mda-sha224, mda-sha256, mda-sha384, mda-sha512 | |||
| FROM PKIX1-PSS-OAEP-Algorithms | FROM PKIX1-PSS-OAEP-Algorithms | |||
| { 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) TBA } | |||
| -- 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) | |||
| smime(16) modules(0) cms-2004(24) } | smime(16) modules(0) cms-2004(24) } | |||
| -- From [CMS-ASN] | -- From [CMS-ASN] | |||
| skipping to change at page 39, line 11 ¶ | skipping to change at page 42, line 11 ¶ | |||
| -- mda-sha512, | -- mda-sha512, | |||
| -- ... -- Extensible | -- ... -- Extensible | |||
| -- } | -- } | |||
| -- Constrains the SignedData SignerInfo signatureAlgorithm field | -- Constrains the SignedData SignerInfo signatureAlgorithm field | |||
| -- SignatureAlgorithms SIGNATURE-ALGORITHM ::= { | -- SignatureAlgorithms SIGNATURE-ALGORITHM ::= { | |||
| -- sa-ecdsaWithSHA1 | | -- sa-ecdsaWithSHA1 | | |||
| -- sa-ecdsaWithSHA224 | | -- sa-ecdsaWithSHA224 | | |||
| -- sa-ecdsaWithSHA256 | | -- sa-ecdsaWithSHA256 | | |||
| -- sa-ecdsaWithSHA384 | | -- sa-ecdsaWithSHA384 | | |||
| -- sa-ecdsaWithSHA512 , | -- sa-ecdsaWithSHA512, | |||
| -- ... -- Extensible | -- ... -- Extensible | |||
| -- } | -- } | |||
| -- 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 | -- 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 | |||
| skipping to change at page 45, line 4 ¶ | skipping to change at page 47, line 43 ¶ | |||
| -- 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 | -- des-ede3-cbc and aes*-cbc are used with EnvelopedData and | |||
| -- EncryptedData | -- EncryptedData | |||
| -- aes*-ccm are used with AuthEnvelopedData | -- aes*-ccm are used with AuthEnvelopedData | |||
| -- aes*-gcm are used with AuthEnvelopedData | -- aes*-gcm are used with AuthEnvelopedData | |||
| -- (where * is 128, 192, and 256) | ||||
| -- | -- | |||
| -- Message Digest Algorithms | -- Message Digest Algorithms | |||
| -- | -- | |||
| -- HMAC with SHA-224, HMAC with SHA-256, HMAC with SHA-384, | ||||
| -- HMAC with SHA-512 are specified in [HMAC-SHA2] | ||||
| -- Constrains the AuthenticatedData | -- Constrains the AuthenticatedData | |||
| -- MessageAuthenticationCodeAlgorithm field | -- MessageAuthenticationCodeAlgorithm field | |||
| -- Constrains the AuthEnvelopedData | -- Constrains the AuthEnvelopedData | |||
| -- MessageAuthenticationCodeAlgorithm field | -- MessageAuthenticationCodeAlgorithm field | |||
| MessageAuthenticationCodeAlgorithms MAC-ALGORITHM ::= { | MessageAuthenticationCodeAlgorithms MAC-ALGORITHM ::= { | |||
| maca-sha1 | | maca-sha1 | | |||
| maca-sha224 | | maca-sha224 | | |||
| maca-sha256 | | maca-sha256 | | |||
| maca-sha384 | | maca-sha384 | | |||
| maca-sha512, | maca-sha512, | |||
| ... -- Extensible | ... -- Extensible | |||
| } | } | |||
| -- Would love to import the HMAC224-512 OIDS but they're not in a | ||||
| -- module (that I could find) | ||||
| maca-sha224 MAC-ALGORITHM ::= { | maca-sha224 MAC-ALGORITHM ::= { | |||
| IDENTIFIER id-hmacWithSHA224 | IDENTIFIER id-hmacWithSHA224 | |||
| PARAMS TYPE NULL ARE preferredPresent | PARAMS TYPE NULL ARE preferredPresent | |||
| } | } | |||
| id-hmacWithSHA224 OBJECT IDENTIFIER ::= { | id-hmacWithSHA224 OBJECT IDENTIFIER ::= { | |||
| iso(1) member-body(2) us(840) rsadsi(113549) | iso(1) member-body(2) us(840) rsadsi(113549) | |||
| digestAlgorithm(2) 8 } | digestAlgorithm(2) 8 } | |||
| maca-sha256 MAC-ALGORITHM ::= { | maca-sha256 MAC-ALGORITHM ::= { | |||
| skipping to change at page 46, line 40 ¶ | skipping to change at page 49, line 31 ¶ | |||
| -- PARAMS are NULL | -- PARAMS are NULL | |||
| OriginatorPKAlgorithms PUBLIC-KEY ::= { | OriginatorPKAlgorithms PUBLIC-KEY ::= { | |||
| opka-ec, | opka-ec, | |||
| ... -- Extensible | ... -- Extensible | |||
| } | } | |||
| opka-ec PUBLIC-KEY ::={ | opka-ec PUBLIC-KEY ::={ | |||
| IDENTIFIER id-ecPublicKey | IDENTIFIER id-ecPublicKey | |||
| KEY ECPoint | KEY ECPoint | |||
| PARAMS TYPE CHOICE { n NULL, p ECPoint } ARE preferredAbsent | PARAMS TYPE CHOICE { n NULL, p ECParameters } ARE preferredAbsent | |||
| } | } | |||
| -- Format for both ephemeral and static public keys | -- Format for both ephemeral and static public keys | |||
| -- 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 | |||
| } | } | |||
| -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | |||
| -- EnvelopedData, AuthenticatedData, or AuthEnvelopedData | -- EnvelopedData, AuthenticatedData, or AuthEnvelopedData | |||
| ECC-CMS-SharedInfo ::= SEQUENCE { | ECC-CMS-SharedInfo ::= SEQUENCE { | |||
| keyInfo AlgorithmIdentifier { KeyWrapAlgorithm }, | keyInfo AlgorithmIdentifier { KeyWrapAlgorithm }, | |||
| entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL, | entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL, | |||
| suppPubInfo [2] EXPLICIT OCTET STRING | suppPubInfo [2] EXPLICIT OCTET STRING | |||
| } | } | |||
| -- | -- | |||
| skipping to change at page 48, line 29 ¶ | skipping to change at page 51, line 29 ¶ | |||
| 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 | -- S/MIME Capabilities: ECDSA with SHA-1, SHA-224, SHA-256, SHA-384, | |||
| -- and SHA-512 Algorithms | ||||
| -- | -- | |||
| cap-ecdsa-with-SHA1 SMIME-CAPS ::= { | cap-ecdsa-with-SHA1 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA1.&id } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA1.&id } | |||
| cap-ecdsa-with-SHA224 SMIME-CAPS ::= { | cap-ecdsa-with-SHA224 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA224.&id } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA224.&id } | |||
| cap-ecdsa-with-SHA256 SMIME-CAPS ::= { | cap-ecdsa-with-SHA256 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA256.&id } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA256.&id } | |||
| skipping to change at page 51, line 14 ¶ | skipping to change at page 54, 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 and Paul Lambert. Without the initial version of RFC3278 this | Wilson and Paul Lambert. Without RFC 3278 this version wouldn't | |||
| version wouldn't exist. | exist. | |||
| The authors also wish to thank Alfred Hoenes, Paul Hoffman, Russ | The authors also wish to thank Alfred Hoenes, Paul Hoffman, Russ | |||
| Housley, and Jim Schaad for their valuable input. | Housley, and Jim Schaad 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 | |||
| End of changes. 159 change blocks. | ||||
| 363 lines changed or deleted | 447 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||