draft-ietf-lamps-cms-shakes-07.txt | draft-ietf-lamps-cms-shakes-08.txt | |||
---|---|---|---|---|
LAMPS WG P. Kampanakis | LAMPS WG P. Kampanakis | |||
Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
Intended status: Standards Track Q. Dang | Intended status: Standards Track Q. Dang | |||
Expires: August 4, 2019 NIST | Expires: September 9, 2019 NIST | |||
January 31, 2019 | March 8, 2019 | |||
Use of the SHAKE One-way Hash Functions in the Cryptographic Message | Use of the SHAKE One-way Hash Functions in the Cryptographic Message | |||
Syntax (CMS) | Syntax (CMS) | |||
draft-ietf-lamps-cms-shakes-07 | draft-ietf-lamps-cms-shakes-08 | |||
Abstract | Abstract | |||
This document describes the conventions for using the SHAKE family of | This document describes the conventions for using the SHAKE family of | |||
hash functions with the Cryptographic Message Syntax (CMS) as one-way | hash functions with the Cryptographic Message Syntax (CMS) as one-way | |||
hash functions with the RSA Probabilistic signature and ECDSA | hash functions with the RSA Probabilistic signature and ECDSA | |||
signature algorithms, as message digests and message authentication | signature algorithms, as message digests and message authentication | |||
codes. The conventions for the associated signer public keys in CMS | codes. The conventions for the associated signer public keys in CMS | |||
are also described. | are also described. | |||
skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
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." | |||
This Internet-Draft will expire on August 4, 2019. | This Internet-Draft will expire on September 9, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 13 ¶ | skipping to change at page 2, line 13 ¶ | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Use in CMS . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Use in CMS . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1. Message Digests . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Message Digests . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. Signatures . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. Signatures . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2.1. RSASSA-PSS Signatures . . . . . . . . . . . . . . . . 7 | 4.2.1. RSASSA-PSS Signatures . . . . . . . . . . . . . . . . 7 | |||
4.2.2. ECDSA Signatures . . . . . . . . . . . . . . . . . . 7 | 4.2.2. ECDSA Signatures . . . . . . . . . . . . . . . . . . 8 | |||
4.3. Public Keys . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.3. Public Keys . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.4. Message Authentication Codes . . . . . . . . . . . . . . 8 | 4.4. Message Authentication Codes . . . . . . . . . . . . . . 9 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 11 | 8.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 12 | Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
1. Change Log | 1. Change Log | |||
[ EDNOTE: Remove this section before publication. ] | [ EDNOTE: Remove this section before publication. ] | |||
o draft-ietf-lamps-cms-shake-08: | ||||
* id-shake128-len and id-shake256-len were replaced with id- | ||||
sha128 with 32 bytes output length and id-shake256 with 64 | ||||
bytes output length. | ||||
* Fixed a discrepancy between section 3 and 4.4 about the KMAC | ||||
OIDs that have parameters as optional. | ||||
o draft-ietf-lamps-cms-shake-07: | o draft-ietf-lamps-cms-shake-07: | |||
* Small nit from Russ while in WGLC. | * Small nit from Russ while in WGLC. | |||
o draft-ietf-lamps-cms-shake-06: | o draft-ietf-lamps-cms-shake-06: | |||
* Incorporated Eric's suggestion from WGLC. | * Incorporated Eric's suggestion from WGLC. | |||
o draft-ietf-lamps-cms-shake-05: | o draft-ietf-lamps-cms-shake-05: | |||
skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 17 ¶ | |||
This section defines six new object identifiers (OIDs) for using | This section defines six new object identifiers (OIDs) for using | |||
SHAKE128 and SHAKE256 in CMS. | SHAKE128 and SHAKE256 in CMS. | |||
EDNOTE: If PKIX draft is standardized first maybe we should not say | EDNOTE: If PKIX draft is standardized first maybe we should not say | |||
the identifiers are new for the RSASSA-PSS and ECDSA. | the identifiers are new for the RSASSA-PSS and ECDSA. | |||
Two object identifiers for SHAKE128 and SHAKE256 hash functions are | Two object identifiers for SHAKE128 and SHAKE256 hash functions are | |||
defined in [shake-nist-oids] and we include them here for | defined in [shake-nist-oids] and we include them here for | |||
convenience. | convenience. | |||
id-shake128-len OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-shake128 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithm(4) 2 17 } | nistAlgorithm(4) 2 11 } | |||
id-shake256-len OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-shake256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithm(4) 2 18 } | nistAlgorithm(4) 2 12 } | |||
In this specification, when using the id-shake128-len or id- | In this specification, when using the id-shake128 or id-shake256 | |||
shake256-len algorithm identifiers, the parameters MUST be absent. | algorithm identifiers, the parameters MUST be absent. That is, the | |||
That is, the identifier SHALL be a SEQUENCE of one component, the | identifier SHALL be a SEQUENCE of one component, the OID. | |||
OID. | ||||
We define two new identifiers for RSASSA-PSS signatures using SHAKEs. | We define two new identifiers for RSASSA-PSS signatures using SHAKEs. | |||
id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { TBD } | id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { TBD } | |||
id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { TBD } | id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { TBD } | |||
[ EDNOTE: "TBD" will be specified by NIST later. ] | [ EDNOTE: "TBD" will be specified by NIST later. ] | |||
The same RSASSA-PSS algorithm identifiers can be used for identifying | The same RSASSA-PSS algorithm identifiers can be used for identifying | |||
skipping to change at page 6, line 13 ¶ | skipping to change at page 6, line 20 ¶ | |||
defined below. | defined below. | |||
id-KmacWithSHAKE128 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-KmacWithSHAKE128 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithm(4) 2 19 } | nistAlgorithm(4) 2 19 } | |||
id-KmacWithSHAKE256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-KmacWithSHAKE256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithm(4) 2 20 } | nistAlgorithm(4) 2 20 } | |||
The parameters for id-KmacWithSHAKE128 and id-KmacWithSHAKE256 MUST | The parameters for id-KmacWithSHAKE128 and id-KmacWithSHAKE256 are | |||
be absent. That is, each identifier SHALL be a SEQUENCE of one | OPTIONAL. | |||
component, the OID. | ||||
Section 4.1, Section 4.2.1, Section 4.2.2 and Section 4.4 specify the | Section 4.1, Section 4.2.1, Section 4.2.2 and Section 4.4 specify the | |||
required output length for each use of SHAKE128 or SHAKE256 in | required output length for each use of SHAKE128 or SHAKE256 in | |||
message digests, RSASSA-PSS, ECDSA and KMAC. | message digests, RSASSA-PSS, ECDSA and KMAC. | |||
4. Use in CMS | 4. Use in CMS | |||
4.1. Message Digests | 4.1. Message Digests | |||
The id-shake128-len and id-shake256-len OIDs (Section 3) can be used | The id-shake128 and id-shake256 OIDs (Section 3) can be used as the | |||
as the digest algorithm identifiers located in the SignedData, | digest algorithm identifiers located in the SignedData, SignerInfo, | |||
SignerInfo, DigestedData, and the AuthenticatedData digestAlgorithm | DigestedData, and the AuthenticatedData digestAlgorithm fields in CMS | |||
fields in CMS [RFC5652]. The encoding MUST omit the parameters field | [RFC5652]. The encoding MUST omit the parameters field and the | |||
and the output size, d, for the SHAKE128 or SHAKE256 message digest | output size, d, for the SHAKE128 or SHAKE256 message digest MUST be | |||
MUST be 256 or 512 bits respectively. | 256 or 512 bits respectively. | |||
The digest values are located in the DigestedData field and the | The digest values are located in the DigestedData field and the | |||
Message Digest authenticated attribute included in the | Message Digest authenticated attribute included in the | |||
signedAttributes of the SignedData signerInfo. In addition, digest | signedAttributes of the SignedData signerInfo. In addition, digest | |||
values are input to signature algorithms. The digest algorithm MUST | values are input to signature algorithms. The digest algorithm MUST | |||
be the same as the message hash algorithms used in signatures. | be the same as the message hash algorithms used in signatures. | |||
4.2. Signatures | 4.2. Signatures | |||
In CMS, signature algorithm identifiers are located in the SignerInfo | In CMS, signature algorithm identifiers are located in the SignerInfo | |||
skipping to change at page 9, line 5 ¶ | skipping to change at page 9, line 12 ¶ | |||
The identifier parameters, as explained in Section 3, MUST be absent. | The identifier parameters, as explained in Section 3, MUST be absent. | |||
4.4. Message Authentication Codes | 4.4. Message Authentication Codes | |||
KMAC message authentication code (KMAC) is specified in [SP800-185]. | KMAC message authentication code (KMAC) is specified in [SP800-185]. | |||
In CMS, KMAC algorithm identifiers are located in the | In CMS, KMAC algorithm identifiers are located in the | |||
AuthenticatedData macAlgorithm field. The KMAC values are located in | AuthenticatedData macAlgorithm field. The KMAC values are located in | |||
the AuthenticatedData mac field. | the AuthenticatedData mac field. | |||
When the id-KmacWithSHAKE128 or id-KmacWithSHAKE256 algorithm | When the id-KmacWithSHAKE128 or id-KmacWithSHAKE256 OID is used as | |||
identifier is used as the MAC algorithm identifier, the parameters | the MAC algorithm identifier, the parameters field is optional | |||
field is optional (absent or present). If absent, the SHAKE256 | (absent or present). If absent, the SHAKE256 output length used in | |||
output length used in KMAC is 256 or 512 bits respectively and the | KMAC is 256 or 512 bits respectively and the customization string is | |||
customization string is an empty string by default. | an empty string by default. | |||
Conforming implementations that process KMACs with the SHAKEs when | Conforming implementations that process KMACs with the SHAKEs when | |||
processing CMS data MUST recognize these identifiers. | processing CMS data MUST recognize these identifiers. | |||
When calculating the KMAC output, the variable N is 0xD2B282C2, S is | When calculating the KMAC output, the variable N is 0xD2B282C2, S is | |||
an empty string, and L, the integer representing the requested output | an empty string, and L, the integer representing the requested output | |||
length in bits, is 256 or 512 for KmacWithSHAKE128 or | length in bits, is 256 or 512 for KmacWithSHAKE128 or | |||
KmacWithSHAKE256 respectively in this specification. | KmacWithSHAKE256 respectively in this specification. | |||
5. IANA Considerations | 5. IANA Considerations | |||
End of changes. 15 change blocks. | ||||
29 lines changed or deleted | 36 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |