| < draft-ietf-smime-3278bis-01.txt | draft-ietf-smime-3278bis-02.txt > | |||
|---|---|---|---|---|
| S/MIME WG Sean Turner, IECA | S/MIME WG Sean Turner, IECA | |||
| Internet Draft Dan Brown, Certicom | Internet Draft Dan Brown, Certicom | |||
| Intended Status: Informational June 30, 2008 | Intended Status: Informational September 22, 2008 | |||
| Obsoletes: 3278 (once approved) | Obsoletes: 3278 (once approved) | |||
| Expires: December 30, 2008 | Expires: March 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-01.txt | draft-ietf-smime-3278bis-02.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html | http://www.ietf.org/shadow.html | |||
| This Internet-Draft will expire on December 30, 2008. | This Internet-Draft will expire on March 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 ANSI X9.62 standard, | of the algorithm processing is based on the NIST FIPS 186-3 for | |||
| developed by the ANSI X9F1 working group, the IEEE 1363 standard, and | digital signature, NIST SP800-56A for key agreement, RFC 3565 for key | |||
| the SEC 1 standard. | wrap and content encryption, NIST FIPS 180-3 for message digest, and | |||
| RFCs 2104 and 4231 for message authentication code standards. | ||||
| 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...................................................2 | 1. Introduction...................................................3 | |||
| 1.1. Requirements Terminology..................................3 | 1.1. Requirements Terminology..................................3 | |||
| 1.2. Changes since RFC 3278....................................3 | 1.2. Changes since RFC 3278....................................3 | |||
| 2. SignedData using ECC...........................................4 | 2. SignedData using ECC...........................................5 | |||
| 2.1. SignedData using ECDSA....................................4 | 2.1. SignedData using ECDSA....................................5 | |||
| 3. EnvelopedData using ECC Algorithms.............................6 | 3. EnvelopedData using ECC Algorithms.............................6 | |||
| 3.1. EnvelopedData using (ephemeral-static) ECDH...............6 | 3.1. EnvelopedData using (ephemeral-static) ECDH...............6 | |||
| 3.2. EnvelopedData using 1-Pass ECMQV..........................7 | 3.2. EnvelopedData using 1-Pass ECMQV..........................8 | |||
| 4. AuthenticatedData and AuthEnvelopedData using ECC..............9 | 4. AuthenticatedData and AuthEnvelopedData using ECC.............11 | |||
| 4.1. AuthenticatedData using 1-pass ECMQV......................9 | 4.1. AuthenticatedData using 1-pass ECMQV.....................11 | |||
| 4.2. AuthEnvelopedData using 1-pass ECMQV.....................10 | 4.2. AuthEnvelopedData using 1-pass ECMQV.....................12 | |||
| 5. Recommended Algorithms and Elliptic Curves....................10 | 5. Certificates using ECC........................................13 | |||
| 6. Certificates using ECC........................................12 | 6. SMIMECapabilities Attribute and ECC...........................13 | |||
| 7. SMIMECapabilities Attribute and ECC...........................12 | 7. ASN.1 Syntax..................................................16 | |||
| 8. ASN.1 Syntax..................................................15 | 7.1. Algorithm Identifiers....................................16 | |||
| 8.1. Algorithm Identifiers....................................15 | 7.2. Other Syntax.............................................19 | |||
| 8.2. Other Syntax.............................................18 | 8. Recommended Algorithms and Elliptic Curves....................20 | |||
| 9. Security Considerations.......................................19 | 9. Security Considerations.......................................22 | |||
| 10. IANA Considerations..........................................24 | 10. IANA Considerations..........................................27 | |||
| 11. References...................................................24 | 11. References...................................................27 | |||
| 11.1. Normative...............................................24 | 11.1. Normative...............................................27 | |||
| 11.2. Informative.............................................26 | 11.2. Informative.............................................29 | |||
| Appendix A ASN.1 Modules.........................................27 | Appendix A ASN.1 Modules.........................................30 | |||
| Appendix A.1 1988 ASN.1 Module................................27 | Appendix A.1 1988 ASN.1 Module................................30 | |||
| Appendix A.2 2004 ASN.1 Module................................34 | Appendix A.2 2004 ASN.1 Module................................37 | |||
| 1. Introduction | 1. Introduction | |||
| The Cryptographic Message Syntax (CMS) is cryptographic algorithm | The Cryptographic Message Syntax (CMS) is cryptographic algorithm | |||
| independent. This specification defines a profile for the use of | independent. This specification defines a profile for the use of | |||
| Elliptic Curve Cryptography (ECC) public key algorithms in the CMS. | Elliptic Curve Cryptography (ECC) public key algorithms in the CMS. | |||
| The ECC algorithms are incorporated into the following CMS content | The ECC algorithms are incorporated into the following CMS content | |||
| types: | types: | |||
| - 'SignedData' to support ECC-based digital signature methods | - 'SignedData' to support ECC-based digital signature methods | |||
| skipping to change at page 3, line 17 ¶ | skipping to change at page 3, line 25 ¶ | |||
| - '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 MAC keys used for content authentication and integrity. | |||
| - 'AuthEnvelopedData' to support ECC-based public-key agreement | ||||
| methods (ECMQV) to generate pairwise key-encryption keys to | ||||
| 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. | |||
| 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: | |||
| - Section 2.1 added sentence indicating SHA is used with EDSA. | - Abstract: The basis of the document was change to refer to NIST | |||
| FIPP 186-3 and SP800-56A. | ||||
| - Section 2.1.1 limited the digest algorithm to SHA-1. This document | - Section 1: A bullet was added to address AuthEnvelopedData. | |||
| expands the allowed algorithms to SHA-224, SHA-256, SHA-384, and | ||||
| SHA-512. | ||||
| - Section 2.1.2 and 2.1.3 - Delete e paragraph and update ANSI X9.42 | - Section 2.1: A sentence was added to indicate [FIPS180-3] is used | |||
| references. | with ECDSA. Replaced reference to [X9.62] with [FIPS186-3]. | |||
| - Section 3.1 - Updates reference to CMS-ALG vice CMS for DH. | - 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. | ||||
| - Section 3.1.1 used SHA1 in the KDF with ECDH std and cofactor | - Section 2.1.2 and 2.1.3: The bullet addressing integer "e" was | |||
| methods. This document expands the set of allowed algorithms by | deleted. | |||
| adding SHA-224, SHA-256, SHA-384, and SHA-512. | ||||
| - Section 3.2.1 used SHA1 in the KDF with ECMQV. This document | - Section 3: Added explanation of why static-static ECDH is not | |||
| expands the set of allowed algorithms by adding SHA-224, SHA-256, | included. | |||
| SHA-384, and SHA-512. | ||||
| - Section 4.2 was added to address ECMQV use of AuthEnvelopedData. | - Section 3.1: The reference for DH was changed from CMS to CMS- | |||
| ALG. Provided text to indicate fields of EnvelopedData are as | ||||
| in CMS. | ||||
| - Section 5 is updated to include requirements for hash algorithms | - Section 3.1.1: The permitted digest algorithms for use with ECDH | |||
| and recommendations for matching curves and hash algorithms. It | std and cofactor methods were expanded from SHA-1 to SHA-1, SHA- | |||
| also was expanded to indicate which ECDH and ECMQV variants, key | 224, SHA-256, SHA-384, and SHA-512. Updated to include | |||
| wrap algorithms, and content encryption algorithms are required | description of all KeyAgreeRecipientInfo fields. Parameters for | |||
| for each of the content types used in this document.. | id-ecPublicKey field changed from NULL to ABSENT or ECPoint. | |||
| - Section 7 is updated to include S/MIME capabilities for ECDSA with | - Section 3.2.1: The permitted digest algorithms for use with ECMQV | |||
| SHA-224, SHA-256, SHA-384, and SHA-512. It was also updated to | were expanded from SHA-1 to SHA-1, SHA-224, SHA-256, SHA-384, | |||
| include S/MIME capabilities for ECDH and ECMQV using SHA2 | and SHA-512. Updated to include description of all fields. | |||
| algorithms as the KDF. | Parameters for id-ecPublicKey field changed from NULL to ABSENT | |||
| or ECPoint. | ||||
| - Section 8.1 listed the algorithm identifiers for SHA-1 and SHA-1 | - Section 4.2: This section was added to address AuthEnvelopedData | |||
| with ECDSA. This document adds algorithm identifiers for SHA-224, | with ECMQV. | |||
| SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA-256, SHA- | ||||
| 384, and SHA-512 with ECDSA. This document also updates the list | ||||
| of algorithm identifiers for ECDH std, ECDH cofactor, and ECMQV | ||||
| with SHA2 algorithms as the KDF. | ||||
| - Deleted summary paragraph. | - Section 5: This section was moved to Section 8. The 1st paragraph | |||
| was modified as the requirements are difficult to test. The | ||||
| requirements were updated for hash algorithms and | ||||
| recommendations for matching curves and hash algorithms. Also | ||||
| expanded to indicate which ECDH and ECMQV variants, key wrap | ||||
| algorithms, and content encryption algorithms are required for | ||||
| each of the content types used in this document. | ||||
| - Updated references. | - 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 | ||||
| S/MIME Capabilities. Also updated to include S/MIME capabilities | ||||
| for ECDH and ECMQV using SHA2 algorithms as the KDF. | ||||
| - Updated security considerations. Security considerations paragraph | - Section 7.1 (formerly 8.1): Added sub-sections for digest, | |||
| referring to definitions of SHA-224, SHA-256, SHA-384, and SHA- | signature, originator public key, key agreement, content | |||
| 512 is deleted. | encryption, and message authentication code algorithms. SHA- | |||
| 224, SHA-256, SHA-384, and SHA-512 as well as SHA-224, SHA-256, | ||||
| SHA-384, and SHA-512 with ECDSA were added. Also added algorithm | ||||
| identifiers for ECDH std, ECDH cofactor, and ECMQV with SHA2 | ||||
| algorithms as the KDF. Message Authentication Code, Content | ||||
| Encryption, Key Wrap. | ||||
| - Added ASN.1 modules. | - Section 7.2 (formerly 8.2): Updated to include AuthEnvelopedData. | |||
| Also, added text to address support requirement for compressed | ||||
| and uncompressed keys, changed pointers to ANSI X9.61 to PKIX | ||||
| (where ECDSA-Sig-Value is imported), changed pointers from SEC1 | ||||
| to NIST specs, and updated example of suppPubInfo to be AES-256. | ||||
| keyInfo's parameters changed from NULL to any associated | ||||
| parameters (AES wraps have absent parameters). | ||||
| - Updated acknowledgements section. | - Section 9: Replaced text, which was a summary paragraph, with an | |||
| updated security considerations section. Paragraph referring to | ||||
| definitions of SHA-224, SHA-256, SHA-384, and SHA-512 is | ||||
| deleted. | ||||
| - Added ASN.1 modules. | ||||
| - 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 | |||
| This section describes how to use the Elliptic Curve Digital | This section describes how to use the Elliptic Curve Digital | |||
| Signature Algorithm (ECDSA) with SignedData. ECDSA is specified in | Signature Algorithm (ECDSA) with SignedData. ECDSA is specified in | |||
| [X9.62]. The method is the elliptic curve analog of the Digital | [FIPS186-3]. The method is the elliptic curve analog of the Digital | |||
| Signature Algorithm (DSA) [DSS]. ECDSA is used with the Secure Hash | Signature Algorithm (DSA) [FIPS186-3]. ECDSA is used with the Secure | |||
| Algorithm (SHA) [SHS]. | Hash Algorithm (SHA) [FIPS180-3]. | |||
| 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 8.1) which MUST be one of the following: | algorithm (see Section 7.1) which MUST be one of the following: | |||
| id-sha1 identifies the SHA-1 hash algorithm, id-sha224 identifies | id-sha1, id-sha224, id-sha256 identifies, id-sha384, and id- | |||
| the SHA-224 hash algorithm, id-sha256 identifies the SHA-256 hash | sha512. | |||
| algorithm, id-sha384 identifies the SHA-384 algorithm, and id- | ||||
| sha512 identifies the SHA-512 algorithm. | ||||
| signatureAlgorithm contains the signature algorithm identifier | - signatureAlgorithm contains the signature algorithm identifier | |||
| (see Section 8.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 8.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 | |||
| ECDSA signatures in SignedData. ECC certificates are discussed in | ECDSA signatures in SignedData. ECC certificates are discussed in | |||
| Section 6. | Section 5. | |||
| 2.1.2. Actions of the sending agent | 2.1.2. Actions of the sending agent | |||
| When using ECDSA with SignedData, the sending agent uses the message | When using ECDSA with SignedData, the sending agent uses the message | |||
| digest calculation process and signature generation process for | digest calculation process and signature generation process for | |||
| SignedData that are specified in [CMS]. To sign data, the sending | SignedData that are specified in [CMS]. To sign data, the sending | |||
| agent uses the signature method specified in [X9.62, Section 7.3]. | agent uses the signature method specified in [FIPS186-3]. | |||
| The sending agent encodes the resulting signature using the ECDSA- | The sending agent encodes the resulting signature using the | |||
| Sig-Value syntax (see Section 8.2) and places it in the | ECDSA-Sig-Value syntax (see Section 7.2) and places it in the | |||
| SignerInfosignature field. | SignerInfo.signature field. | |||
| 2.1.3. Actions of the receiving agent | 2.1.3. Actions of the receiving agent | |||
| When using ECDSA with SignedData, the receiving agent uses the | When using ECDSA with SignedData, the receiving agent uses the | |||
| message digest calculation process and signature verification process | message digest calculation process and signature verification process | |||
| for SignedData that are specified in [CMS]. To verify SignedData, | for SignedData that are specified in [CMS]. To verify SignedData, | |||
| the receiving agent uses the signature verification method specified | the receiving agent uses the signature verification method specified | |||
| in [X9.62, Section 7.3]. | in [FIPS186-3]. | |||
| In order to verify the signature, the receiving agent retrieves the | In order to verify the signature, the receiving agent retrieves the | |||
| integers r and s from the SignerInfo signature field of the received | integers r and s from the SignerInfo signature field of the received | |||
| message. | message. | |||
| 3. EnvelopedData using ECC Algorithms | 3. EnvelopedData using ECC Algorithms | |||
| This section describes how to use ECC algorithms with the CMS | This section describes how to use ECC algorithms with the CMS | |||
| EnvelopedData format. | EnvelopedData format. | |||
| 3.1. EnvelopedData using (ephemeral-static) ECDH | 3.1. EnvelopedData using (ephemeral-static) ECDH | |||
| This section describes how to use the ephemeral-static Elliptic Curve | This section describes how to use the ephemeral-static Elliptic Curve | |||
| Diffie-Hellman (ECDH) key agreement algorithm with EnvelopedData. | Diffie-Hellman (ECDH) key agreement algorithm with EnvelopedData, | |||
| Ephemeral-static ECDH is specified in [SEC1] and [IEEE1363]. | method C(1, 1, ECC CDH) from [SP800-56A]. Ephemeral-static ECDH is | |||
| Ephemeral-static ECDH is the elliptic curve analog of the | the elliptic curve analog of the ephemeral-static Diffie-Hellman key | |||
| ephemeral-static Diffie-Hellman key agreement algorithm specified | agreement algorithm specified jointly in the documents [CMS-ALG] and | |||
| jointly in the documents [CMS-ALG, Section 4.1.1] and [CMS-DH]. | [CMS-DH]. | |||
| In an implementation that uses ECDH with CMS EnvelopedData with key | In an implementation uses ECDH with CMS EnvelopedData, the following | |||
| agreement, the following techniques and formats MUST be used. | techniques and formats MUST be used. | |||
| The fields of EnvelopedData are as in [CMS], as ECDH is a key | ||||
| agreement algorithm the RecipientInfo kari choice is used. When | ||||
| using ECDH, the EnvelopedData 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. | ||||
| 3.1.1. Fields of KeyAgreeRecipientInfo | 3.1.1. Fields of KeyAgreeRecipientInfo | |||
| When using ephemeral-static ECDH with EnvelopedData, the fields of | When using ephemeral-static ECDH with EnvelopedData, the fields of | |||
| KeyAgreeRecipientInfo are as in [CMS], but with the following | KeyAgreeRecipientInfo are as follows: | |||
| restrictions: | ||||
| originator MUST be the alternative originatorKey. The | - version MUST be 3. | |||
| originatorKey algorithm field MUST contain the id-ecPublicKey | ||||
| object identifier (see Section 8.1) with NULL parameters. The | ||||
| originatorKey publicKey field MUST contain the DER-encoding of a | ||||
| value of the ASN.1 type ECPoint (see Section 8.2), which | ||||
| represents the sending agent's ephemeral EC public key. | ||||
| keyEncryptionAlgorithm MUST contain the key encryption algorithm | - originator MUST be the alternative originatorKey. The | |||
| object identifier (see Section 8.1). The parameters field | originatorKey algorithm field MUST contain the id-ecPublicKey | |||
| contains KeyWrapAlgorithm. The KeyWrapAlgorithm is the algorithm | object identifier (see Section 7.1). The parameters associated | |||
| identifier that indicates the symmetric encryption algorithm used | with id-ecPublicKey MUST be absent or ECPoint. NOTE: The | |||
| to encrypt the content-encryption key (CEK) with the | previous version of this document required NULL be present, | |||
| key-encryption key (KEK). Algorithm requirements are found in | support for this is OPTIONAL. The originatorKey publicKey field | |||
| paragraph 5. | MUST contain the value of the ASN.1 type ECPoint (see Section | |||
| 7.2), which represents the sending agent's ephemeral EC public | ||||
| key. The ECPoint in uncompressed form MUST be supported. | ||||
| - ukm MAY be present or absent. However, message originators SHOULD | ||||
| include the ukm. As specified in RFC 3852 [CMS], implementations | ||||
| MUST support ukm message recipient processing, so | ||||
| interoperability is not a concern if the ukm is present or | ||||
| absent. When present, the ukm is used to ensure that a | ||||
| different key-encryption key is generated, even when the | ||||
| ephemeral private key is improperly used more than once, by | ||||
| using the ECC-Shared-Info as input to in the key derivation | ||||
| function (see Section 7.2). | ||||
| - keyEncryptionAlgorithm MUST contain the key encryption algorithm | ||||
| object identifier (see Section 7.1). The parameters field | ||||
| contains KeyWrapAlgorithm. The KeyWrapAlgorithm is the | ||||
| algorithm identifier that indicates the symmetric encryption | ||||
| algorithm used to encrypt the content-encryption key (CEK) with | ||||
| the key-encryption key (KEK) and any associated parameters. | ||||
| Algorithm requirements are found in Section 8. | ||||
| - recipientEncryptedKeys contains an identifier and an encrypted | ||||
| key for each recipient. The RecipientEncryptedKey | ||||
| KeyAgreeRecipientIdentifier MUST contain either the | ||||
| issuerAndSerialNumber identifying the recipient's certificate or | ||||
| the RecipientKeyIdentifier containing the subject key identifier | ||||
| from the recipient's certificate. In both cases, the | ||||
| recipient's certificate contains the recipient's static ECDH | ||||
| public key. RecipientEncryptedKey EncryptedKey MUST contain the | ||||
| content-encryption key encrypted with the ephemeral-static, | ||||
| ECDH-generated pairwise key-encryption key using the algorithm | ||||
| specified by the KeyWrapAlgorithm. | ||||
| 3.1.2. Actions of the sending agent | 3.1.2. Actions of the sending agent | |||
| When using ephemeral-static ECDH with EnvelopedData, the sending | When using ephemeral-static ECDH with EnvelopedData, the sending | |||
| agent first obtains the recipient's EC public key and domain | agent first obtains the recipient's EC public key and domain | |||
| parameters (e.g. from the recipient's certificate). The sending | parameters (e.g. from the recipient's certificate). The sending | |||
| agent then determines an integer "keydatalen", which is the | 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 8.2). The sending agent then performs the key deployment and | Section 7.2). The sending agent then performs the key deployment and | |||
| the key agreement operation of the Elliptic Curve Diffie-Hellman | the key agreement operation of the Elliptic Curve Diffie-Hellman | |||
| Scheme specified in [SEC1, Section 6.1]. As a result the sending | Scheme specified in [SP800-56A]. As a result the sending agent | |||
| agent obtains: | obtains: | |||
| - an ephemeral public key, which is represented as a value of the | - an ephemeral public key, which is represented as a value of the | |||
| type ECPoint (see Section 8.2), encapsulated in a bit string and | type ECPoint (see Section 7.2), encapsulated in a bit string and | |||
| placed in the KeyAgreeRecipientInfo originator field, and | placed in the KeyAgreeRecipientInfo originator field, 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]. | |||
| 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 8.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 8.2) encapsulated as a bit string. The | ECPoint (see Section 7.2) encapsulated as a bit string, and if | |||
| receiving agent performs the key agreement operation of the Elliptic | present original supplied additional user key material from the ukm | |||
| Curve Diffie-Hellman Scheme specified in [SEC1, Section 6.1]. As a | field. The receiving agent performs the key agreement operation of | |||
| result, the receiving agent obtains a shared secret bit string "K", | the Elliptic Curve Diffie-Hellman Scheme specified in [SP800-56A]. | |||
| which is used as the pairwise key-encryption key to unwrap the CEK. | 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 | ||||
| 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. ECMQV is | (ECMQV) key agreement algorithm with EnvelopedData, method | |||
| specified in [SEC1] and [IEEE1363]. Like the KEA algorithm [CMS- | C(1, 2, ECC MQV) from [SP800-56A]. Like the KEA algorithm [CMS-KEA], | |||
| KEA], 1-Pass ECMQV uses three key pairs: an ephemeral key pair, a | 1-Pass ECMQV uses three key pairs: an ephemeral key pair, a static | |||
| static key pair of the sending agent, and a static key pair of the | key pair of the sending agent, and a static key pair of the receiving | |||
| receiving agent. An advantage of using 1-Pass ECMQV is that it can | agent. An advantage of using 1-Pass ECMQV is that it can be used | |||
| be used with both EnvelopedData and AuthenticatedData. | with both EnvelopedData and AuthenticatedData. | |||
| In an implementation that uses 1-Pass ECMQV with CMS EnvelopedData | In an implementation uses 1-Pass ECMQV with CMS EnvelopedData, the | |||
| with key agreement, the following techniques and formats MUST be | following techniques and formats MUST be used. | |||
| used. | ||||
| The fields of EnvelopedData are as in [CMS], as 1-Pass ECMQV is a key | ||||
| agreement algorithm the RecipientInfo kari choice is used. When | ||||
| using 1-Pass ECMQV, the EnvelopedData 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. | ||||
| 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: | |||
| originator identifies the static EC public key of the sender. It | - version MUST be 3. | |||
| SHOULD be one of the alternatives, issuerAndSerialNumber or | ||||
| subjectKeyIdentifier, and point to one of the sending agent's | ||||
| certificates. | ||||
| ukm MUST be present. The ukm field MUST contain an octet string | - originator identifies the static EC public key of the sender. It | |||
| which is the DER encoding of the type MQVuserKeyingMaterial (see | SHOULD be one of the alternatives, issuerAndSerialNumber or | |||
| Section 8.2). The MQVuserKeyingMaterial ephemeralPublicKey | subjectKeyIdentifier, and point to one of the sending agent's | |||
| certificates. | ||||
| algorithm field MUST contain the id-ecPublicKey object identifier | - ukm MUST be present. The ukm field MUST contain an octet string | |||
| (see Section 8.1) with NULL parameters field. The | which is the DER encoding of the type MQVuserKeyingMaterial (see | |||
| MQVuserKeyingMaterial ephemeralPublicKey publicKey field MUST | Section 7.2). The MQVuserKeyingMaterial ephemeralPublicKey | |||
| contain the DER-encoding of the ASN.1 type ECPoint (see Section | algorithm field MUST contain the id-ecPublicKey object | |||
| 8.2) representing the sending agent's ephemeral EC public key. | identifier (see Section 7.1). The parameters associated with id- | |||
| The MQVuserKeyingMaterial addedukm field, if present, SHOULD | ecPublicKey MUST be abent or ECPoint. NOTE: The previous | |||
| contain an octet string of additional user keying material of the | version of this document required NULL be present, support is | |||
| sending agent. | OPTIONAL. The MQVuserKeyingMaterial ephemeralPublicKey | |||
| publicKey field MUST contain the DER-encoding of the ASN.1 type | ||||
| ECPoint (see Section 7.2) representing the sending agent's | ||||
| ephemeral EC public key. The MQVuserKeyingMaterial addedukm | ||||
| field, if present, SHOULD contain an octet string of additional | ||||
| user keying material of the sending agent. | ||||
| keyEncryptionAlgorithm MUST be the key encryption algorithm | - keyEncryptionAlgorithm MUST be the key encryption algorithm | |||
| identifier (see Section 8.1), with the parameters field | identifier (see Section 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. Algorithm | generated using the 1-Pass ECMQV algorithm and any associated | |||
| requirements are found in paragraph 5. | parameters. Algorithm requirements are found in Section 8. | |||
| - recipientEncryptedKeys contains an identifier and an encrypted | ||||
| key for each recipient. The RecipientEncryptedKey | ||||
| KeyAgreeRecipientIdentifier MUST contain either the | ||||
| issuerAndSerialNumber identifying the recipient's certificate or | ||||
| the RecipientKeyIdentifier containing the subject key identifier | ||||
| from the recipient's certificate. In both cases, the recipient's | ||||
| certificate contains the recipient's static ECMQV public key. | ||||
| RecipientEncryptedKey EncryptedKey MUST contain the content- | ||||
| encryption key encrypted with the 1-Pass ECMQV-generated | ||||
| pairwise key-encryption key using the algorithm specified by the | ||||
| 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. The sending agent then determines an | parameters are the same, as the sender's domain parameters. The | |||
| integer "keydatalen", which is the KeyWrapAlgorithm symmetric key- | sending agent then determines an integer "keydatalen", which is the | |||
| size in bits, and also a bit string "SharedInfo", which is the DER | KeyWrapAlgorithm symmetric key-size in bits, and also a bit string | |||
| encoding of ECC-CMS-SharedInfo (see Section 8.2). The sending agent | "SharedInfo", which is the DER encoding of ECC-CMS-SharedInfo (see | |||
| then performs the key deployment and key agreement operations of the | Section 7.2). The sending agent then performs the key deployment and | |||
| Elliptic Curve MQV Scheme specified in [SEC1, Section 6.2]. As a | key agreement operations of the Elliptic Curve MQV Scheme specified | |||
| 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 8.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 8.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 | The ephemeral public key can be re-used with an AuthenticatedData for | |||
| greater efficiency. | greater efficiency. | |||
| 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 8.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 field | originator, from the originator and ukm fields as described in | |||
| and checks that the domain parameters are the same. The receiving | Section 3.2.1, and its static EC public key identified in the rid | |||
| agent then performs the key agreement operation of the Elliptic Curve | field and checks that the domain parameters are the same. The | |||
| MQV Scheme [SEC1, Section 6.2]. As a result, the receiving agent | receiving agent then performs the key agreement operation of the | |||
| obtains a shared secret bit string "K" which is used as the pairwise | Elliptic Curve MQV Scheme [SP800-56A]. As a result, the receiving | |||
| key-encryption key to unwrap the CEK. | agent obtains a shared secret bit string "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 than encrypting data. | signing and then encrypting data. | |||
| 4.1. AuthenticatedData using 1-pass ECMQV | 4.1. AuthenticatedData using 1-pass ECMQV | |||
| This section describes how to use the 1-Pass elliptic curve MQV | This section describes how to use the 1-Pass elliptic curve MQV | |||
| (ECMQV) key agreement algorithm with AuthenticatedData. ECMQV is | (ECMQV) key agreement algorithm with AuthenticatedData. ECMQV is | |||
| specified in [SEC1]. An advantage of using 1-Pass ECMQV is that it | method C(1, 2, ECC MQV) from [SP800-56A]. An advantage of using 1- | |||
| can be used with EnvelopedData, AuthenticatedData, and | Pass ECMQV is that it can be used with EnvelopedData, | |||
| AuthEnvelopedData. | AuthenticatedData, and AuthEnvelopedData. | |||
| When using ECMQV with AuthenticatedData, the fields of | ||||
| AuthenticatedData are as in [CMS], but with the following | ||||
| restrictions: | ||||
| - macAlgorithm MUST contain the algorithm identifier of the message | ||||
| authentication code algorithm (see Section 7.1) which MUST be | ||||
| one of the following: id-hmacWithSHA1, id-hmacWITHSHA224, id- | ||||
| hmacWITHSHA256, id-hmacWITHSHA384, and id-hmacWITHSHA512. | ||||
| - digestAlgorithm MUST contain the algorithm identifier of the hash | ||||
| algorithm (see Section 7.1) which MUST be one of the following: | ||||
| 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 | ||||
| key agreement algorithm the RecipientInfo kari choice is used. When | ||||
| using 1-Pass ECMQV, the AuthenticatedData 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.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 | |||
| skipping to change at page 10, line 24 ¶ | skipping to change at page 12, line 35 ¶ | |||
| The receiving agent uses the same actions as for EnvelopedData with | The receiving agent uses the same actions as for EnvelopedData with | |||
| 1-Pass ECMQV, as specified in Section 3.2.3 of this document. | 1-Pass ECMQV, as specified in Section 3.2.3 of this document. | |||
| Note: see Note in Section 4.1.2. | Note: see Note in Section 4.1.2. | |||
| 4.2. AuthEnvelopedData using 1-pass ECMQV | 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 | |||
| specified in [SEC1]. An advantage of using 1-Pass ECMQV is that it | method C(1, 2, ECC MQV) from [SP800-56A]. An advantage of using 1- | |||
| can be used with EnvelopedData, AuthenticatedData, and | Pass ECMQV is that it can be used with EnvelopedData, | |||
| AuthEnvelopedData. | AuthenticatedData, and AuthEnvelopedData. | |||
| The fields of AuthEnvelopedData are as in [CMS], 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 | The ephemeral public key can be re-used with an EnvelopedData for | |||
| greater efficiency. | greater efficiency. | |||
| 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. Recommended Algorithms and Elliptic Curves | 5. Certificates using ECC | |||
| Implementations of this specification MUST implement either | ||||
| SignedData with ECDSA or EnvelopedData with ephemeral-static ECDH. | ||||
| Implementations of this specification SHOULD implement both | ||||
| SignedData with ECDSA and EnvelopedData with ephemeral-static ECDH. | ||||
| Implementations MAY implement the other techniques specified, such as | ||||
| AuthenticatedData and 1-Pass ECMQV. | ||||
| Furthermore, in order to encourage interoperability, implementations | ||||
| SHOULD use the elliptic curve domain parameters specified by ANSI | ||||
| [X9.62], NIST [DSS] and SECG [SEC2]. It is RECOMMENDED that 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. | ||||
| Implementations of this specification MUST implement the SHA-256 hash | ||||
| algorithm. The SHA-1, SHA-224, SHA-384, SHA-512 hash algorithms MAY | ||||
| be supported. | ||||
| When ECDSA, ECDH, or ECMQV is used, it is RECOMMENDED that the | ||||
| P-256 curve be used with SHA-256, the P-384 curve be used with | ||||
| SHA-384, and the P-521 curve be used with SHA-512. | ||||
| Implementations of this specification that support EnvelopedData with | ||||
| ephemeral-static ECDH standard primitive MUST support the | ||||
| dhSinglePass-stdDH-sha256kdf-scheme algorithm. They MUST also support | ||||
| the id-aes128-wrap key wrap and id-aes128-cbc content encryption | ||||
| algorithms. The dhSinglePass-stdDH-sha1kdf-scheme, dhSinglePass- | ||||
| stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf-scheme, and | ||||
| dhSinglePass-stdDH-sha512kdf-scheme algorithms MAY be supported. | ||||
| Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap | ||||
| key wrap algorithms and the id-aes192-cbc and id-aes256-cbc content | ||||
| encryption algorithms MAY be supported. | ||||
| Implementations of this specification that support EnvelopedData with | ||||
| ephemeral-static ECDH cofactor primitive MUST support the | ||||
| dhSinglePass-cofactorDH-sha256kdf-scheme algorithm. They MUST also | ||||
| support the id-aes128-wrap key wrap and id-aes128-cbc content | ||||
| encryption algorithms. The dhSinglePass-cofactorDH-sha1kdf-scheme, | ||||
| dhSinglePass-cofactorDH-sha224kdf-scheme, dhSinglePass-cofactorDH- | ||||
| sha384kdf-scheme, and dhSinglePass-cofactorDH-sha512kdf-scheme | ||||
| algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap, id- | ||||
| aes192-wrap, and id-aes256-wrap MAY be supported. | ||||
| Implementations of this specification that support EnvelopedData with | ||||
| ECMQV MUST support the mqvSinglePass-sha256kdf-scheme algorithm. They | ||||
| MUST also support the id-aes128-wrap and id-aes128-cbc algorithms. | ||||
| The mqvSinglePass-sha1kdf-scheme, mqvSinglePass-sha224kdf-scheme, | ||||
| mqvSinglePass-sha384kdf-scheme, and mqvSinglePass-sha512kdf-scheme | ||||
| algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap, id- | ||||
| aes192-wrap, and id-aes256-wrap key wrap algorithms and the id- | ||||
| aes192-cbc and id-aes256-cbc content encryption algorithms MAY be | ||||
| supported. | ||||
| Implementations of this specification that support AuthenticatedData | ||||
| with ECMQV MUST support the | ||||
| mqvSinglePass-sha256kdf-scheme algorithm. They MUST also support the | ||||
| id-aes128-wrap key wrap, id-aes128-cbc content encryption, and id- | ||||
| hmacWithSHA256 message digest algorithms. The mqvSinglePass-sha1kdf- | ||||
| scheme, mqvSinglePass-sha224kdf-scheme, mqvSinglePass-sha384kdf- | ||||
| scheme, and mqvSinglePass-sha512kdf-scheme algorithms MAY be | ||||
| supported. Likewise, the id-alg-CMS3DESwrap, id-aes192-wrap, and id- | ||||
| aes256-wrap key wrap algorithms and the id-aes192-cbc and id-aes256- | ||||
| cbc content encryption algorithms MAY be supported. The | ||||
| id-hmacWithSHA1, id-hmacWithSHA224, id-hmacWithSHA384, and id- | ||||
| hmacWithSHA512 MAY be supported. | ||||
| Implementations of this specification that support AuthEnvelopedData | ||||
| with ECMQV MUST support the | ||||
| mqvSinglePass-sha256kdf-scheme algorithm. They MUST also support the | ||||
| id-aes128-wrap key wrap and id-aes128-cbc content encryption | ||||
| algorithm. The mqvSinglePass-sha1kdf-scheme, mqvSinglePass-sha224kdf- | ||||
| scheme, mqvSinglePass-sha384kdf-scheme, and mqvSinglePass-sha512kdf- | ||||
| scheme algorithms MAY be supported. Likewise, the id-alg-CMS3DESwrap, | ||||
| id-aes192-wrap, and id-aes256-wrap key wrap algorithms and the id- | ||||
| aes192-cbc and id-aes256-cbc content encryption algorithms MAY be | ||||
| supported. | ||||
| 6. Certificates using ECC | ||||
| Internet X.509 certificates [PKI] can be used in conjunction with | Internet X.509 certificates [PKI] can be used in conjunction with | |||
| this specification to distribute agents' public keys. The use of ECC | this specification to distribute agents' public keys. The use of ECC | |||
| algorithms and keys within X.509 certificates is specified in | algorithms and keys within X.509 certificates is specified in | |||
| [PKI-ALG]. | [PKI-ALG]. | |||
| 7. SMIMECapabilities Attribute and ECC | 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 in this document by using the | |||
| SMIMECapabilities signed attribute [MSG, Section 2.5.2]. | SMIMECapabilities signed attribute [MSG]. | |||
| The SMIMECapability value to indicate support for the ECDSA signature | The SMIMECapability value to indicate support for one of the ECDSA | |||
| algorithm is the SEQUENCE with the capabilityID field containing the | signature algorithms is a SEQUENCE with the capabilityID field | |||
| object identifiers ecdsa-with-SHA* object identifiers (where * is 1, | containing the object identifier ecdsa-with-SHA* object identifiers | |||
| 224, 256, 384, or 512) all with NULL parameters. The DER encodings | (where * is 1, 224, 256, 384, or 512) and with NULL parameters. The | |||
| 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 | |||
| skipping to change at page 15, line 21 ¶ | skipping to change at page 16, line 5 ¶ | |||
| 05 00 | 05 00 | |||
| KA=ECMQV 1-Pass KDF=SHA384 Wrap=AES256 | KA=ECMQV 1-Pass KDF=SHA384 Wrap=AES256 | |||
| 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 | |||
| 8. 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. | |||
| 8.1. Algorithm Identifiers | 7.1. Algorithm Identifiers | |||
| The following object identifier indicates the hash algorithm used in | ||||
| this document [SMIME-SHA2]: | ||||
| id-sha1 OBJECT IDENTIFIER ::= { | ||||
| iso(1) identified-organization(3) oiw(14) secsig(3) | ||||
| algorithm(2) 26 } | ||||
| id-sha224 OBJECT IDENTIFIER ::= { | This section provides the object identifiers for the algorithms used | |||
| joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) | in this document along with any associated parameters. | |||
| csor(3) nistalgorithm(4) hashalgs(2) 4 } | ||||
| id-sha256 OBJECT IDENTIFIER ::= { | 7.1.1. Digest Algorithms | |||
| joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) | ||||
| csor(3) nistalgorithm(4) hashalgs(2) 1 } | ||||
| id-sha384 OBJECT IDENTIFIER ::= { | Digest algorithm object identifiers are used in the SignedData | |||
| joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) | digestAlgorithms and digestAlgorithm fields, the AuthenticatedData | |||
| csor(3) nistalgorithm(4) hashalgs(2) 2 } | digestAlgorithm field, and the AuthEnvelopedData digestAlgorithm | |||
| field. The digest algorithms used in this document are: SHA-1, | ||||
| SHA224, SHA-256, SHA-384, and SHA-512. The object identifiers and | ||||
| parameters associated with these algorithms are found in [SMIME- | ||||
| SHA2]. | ||||
| id-sha512 OBJECT IDENTIFIER ::= { | 7.1.2. Originator Public Key | |||
| joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) | ||||
| csor(3) nistalgorithm(4) hashalgs(2) 3 } | ||||
| The following object identifier is used in this document to indicate | The KeyAgreeRecipientInfo originator filed use the following object | |||
| an elliptic curve public key: | identifier to indicate an elliptic curve public key: | |||
| id-ecPublicKey OBJECT IDENTIFIER ::= { ansi-x9-62 keyType(2) 1 } | id-ecPublicKey OBJECT IDENTIFIER ::= { | |||
| ansi-x9-62 keyType(2) 1 } | ||||
| where | where | |||
| ansi-x9-62 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) | ansi-x9-62 OBJECT IDENTIFIER ::= { | |||
| 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 contain NULL. | algorithm identifier, the associated parameters MUST be either absent | |||
| or ECPoint. Implementations MUST accept id-ecPublicKey with the | ||||
| The following object identifier indicates the digital signature | parameters field with absent, NULL, and ECPoint parameters. If | |||
| algorithm used in this document: | ECPoint is present its value is ignored. Implementations SHOULD | |||
| generate absent parameters for the id-ecPublicKey object identifier | ||||
| ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { | in the KeyAgreeRecipientInfo originator field. | |||
| ansi-x9-62 signatures(4) 1 } | ||||
| ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { | ||||
| ansi-x9-62 signatures(4) ecdsa-with-SHA2(3) 1 } | ||||
| ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { | ||||
| ansi-x9-62 signatures(4) ecdsa-with-SHA2(3) 2 } | ||||
| ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { | 7.1.3. Signature Algorithms | |||
| ansi-x9-62 signatures(4) ecdsa-with-SHA2(3) 3 } | ||||
| ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { | Signature algorithm identifiers are used in the SignedData | |||
| ansi-x9-62 signatures(4) ecdsa-with-SHA2(3) 4 } | signatureAlgorithm and signature field. The signature algorithms | |||
| 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 | ||||
| identifiers and parameters associated with these algorithms are found | ||||
| in [PKI-ALG]. | ||||
| When the object identifiers ecdsa-with-SHA1, ecdsa-with-SHA224, | 7.1.4. Key Agreement Algorithms | |||
| ecdsa-with-SHA256, ecdsa-with-SHA384, or ecdsa-with-SHA512 are used | ||||
| within an algorithm identifier, the associated parameters field | ||||
| contains NULL. | ||||
| The following object identifiers indicate the key agreement | Key agreement algorithms are used in EnvelopedData, | |||
| algorithms used in this document: | AuthenticatedData, and AuthEnvelopedData in the KeyAgreeRecipientInfo | |||
| keyEncryptionAlgorithm field. The following object identifiers | ||||
| indicate the key agreement algorithms used in this document [SP800- | ||||
| 56A]: | ||||
| dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 2 } | x9-63-scheme 2 } | |||
| dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 0 } | secg-scheme 11 0 } | |||
| dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 1 } | secg-scheme 11 1 } | |||
| skipping to change at page 18, line 6 ¶ | skipping to change at page 18, line 26 ¶ | |||
| x9-63-scheme OBJECT IDENTIFIER ::= { | x9-63-scheme OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) tc68(133) country(16) | iso(1) identified-organization(3) tc68(133) country(16) | |||
| x9(840) x9-63(63) schemes(0) } | x9(840) x9-63(63) schemes(0) } | |||
| and | and | |||
| secg-scheme OBJECT IDENTIFIER ::= { | secg-scheme OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) certicom(132) schemes(1) } | iso(1) identified-organization(3) certicom(132) schemes(1) } | |||
| When the object identifiers are used here within an algorithm | When the object identifiers are used here within an algorithm | |||
| identifier, the associated parameters field contains the CMS | identifier, the associated parameters field contains KeyWrapAlgorithm | |||
| KeyWrapAlgorithm algorithm identifier. | to indicate the key wrap algorithm and any associated parameters. | |||
| 8.2. Other Syntax | 7.1.5. Key Wrap Algorithms | |||
| Key wrap algorithms are used as part of the parameters in the key | ||||
| agreement algorithm. The key wrap algorithms used in this document | ||||
| are Triple-DES, AES-128, AES-192, AES-256. The object identifier and | ||||
| parameters for these algorithms are found in [CMS-ALG] and [CMS-AES]. | ||||
| 7.1.6. Content Encryption Algorithms | ||||
| Content encryption algorithms are used in EnvelopedData and | ||||
| AuthEnvelopedData in the EncryptedContentInfo | ||||
| contentEncryptionAlgorithm field. The content encryption algorithms | ||||
| used with EnvelopedData in this document are AES-128 in CBC mode, | ||||
| AES-192 in CBC mode, and AES-256 in CBC mode. The object identifiers | ||||
| and parameters associated with these algorithms are found in [CMS- | ||||
| AES]. The content encryption algorithms used with AuthEnvelopedData | ||||
| in this document are AES-128 in CCM mode, AES-192 in CCM mode, AES- | ||||
| 256 in CCM mode, AES-128 in GCM mode, AES-192 in GCM mode, and AES- | ||||
| 256 in GCM mode. The object identifiers and parameters associated | ||||
| with these algorithms are found in [CMS-AESCG]. | ||||
| 7.1.7. Message Authentication Code Algorithms | ||||
| Message authentication code algorithms are used in AuthenticatedData | ||||
| and AuthEnvelopedData in the macAlgorithm field. The message | ||||
| 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 | ||||
| with SHA-1. The object identifiers and parameters associated with | ||||
| these algorithms are found in [HMAC-SHA1] and [HMAC-SHA2]. | ||||
| 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, | |||
| s INTEGER } | s INTEGER } | |||
| ECDSA-Sig-Value is specified in [X9.62]. Within CMS, ECDSA-Sig-Value | ECDSA-Sig-Value is specified in [PKI-ALG]. Within CMS, ECDSA-Sig- | |||
| is DER-encoded and placed within a signature field of SignedData. | Value is DER-encoded and placed within a signature field of | |||
| SignedData. | ||||
| When using ECDH and ECMQV with EnvelopedData and AuthenticatedData, | When using ECDH and ECMQV with EnvelopedData, AuthenticatedData, and | |||
| ephemeral and static public keys are encoded using the type ECPoint. | AuthEnvelopedData, ephemeral and static public keys are encoded using | |||
| the type ECPoint. Implementations MUST support uncompressed keys and | ||||
| MAY support compressed keys. | ||||
| ECPoint ::= OCTET STRING | ECPoint ::= OCTET STRING | |||
| When using ECMQV with EnvelopedData and AuthenticatedData, the | When using ECMQV with EnvelopedData, AuthenticatedData, and | |||
| sending agent's ephemeral public key and additional keying material | AuthEnvelopedData, the sending agent's ephemeral public key and | |||
| 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 in used to represent the ephemeral public key and | |||
| placed in the ephemeralPublicKey field. The additional user keying | placed in the ephemeralPublicKey field. The additional user keying | |||
| material is placed in the addedukm field. Then the | 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 a ukm | |||
| field of EnvelopedData or AuthenticatedData. | field of EnvelopedData, AuthenticatedData, or AuthEnvelopedData. | |||
| When using ECDH or ECMQV with EnvelopedData or AuthenticatedData, the | When using ECDH or ECMQV with EnvelopedData, AuthenticatedData, or | |||
| key-encryption keys are derived by using the type: | AuthEnvelopedData, the key-encryption keys are derived by using the | |||
| 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 } | |||
| The fields of ECC-CMS-SharedInfo are as follows: | The fields of ECC-CMS-SharedInfo are as follows: | |||
| keyInfo contains the object identifier of the key-encryption | keyInfo contains the object identifier of the key-encryption | |||
| algorithm (used to wrap the CEK) and NULL parameters. | algorithm (used to wrap the CEK) and associated parameters. In | |||
| this specification, 3DES wrap has NULL parameters while the AES | ||||
| wraps have absent parameters. | ||||
| entityUInfo optionally contains additional keying material | entityUInfo optionally contains additional keying material | |||
| supplied by the sending agent. When used with ECDH and CMS, the | supplied by the sending agent. When used with ECDH and CMS, the | |||
| entityUInfo field contains the octet string ukm. When used with | entityUInfo field contains the octet string ukm. When used with | |||
| ECMQV and CMS, the entityUInfo contains the octet string addedukm | ECMQV and CMS, the entityUInfo contains the octet string addedukm | |||
| (encoded in MQVuserKeyingMaterial). | (encoded in MQVuserKeyingMaterial). | |||
| suppPubInfo contains the length of the generated KEK, in bits, | suppPubInfo contains the length of the generated KEK, in bits, | |||
| represented as a 32 bit number, as in [CMS-DH]. (E.g. for 3DES | represented as a 32 bit number, as in [CMS-DH] and [CMS-AES]. | |||
| it would be 00 00 00 c0.) | (E.g. for AES-256 it would be 00 00 01 00.) | |||
| Within CMS, ECC-CMS-SharedInfo is DER-encoded and used as input to | Within CMS, ECC-CMS-SharedInfo is DER-encoded and used as input to | |||
| the key derivation function, as specified in [SEC1, Section 3.6.1]. | the key derivation function, as specified in [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 [SEC1, Section | because the key derivation function specified in [SP800-56A] ensures | |||
| 3.6.1] ensures that sufficient keying data is provided. | that sufficient keying data is provided. | |||
| 8. Recommended Algorithms and Elliptic Curves | ||||
| It is RECOMMEND that implementations of this specification support | ||||
| SignedData. Support for EnvelopedData and AuthenticatedData is | ||||
| OPTIONAL. | ||||
| In order to encourage interoperability, implementations SHOULD use | ||||
| the elliptic curve domain parameters specified by [PKI-ALG]. | ||||
| Implementations that support SignedData with ECDSA: | ||||
| - MUST support ECDSA with SHA-256. | ||||
| - MAY support ECDSA with SHA-1, ECDSA with SHA-224, ECDSA with SHA- | ||||
| 384, and ECDSA with SHA-512. | ||||
| 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 | ||||
| used with SHA-384, and the P-521 curve be used with SHA-512. | ||||
| If EnvelopedData is supported, then ephemeral-static ECDH standard | ||||
| primitive MUST be supported. | ||||
| Implementations that support EnvelopedData with the ephemeral-static | ||||
| ECDH standard primitive: | ||||
| - MUST support the dhSinglePass-stdDH-sha256kdf-scheme key | ||||
| agreement algorithm, the id-aes128-wrap key wrap algorithm, and | ||||
| the id-aes128-cbc content encryption algorithm | ||||
| - MAY support the dhSinglePass-stdDH-sha1kdf-scheme, dhSinglePass- | ||||
| stdDH-sha224kdf-scheme, dhSinglePass-stdDH-sha384kdf-scheme and | ||||
| dhSinglePass-stdDH-sha512kdf-scheme key agreement algorithms, | ||||
| the id-alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key | ||||
| wrap algorithms and the id-aes192-cbc and id-aes256-cbc content | ||||
| encryption algorithms. | ||||
| Implementations that support EnvelopedData with the ephemeral-static | ||||
| ECDH cofactor primitive: | ||||
| - MUST support the dhSinglePass-cofactorDH-sha256kdf-scheme key | ||||
| agreement algorithm, the id-aes128-wrap key wrap algorithm, and | ||||
| the id-aes128-cbc content encryption algorithm. | ||||
| - MAY support the dhSinglePass-cofactorDH-sha1kdf-scheme, | ||||
| dhSinglePass-cofactorDH-sha224kdf-scheme, dhSinglePass- | ||||
| cofactorDH-sha384kdf-scheme, and dhSinglePass-cofactorDH- | ||||
| sha512kdf-scheme key agreement, the id-alg-CMS3DESwrap, id- | ||||
| aes192-wrap, and id-aes256-wrap key wrap algorithms and the id- | ||||
| aes192-cbc and id-aes256-cbc content encryption algorithms. | ||||
| Implementations that support EnvelopedData with 1-Pass ECMQV: | ||||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement | ||||
| algorithm, the id-aes128-wrap key wrap algorithm, and the id- | ||||
| aes128-cbc content encryption algorithm. | ||||
| - MAY support mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | ||||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | ||||
| mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | ||||
| alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | ||||
| algorithms and the id-aes192-cbc and id-aes256-cbc content | ||||
| encryption algorithms. | ||||
| Implementations that support AuthenticatedData with 1-Pass ECMQV: | ||||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | ||||
| the id-aes128-wrap key wrap, and the id-aes128-cbc content | ||||
| encryption, the id-sha256 message digest, and id-hmacWithSHA256 | ||||
| message authentication code algorithms. | ||||
| - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | ||||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, mqvSinglePass- | ||||
| sha512kdf-scheme key agreement algorithms, the id-alg- | ||||
| CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | ||||
| algorithms, the id-aes192-cbc and id-aes256-cbc content | ||||
| encryption algorithms, the id-sha1, id-sha224, id-sha384, and | ||||
| id-sha512, message digest algorithms, and the id-hmacWithSHA1, | ||||
| id-hmacWithSHA224, id-hmacWithSHA384, id-hmacWithSHA512 message | ||||
| authentication code algorithms. | ||||
| Implementations that support AuthEnvelopedData with 1-Pass ECMQV: | ||||
| - MUST support the mqvSinglePass-sha256kdf-scheme key agreement, | ||||
| the id-aes128-wrap key wrap, the id-aes128-ccm authenticated- | ||||
| content encryption, the id-sha256 message digest, and the id- | ||||
| hmacWithSHA256 message authentication cod algorithms. | ||||
| - MAY support the mqvSinglePass-sha1kdf-scheme, mqvSinglePass- | ||||
| sha224kdf-scheme, mqvSinglePass-sha384kdf-scheme, and | ||||
| mqvSinglePass-sha512kdf-scheme key agreement algorithms, the id- | ||||
| alg-CMS3DESwrap, id-aes192-wrap, and id-aes256-wrap key wrap | ||||
| algorithms, the id-aes192-ccm and id-aes256-ccm authenticated- | ||||
| content encryption algorithms, the id-sha1, id-sha224, id- | ||||
| sha384, and id-sha512, message digest algorithms, and id- | ||||
| hmacWithSHA1, id-hmacWithSHA224, id-hmacWithSHA384, id- | ||||
| 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. | |||
| This specification is based on [CMS], [CMS-AUTHENV], [CMS-ALG], [CMS- | Cryptographic algorithms rely on random number. See [RANDOM] for | |||
| AESCG], [X9.62], and [SEC1] and the appropriate security | guidance on generation of random numbers. | |||
| Receiving agents that validate signatures and sending agents that | ||||
| encrypt messages, need to be cautious of cryptographic processing | ||||
| usage when validating signatures and encrypting messages using keys | ||||
| larger than those mandated in this specification. An attacker could | ||||
| send certificates with keys which would result in excessive | ||||
| cryptographic processing, for example keys larger than those mandated | ||||
| in this specification, which could swamp the processing element. | ||||
| Agents which use such keys without first validating the certificate | ||||
| to a trust anchor are advised to have some sort of cryptographic | ||||
| resource management system to prevent such attacks. | ||||
| Using secret keys of an appropriate size is crucial to the security | ||||
| 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 | ||||
| generated by the point g). Using larger secret keys provides | ||||
| absolutely no additional security, and using smaller secret keys is | ||||
| likely to result in dramatically less security. (See [SP800-56A] for | ||||
| more information on selecting secret keys.) | ||||
| This specification is based on [CMS], [CMS-AUTHENV], [CMS-ALG], | ||||
| [CMS-AESCG], [X9.62], [SEC1], and [SEC2] 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 should be aware of the | |||
| concerns expressed in [BON] when using AuthenticatedData to send | concerns expressed in [BON] when using AuthenticatedData to send | |||
| messages to more than one recipient. Also, users of MQV should be | messages to more than one recipient. Also, users of MQV should be | |||
| aware of the vulnerability in [K]. | aware of the vulnerability in [K]. | |||
| When implementing EnvelopedData, 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: | |||
| skipping to change at page 20, line 20 ¶ | skipping to change at page 23, line 51 ¶ | |||
| 2) What is the KDF? | 2) What is the KDF? | |||
| 3) What is the key wrap algorithm? | 3) What is the key wrap algorithm? | |||
| 4) What is the content encryption algorithm? | 4) What is the content encryption algorithm? | |||
| 5) What is the curve? | 5) What is the curve? | |||
| Consideration must be given to strength of the security provided by | Consideration must be given to strength of the security provided by | |||
| each of these choices. Security is measured in bits, where a strong | each of these choices. Security is measured in bits, where a strong | |||
| symmetric cipher with a key of X bits is said to provide X bits of | symmetric cipher with a key of X bits is said to provide X bits of | |||
| 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 [NISTSP800-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 | SHA1 | 3DES | 3DES CBC | sect163k1 | |||
| | | SHA224 | AES-128 | AES-128 CBC | secp163r2 | | | SHA224 | AES-128 | AES-128 CBC | secp163r2 | |||
| | | SHA256 | AES-192 | AES-192 CBC | secp192r1 | | | SHA256 | AES-192 | AES-192 CBC | secp192r1 | |||
| skipping to change at page 22, line 33 ¶ | skipping to change at page 25, line 33 ¶ | |||
| 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 | |||
| of these choices. Security is measured in bits, where a strong | of these choices. Security is measured in bits, where a strong | |||
| symmetric cipher with a key of X bits is said to provide X bits of | symmetric cipher with a key of X bits is said to provide X bits of | |||
| 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 [NISTSP800-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 | SHA1 | sect163k1 | |||
| | | SHA224 | secp163r2 | | | SHA224 | secp163r2 | |||
| | | SHA256 | secp192r1 | | | SHA256 | secp192r1 | |||
| skipping to change at page 24, line 27 ¶ | skipping to change at page 27, line 27 ¶ | |||
| (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. | |||
| [IEEE1363] IEEE P1363, "Standard Specifications for Public Key | [FIPS180-3] National Institute of Standards and Technology | |||
| Cryptography", Institute of Electrical and | (NIST), FIPS Publication 180-3: Secure Hash Standard, | |||
| Electronics Engineers, 2000. | June 2003. | |||
| [DSS] FIPS 186-2, "Digital Signature Standard", National | [FIPS186-3] National Institute of Standards and Technology | |||
| Institute of Standards and Technology, January 2000. | (NIST), FIPS Publication 186-3: Digital Signature | |||
| Standard, March 2006. | ||||
| [HMAC-SHA] Nystrom, M., "Identifiers and Test Vectors for HMAC- | [HMAC-SHA1] Krawczyk, M., Bellare, M., and R. Canetti, "HMAC: | |||
| Keyed-Hashing for Message Authentication", RFC 2104, | ||||
| February 1997. | ||||
| [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 | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [MSG] Ramsdell, B., and S. Turner, "S/MIME Version 3.2 | [MSG] Ramsdell, B., and S. Turner, "S/MIME Version 3.2 | |||
| Message Specification", work-in-progress. | Message Specification", draft-ietf-smime-3851bis, | |||
| work-in-progress. | ||||
| [PKI] Cooper, D., Santesson, S., Farrell, S., Boeyen, S. | [PKI] Cooper, D., Santesson, S., Farrell, S., Boeyen, S. | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation | Infrastructure Certificate and Certificate Revocation | |||
| List (CRL) Profile", RFC 5280, May 2008. | List (CRL) Profile", RFC 5280, May 2008. | |||
| [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", work-in-progress. | Information", draft-ietf-pkix-ecc-subpubkeyinfo, | |||
| 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, | ||||
| "Randomness Recommendations for Security", RFC 4086, | ||||
| June 2005. | ||||
| [RSAOAEP] Schaad, J., Kaliski, B., and R. Housley, "Additional | ||||
| Algorithms and Identifiers for RSA Cryptography for | ||||
| use in the Internet X.509 Public Key Infrastructure | ||||
| Certificate and Certificate Revocation List (CRL) | ||||
| Profile", RFC 4055, June 2005. | ||||
| [SEC1] SECG, "Elliptic Curve Cryptography", Standards for | [SEC1] SECG, "Elliptic Curve Cryptography", Standards for | |||
| Efficient Cryptography Group, 2000. Available from | Efficient Cryptography Group, 2000. Available from | |||
| www.secg.org/collateral/sec1.pdf. | www.secg.org/collateral/sec1.pdf. | |||
| [SEC2] SECG, "Recommended Elliptic Curve Domain Parameters", | [SEC2] SECG, "Recommended Elliptic Curve Domain Parameters", | |||
| Standards for Efficient Cryptography Group, 2000. | Standards for Efficient Cryptography Group, 2000. | |||
| Available from www.secg.org/collateral/sec2.pdf. | Available from www.secg.org/collateral/sec2.pdf. | |||
| [SHS] National Institute of Standards and Technology | ||||
| (NIST), FIPS Publication 180-2: Secure Hash Standard, | ||||
| August 2002. | ||||
| [SMIME-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic | [SMIME-SHA2] Turner, S., "Using SHA2 Algorithms with Cryptographic | |||
| Message Syntax", work-in-progress. | Message Syntax", work-in-progress. | |||
| [X9.62] ANSI X9.62-2005, "Public Key Cryptography For The | [SP800-56A] National Institute of Standards and Technology | |||
| Financial Services Industry: The Elliptic Curve | (NIST), Special Publication 800-56A: Recommendation | |||
| Digital Signature Algorithm (ECDSA)", American | Pair-Wise Key Establishment Schemes Using Discrete | |||
| National Standards Institute, 2005. | Logarithm Cryptography (Revised), March 2007. | |||
| [X.208] ITU-T Recommendation X.208 (1998) | ISO/IEC 8824- | [X9.62] American National Standards Institute (ANSI), ANS | |||
| 1:1998. Specification of Abstract Syntax Notation One | X9.62-2005: The Elliptic Curve Digital Signature | |||
| Algorithm (ECDSA), 2005. | ||||
| [X.208] ITU-T Recommendation X.208 (1988) | ISO/IEC 8824- | ||||
| 1:1988. Specification of Abstract Syntax Notation One | ||||
| (ASN.1). | (ASN.1). | |||
| [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | |||
| 1 :2002. Information Technology - Abstract Syntax | 1 :2002. Information Technology - Abstract Syntax | |||
| Notation One. | Notation One. | |||
| [X.681] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | [X.681] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824- | |||
| 2 :2002. Information Technology - Abstract Syntax | 2 :2002. Information Technology - Abstract Syntax | |||
| Notation One: Information Object Specification. | Notation One: Information Object Specification. | |||
| skipping to change at page 26, line 24 ¶ | skipping to change at page 29, line 44 ¶ | |||
| 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 | |||
| [CMS-KEA] Pawling, J., "CMS KEA and SKIPJACK Conventions", RFC | [CMS-KEA] Pawling, J., "CMS KEA and SKIPJACK Conventions", RFC | |||
| 2876, July 2000. | 2876, July 2000. | |||
| [K] B. Kaliski, "MQV Vulnerability", Posting to ANSI X9F1 | [K] B. Kaliski, "MQV Vulnerability", Posting to ANSI X9F1 | |||
| and IEEE P1363 newsgroups, 1998. | and IEEE P1363 newsgroups, 1998. | |||
| [NISTSP800-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, August 2005. | |||
| 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 | |||
| skipping to change at page 27, line 39 ¶ | skipping to change at page 30, line 39 ¶ | |||
| IMPORTS | IMPORTS | |||
| -- From [PKI] | -- From [PKI] | |||
| AlgorithmIdentifier | AlgorithmIdentifier | |||
| FROM PKIX1Explicit88 | FROM PKIX1Explicit88 | |||
| { iso(1) identified-organization(3) dod(6) | { iso(1) identified-organization(3) dod(6) | |||
| internet(1) security(5) mechanisms(5) pkix(7) mod(0) | internet(1) security(5) mechanisms(5) pkix(7) mod(0) | |||
| pkix1-explicit(18) } | pkix1-explicit(18) } | |||
| -- From [CMS-AES] | -- From [RSAOAEP] | |||
| id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV, | id-sha224, id-sha256, id-sha384, id-sha512 | |||
| id-aes128-wrap, id-aes192-wrap, id-aes1256-wrap | FROM PKIX1-PSS-OAEP-Algorithms | |||
| FROM CMSAesRsaesOaep | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| smime(16) modules(0) id-mod-cms-aes(19) } | id-mod-pkix1-rsa-pkalgs(33) } | |||
| -- From [CMS-AESCG] | -- From [PKI-ALG] | |||
| id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters | id-sha1, ecdsa-with-SHA1, ecdsa-with-SHA224, | |||
| id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters | ecdsa-with-SHA256, ecdsa-with-SHA384, ecdsa-with-SHA512, | |||
| FROM CMS-AES-CCM-and-AES-GCM | id-ecPublicKey, ECDSA-Sig-Value, ECPoint | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | FROM PKIXAlgs-1988 | |||
| smime(16) modules(0) id-mod-cms-aes(32) } | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) id-mod(0) TBD } | ||||
| -- 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] | |||
| hMAC-SHA1, id-alg-CMS3DESwrap, CBCParameter | hMAC-SHA1, des-ede3-cbc, id-alg-CMS3DESwrap, CBCParameter | |||
| FROM CryptographicMessageSyntaxAlgorithms | FROM CryptographicMessageSyntaxAlgorithms | |||
| { 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) cmsalg-2001(16) } | smime(16) modules(0) cmsalg-2001(16) } | |||
| -- From [PKI-ALG] | -- From [CMS-AES] | |||
| id-ecPublicKey, ecdsa-with-SHA1 | id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV, | |||
| FROM PKIXAlgs-1988 | id-aes128-wrap, id-aes192-wrap, id-aes256-wrap | |||
| { iso(1) identified-organization(3) dod(6) internet(1) | FROM CMSAesRsaesOaep | |||
| security(5) mechanisms(5) pkix(7) id-mod(0) TBD } | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | |||
| smime(16) modules(0) id-mod-cms-aes(19) } | ||||
| -- From [CMS-AESCG] | ||||
| id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters | ||||
| id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters | ||||
| FROM CMS-AES-CCM-and-AES-GCM | ||||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
| smime(16) modules(0) id-mod-cms-aes(32) } | ||||
| ; | ; | |||
| -- | -- | |||
| -- ECDSA with SHA-2 Algorithms | -- ECDSA with SHA-2 Algorithms | |||
| -- | -- | |||
| -- Parameters are NULL | ||||
| -- ecdsa-with-SHA1 Parameters are NULL | -- ecdsa-with-SHA1 Parameters are NULL | |||
| -- ecdsa-with-SHA224 Parameters are ABSENT | ||||
| ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { | -- ecdsa-with-SHA256 Parameters are ABSENT | |||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 1 } | ||||
| ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { | ||||
| iso(1) member-body(2) us(840)ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 2 } | ||||
| ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { | -- ecdsa-with-SHA384 Parameters are ABSENT | |||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 3 } | ||||
| ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { | -- ecdsa-with-SHA512 Parameters are absent | |||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 4 } | ||||
| -- ECDSA Signature Value | -- ECDSA Signature Value | |||
| -- Contents of SignatureValue OCTET STRING | -- Contents of SignatureValue OCTET STRING | |||
| ECDSA-Sig-Value ::= SEQUENCE { | -- ECDSA-Sig-Value ::= SEQUENCE { | |||
| r INTEGER, | -- r INTEGER, | |||
| s INTEGER | -- s INTEGER | |||
| } | -- } | |||
| -- | -- | |||
| -- Key Agreement Algorithms | -- Key Agreement Algorithms | |||
| -- | -- | |||
| x9-63-scheme OBJECT IDENTIFIER ::= { | x9-63-scheme OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) tc68(133) country(16) x9(840) | iso(1) identified-organization(3) tc68(133) country(16) x9(840) | |||
| x9-63(63) schemes(0) } | x9-63(63) schemes(0) } | |||
| secg-scheme OBJECT IDENTIFIER ::= { | secg-scheme OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) certicom(132) schemes(1) } | iso(1) identified-organization(3) certicom(132) schemes(1) } | |||
| -- | -- | |||
| -- Diffie-Hellman Single Pass, Standard, with KDFs | -- Diffie-Hellman Single Pass, Standard, with KDFs | |||
| -- | -- | |||
| -- Parameters are always present and indicate the Key Wrap Algorithm | -- Parameters are always present and indicate the key wrap algorithm | |||
| -- with KeyWrapAlgorithm | ||||
| dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 2 } | x9-63-scheme 2 } | |||
| dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 0 } | secg-scheme 11 0 } | |||
| dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 1 } | secg-scheme 11 1 } | |||
| skipping to change at page 31, line 9 ¶ | skipping to change at page 34, line 9 ¶ | |||
| mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 2 } | secg-scheme 15 2 } | |||
| 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 | ||||
| -- 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 | |||
| skipping to change at page 31, line 33 ¶ | skipping to change at page 34, line 35 ¶ | |||
| -- 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 | |||
| -- | -- | |||
| -- Parameters are NULL | ||||
| -- 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-SHA] | -- HMAC with SHA-512 are specified in [HMAC-SHA2] | |||
| -- Parameters are ABSENT | ||||
| -- hMACWithSHA1 | -- hMACWithSHA1 | |||
| 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 } | |||
| skipping to change at page 32, line 17 ¶ | skipping to change at page 35, line 17 ¶ | |||
| digestAlgorithm(2) 11 } | digestAlgorithm(2) 11 } | |||
| -- | -- | |||
| -- Originator Public Key Algorithms | -- Originator Public Key Algorithms | |||
| -- | -- | |||
| -- id-ecPublicKey Parameters are NULL | -- id-ecPublicKey Parameters are NULL | |||
| -- 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 | |||
| } | } | |||
| -- Format for ECDH and ECMQV key-encryption keys when using | -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | |||
| -- EnvelopedData or AuthenticatedData | -- 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 SHA2 Algorithms | -- S/MIME Capabilities: ECDSA with SHA1 and SHA2 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 Key Wrap Algorithm | -- dhSinglePass-stdDH-sha1kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha224kdf Type is the Key Wrap Algorithm | -- dhSinglePass-stdDH-sha224kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha256kdf Type is the Key Wrap Algorithm | -- dhSinglePass-stdDH-sha256kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha384kdf Type is the Key Wrap Algorithm | -- dhSinglePass-stdDH-sha384kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-stdDH-sha512kdf Type is the Key Wrap Algorithm | -- dhSinglePass-stdDH-sha512kdf Type is the KeyWrapAlgorithm | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECDH, Single Pass, Cofactor | -- S/MIME Capabilities: ECDH, Single Pass, Cofactor | |||
| -- | -- | |||
| -- dhSinglePass-cofactorDH-sha1kdf Type is the Key Wrap Algorithm | -- dhSinglePass-cofactorDH-sha1kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-cofactorDH-sha224kdf Type is the Key Wrap Algorithm | -- dhSinglePass-cofactorDH-sha224kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-cofactorDH-sha256kdf Type is the Key Wrap Algorithm | -- dhSinglePass-cofactorDH-sha256kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-cofactorDH-sha384kdf Type is the Key Wrap Algorithm | -- dhSinglePass-cofactorDH-sha384kdf Type is the KeyWrapAlgorithm | |||
| -- dhSinglePass-cofactorDH-sha512kdf Type is the Key Wrap Algorithm | -- dhSinglePass-cofactorDH-sha512kdf Type is the KeyWrapAlgorithm | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECMQV, Single Pass, Standard | -- S/MIME Capabilities: ECMQV, Single Pass, Standard | |||
| -- | -- | |||
| -- mqvSinglePass-sha1kdf Type is the Key Wrap Algorithm | -- mqvSinglePass-sha1kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha224kdf Type is the Key Wrap Algorithm | -- mqvSinglePass-sha224kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha256kdf Type is the Key Wrap Algorithm | -- mqvSinglePass-sha256kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha384kdf Type is the Key Wrap Algorithm | -- mqvSinglePass-sha384kdf Type is the KeyWrapAlgorithm | |||
| -- mqvSinglePass-sha512kdf Type is the Key Wrap Algorithm | -- 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) TBD } | |||
| DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
| BEGIN | BEGIN | |||
| -- EXPORTS ALL | -- EXPORTS ALL | |||
| IMPORTS | IMPORTS | |||
| -- From [PKI-ALG] | -- FROM [PKI-ASN] | |||
| ALGORITHM, algorithmIdentifier, MessageDigestAlgorithms, | KEY-WRAP, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, ALGORITHM, | |||
| SignatureAlgorithms | PUBLIC-KEY, MAC-ALGORITHM, CONTENT-ENCRYPTION, KEY-AGREE | |||
| ow-sha1, ow-sha224, ow-sha256, ow-sha384, ow-sha512, | FROM AlgorithmInformation | |||
| sa-ecdsaWithSHA1 | ||||
| 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) | |||
| id-mod-algorithInformation(TBD)} | ||||
| -- From [CMS-AES] | -- From [PKI-ASN] | |||
| id-aes128-CBC, id-aes192-CBC, id-aes256-CBC, AES-IV, | mda-sha1, sa-ecdsaWithSHA1, sa-ecdsaWithSHA224, sa-ecdsaWithSHA256, | |||
| id-aes128-wrap, id-aes192-wrap, id-aes1256-wrap | sa-ecdsaWithSHA384, sa-ecdsaWithSHA512, id-ecPublicKey, | |||
| FROM CMSAesRsaesOaep | ECDSA-Sig-Value, ECPoint | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | FROM PKIXAlgs-2008 | |||
| smime(16) modules(0) id-mod-cms-aes(19) } | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) id-mod(0) TBD } | ||||
| -- From [CMS-AESCG] | -- From [PKI-ASN] | |||
| id-aes128-CCM, id-aes192-CCM, id-aes256-CCM, CCMParameters, | mda-sha224, mda-sha256, mda-sha384, mda-sha512 | |||
| id-aes128-GCM, id-aes192-GCM, id-aes256-GCM, GCMParameters | FROM PKIX1-PSS-OAEP-Algorithms | |||
| FROM CMS-AES-CCM-and-AES-GCM | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | security(5) mechanisms(5) pkix(7) id-mod(0) TBD } | |||
| smime(16) modules(0) id-mod-cms-aes(32) } | ||||
| -- From [CMS] | -- From [CMS] | |||
| OriginatorPublicKey, UserKeyingMaterial | OriginatorPublicKey, UserKeyingMaterial | |||
| FROM CryptographicMessageSyntax2004 | FROM CryptographicMessageSyntax2004 | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | |||
| smime(16) modules(0) cms-2004(24) } | smime(16) modules(0) cms-2004(24) } | |||
| -- From [CMS-ALG] | -- From [CMS-ASN] | |||
| hMAC-SHA1, id-alg-CMS3DESwrap, CBCParameter | maca-hMAC-SHA1, cea-des-ede3-cbc, kwa-3DESWrap, CBCParameter | |||
| FROM CryptographicMessageSyntaxAlgorithms | FROM CryptographicMessageSyntaxAlgorithms | |||
| { 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) cmsalg-2001(16) } | smime(16) modules(0) cmsalg-2001(16) } | |||
| -- From [CMS-ASN] | ||||
| cea-aes128-CBC, cea-aes192-CBC, cea-aes256-CBC, kwa-aes128-wrap, | ||||
| kwa-aes192-wrap, kwa-aes256-wrap | ||||
| FROM CMSAesRsaesOaep | ||||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
| smime(16) modules(0) id-mod-cms-aes(19) } | ||||
| -- From [CMS-ASN] | ||||
| cea-aes128-ccm, cea-aes192-ccm, cea-aes256-ccm, cea-aes128-gcm, | ||||
| cea-aes192-gcm, cea-aes256-gcm | ||||
| FROM CMS-AES-CCM-and-AES-GCM | ||||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
| smime(16) modules(0) cms-aes-ccm-and-gcm(32) } | ||||
| ; | ; | |||
| -- Constrains the SignedData digestAlgorithms field | -- Constrains the SignedData digestAlgorithms field | |||
| -- Constrains the SignedData SignerInfo digestAlgorithm field | -- Constrains the SignedData SignerInfo digestAlgorithm field | |||
| -- Constrains the AuthenticatedData digestAlgorithm field | -- Constrains the AuthenticatedData digestAlgorithm field | |||
| MessageDigestAlgorithms ALGORITHM ::= { | -- MessageDigestAlgorithms DIGEST-ALGORITHM ::= { | |||
| ow-sha1 | | -- mda-sha1 | | |||
| ow-sha224 | | -- mda-sha224 | | |||
| ow-sha256 | | -- mda-sha256 | | |||
| ow-sha384 | | -- mda-sha384 | | |||
| ow-sha512, | -- mda-sha512, | |||
| ... -- Extensible | -- ... -- Extensible | |||
| } | -- } | |||
| -- Constrains the SignedData SignerInfo signatureAlgorithm field | -- Constrains the SignedData SignerInfo signatureAlgorithm field | |||
| SignatureAlgorithms 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 with SHA-2 Algorithms | ||||
| -- | ||||
| -- Parameters are NULL | ||||
| -- sa-ecdsa-withSHA1 | ||||
| sa-ecdsa-with-SHA224 ALGORITHM ::= { | ||||
| OID ecdsa-with-SHA224 PARMS NULL } | ||||
| ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { | ||||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 1 } | ||||
| sa-ecdsa-with-SHA256 ALGORITHM ::= { | ||||
| OID ecdsa-with-SHA256 PARMS NULL } | ||||
| ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { | ||||
| iso(1) member-body(2) us(840)ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 2 } | ||||
| sa-ecdsa-with-SHA384 ALGORITHM ::= { | ||||
| OID ecdsa-with-SHA384 PARMS NULL } | ||||
| ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { | ||||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 3 } | ||||
| sa-ecdsa-with-SHA512 ALGORITHM ::= { | ||||
| OID ecdsa-with-SHA512 PARMS NULL } | ||||
| ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { | ||||
| iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) | ||||
| ecdsa-with-SHA2(3) 4 } | ||||
| -- ECDSA Signature Value | -- 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 | |||
| -- KeyAgreeRecipientInfo keyEncryption Algorithm field | -- KeyAgreeRecipientInfo keyEncryption Algorithm field | |||
| -- DH variants are not used with AuthenticatedData or | -- DH variants are not used with AuthenticatedData or | |||
| -- AuthEnvelopedData | -- AuthEnvelopedData | |||
| KeyAgreementAlgorithms KEY-AGREE ::= { | ||||
| KeyAgreementAlgorithms ALGORITHM ::= { | ||||
| kaa-dhSinglePass-stdDH-sha1kdf | | kaa-dhSinglePass-stdDH-sha1kdf | | |||
| kaa-dhSinglePass-stdDH-sha224kdf | | kaa-dhSinglePass-stdDH-sha224kdf | | |||
| kaa-dhSinglePass-stdDH-sha256kdf | | kaa-dhSinglePass-stdDH-sha256kdf | | |||
| kaa-dhSinglePass-stdDH-sha384kdf | | kaa-dhSinglePass-stdDH-sha384kdf | | |||
| kaa-dhSinglePass-stdDH-sha512kdf | | kaa-dhSinglePass-stdDH-sha512kdf | | |||
| kaa-dhSinglePass-cofactorDH-sha1kdf | | kaa-dhSinglePass-cofactorDH-sha1kdf | | |||
| kaa-dhSinglePass-cofactorDH-sha224kdf | | kaa-dhSinglePass-cofactorDH-sha224kdf | | |||
| kaa-dhSinglePass-cofactorDH-sha256kdf | | kaa-dhSinglePass-cofactorDH-sha256kdf | | |||
| kaa-dhSinglePass-cofactorDH-sha384kdf | | kaa-dhSinglePass-cofactorDH-sha384kdf | | |||
| kaa-dhSinglePass-cofactorDH-sha512kdf | | kaa-dhSinglePass-cofactorDH-sha512kdf | | |||
| skipping to change at page 38, line 11 ¶ | skipping to change at page 40, line 36 ¶ | |||
| secg-scheme OBJECT IDENTIFIER ::= { | secg-scheme OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) certicom(132) schemes(1) } | iso(1) identified-organization(3) certicom(132) schemes(1) } | |||
| -- | -- | |||
| -- Diffie-Hellman Single Pass, Standard, with KDFs | -- Diffie-Hellman Single Pass, Standard, with KDFs | |||
| -- | -- | |||
| -- Parameters are always present and indicate the Key Wrap Algorithm | -- Parameters are always present and indicate the Key Wrap Algorithm | |||
| kaa-dhSinglePass-stdDH-sha1kdf ALGORITHM ::= { | kaa-dhSinglePass-stdDH-sha1kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-stdDH-sha1kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-stdDH-sha1kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 2 } | x9-63-scheme 2 } | |||
| kaa-dhSinglePass-stdDH-sha224kdf ALGORITHM ::= { | kaa-dhSinglePass-stdDH-sha224kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-stdDH-sha224kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-stdDH-sha224kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 0 } | secg-scheme 11 0 } | |||
| kaa-dhSinglePass-stdDH-sha256kdf ALGORITHM ::= { | kaa-dhSinglePass-stdDH-sha256kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-stdDH-sha256kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-stdDH-sha256kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 1 } | secg-scheme 11 1 } | |||
| kaa-dhSinglePass-stdDH-sha384kdf ALGORITHM ::= { | kaa-dhSinglePass-stdDH-sha384kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-stdDH-sha384kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-stdDH-sha384kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-stdDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 2 } | secg-scheme 11 2 } | |||
| kaa-dhSinglePass-stdDH-sha512kdf ALGORITHM ::= { | kaa-dhSinglePass-stdDH-sha512kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-stdDH-sha512kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-stdDH-sha512kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-stdDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-stdDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 11 3 } | secg-scheme 11 3 } | |||
| -- | -- | |||
| -- Diffie-Hellman Single Pass, Cofactor, with KDFs | -- Diffie-Hellman Single Pass, Cofactor, with KDFs | |||
| -- | -- | |||
| kaa-dhSinglePass-cofactorDH-sha1kdf ALGORITHM ::= { | kaa-dhSinglePass-cofactorDH-sha1kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-cofactorDH-sha1kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER dhSinglePass-cofactorDH-sha1kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-cofactorDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-cofactorDH-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 3 } | x9-63-scheme 3 } | |||
| kaa-dhSinglePass-cofactorDH-sha224kdf ALGORITHM ::= { | kaa-dhSinglePass-cofactorDH-sha224kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-cofactorDH-sha224kdf-scheme | IDENTIFIER dhSinglePass-cofactorDH-sha224kdf-scheme | |||
| PARMS KeyWrapAlgorithms } | PARAMS TYPE KeyWrapAlgorithm ARE required | |||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-cofactorDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-cofactorDH-sha224kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 14 0 } | secg-scheme 14 0 } | |||
| kaa-dhSinglePass-cofactorDH-sha256kdf ALGORITHM ::= { | kaa-dhSinglePass-cofactorDH-sha256kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-cofactorDH-sha256kdf-scheme | IDENTIFIER dhSinglePass-cofactorDH-sha256kdf-scheme | |||
| PARMS KeyWrapAlgorithms } | PARAMS TYPE KeyWrapAlgorithm ARE required | |||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-cofactorDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-cofactorDH-sha256kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 14 1 } | secg-scheme 14 1 } | |||
| kaa-dhSinglePass-cofactorDH-sha384kdf ALGORITHM ::= { | kaa-dhSinglePass-cofactorDH-sha384kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-cofactorDH-sha384kdf-scheme | IDENTIFIER dhSinglePass-cofactorDH-sha384kdf-scheme | |||
| PARMS KeyWrapAlgorithms } | PARAMS TYPE KeyWrapAlgorithm ARE required | |||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-cofactorDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-cofactorDH-sha384kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 14 2 } | secg-scheme 14 2 } | |||
| kaa-dhSinglePass-cofactorDH-sha512kdf ALGORITHM ::= { | kaa-dhSinglePass-cofactorDH-sha512kdf KEY-AGREE ::= { | |||
| OID dhSinglePass-cofactorDH-sha512kdf-scheme | IDENTIFIER dhSinglePass-cofactorDH-sha512kdf-scheme | |||
| PARMS KeyWrapAlgorithms } | PARAMS TYPE KeyWrapAlgorithm ARE required | |||
| UKM IS preferredPresent | ||||
| } | ||||
| dhSinglePass-cofactorDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { | dhSinglePass-cofactorDH-sha512kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 14 3 } | secg-scheme 14 3 } | |||
| -- | -- | |||
| -- MQV Single Pass, Cofactor, with KDFs | -- MQV Single Pass, Cofactor, with KDFs | |||
| -- | -- | |||
| kaa-mqvSinglePass-sha1kdf ALGORITHM ::= { | kaa-mqvSinglePass-sha1kdf KEY-AGREE ::= { | |||
| OID mqvSinglePass-sha1kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER mqvSinglePass-sha1kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| mqvSinglePass-sha1kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha1kdf-scheme OBJECT IDENTIFIER ::= { | |||
| x9-63-scheme 16 } | x9-63-scheme 16 } | |||
| kaa-mqvSinglePass-sha224kdf ALGORITHM ::= { | kaa-mqvSinglePass-sha224kdf KEY-AGREE ::= { | |||
| OID mqvSinglePass-sha224kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER mqvSinglePass-sha224kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| mqvSinglePass-sha224kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha224kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 0 } | secg-scheme 15 0 } | |||
| kaa-mqvSinglePass-sha256kdf ALGORITHM ::= { | kaa-mqvSinglePass-sha256kdf KEY-AGREE ::= { | |||
| OID mqvSinglePass-sha256kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER mqvSinglePass-sha256kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| mqvSinglePass-sha256kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha256kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 1 } | secg-scheme 15 1 } | |||
| kaa-mqvSinglePass-sha384kdf ALGORITHM ::= { | kaa-mqvSinglePass-sha384kdf KEY-AGREE ::= { | |||
| OID mqvSinglePass-sha384kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER mqvSinglePass-sha384kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha384kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 2 } | secg-scheme 15 2 } | |||
| kaa-mqvSinglePass-sha512kdf ALGORITHM ::= { | kaa-mqvSinglePass-sha512kdf KEY-AGREE ::= { | |||
| OID mqvSinglePass-sha512kdf-scheme PARMS KeyWrapAlgorithms } | IDENTIFIER mqvSinglePass-sha512kdf-scheme | |||
| PARAMS TYPE KeyWrapAlgorithm ARE required | ||||
| UKM IS preferredPresent | ||||
| } | ||||
| mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= { | mqvSinglePass-sha512kdf-scheme OBJECT IDENTIFIER ::= { | |||
| secg-scheme 15 3 } | secg-scheme 15 3 } | |||
| -- | -- | |||
| -- Key Wrap Algorithms | -- Key Wrap Algorithms | |||
| -- | -- | |||
| KeyWrapAlgorithms ALGORITHM ::= { | KeyWrapAlgorithm KEY-WRAP ::= { | |||
| kwa-3des | | kwa-3des | | |||
| kwa-aes128 | | kwa-aes128 | | |||
| kwa-aes192 | | kwa-aes192 | | |||
| kwa-aes256, | kwa-aes256, | |||
| ... -- Extensible | ... -- Extensible | |||
| } | } | |||
| kwa-3des ALGORITHM :: = { | ||||
| OID id-alg-CMS3DESwrap PARMS NULL } | ||||
| kwa-aes128 ALGORITHM ::= { | ||||
| OID id-aes128-wrap PARMS ABSENT } | ||||
| kwa-aes192 ALGORITHM ::= { | ||||
| OID id-aes192-wrap PARMS ABSENT } | ||||
| kwa-aes256 ALGORITHM ::= { | ||||
| OID id-aes256-wrap PARMS ABSENT } | ||||
| -- | -- | |||
| -- Content Encryption Algorithms | -- Content Encryption Algorithms | |||
| -- | -- | |||
| -- Constrains the EnvelopedData EncryptedContentInfo encryptedContent | -- Constrains the EnvelopedData EncryptedContentInfo encryptedContent | |||
| -- field and the AuthEnvelopedData EncryptedContentInfo | -- field and the AuthEnvelopedData EncryptedContentInfo | |||
| -- contentEncryptionAlgorithm field | -- contentEncryptionAlgorithm field | |||
| ContentEncryptionAlgorithms ALGORITHM ::= { | -- ContentEncryptionAlgorithms CONTENT-ENCRYPTION ::= { | |||
| cea-des-ede3-cbc | | -- cea-des-ede3-cbc | | |||
| cea-aes128-cbc | | -- cea-aes128-cbc | | |||
| cea-aes192-cbc | | -- cea-aes192-cbc | | |||
| cea-aes256-cbc | | -- cea-aes256-cbc | | |||
| cea-aes128-ccm | | -- cea-aes128-ccm | | |||
| cea-aes192-ccm | | -- cea-aes192-ccm | | |||
| cea-aes256-ccm | | -- cea-aes256-ccm | | |||
| cea-aes128-gcm | | -- cea-aes128-gcm | | |||
| cea-aes192-gcm | | -- cea-aes192-gcm | | |||
| cea-aes256-gcm, | -- cea-aes256-gcm, | |||
| ... -- Extensible | -- ... -- Extensible | |||
| } | -- } | |||
| -- des-ede3-cbc and aes*-cbc are used with EnvelopedData and | -- des-ede3-cbc and aes*-cbc are used with EnvelopedData and | |||
| -- EncryptedData | -- EncryptedData | |||
| cea-des-ede3-cbc ALGORITHM ::= { | ||||
| OID des-ede3-cbc PARMS CBCParameter } | ||||
| cea-aes128-cbc ALGORITHM ::= { | ||||
| OID id-aes128-CBC PARMS AES-IV } | ||||
| cea-aes192-cbc ALGORITHM ::= { | ||||
| OID id-aes192-CBC PARMS AES-IV } | ||||
| cea-aes256-cbc ALGORITHM ::= { | ||||
| OID id-aes256-CBC PARMS AES-IV } | ||||
| -- aes*-ccm are used with AuthEnvelopedData | -- aes*-ccm are used with AuthEnvelopedData | |||
| cea-aes128-ccm ALGORITHM ::= { | ||||
| OID id-aes128-CCM PARMS CCMParameters } | ||||
| cea-aes192-ccm ALGORITHM ::= { | ||||
| OID id-aes192-CCM PARMS CCMParameters } | ||||
| cea-aes256-ccm ALGORITHM ::= { | ||||
| OID id-aes256-CCM PARMS CCMParameters } | ||||
| -- aes*-gcm are used with AuthEnvelopedData | -- aes*-gcm are used with AuthEnvelopedData | |||
| cea-aes128-gcm ALGORITHM ::= { | ||||
| OID id-aes128-GCM PARMS GCMParameters } | ||||
| cea-aes192-gcm ALGORITHM ::= { | ||||
| OID id-aes192-GCM PARMS GCMParameters } | ||||
| cea-aes256-gcm ALGORITHM ::= { | ||||
| OID id-aes256-GCM PARMS GCMParameters } | ||||
| -- | -- | |||
| -- Message Digest Algorithms | -- Message Digest Algorithms | |||
| -- | -- | |||
| -- 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-SHA] | -- 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 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 | |||
| } | } | |||
| maca-sha1 ALGORITHM ::= { | ||||
| OID hMAC-SHA1 PARMS NULL } | ||||
| maca-sha224 ALGORITHM ::= { | ||||
| OID id-hmacWithSHA224 PARMS NULL } | ||||
| -- Would love to import the HMAC224-512 OIDS but they're not in a | -- Would love to import the HMAC224-512 OIDS but they're not in a | |||
| -- module (that I could find) | -- module (that I could find) | |||
| maca-sha224 MAC-ALGORITHM ::= { | ||||
| IDENTIFIER id-hmacWithSHA224 | ||||
| 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 ALGORITHM ::= { | maca-sha256 MAC-ALGORITHM ::= { | |||
| OID id-hmacWithSHA256 PARMS NULL } | IDENTIFIER id-hmacWithSHA256 | |||
| PARAMS TYPE NULL ARE preferredPresent | ||||
| } | ||||
| 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 } | |||
| maca-sha384 ALGORITHM ::= { | maca-sha384 MAC-ALGORITHM ::= { | |||
| OID id-hmacWithSHA384 PARMS NULL } | IDENTIFIER id-hmacWithSHA384 | |||
| PARAMS TYPE NULL ARE preferredPresent | ||||
| } | ||||
| id-hmacWithSHA384 OBJECT IDENTIFIER ::= { | id-hmacWithSHA384 OBJECT IDENTIFIER ::= { | |||
| iso(1) member-body(2) us(840) rsadsi(113549) | iso(1) member-body(2) us(840) rsadsi(113549) | |||
| digestAlgorithm(2) 10 } | digestAlgorithm(2) 10 } | |||
| maca-sha512 ALGORITHM ::= { | maca-sha512 MAC-ALGORITHM ::= { | |||
| OID id-hmacWithSHA512 PARMS NULL } | IDENTIFIER id-hmacWithSHA512 | |||
| PARAMS TYPE NULL ARE preferredPresent | ||||
| } | ||||
| 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 | |||
| -- | -- | |||
| -- Constraints on KeyAgreeRecipientInfo OriginatorIdentifierOrKey | -- Constraints on KeyAgreeRecipientInfo OriginatorIdentifierOrKey | |||
| -- OriginatorPublicKey algorithm field | -- OriginatorPublicKey algorithm field | |||
| -- PARMS are NULL | -- PARAMS are NULL | |||
| OriginatorPKAlgorithms ALGORITHM ::= { | OriginatorPKAlgorithms PUBLIC-KEY ::= { | |||
| opka-ec, | opka-ec, | |||
| ... -- Extensible | ... -- Extensible | |||
| } | } | |||
| opka-ec AGLORITHM ::={ | opka-ec PUBLIC-KEY ::={ | |||
| OID id-ecPublicKey PARMS NULL } | IDENTIFIER id-ecPublicKey | |||
| KEY ECPoint | ||||
| PARAMS TYPE CHOICE { n NULL, p ECPoint } 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 | |||
| } | } | |||
| -- Format for ECDH and ECMQV key-encryption keys when using | ||||
| -- EnvelopedData or AuthenticatedData | -- 'SharedInfo' for input to KDF when using ECDH and ECMQV with | |||
| -- EnvelopedData, AuthenticatedData, or AuthEnvelopedData | ||||
| ECC-CMS-SharedInfo ::= SEQUENCE { | ECC-CMS-SharedInfo ::= SEQUENCE { | |||
| keyInfo AlgorithmIdentifier { KeyWrapAlgorithms }, | 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 | |||
| } | } | |||
| -- | -- | |||
| -- S/MIME Capabilities | -- S/MIME Capabilities | |||
| -- | -- | |||
| SMIME-CAPS ::= CLASS { | SMIME-CAPS ::= CLASS { | |||
| &Type OPTIONAL, | &Type OPTIONAL, | |||
| skipping to change at page 45, line 33 ¶ | skipping to change at page 48, line 33 ¶ | |||
| 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 SHA2 Algorithms | |||
| -- | -- | |||
| cap-ecdsa-with-SHA1 SMIME-CAPS ::= { | cap-ecdsa-with-SHA1 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY ecdsa-with-SHA1 } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA1.&id } | |||
| cap-ecdsa-with-SHA224 SMIME-CAPS ::= { | cap-ecdsa-with-SHA224 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY ecdsa-with-SHA224 } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA224.&id } | |||
| cap-ecdsa-with-SHA256 SMIME-CAPS ::= { | cap-ecdsa-with-SHA256 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY ecdsa-with-SHA256 } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA256.&id } | |||
| cap-ecdsa-with-SHA384 SMIME-CAPS ::= { | cap-ecdsa-with-SHA384 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY ecdsa-with-SHA384 } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA384.&id } | |||
| cap-ecdsa-with-SHA512 SMIME-CAPS ::= { | cap-ecdsa-with-SHA512 SMIME-CAPS ::= { | |||
| TYPE NULL IDENTIFIED BY ecdsa-with-SHA512 } | TYPE NULL IDENTIFIED BY sa-ecdsaWithSHA512.&id } | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECDH, Single Pass, Standard | -- S/MIME Capabilities: ECDH, Single Pass, Standard | |||
| -- | -- | |||
| cap-dhSinglePass-stdDH-sha1kdf SMIME-CAPS ::= { | cap-dhSinglePass-stdDH-sha1kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha1kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY dhSinglePass-stdDH-sha1kdf } | |||
| cap-dhSinglePass-stdDH-sha224kdf SMIME-CAPS ::= { | cap-dhSinglePass-stdDH-sha224kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha224kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY dhSinglePass-stdDH-sha224kdf } | |||
| cap-dhSinglePass-stdDH-sha256kdf SMIME-CAPS ::= { | cap-dhSinglePass-stdDH-sha256kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha256kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY dhSinglePass-stdDH-sha256kdf } | |||
| cap-dhSinglePass-stdDH-sha384kdf SMIME-CAPS ::= { | cap-dhSinglePass-stdDH-sha384kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha384kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY dhSinglePass-stdDH-sha384kdf } | |||
| cap-dhSinglePass-stdDH-sha512kdf SMIME-CAPS ::= { | cap-dhSinglePass-stdDH-sha512kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY dhSinglePass-stdDH-sha512kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY dhSinglePass-stdDH-sha512kdf } | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECDH, Single Pass, Cofactor | -- S/MIME Capabilities: ECDH, Single Pass, Cofactor | |||
| -- | -- | |||
| cap-dhSinglePass-cofactorDH-sha1kdf SMIME-CAPS ::= { | cap-dhSinglePass-cofactorDH-sha1kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms | TYPE KeyWrapAlgorithm | |||
| IDENTIFIED BY dhSinglePass-cofactorDH-sha1kdf } | IDENTIFIED BY dhSinglePass-cofactorDH-sha1kdf } | |||
| cap-dhSinglePass-cofactorDH-sha224kdf SMIME-CAPS ::= { | cap-dhSinglePass-cofactorDH-sha224kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms | TYPE KeyWrapAlgorithm | |||
| IDENTIFIED BY dhSinglePass-cofactorDH-sha224kdf } | IDENTIFIED BY dhSinglePass-cofactorDH-sha224kdf } | |||
| cap-dhSinglePass-cofactorDH-sha256kdf SMIME-CAPS ::= { | cap-dhSinglePass-cofactorDH-sha256kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms | TYPE KeyWrapAlgorithm | |||
| IDENTIFIED BY dhSinglePass-cofactorDH-sha256kdf } | IDENTIFIED BY dhSinglePass-cofactorDH-sha256kdf } | |||
| cap-dhSinglePass-cofactorDH-sha384kdf SMIME-CAPS ::= { | cap-dhSinglePass-cofactorDH-sha384kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms | TYPE KeyWrapAlgorithm | |||
| IDENTIFIED BY dhSinglePass-cofactorDH-sha384kdf } | IDENTIFIED BY dhSinglePass-cofactorDH-sha384kdf } | |||
| cap-dhSinglePass-cofactorDH-sha512kdf SMIME-CAPS ::= { | cap-dhSinglePass-cofactorDH-sha512kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms | TYPE KeyWrapAlgorithm | |||
| IDENTIFIED BY dhSinglePass-cofactorDH-sha512kdf } | IDENTIFIED BY dhSinglePass-cofactorDH-sha512kdf } | |||
| -- | -- | |||
| -- S/MIME Capabilities: ECMQV, Single Pass, Standard | -- S/MIME Capabilities: ECMQV, Single Pass, Standard | |||
| -- | -- | |||
| cap-mqvSinglePass-sha1kdf SMIME-CAPS ::= { | cap-mqvSinglePass-sha1kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha1kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY mqvSinglePass-sha1kdf } | |||
| cap-mqvSinglePass-sha224kdf SMIME-CAPS ::= { | cap-mqvSinglePass-sha224kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha224kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY mqvSinglePass-sha224kdf } | |||
| cap-mqvSinglePass-sha256kdf SMIME-CAPS ::= { | cap-mqvSinglePass-sha256kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha256kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY mqvSinglePass-sha256kdf } | |||
| cap-mqvSinglePass-sha384kdf SMIME-CAPS ::= { | cap-mqvSinglePass-sha384kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha384kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY mqvSinglePass-sha384kdf } | |||
| cap-mqvSinglePass-sha512kdf SMIME-CAPS ::= { | cap-mqvSinglePass-sha512kdf SMIME-CAPS ::= { | |||
| TYPE KeyWrapAlgorithms IDENTIFIED BY mqvSinglePass-sha512kdf } | TYPE KeyWrapAlgorithm IDENTIFIED BY mqvSinglePass-sha512kdf } | |||
| END | END | |||
| 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 the initial version of RFC3278 this | |||
| version wouldn't exist. | version wouldn't exist. | |||
| The authors also wish to thank Alfred Hoenes, Jim Schaad, and Russ | The authors also wish to thank Alfred Hoenes, Paul Hoffman, Russ | |||
| Housley 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 | |||
| Fairfax, VA 22031 | Fairfax, VA 22031 | |||
| USA | USA | |||
| End of changes. 194 change blocks. | ||||
| 631 lines changed or deleted | 812 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/ | ||||