rfc8692xml2.original.xml | rfc8692.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!-- This template is for creating an Internet Draft using xml2rfc, | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
which is available here: http://xml.resource.org. --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!-- One method to get references from the online citation libraries. | ||||
There has to be one entity for each item to be referenced. | ||||
An alternate method (rfc include) is described in the references. --> | ||||
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.2119.xml"> | ||||
<!ENTITY RFC3279 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.3279.xml"> | ||||
<!-- <!ENTITY RFC3280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
e.RFC.3280.xml"> --> | ||||
<!ENTITY RFC4055 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.4055.xml"> | ||||
<!-- <!ENTITY RFC4086 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
e.RFC.4086.xml"> --> | ||||
<!ENTITY RFC5280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.5280.xml"> | ||||
<!ENTITY RFC5480 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.5480.xml"> | ||||
<!ENTITY RFC5912 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.5912.xml"> | ||||
<!ENTITY RFC6979 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.6979.xml"> | ||||
<!ENTITY RFC8017 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8017.xml"> | ||||
<!ENTITY RFC8174 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8174.xml"> | ||||
<!ENTITY I-D.draft-josefsson-pkix-eddsa SYSTEM "http://xml2rfc.tools.ietf.org/pu | ||||
blic/rfc/bibxml-ids/reference.I-D.draft-josefsson-pkix-eddsa-04.xml"> | ||||
]> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<!-- used by XSLT processors --> | ||||
<!-- For a complete list and description of processing instructions (PIs), | ||||
please see http://xml.resource.org/authoring/README.html. --> | ||||
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
might want to use. | ||||
(Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
<?rfc strict="yes" ?> | ||||
<!-- give errors regarding ID-nits and DTD validation --> | ||||
<!-- control the table of contents (ToC) --> | ||||
<?rfc toc="yes"?> | ||||
<!-- generate a ToC --> | ||||
<?rfc tocdepth="4"?> | ||||
<!-- the number of levels of subsections in ToC. default: 3 --> | ||||
<!-- control references --> | ||||
<?rfc symrefs="yes"?> | ||||
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
<?rfc sortrefs="yes" ?> | ||||
<!-- sort the reference entries alphabetically --> | ||||
<!-- control vertical white space | ||||
(using these PIs as follows is recommended by the RFC Editor) --> | ||||
<?rfc compact="yes" ?> | ||||
<!-- do not start each main section on a new page --> | ||||
<?rfc subcompact="no" ?> | ||||
<!-- keep one blank line between list items --> | ||||
<!-- end of list of popular I-D processing instructions --> | ||||
<rfc category="std" docName="draft-ietf-lamps-pkix-shake-15" ipr="trust200902" u | ||||
pdates="3279"> | ||||
<!-- category values: std, bcp, info, exp, and historic | ||||
ipr="full3978" (probably old) | ||||
ipr values: full3667, noModification3667, noDerivatives3667 | ||||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
they will automatically be output with "(if approved)" --> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
docName="draft-ietf-lamps-pkix-shake-15" submissionType="IETF" category="st | ||||
d" consensus="yes" number="8692" ipr="trust200902" updates="3279" obsoletes="" x | ||||
ml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" versi | ||||
on="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.35.0 --> | ||||
<!-- ***** FRONT MATTER ***** --> | <!-- ***** FRONT MATTER ***** --> | |||
<front> | <front> | |||
<!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="SHAKE Identifiers in X.509">Internet X.509 Public Key Infrast | |||
if the | ructure: Additional Algorithm Identifiers for RSASSA-PSS and ECDSA Using SHAKEs< | |||
full title is longer than 39 characters --> | /title> | |||
<seriesInfo name="RFC" value="8692"/> | ||||
<title abbrev="SHAKE identifiers in X.509">Internet X.509 Public Key Infrast | <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis"> | |||
ructure: Additional Algorithm Identifiers for RSASSA-PSS and ECDSA using SHAKEs< | ||||
/title> | ||||
<!-- add 'role="editor"' below for the editors if appropriate --> | ||||
<author fullname="Panos Kampanakis" initials="P.K." | ||||
surname="Kampanakis"> | ||||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<email>pkampana@cisco.com</email> | <email>pkampana@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Quynh Dang" initials="Q.D." | <author fullname="Quynh Dang" initials="Q." surname="Dang"> | |||
surname="Dang"> | ||||
<organization>NIST</organization> | <organization>NIST</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>100 Bureau Drive, Stop 8930</street> | <street>100 Bureau Drive, Stop 8930</street> | |||
<city>Gaithersburg</city> | <city>Gaithersburg</city> | |||
<region>MD</region> | <region>MD</region> | |||
<code>20899-8930</code> | <code>20899-8930</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<!-- <phone>+44 7889 488 335</phone> --> | ||||
<email>quynh.dang@nist.gov</email> | <email>quynh.dang@nist.gov</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<date month="December" year="2019"/> | ||||
<!-- <author fullname="Sean Turner" initials="S.T." | ||||
surname="Turner"> | ||||
<organization>sn3rd</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city>Soham</city> | ||||
<region></region> | ||||
<code></code> | ||||
<country>UK</country> | ||||
</postal> | ||||
<phone>+44 7889 488 335</phone> | ||||
<email>sean@sn3rd.com</email> | ||||
</address> | ||||
</author> --> | ||||
<date year="2019" /> | ||||
<!-- If the month and year are both specified and are the current ones, xml2 | ||||
rfc will fill | ||||
in the current day for you. If only the current year is specified, xml2 | ||||
rfc will fill | ||||
in the current day and month for you. If the year is not the current one | ||||
, it is | ||||
necessary to specify at least a month (xml2rfc assumes day="1" if not sp | ||||
ecified for the | ||||
purpose of calculating the expiry date). With drafts it is normally suf | ||||
ficient to | ||||
specify just the year. --> | ||||
<!-- Meta-data Declarations --> | ||||
<area>General</area> | <area>General</area> | |||
<workgroup>LAMPS WG</workgroup> | <workgroup>LAMPS WG</workgroup> | |||
<!-- WG name at the upperleft corner of the doc, | <keyword>SHAKE in X.509, SHAKEs in PKIX, certificates with SHAKE hashes</key | |||
IETF is fine for individual submissions. | word> | |||
If this element is not present, the default is "Network Working Group", | ||||
which is used by the RFC Editor as a nod to the history of the IETF. -- | ||||
> | ||||
<!-- <keyword>template</keyword> --> | ||||
<!-- Keywords will be incorporated into HTML output | ||||
files in a meta tag but they have no effect on text or nroff | ||||
output. If you submit your draft to the RFC Editor, the | ||||
keywords will be used for the searPKIch engine. --> | ||||
<abstract> | <abstract> | |||
<t>Digital signatures are used to sign messages, X.509 | <t>Digital signatures are used to sign messages, X.509 | |||
certificates and CRLs. This document updates the | certificates, and Certificate Revocation Lists (CRLs). This document up dates the | |||
"Algorithms and Identifiers for the Internet | "Algorithms and Identifiers for the Internet | |||
X.509 Public Key Infrastructure Certificate and | X.509 Public Key Infrastructure Certificate and | |||
Certificate Revocation List Profile" (RFC3279) | Certificate Revocation List (CRL) Profile" (RFC 3279) | |||
and describes the conventions for using the SHAKE function | and describes the conventions for using the SHAKE function | |||
family in Internet X.509 certificates and revocation lists | family in Internet X.509 certificates and revocation lists | |||
as one-way hash functions with the RSA Probabilistic signature | as one-way hash functions with the RSA Probabilistic signature | |||
and ECDSA signature algorithms. The conventions for the | and Elliptic Curve Digital Signature Algorithm (ECDSA) signature algori thms. The conventions for the | |||
associated subject public keys are also described.</t> | associated subject public keys are also described.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section numbered="true" toc="default"> | ||||
<section title="Change Log"> | <name>Introduction</name> | |||
<t>[ EDNOTE: Remove this section before publication. ]</t> | <t><xref target="RFC3279" format="default"/> defines cryptographic algorit | |||
<t><list style="symbols"> | hm | |||
<t>draft-ietf-lamps-pkix-shake-15: | identifiers for the "Internet X.509 Public Key Infrastructure Certificate | |||
<list> | and Certificate Revocation List (CRL) Profile" | |||
<t>Minor editorial nits.</t> | <xref target="RFC5280" format="default"/>. This document updates RFC 3279 | |||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-14: | ||||
<list> | ||||
<t>Fixing error with incorrect preimage resistance bits for SHA | ||||
128 and SHA256.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-13: | ||||
<list> | ||||
<t>Addressing one applicable comment from Dan M. about sec leve | ||||
ls while in secdir review of draft-ietf-lamps-cms-shakes.</t> | ||||
<t>Addressing comment from Scott B.'s opsdir review about refer | ||||
ences in the abstract.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-12: | ||||
<list> | ||||
<t>Nits identified by Roman, Eric V. Ben K., Barry L. in ballot | ||||
position review.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-11: | ||||
<list> | ||||
<t>Nits identified by Roman in AD Review.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-10: | ||||
<list> | ||||
<t>Updated IANA considerations section to request for OID assig | ||||
nments. </t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-09: | ||||
<list> | ||||
<t>Fixed minor text nits.</t> | ||||
<t>Added text name allocation for SHAKEs in IANA considerations | ||||
.</t> | ||||
<t>Updates in Sec Considerations section.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-08: | ||||
<list> | ||||
<t>Small nits from Russ while in WGLC.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-07: | ||||
<list> | ||||
<t>Incorporated Eric's suggestion from WGLC.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-06: | ||||
<list> | ||||
<t>Added informative references.</t> | ||||
<t>Updated ASN.1 so it compiles.</t> | ||||
<t>Updated IANA considerations.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-05: | ||||
<list> | ||||
<t>Added RFC8174 reference and text.</t> | ||||
<t>Explicitly explained why RSASSA-PSS-params are omitted in se | ||||
ction 5.1.1.</t> | ||||
<t>Simplified Public Keys section by removing redundant info fr | ||||
om RFCs.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-04: | ||||
<list> | ||||
<t>Removed paragraph suggesting KMAC to be used in generating | ||||
k in Deterministic ECDSA. That should be RFC6979-bis. </t> | ||||
<t>Removed paragraph from Security Considerations that talks | ||||
about randomness of k because we are using deterministic ECDSA.</t> | ||||
<t>Various ASN.1 fixes.</t> | ||||
<t>Text fixes.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-03: | ||||
<list> | ||||
<t>Updates based on suggestions and clarifications by Jim. </t> | ||||
<t>Added ASN.1.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-02: | ||||
<list> | ||||
<t>Significant reorganization of the sections to simplify the i | ||||
ntroduction, the new OIDs and their use in PKIX.</t> | ||||
<t>Added new OIDs for RSASSA-PSS that hardcode hash, salt and M | ||||
GF, according the WG consensus.</t> | ||||
<t>Updated Public Key section to use the new RSASSA-PSS OIDs an | ||||
d clarify the algorithm identifier usage.</t> | ||||
<t>Removed the no longer used SHAKE OIDs from section 3.1.</t> | ||||
<t>Consolidated subsection for message digest algorithms.</t> | ||||
<t>Text fixes.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-01: | ||||
<list> | ||||
<t>Changed titles and section names.</t> | ||||
<t>Removed DSA after WG discussions.</t> | ||||
<t>Updated shake OID names and parameters, added MGF1 section.< | ||||
/t> | ||||
<t>Updated RSASSA-PSS section.</t> | ||||
<t>Added Public key algorithm OIDs.</t> | ||||
<t>Populated Introduction and IANA sections.</t> | ||||
</list></t> | ||||
<t>draft-ietf-lamps-pkix-shake-00: | ||||
<list> | ||||
<t>Initial version</t> | ||||
</list></t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Introduction"> | ||||
<t><xref target="RFC3279"/> defines cryptographic algorithm | ||||
identifiers for the Internet X.509 Certificate and Certificate Revocati | ||||
on | ||||
Lists (CRL) profile <xref target="RFC5280"/>. This document updates RFC | ||||
3279 | ||||
and defines identifiers for several cryptographic algorithms that use | and defines identifiers for several cryptographic algorithms that use | |||
variable length output SHAKE functions introduced in <xref target="SHA3 | variable-length output SHAKE functions introduced in | |||
"/> | <xref target="SHA3" format="default"/> | |||
which can be used with . </t> | which can be used with RFC 5280.</t> | |||
<t>In the SHA-3 family, two extendable-output functions (SHAKEs), | ||||
SHAKE128 and SHAKE256, are defined. Four other hash function instances, | ||||
SHA3-224, SHA3-256, | ||||
SHA3-384, and SHA3-512, are also defined but are out of scope for this | ||||
document. | ||||
A SHAKE is a variable length hash function defined as SHAKE(M, d) where | ||||
the | ||||
output is a d-bits-long digest of message M. The corresponding collisio | ||||
n and second-preimage-resistance strengths for SHAKE128 are min(d/2,128) and mi | ||||
n(d,128) | ||||
bits, respectively (Appendix A.1 <xref target="SHA3"/>). | ||||
And the corresponding collision and second-preimage-resistance strength | ||||
s for SHAKE256 | ||||
are min(d/2,256) and min(d,256) bits, respectively.</t> | ||||
<t>A SHAKE can be used as the message digest function (to hash the mess | <t>In the SHA-3 family, two extendable-output functions (SHAKEs) | |||
age to be signed) | are defined: SHAKE128 and SHAKE256. Four other hash function | |||
in RSASSA-PSS <xref target="RFC8017"/> and ECDSA <xref target="X9.62"/> | instances, SHA3-224, SHA3-256, SHA3-384, and SHA3-512, are also | |||
defined but are out of scope for this document. A SHAKE is a | ||||
variable-length hash function defined as SHAKE(M, d) where the | ||||
output is a d-bits-long digest of message M. The corresponding | ||||
collision and second-preimage-resistance strengths for SHAKE128 | ||||
are min(d/2, 128) and min(d, 128) bits, respectively (see Appendix A.1 of | ||||
<xref target="SHA3" format="default"/>). And the corresponding collision | ||||
and | ||||
second-preimage-resistance strengths for SHAKE256 are | ||||
min(d/2, 256) and min(d, 256) bits, respectively.</t> | ||||
<t>A SHAKE can be used as the message digest function (to hash the message | ||||
to be signed) | ||||
in RSA Probabilistic Signature Scheme (RSASSA-PSS) <xref target="RFC801 | ||||
7" format="default"/> and ECDSA <xref target="X9.62" format="default"/> | ||||
and as the hash in the mask generation function (MGF) in RSASSA-PSS. | and as the hash in the mask generation function (MGF) in RSASSA-PSS. | |||
<!-- This specification describes the identifiers for SHAKEs to be used | </t> | |||
in X.509 and their | ||||
meaning.--> </t> | ||||
</section> | </section> | |||
<!-- This PI places the pagebreak correctly (before the section title) in th | <section anchor="terminology" numbered="true" toc="default"> | |||
e text output. --> | <name>Terminology</name> | |||
<t> | ||||
<section anchor="terminology" title="Terminology"> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ", | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
</section> <!-- Terminology --> | be | |||
interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | ||||
<?rfc needLines="8" ?> | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
shown here. | ||||
<section title="Identifiers" anchor="oids"> | </t> | |||
<!-- Commention out the below OIDs as they are no longer pertinent for | </section> | |||
the below public keys and sigs --> | <!-- Terminology --> | |||
<!-- The Object Identifiers (OIDs) for these two hash functions are def | <section anchor="oids" numbered="true" toc="default"> | |||
ined in | <name>Identifiers</name> | |||
<xref target="shake-nist-oids"/> and are included here for convenience: | <t>This section defines four new object identifiers (OIDs), for RSASSA-PSS | |||
</t> | and ECDSA with each | |||
<t><figure><artwork><![CDATA[ | ||||
id-shake128-len OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | ||||
country(16) us(840) organization(1) gov(101) csor(3) | ||||
nistalgorithm(4) hashalgs(2) 17 } | ||||
ShakeOutputLen ::= INTEGER - - Output length in octets | ||||
]]></artwork></figure></t> | ||||
<t>When using the id-shake128-len algorithm identifier, the parameters | ||||
MUST be present, and they MUST employ the ShakeOutputLen --> | ||||
<!-- "MUST employ syntax borrowed from RFC4055 --> | ||||
<!-- syntax that contains an encoded positive integer value at least 32 | ||||
in this specification.</t> | ||||
<t><figure><artwork><![CDATA[ | ||||
id-shake256-len OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | ||||
country(16) us(840) organization(1) gov(101) csor(3) | ||||
nistalgorithm(4) hashalgs(2) 18 } | ||||
ShakeOutputLen ::= INTEGER - - Output length in octets | ||||
]]></artwork></figure></t> | ||||
<t>When using the id-shake256-len algorithm identifier, the parameters | ||||
MUST be present, and they MUST employ the ShakeOutputLen --> | ||||
<!-- "MUST employ syntax borrowed from RFC4055 --> | ||||
<!-- syntax that contains an encoded positive integer value at least 64 | ||||
in this specification.</t> --> | ||||
<t>This section defines four new object identifiers (OIDs), for RSASSA- | ||||
PSS and ECDSA with each | ||||
of SHAKE128 and SHAKE256. The same algorithm identifiers can be | of SHAKE128 and SHAKE256. The same algorithm identifiers can be | |||
used for identifying a public key in RSASSA-PSS.</t> | used for identifying a public key in RSASSA-PSS.</t> | |||
<t>The new identifiers for RSASSA-PSS signatures using SHAKEs are below.</ | ||||
<t>The new identifiers for RSASSA-PSS signatures using SHAKEs are below | t> | |||
.</t> | <sourcecode type="asn.1"><![CDATA[ | |||
<t><figure><artwork><![CDATA[ | ||||
id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { iso(1) | id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD1 } | 30 } | |||
id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { iso(1) | id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD2 } | 31 } | |||
]]></artwork></figure></t> | ]]></sourcecode> | |||
<t>The new algorithm identifiers of ECDSA signatures using SHAKEs are belo | ||||
w. | ||||
<t>The new algorithm identifiers of ECDSA signatures using SHAKEs are b | </t> | |||
elow.</t> | <sourcecode type="asn.1"><![CDATA[ | |||
<t><list> | ||||
<t><figure><artwork><![CDATA[ | ||||
id-ecdsa-with-shake128 OBJECT IDENTIFIER ::= { iso(1) | id-ecdsa-with-shake128 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD3 } | 32 } | |||
id-ecdsa-with-shake256 OBJECT IDENTIFIER ::= { iso(1) | id-ecdsa-with-shake256 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD4 } | 33 } | |||
]]></artwork></figure></t> | ]]></sourcecode> | |||
</list></t> | <t>The parameters for the four identifiers above <bcp14>MUST</bcp14> be ab | |||
sent. That is, | ||||
<!-- <xref target="RFC8017"/>, but we include it here as well for conve | the identifier <bcp14>SHALL</bcp14> be a SEQUENCE of one component: the | |||
nience:</t> | OID.</t> | |||
<t><figure><artwork><![CDATA[ | <t>Sections <xref target="rsa-sigs" format="counter"/> and <xref target="e | |||
id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } | cdsa-sigs" format="counter"/> specify the required output length | |||
]]></artwork></figure>--> | ||||
<!-- <t>The parameters field associated with id-mgf1 MUST have a hashAl | ||||
gorithm value that identifies | ||||
the hash used with MGF1. To use SHAKE as this hash, this parameter MUST | ||||
be | ||||
id-shake128-len or id-shake256-len as specified in <xref target="xofs" | ||||
/> above. </t>--> | ||||
<t>The parameters for the four identifiers above MUST be absent. That i | ||||
s, | ||||
the identifier SHALL be a SEQUENCE of one component, the OID.</t> | ||||
<t><xref target="rsa-sigs"/> and <xref target="ecdsa-sigs"/> specify th | ||||
e required output length | ||||
for each use of SHAKE128 or SHAKE256 in RSASSA-PSS and ECDSA. In summar y, when hashing messages | for each use of SHAKE128 or SHAKE256 in RSASSA-PSS and ECDSA. In summar y, when hashing messages | |||
to be signed, output lengths of SHAKE128 and SHAKE256 are 256 and 512 bits | to be signed, output lengths of SHAKE128 and SHAKE256 are 256 and 512 b | |||
respectively. | its, respectively. | |||
When the SHAKEs are used as mask generation functions RSASSA-PSS, their | ||||
output length is | ||||
(8*ceil((n-1)/8) - 264) or (8*ceil((n-1)/8) - 520) bits, respectively, | ||||
where n is the RSA modulus size in bits.</t> | ||||
</section> | ||||
<section title="Use in PKIX"> | ||||
<section title="Signatures" anchor="sigs"> | When the SHAKEs are used as MGFs in RSASSA-PSS, their output length is | |||
(8*ceil((n-1)/8) - 264) or (8*ceil((n-1)/8) - 520) bits, respectively, | ||||
where n is the RSA modulus size in bits.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Use in PKIX</name> | ||||
<section anchor="sigs" numbered="true" toc="default"> | ||||
<name>Signatures</name> | ||||
<t>Signatures are used in a number of different ASN.1 structures. | <t>Signatures are used in a number of different ASN.1 structures. | |||
As shown in the ASN.1 representation from <xref target="RFC5280"/> | As shown in the ASN.1 representation from <xref target="RFC5280" format= | |||
"default"/> | ||||
below, in an X.509 certificate, a signature is encoded with an | below, in an X.509 certificate, a signature is encoded with an | |||
algorithm identifier in the signatureAlgorithm attribute and | algorithm identifier in the signatureAlgorithm attribute and | |||
a signatureValue attribute that contains the actual signature. | a signatureValue attribute that contains the actual signature. | |||
</t> | </t> | |||
<t><figure><artwork><![CDATA[ | <sourcecode type="asn.1"><![CDATA[ | |||
Certificate ::= SEQUENCE { | Certificate ::= SEQUENCE { | |||
tbsCertificate TBSCertificate, | tbsCertificate TBSCertificate, | |||
signatureAlgorithm AlgorithmIdentifier, | signatureAlgorithm AlgorithmIdentifier, | |||
signatureValue BIT STRING } | signatureValue BIT STRING } | |||
]]></artwork></figure></t> | ]]></sourcecode> | |||
<t>The identifiers defined in <xref target="oids" format="default"/> can | ||||
<t>The identifiers defined in <xref target="oids"/> can be used | be used | |||
as the AlgorithmIdentifier in the signatureAlgorithm field in the sequence | as the AlgorithmIdentifier in the signatureAlgorithm field in the sequence | |||
Certificate and the signature field in the sequence TBSCertificat e in X.509 | Certificate and the signature field in the sequence TBSCertificat e in X.509 | |||
<xref target="RFC5280"/>. | <xref target="RFC5280" format="default"/>. | |||
The parameters of these signature algorithms are absent as explai | The parameters of these signature algorithms are absent, as expla | |||
ned | ined | |||
in <xref target="oids"/>.</t> | in <xref target="oids" format="default"/>.</t> | |||
<t>Conforming Certification Authority (CA) implementations <bcp14>MUST</ | ||||
<t>Conforming CA implementations MUST specify the algorithms | bcp14> specify the algorithms | |||
explicitly by using the OIDs specified in <xref target="oids"/> w | explicitly by using the OIDs specified in <xref target="oids" for | |||
hen | mat="default"/> when | |||
encoding RSASSA-PSS or ECDSA with SHAKE signatures | encoding RSASSA-PSS or ECDSA with SHAKE signatures | |||
in certificates and CRLs. | in certificates and CRLs. | |||
Conforming client implementations that process certificates and C RLs | Conforming client implementations that process certificates and C RLs | |||
using RSASSA-PSS or ECDSA with SHAKE MUST recognize the correspon ding OIDs. | using RSASSA-PSS or ECDSA with SHAKE <bcp14>MUST</bcp14> recogniz e the corresponding OIDs. | |||
Encoding rules for RSASSA-PSS and ECDSA | Encoding rules for RSASSA-PSS and ECDSA | |||
signature values are specified in <xref target="RFC4055"/> and | signature values are specified in <xref target="RFC4055" format=" | |||
<xref target="RFC5480"/>, respectively.</t> | default"/> and | |||
<xref target="RFC5480" format="default"/>, respectively.</t> | ||||
<t>When using RSASSA-PSS or ECDSA with SHAKEs, the RSA modulus and EC | <t>When using RSASSA-PSS or ECDSA with SHAKEs, the RSA modulus and ECDSA | |||
DSA | curve order <bcp14>SHOULD</bcp14> be chosen in line with the SHAK | |||
curve order SHOULD be chosen in line with the SHAKE output length | E output length. | |||
. | Refer to <xref target="Security" format="default"/> for more deta | |||
Refer to <xref target="Security"/> for more details.</t> | ils.</t> | |||
<section anchor="rsa-sigs" numbered="true" toc="default"> | ||||
<name>RSASSA-PSS Signatures</name> | ||||
<t>The RSASSA-PSS algorithm is defined in <xref target="RFC8017" forma | ||||
t="default"/>. | ||||
When id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256 (specifie | ||||
d in <xref target="oids" format="default"/>) | ||||
is used, the encoding <bcp14>MUST</bcp14> omit the parameters f | ||||
ield. That is, | ||||
the AlgorithmIdentifier <bcp14>SHALL</bcp14> be a SEQUENCE of o | ||||
ne component: | ||||
id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256. | ||||
<section title="RSASSA-PSS Signatures" anchor="rsa-sigs"> | <xref target="RFC4055" format="default"/> | |||
<t>The RSASSA-PSS algorithm is defined in <xref target="RFC8017 | defines RSASSA-PSS-params that is used to define the algorithms | |||
"/>. | and inputs | |||
When id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256 specified | ||||
in <xref target="oids"/> | ||||
is used, the encoding MUST omit the parameters field. That is, | ||||
the AlgorithmIdentifier SHALL be a SEQUENCE of one component, | ||||
id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256. <xref target= | ||||
"RFC4055"/> | ||||
defines RSASSA-PSS-params that are used to define the algorithm | ||||
s and inputs | ||||
to the algorithm. This specification does not use parameters be cause the | to the algorithm. This specification does not use parameters be cause the | |||
hash, mask generation algorithm, trailer and salt are embedded in | hash, mask generation algorithm, trailer, and salt are embedded in | |||
the OID definition.</t> | the OID definition.</t> | |||
<t>The hash algorithm to hash a message being signed and the hash algo | ||||
<t>The hash algorithm to hash a message being signed and the ha | rithm used as the | |||
sh algorithm used as the | MGF | |||
mask generation function <!-- "MGF(H, emLen - hLen - 1)" <xref | in RSASSA-PSS <bcp14>MUST</bcp14> be the same: both SHAKE128 or | |||
target="RFC8017"/> --> | both SHAKE256. The | |||
in RSASSA-PSS MUST be the same: both SHAKE128 or both SHAKE256. | output length of the hash algorithm that hashes the message <bc | |||
The | p14>SHALL</bcp14> be 32 bytes | |||
output length of the hash algorithm which hashes the message SH | ||||
ALL be 32 | ||||
(for SHAKE128) or 64 bytes (for SHAKE256). </t> | (for SHAKE128) or 64 bytes (for SHAKE256). </t> | |||
<t>The mask generation function takes an octet string of variab | <t>The MGF takes an octet string of variable length and | |||
le length and | a desired output length as input and outputs an octet | |||
a desired output length as input, and outputs an octet | string of the desired length. In RSASSA-PSS with SHAKEs, the SH | |||
string of the desired length. In RSASSA-PSS with SHAKEs, the SH | AKEs <bcp14>MUST</bcp14> be | |||
AKEs MUST be | used natively as the MGF, instead of the MGF1 algorithm that us | |||
used natively as the MGF function, instead of the MGF1 algorith | es | |||
m that uses | the hash function in multiple iterations, as specified in | |||
the hash function in multiple iterations as specified in Sectio | <xref target="RFC8017" section="B.2.1" sectionFormat="of"/>. In | |||
n B.2.1 of | other words, the MGF is defined as | |||
<xref target="RFC8017"/>. In other words, the MGF is defined as | ||||
<!-- <t><figure><artwork><![CDATA[ | ||||
SHAKE128(mgfSeed, maskLen) | ||||
]]></artwork></figure> | ||||
and | ||||
<figure><artwork><![CDATA[ | ||||
SHAKE256(mgfSeed, maskLen) | ||||
]]></artwork></figure></t> --> | ||||
the SHAKE128 or SHAKE256 output of the mgfSeed for id-RSASSA-PSS-SHAKE 128 and | the SHAKE128 or SHAKE256 output of the mgfSeed for id-RSASSA-PSS-SHAKE 128 and | |||
id-RSASSA-PSS-SHAKE256, respectively. The mgfSeed is the seed | id-RSASSA-PSS-SHAKE256, respectively. | |||
from which mask is generated, an octet string <xref target="RFC | ||||
8017"/>. | The mgfSeed is the seed | |||
As explained in Step 9 of section 9.1.1 of <xref target="RFC801 | from which the mask is generated, an octet string <xref target= | |||
7"/>, the output | "RFC8017" format="default"/>. | |||
As explained in Step 9 of <xref | ||||
target="RFC8017" sectionFormat="of" section="9.1.1"/>, the outp | ||||
ut | ||||
length of the MGF is emLen - hLen - 1 bytes. emLen is the maxim um message | length of the MGF is emLen - hLen - 1 bytes. emLen is the maxim um message | |||
length ceil((n-1)/8), where n is the RSA modulus in bits. hLen is 32 and | length ceil((n-1)/8), where n is the RSA modulus in bits. hLen is 32 and | |||
64-bytes for id-RSASSA-PSS-SHAKE128 and id-RSASSA-PSS-SHAKE256, | 64 bytes for id-RSASSA-PSS-SHAKE128 and id-RSASSA-PSS-SHAKE256, | |||
respectively. | respectively. | |||
Thus when SHAKE is used as the MGF, the SHAKE output length mas | Thus, when SHAKE is used as the MGF, the SHAKE output length ma | |||
kLen is | skLen is | |||
(8*emLen - 264) or (8*emLen - 520) bits, respectively. For exam | (8*emLen - 264) or (8*emLen - 520) bits, respectively. | |||
ple, when RSA modulus n is 2048, | ||||
the output length of SHAKE128 or SHAKE256 as the MGF will be 17 | ||||
84 or 1528-bits | ||||
when id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256 is used, | ||||
respectively. </t> | ||||
<t>The RSASSA-PSS saltLength MUST be 32 bytes for id-RSASSA-PSS | For example, when RSA modulus n is 2048 bits, | |||
-SHAKE128 | the output length of SHAKE128 or SHAKE256 as the MGF will be 17 | |||
84 or 1528 bits | ||||
when id-RSASSA-PSS-SHAKE128 or id-RSASSA-PSS-SHAKE256 is used, | ||||
respectively. </t> | ||||
<t>The RSASSA-PSS saltLength <bcp14>MUST</bcp14> be 32 bytes for id-RS | ||||
ASSA-PSS-SHAKE128 | ||||
or 64 bytes for id-RSASSA-PSS-SHAKE256. | or 64 bytes for id-RSASSA-PSS-SHAKE256. | |||
Finally, the trailerField MUST be 1, which represents | Finally, the trailerField <bcp14>MUST</bcp14> be 1, which repre | |||
the trailer field with hexadecimal value 0xBC <xref target="RFC | sents | |||
8017"/>.</t> | the trailer field with hexadecimal value 0xBC <xref target="RFC | |||
<!-- <t><figure><artwork><![CDATA[ | 8017" format="default"/>.</t> | |||
id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 k } | </section> | |||
<section anchor="ecdsa-sigs" numbered="true" toc="default"> | ||||
RSASSA-PSS-params ::= SEQUENCE { | <name>ECDSA Signatures</name> | |||
hashAlgorithm HashAlgorithm, | <t>The Elliptic Curve Digital Signature Algorithm (ECDSA) is defined i | |||
maskGenAlgorithm MaskGenAlgorithm, | n | |||
saltLength INTEGER, | <xref target="X9.62" format="default"/>. When the id-ecdsa-with-sha | |||
trailerField INTEGER } | ke128 or id-ecdsa-with-shake256 | |||
]]></artwork></figure></t> --> | (specified in <xref target="oids" format="default"/>) algorithm | |||
identifier appears, the respective SHAKE | ||||
<!-- <section title="EdDSA with SHAKE"> | ||||
<t>[ EDNOTE: For the group to decide: pre-hash version or non-prehash | ||||
version EdDSAs. PureEdDSA, the pre-hashed version of EdDSA, as currently also pr | ||||
oposed in draft-ietf-curdle-cms-eddsa-signatures mandates the hash function as S | ||||
HA512 for Ed25519 and SHAKE256(x,64) for Ed448. The HashEdDSA version of EdDSA d | ||||
oes not define the hash. It is up to the WG to go the Pre-hash route which would | ||||
require an OID that contained the hash. ] </t> | ||||
<t> | ||||
<list> | ||||
<t><figure><artwork><![CDATA[ | ||||
id-eddsa-with-shake128 OBJECT IDENTIFIER ::= { } | ||||
]]></artwork></figure></t> | ||||
<t><figure><artwork><![CDATA[ | ||||
id-eddsa-with-shake256 OBJECT IDENTIFIER ::= { } | ||||
]]></artwork></figure></t> | ||||
</list></t> | ||||
</section> --> | ||||
</section> | ||||
<section title="ECDSA Signatures" anchor="ecdsa-sigs"> | ||||
<t>The Elliptic Curve Digital Signature Algorithm (ECDSA) is define | ||||
d in | ||||
<xref target="X9.62"/>. When the id-ecdsa-with-shake128 or id-ecdsa | ||||
-with-shake256 | ||||
(specified in <xref target="oids"/>) algorithm identifier appea | ||||
rs, the respective SHAKE | ||||
function (SHAKE128 or SHAKE256) is used as the hash. | function (SHAKE128 or SHAKE256) is used as the hash. | |||
The encoding MUST omit the parameters field. That is, the Algor | The encoding <bcp14>MUST</bcp14> omit the parameters field. Tha | |||
ithmIdentifier | t is, the AlgorithmIdentifier | |||
SHALL be a SEQUENCE of one component, the OID id-ecdsa-with-sha | <bcp14>SHALL</bcp14> be a SEQUENCE of one component: the OID id | |||
ke128 or | -ecdsa-with-shake128 or | |||
id-ecdsa-with-shake256.</t> | id-ecdsa-with-shake256.</t> | |||
<t>For simplicity and compliance with the ECDSA standard specification | <t>For simplicity and compliance with the ECDSA standard specification | |||
, | <xref target="X9.62" format="default"/>, | |||
the output length of the hash function must be explicitly determine d. The | the output length of the hash function must be explicitly determine d. The | |||
output length, d, for SHAKE128 or SHAKE256 used in ECDSA MUST be 25 6 or 512 | output length, d, for SHAKE128 or SHAKE256 used in ECDSA <bcp14>MUS T</bcp14> be 256 or 512 | |||
bits, respectively. </t> | bits, respectively. </t> | |||
<t>Conforming CA implementations that generate ECDSA with SHAKE signat | ||||
ures | ||||
in certificates or CRLs <bcp14>SHOULD</bcp14> generate such sig | ||||
natures with a | ||||
deterministically generated, nonrandom k in accordance with all | ||||
the requirements specified in <xref target="RFC6979" format="de | ||||
fault"/>. | ||||
<t>Conforming CA implementations that generate ECDSA with SHAKE | They <bcp14>MAY</bcp14> also generate such signatures | |||
signatures | in accordance with all other recommendations in <xref target="X | |||
in certificates or CRLs SHOULD generate such signatures with a | 9.62" format="default"/> or | |||
deterministically generated, non-random k in accordance with al | <xref target="SEC1" format="default"/> if they have a stated po | |||
l | licy that requires | |||
the requirements specified in <xref target="RFC6979"/>. | ||||
<!-- Sections 7.2 and 7.3 of | ||||
<xref target="X9.62"/> or with all the requirements specified i | ||||
n Section | ||||
4.1.3 of <xref target="SEC1"/>. --> | ||||
They MAY also generate such signatures | ||||
in accordance with all other recommendations in <xref target="X | ||||
9.62"/> or | ||||
<xref target="SEC1"/> if they have a stated policy that require | ||||
s | ||||
conformance to those standards. Those standards have not specif ied | conformance to those standards. Those standards have not specif ied | |||
SHAKE128 and SHAKE256 as hash algorithm options. However, SHAKE 128 and | SHAKE128 and SHAKE256 as hash algorithm options. However, SHAKE 128 and | |||
SHAKE256 with output length being 32 and 64 octets, respectivel y, can | SHAKE256 with output length being 32 and 64 octets, respectivel y, can | |||
be used instead of 256 and 512-bit output hash algorithms such as SHA256 | be used instead of 256- and 512-bit output hash algorithms such as SHA256 | |||
and SHA512.</t> | and SHA512.</t> | |||
</section> | ||||
<!-- <t>In Section 3.2 "Generation of k" of <xref target="RFC69 | </section> | |||
79"/>, HMAC is used to derive | <section numbered="true" toc="default"> | |||
the deterministic k. Conforming implementations that generate d | <name>Public Keys</name> | |||
eterministic | <t>Certificates conforming to <xref target="RFC5280" format="default"/> | |||
ECDSA with SHAKE signatures in X.509 MUST use KMAC with SHAKE12 | can convey a | |||
8 or KMAC with | ||||
SHAKE256 as specfied in <xref target="SP800-185"/> when SHAKE12 | ||||
8 or SHAKE256 is | ||||
used as the message hashing algorithm, respectively. In this si | ||||
tuation, KMAC with | ||||
SHAKE128 and KMAC with SHAKE256 have 256-bit and 512-bit output | ||||
s respectively, | ||||
and the optional customization bit string S is an empty string. | ||||
</t> --> | ||||
</section> | ||||
</section> | ||||
<section title="Public Keys"> | ||||
<t>Certificates conforming to <xref target="RFC5280"/> can convey a | ||||
public key for any public key algorithm. The certificate indicate s | public key for any public key algorithm. The certificate indicate s | |||
the public key algorithm through an algorithm identifier. This al | the public key algorithm through an algorithm identifier. | |||
gorithm | ||||
identifier is an OID and optionally associated parameters. | ||||
The conventions and encoding for RSASSA-PSS and ECDSA <!-- and Ed | ||||
DSA --> | ||||
public keys algorithm identifiers are as specified in | ||||
Section 2.3.1 and 2.3.5 of <xref target="RFC3279"/>, | ||||
Section 3.1 of <xref target="RFC4055"/> | ||||
and Section 2.1 of <xref target="RFC5480"/>. | ||||
<!-- and <xref target="I-D.josefsson-pkix-eddsa"/>--></t> | ||||
<t>Traditionally, the rsaEncryption object identifier is used to | This algorithm identifier is an OID with optionally associated | |||
parameters. The conventions and encoding for RSASSA-PSS and | ||||
ECDSA public key algorithm identifiers are as specified in | ||||
Sections <xref target="RFC3279" section="2.3.1" | ||||
sectionFormat="bare"/> and <xref target="RFC3279" | ||||
section="2.3.5" sectionFormat="bare"/> of <xref | ||||
target="RFC3279" format="default"/>, | ||||
<xref target="RFC4055" sectionFormat="of" section="3.1"/> | ||||
and <xref target="RFC5480" sectionFormat="of" section="2.1"/>. | ||||
</t> | ||||
<t>Traditionally, the rsaEncryption object identifier is used to | ||||
identify RSA public keys. The rsaEncryption object identifier | identify RSA public keys. The rsaEncryption object identifier | |||
continues to identify the subject public key when the RSA private | continues to identify the subject public key when the RSA private | |||
key owner does not wish to limit the use of the public key | key owner does not wish to limit the use of the public key | |||
exclusively to RSASSA-PSS with SHAKEs. When the RSA private | exclusively to RSASSA-PSS with SHAKEs. When the RSA private | |||
key owner wishes to limit the use of the public key exclusively | key owner wishes to limit the use of the public key exclusively | |||
to RSASSA-PSS with SHAKEs, the AlgorithmIdentifiers for | to RSASSA-PSS with SHAKEs, the AlgorithmIdentifiers for | |||
RSASSA-PSS defined in <xref target="oids"/> SHOULD be used as the | RSASSA-PSS defined in <xref target="oids" format="default"/> <bcp | |||
algorithm | 14>SHOULD</bcp14> be used as the algorithm | |||
field in the SubjectPublicKeyInfo sequence <xref target="RFC5280" | field in the SubjectPublicKeyInfo sequence <xref target="RFC5280" | |||
/>. | format="default"/>. | |||
Conforming client implementations that process RSASSA-PSS | Conforming client implementations that process RSASSA-PSS | |||
with SHAKE public keys when processing certificates and CRLs MUST | with SHAKE public keys when processing certificates and CRLs <bcp 14>MUST</bcp14> | |||
recognize the corresponding OIDs. </t> | recognize the corresponding OIDs. </t> | |||
<t>Conforming CA implementations <bcp14>MUST</bcp14> specify the X.509 p | ||||
<t>Conforming CA implementations MUST specify the X.509 public ke | ublic key | |||
y | algorithm explicitly by using the OIDs specified in <xref target= | |||
algorithm explicitly by using the OIDs specified in <xref target= | "oids" format="default"/> | |||
"oids"/> | ||||
when encoding ECDSA with SHAKE public keys in certificates and CR Ls. | when encoding ECDSA with SHAKE public keys in certificates and CR Ls. | |||
Conforming client implementations that process ECDSA with | Conforming client implementations that process ECDSA with | |||
SHAKE public keys when processing certificates and CRLs MUST reco gnize | SHAKE public keys when processing certificates and CRLs <bcp14>MU ST</bcp14> recognize | |||
the corresponding OIDs. </t> | the corresponding OIDs. </t> | |||
<t>The identifier parameters, as explained in <xref target="oids" format | ||||
<t>The identifier parameters, as explained in <xref target="oids" | ="default"/>, | |||
/>, | <bcp14>MUST</bcp14> be absent.</t> | |||
MUST be absent.</t> | </section> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
</section> | <name>IANA Considerations</name> | |||
<t>One object identifier for the ASN.1 module in <xref target="asn" format | ||||
<section anchor="IANA" title="IANA Considerations"> | ="default"/> | |||
<t>One object identifier for the ASN.1 module in <xref target="asn"/> | has been assigned in the "SMI Security for PKIX Module Identifier" | |||
is requested for the SMI Security for PKIX Module Identifiers | ||||
(1.3.6.1.5.5.7.0) registry: </t> | (1.3.6.1.5.5.7.0) registry: </t> | |||
<texttable> | <table align="center"> | |||
<ttcol align='center'>Decimal</ttcol> | <thead> | |||
<ttcol align='center'>Description</ttcol> | <tr> | |||
<ttcol align='center'>References</ttcol> | <th align="center">Decimal</th> | |||
<c>TBD</c> | <th align="center">Description</th> | |||
<c>id-mod-pkix1-shakes-2019</c> | <th align="center">References</th> | |||
<c>[EDNOTE: THIS RFC]</c> | </tr> | |||
</texttable> | </thead> | |||
<tbody> | ||||
<t>IANA is requested to update the | <tr> | |||
SMI Security for PKIX Algorithms <xref target="SMI-PKIX"/> | <td align="center">94</td> | |||
(1.3.6.1.5.5.7.6) registry with four additional entries: </t> | <td align="center">id-mod-pkix1-shakes-2019</td> | |||
<texttable> | <td align="center">RFC 8692</td> | |||
<ttcol align='center'>Decimal</ttcol> | </tr> | |||
<ttcol align='center'>Description</ttcol> | </tbody> | |||
<ttcol align='center'>References</ttcol> | </table> | |||
<c>TBD1</c> | <t>IANA has updated the | |||
<c>id-RSASSA-PSS-SHAKE128</c> | "SMI Security for PKIX Algorithms" | |||
<c>[EDNOTE: THIS RFC]</c> | (1.3.6.1.5.5.7.6) registry <xref target="SMI-PKIX" | |||
<c>TBD2</c> | format="default"/> with four additional entries: </t> | |||
<c>id-RSASSA-PSS-SHAKE256</c> | <table align="center"> | |||
<c>[EDNOTE: THIS RFC]</c> | <thead> | |||
<c>TBD3</c> | <tr> | |||
<c>id-ecdsa-with-shake128</c> | <th align="center">Decimal</th> | |||
<c>[EDNOTE: THIS RFC]</c> | <th align="center">Description</th> | |||
<c>TBD4</c> | <th align="center">References</th> | |||
<c>id-ecdsa-with-shake256</c> | </tr> | |||
<c>[EDNOTE: THIS RFC]</c> | </thead> | |||
</texttable> | <tbody> | |||
<tr> | ||||
<t>IANA is also requested to update the | <td align="center">30</td> | |||
Hash Function Textual Names Registry <xref target="Hash-Texts"/> | <td align="center">id-RSASSA-PSS-SHAKE128</td> | |||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">31</td> | ||||
<td align="center">id-RSASSA-PSS-SHAKE256</td> | ||||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">32</td> | ||||
<td align="center">id-ecdsa-with-shake128</td> | ||||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">33</td> | ||||
<td align="center">id-ecdsa-with-shake256</td> | ||||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>IANA has updated the | ||||
"Hash Function Textual Names" registry <xref target="Hash-Texts" format | ||||
="default"/> | ||||
with two additional entries for SHAKE128 | with two additional entries for SHAKE128 | |||
and SHAKE256: </t> | and SHAKE256: </t> | |||
<texttable> | <table align="center"> | |||
<ttcol align='center'>Hash Function Name</ttcol> | <thead> | |||
<ttcol align='center'>OID</ttcol> | <tr> | |||
<ttcol align='center'>Reference</ttcol> | <th align="center">Hash Function Name</th> | |||
<c>shake128</c> | <th align="center">OID</th> | |||
<c>2.16.840.1.101.3.4.2.11</c> | <th align="center">Reference</th> | |||
<c>[EDNOTE: THIS RFC]</c> | </tr> | |||
<c>shake256</c> | </thead> | |||
<c>2.16.840.1.101.3.4.2.12</c> | <tbody> | |||
<c>[EDNOTE: THIS RFC]</c> | <tr> | |||
</texttable> | <td align="center">shake128</td> | |||
<td align="center">2.16.840.1.101.3.4.2.11</td> | ||||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">shake256</td> | ||||
<td align="center">2.16.840.1.101.3.4.2.12</td> | ||||
<td align="center">RFC 8692</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>This document updates <xref target="RFC3279" format="default"/>. The Se | ||||
<t>This document updates <xref target="RFC3279"/>. The security conside | curity Considerations | |||
rations | ||||
section of that document applies to this specification as well.</t> | section of that document applies to this specification as well.</t> | |||
<t>NIST has defined appropriate use of the hash functions in terms of the | ||||
<t>NIST has defined appropriate use of the hash functions in terms of t | algorithm | |||
he algorithm | ||||
strengths and expected time frames for secure use in Special Publications (SPs) | strengths and expected time frames for secure use in Special Publications (SPs) | |||
<xref target="SP800-78-4"/> and <xref target="SP800-107"/>. | <xref target="SP800-78-4" format="default"/> and <xref target="SP800-107" format="default"/>. | |||
These documents can be used as guides to choose appropriate key sizes | These documents can be used as guides to choose appropriate key sizes | |||
for various security scenarios. </t> | for various security scenarios. </t> | |||
<t>SHAKE128 with output length of 256 bits offers 128 bits | ||||
<!-- <t>The SHAKEs are deterministic functions. Like any other determinist | of collision and preimage resistance. Thus, SHAKE128 OIDs in | |||
ic function, | this specification are <bcp14>RECOMMENDED</bcp14> with 2048- (112-bit | |||
executing multiple times with the same input will produce the | security) or 3072-bit (128-bit security) RSA modulus or | |||
same output. Therefore, users should not expect unrelated outputs (with | curves with group order of 256 bits (128-bit | |||
the | security). SHAKE256 with a 512-bit output length offers | |||
same or different output lengths) from running a SHAKE function with th | 256 bits of collision and preimage resistance. Thus, the | |||
e | SHAKE256 OIDs in this specification are <bcp14>RECOMMENDED</bcp14> with | |||
same input multiple times. The shorter of any two outputs produced from | 4096-bit RSA modulus or higher or curves with a group order of | |||
a | at least 512 bits, such as the NIST Curve P-521 (256-bit | |||
SHAKE with the same input is a prefix of the longer one. It is a simila | security). Note that we recommended a 4096-bit RSA because we | |||
r | would need a 15360-bit modulus for 256 bits of security, which | |||
situation as truncating a 512-bit output of SHA-512 by taking its 256 | is impractical for today's technology.</t> | |||
left-most bits. These 256 left-most bits are a prefix of the 512-bit ou | ||||
tput.</t> --> | ||||
<!-- <t>Implementations must protect the signer's private key. Compromi | ||||
se of | ||||
the signer's private key permits masquerade attacks.</t> --> | ||||
<!-- <t>Implementations must randomly generate one-time values, such as | ||||
the k value when generating a ECDSA | ||||
signature. In addition, the generation of public/private key pairs | ||||
relies on random numbers. The use of inadequate pseudo-random | ||||
number generators (PRNGs) to generate such cryptographic values can | ||||
result in little or no security. The generation of quality random | ||||
numbers is difficult. <xref target="RFC4086"/> offers important guidance | ||||
in this area, and <xref target="SP800-90A"/> series provide acceptable | ||||
PRNGs.</t> --> | ||||
<!-- <t>Implementers should be aware that cryptographic algorithms may | ||||
become weaker with time. As new cryptanalysis techniques are developed | ||||
and computing power increases, the work factor or time required to brea | ||||
k a | ||||
particular cryptographic algorithm may decrease. Therefore, cryptograph | ||||
ic | ||||
algorithm implementations should be modular allowing new algorithms | ||||
to be readily inserted. That is, implementers should be prepared to | ||||
regularly update the set of algorithms in their implementations.</t> --> | ||||
<t>SHAKE128 with output length of 256-bits offers 128-bits of collision | ||||
and preimage resistance. Thus, SHAKE128 OIDs in this specification are RECOMMEN | ||||
DED with 2048 (112-bit security) or 3072-bit (128-bit security) RSA modulus or c | ||||
urves with group order of 256-bits (128-bit security). SHAKE256 with 512-bits ou | ||||
tput length offers 256-bits of collision and preimage resistance. Thus, the SHAK | ||||
E256 OIDs in this specification are RECOMMENDED with 4096-bit RSA modulus or hig | ||||
her or curves with group order of at least 521-bits (256-bit security). Note tha | ||||
t we recommended 4096-bit RSA because we would need 15360-bit modulus for 256-bi | ||||
ts of security which is impractical for today's technology.</t> | ||||
</section> | ||||
<!-- Possibly a 'Contributors' section ... --> | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | ||||
<t>We would like to thank Sean Turner, Jim Schaad and Eric | ||||
Rescorla for their valuable contributions to this document.</t> | ||||
<t>The authors would like to thank Russ Housley for his guidance and | ||||
very valuable contributions with the ASN.1 module.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | <!-- *****BACK MATTER ***** --> | |||
<back> | <back> | |||
<!-- References split into informative and normative --> | <references> | |||
<name>References</name> | ||||
<!-- There are 2 ways to insert reference entries from the citation librarie | <references> | |||
s: | <name>Normative References</name> | |||
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
(as shown) | ence.RFC.2119.xml"/> | |||
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
l"?> here | ence.RFC.3279.xml"/> | |||
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
xml") | ence.RFC.8174.xml"/> | |||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
Both are cited textually in the same manner: by using xref elements. | ence.RFC.4055.xml"/> | |||
If you use the PI option, xml2rfc will, by default, try to find included fi | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
les in the same | ence.RFC.5280.xml"/> | |||
directory as the including file. You can also define the XML_LIBRARY enviro | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
nment variable | ence.RFC.5480.xml"/> | |||
with a value containing a set of directories to search. These can be eithe | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
r in the local | ence.RFC.8017.xml"/> | |||
filing system or remote ones accessed by http (http://domain/dir/... ).--> | <reference anchor="SHA3"> | |||
<front> | ||||
<references title="Normative References"> | <title> | |||
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions | |||
2119.xml"?--> | </title> | |||
&RFC2119; | <seriesInfo name="DOI" value="10.6028/NIST.FIPS.202"/> | |||
&RFC3279; | <seriesInfo name="FIPS PUB" value="202"/> | |||
&RFC8174; | <author> | |||
<!-- &RFC3280; --> | <organization> | |||
&RFC4055; | National Institute of Standards and Technology | |||
&RFC5280; | </organization> | |||
&RFC5480; | </author> | |||
&RFC8017; <!-- RFC8017 is Informational draft but we are keeping it in | <date year="2015" month="August"/> | |||
the Normative References even though idnits complains because we need a normativ | </front> | |||
e reference for RSASSA-PSS. RFC4056 does the same thing with RSASS-PSS v2.1 --> | </reference> | |||
<!-- <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids | </references> | |||
/reference.I-D.draft-josefsson-pkix-eddsa-04.xml"?> --> | <references> | |||
<reference anchor="SHA3" target="https://www.nist.gov/publications/sha-3-s | <name>Informative References</name> | |||
tandard-permutation-based-hash-and-extendable-output-functions"> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
<front> | ence.RFC.5912.xml"/> | |||
<title>SHA-3 Standard - Permutation-Based Hash and Extendable-Output F | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
unctions FIPS PUB 202</title> | ence.RFC.6979.xml"/> | |||
<author> | <reference anchor="SEC1" target="http://www.secg.org/sec1-v2.pdf"> | |||
<organization>National Institute of Standards and Technology (NIST)< | <front> | |||
/organization> | <title>SEC 1: Elliptic Curve Cryptography</title> | |||
</author> | <author> | |||
<date month="August" year="2015" /> | <organization>Standards for Efficient Cryptography Group</organiza | |||
</front> | tion> | |||
</reference> | </author> | |||
</references> | <date month="May" year="2009"/> | |||
</front> | ||||
<references title="Informative References"> | </reference> | |||
<!-- Here we use entities that we defined at the beginning. --> | <reference anchor="X9.62"> | |||
<!--&RFC2629; --> | <front> | |||
&RFC5912; | <title>Public Key Cryptography for the Financial Services Industry: | |||
&RFC6979; | the | |||
<!-- &RFC4086; --> | Elliptic Curve Digital Signature Algorithm (ECDSA)</title> | |||
<!--<reference anchor="shake-nist-oids" target="https://csrc.nist.gov/Proj | <seriesInfo name="ANSI" value="X9.62"/> | |||
ects/Computer-Security-Objects-Register/Algorithm-Registration"> | <author> | |||
<front> | <organization>ANSI</organization> | |||
<title>Computer Security Objects Register</title> | </author> | |||
<author> | <date year="2005"/> | |||
<organization>National Institute of Standards and Technology</organi | </front> | |||
zation> | </reference> | |||
</author> | <reference anchor="SP800-78-4" target="http://dx.doi.org/10.6028/NIST.SP | |||
<date month="October" year="2017" /> | .800-78-4"> | |||
</front> | <front> | |||
</reference> --> | <title>Cryptographic Algorithms and Key Sizes for Personal Identity | |||
<reference anchor="SEC1" target="http://www.secg.org/sec1-v2.pdf"> | Verification</title> | |||
<front> | <seriesInfo name="DOI" value="10.6028/NIST.SP.800-78-4"/> | |||
<title>SEC 1: Elliptic Curve Cryptography</title> | <seriesInfo name="NIST Special Publication (SP)" value="800-78-4"/> | |||
<author> | <author> | |||
<organization>Standards for Efficient Cryptography Group</organizati | <organization>National Institute of Standards and Technology (NIST | |||
on> | )</organization> | |||
</author> | </author> | |||
<date month="May" year="2009" /> | <date month="May" year="2015"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="X9.62"> | <reference anchor="SMI-PKIX" target="https://www.iana.org/assignments/sm | |||
<front> | i-numbers"> | |||
<title>X9.62-2005: Public Key Cryptography for the Financial Services | <front> | |||
Industry: The Elliptic Curve Digital Signature Standard (ECDSA)</title> | <title>SMI Security for PKIX Algorithms</title> | |||
<author> | <author> | |||
<organization>American National Standard for Financial Services (ANS | <organization>IANA</organization> | |||
I)</organization> | </author> | |||
</author> | <date/> | |||
<date month="November" year="2005" /> | </front> | |||
</front> | </reference> | |||
</reference> | <reference anchor="Hash-Texts" target="https://www.iana.org/assignments/ | |||
<reference anchor="SP800-78-4" target="https://csrc.nist.gov/csrc/media/pu | hash-function-text-names/"> | |||
blications/sp/800-78/4/final/documents/sp800_78-4_revised_draft.pdf"> | <front> | |||
<front> | <title>Hash Function Textual Names</title> | |||
<title>SP800-78-4: Cryptographic Algorithms and Key Sizes for Personal | <author> | |||
Identity Verification</title> | <organization>IANA</organization> | |||
<author> | </author> | |||
<organization>National Institute of Standards and Technology (NIST)< | <date/> | |||
/organization> | </front> | |||
</author> | </reference> | |||
<date month="May" year="2014" /> | <reference anchor="SP800-107" target="http://dx.doi.org/10.6028/NIST.SP. | |||
</front> | 800-107r1"> | |||
</reference> | <front> | |||
<reference anchor="SMI-PKIX" target="https://www.iana.org/assignments/smi- | <title>Recommendation for Applications Using Approved Hash Algorithm | |||
numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.6"> | s</title> | |||
<front> | <seriesInfo name="DOI" value="10.6028/NIST.SP.800-107r1"/> | |||
<title>SMI Security for PKIX Algorithms</title> | <seriesInfo name="Revision" value="1"/> | |||
<author> | <seriesInfo name="NIST Special Publication (SP)" value="800-107"/> | |||
<organization>IANA</organization> | <author> | |||
</author> | <organization>National Institute of Standards and Technology (NIST | |||
<date month="March" year="2019" /> | )</organization> | |||
</front> | </author> | |||
</reference> | <date month="August" year="2012"/> | |||
<reference anchor="Hash-Texts" target="https://www.iana.org/assignments/ha | </front> | |||
sh-function-text-names/hash-function-text-names.xhtml"> | </reference> | |||
<front> | </references> | |||
<title>Hash Function Textual Names</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date month="July" year="2017" /> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="SP800-107" target="https://csrc.nist.gov/csrc/media/pub | ||||
lications/sp/800-107/rev-1/final/documents/draft_revised_sp800-107.pdf"> | ||||
<front> | ||||
<title>SP800-107: Recommendation for Applications Using Approved Hash | ||||
Algorithms</title> | ||||
<author> | ||||
<organization>National Institute of Standards and Technology (NIST)< | ||||
/organization> | ||||
</author> | ||||
<date month="May" year="2014" /> | ||||
</front> | ||||
</reference> | ||||
<!-- <reference anchor="SP800-90A" target="http://nvlpubs.nist.gov/nistpub | ||||
s/SpecialPublications/NIST.SP.800-90Ar1.pdf"> | ||||
<front> | ||||
<title>Recommendation for Random Number Generation Using Deterministic | ||||
Random Bit Generators. NIST SP 800-90A</title> | ||||
<author> | ||||
<organization>National Institute of Standards and Technology</organi | ||||
zation> | ||||
</author> | ||||
<date month="June" year="2015" /> | ||||
</front> | ||||
</reference> --> | ||||
<!-- <reference anchor="SP800-185" target="http://nvlpubs.nist.gov/nistpub | ||||
s/SpecialPublications/NIST.SP.800-185.pdf"> | ||||
<front> | ||||
<title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHa | ||||
sh. NIST SP 800-185</title> | ||||
<author> | ||||
<organization>National Institute of Standards and Technology</organi | ||||
zation> | ||||
</author> | ||||
<date month="December" year="2016" /> | ||||
</front> | ||||
</reference> --> | ||||
</references> | </references> | |||
<section anchor="asn" numbered="true" toc="default"> | ||||
<name>ASN.1 Module</name> | ||||
<t>This appendix includes the ASN.1 module for SHAKEs in X.509. | ||||
This module does not come from any previously existing RFC. This module refe | ||||
rences <xref target="RFC5912" format="default"/>.</t> | ||||
<sourcecode type="asn.1"><![CDATA[ | ||||
PKIXAlgsForSHAKE-2019 { iso(1) identified-organization(3) dod(6) | ||||
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-pkix1-shakes-2019(94) } | ||||
<section anchor="asn" title="ASN.1 module"> | DEFINITIONS EXPLICIT TAGS ::= | |||
<t>This appendix includes the ASN.1 module for SHAKEs in X.509. | ||||
This module does not come from any existing RFC. </t> | ||||
<t><figure><artwork><![CDATA[ | ||||
PKIXAlgsForSHAKE-2019 { iso(1) identified-organization(3) dod(6) | ||||
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-pkix1-shakes-2019(TBD) } | ||||
DEFINITIONS EXPLICIT TAGS ::= | ||||
BEGIN | BEGIN | |||
-- EXPORTS ALL; | -- EXPORTS ALL; | |||
IMPORTS | IMPORTS | |||
-- FROM [RFC5912] | -- FROM RFC 5912 | |||
PUBLIC-KEY, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, SMIME-CAPS | PUBLIC-KEY, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, SMIME-CAPS | |||
FROM AlgorithmInformation-2009 | FROM AlgorithmInformation-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) security(5) | { iso(1) identified-organization(3) dod(6) internet(1) security(5) | |||
mechanisms(5) pkix(7) id-mod(0) | mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-algorithmInformation-02(58) } | id-mod-algorithmInformation-02(58) } | |||
-- FROM [RFC5912] | -- FROM RFC 5912 | |||
RSAPublicKey, rsaEncryption, pk-rsa, pk-ec, | RSAPublicKey, rsaEncryption, pk-rsa, pk-ec, | |||
CURVE, id-ecPublicKey, ECPoint, ECParameters, ECDSA-Sig-Value | CURVE, id-ecPublicKey, ECPoint, ECParameters, ECDSA-Sig-Value | |||
FROM PKIXAlgs-2009 { iso(1) identified-organization(3) dod(6) | FROM PKIXAlgs-2009 { iso(1) identified-organization(3) dod(6) | |||
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkix1-algorithms2008-02(56) } | id-mod-pkix1-algorithms2008-02(56) } | |||
; | ; | |||
-- | -- | |||
-- Message Digest Algorithms (mda-) | -- Message Digest Algorithms (mda-) | |||
-- | -- | |||
DigestAlgorithms DIGEST-ALGORITHM ::= { | DigestAlgorithms DIGEST-ALGORITHM ::= { | |||
-- This expands DigestAlgorithms from [RFC5912] | -- This expands DigestAlgorithms from RFC 5912 | |||
mda-shake128 | | mda-shake128 | | |||
mda-shake256, | mda-shake256, | |||
... | ... | |||
} | } | |||
-- | -- | |||
-- One-Way Hash Functions | -- One-Way Hash Functions | |||
-- | -- | |||
- | -- SHAKE128 | |||
-- SHAKE128 | mda-shake128 DIGEST-ALGORITHM ::= { | |||
mda-shake128 DIGEST-ALGORITHM ::= { | IDENTIFIER id-shake128 -- with output length 32 bytes. | |||
IDENTIFIER id-shake128 -- with output length 32 bytes. | } | |||
} | id-shake128 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) | |||
id-shake128 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) | us(840) organization(1) gov(101) | |||
us(840) organization(1) gov(101) | csor(3) nistAlgorithm(4) | |||
csor(3) nistAlgorithm(4) | hashAlgs(2) 11 } | |||
hashAlgs(2) 11 } | ||||
-- SHAKE256 | -- SHAKE256 | |||
mda-shake256 DIGEST-ALGORITHM ::= { | mda-shake256 DIGEST-ALGORITHM ::= { | |||
IDENTIFIER id-shake256 -- with output length 64 bytes. | IDENTIFIER id-shake256 -- with output length 64 bytes. | |||
} | } | |||
id-shake256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) | id-shake256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) | |||
us(840) organization(1) gov(101) | us(840) organization(1) gov(101) | |||
csor(3) nistAlgorithm(4) | csor(3) nistAlgorithm(4) | |||
hashAlgs(2) 12 } | hashAlgs(2) 12 } | |||
-- | -- | |||
-- Public Key (pk-) Algorithms | -- Public Key (pk-) Algorithms | |||
-- | -- | |||
PublicKeys PUBLIC-KEY ::= { | PublicKeys PUBLIC-KEY ::= { | |||
-- This expands PublicKeys from [RFC5912] | -- This expands PublicKeys from RFC 5912 | |||
pk-rsaSSA-PSS-SHAKE128 | | pk-rsaSSA-PSS-SHAKE128 | | |||
pk-rsaSSA-PSS-SHAKE256, | pk-rsaSSA-PSS-SHAKE256, | |||
... | ... | |||
} | } | |||
-- The hashAlgorithm is mda-shake128 | -- The hashAlgorithm is mda-shake128 | |||
-- The maskGenAlgorithm is id-shake128 | -- The maskGenAlgorithm is id-shake128 | |||
-- Mask Gen Algorithm is SHAKE128 with output length | -- Mask Gen Algorithm is SHAKE128 with output length | |||
-- (8*ceil((n-1)/8) - 264) bits, where n is the RSA | -- (8*ceil((n-1)/8) - 264) bits, where n is the RSA | |||
-- modulus in bits. | -- modulus in bits. | |||
-- The saltLength is 32. The trailerField is 1. | -- The saltLength is 32. The trailerField is 1. | |||
pk-rsaSSA-PSS-SHAKE128 PUBLIC-KEY ::= { | pk-rsaSSA-PSS-SHAKE128 PUBLIC-KEY ::= { | |||
IDENTIFIER id-RSASSA-PSS-SHAKE128 | IDENTIFIER id-RSASSA-PSS-SHAKE128 | |||
KEY RSAPublicKey | KEY RSAPublicKey | |||
PARAMS ARE absent | PARAMS ARE absent | |||
-- Private key format not in this module -- | -- Private key format not in this module -- | |||
CERT-KEY-USAGE { nonRepudiation, digitalSignature, | CERT-KEY-USAGE { nonRepudiation, digitalSignature, | |||
keyCertSign, cRLSign } | keyCertSign, cRLSign } | |||
} | } | |||
-- The hashAlgorithm is mda-shake256 | -- The hashAlgorithm is mda-shake256 | |||
-- The maskGenAlgorithm is id-shake256 | -- The maskGenAlgorithm is id-shake256 | |||
-- Mask Gen Algorithm is SHAKE256 with output length | -- Mask Gen Algorithm is SHAKE256 with output length | |||
-- (8*ceil((n-1)/8) - 520)-bits, where n is the RSA | -- (8*ceil((n-1)/8) - 520)-bits, where n is the RSA | |||
-- modulus in bits. | -- modulus in bits. | |||
-- The saltLength is 64. The trailerField is 1. | -- The saltLength is 64. The trailerField is 1. | |||
pk-rsaSSA-PSS-SHAKE256 PUBLIC-KEY ::= { | pk-rsaSSA-PSS-SHAKE256 PUBLIC-KEY ::= { | |||
IDENTIFIER id-RSASSA-PSS-SHAKE256 | IDENTIFIER id-RSASSA-PSS-SHAKE256 | |||
KEY RSAPublicKey | KEY RSAPublicKey | |||
PARAMS ARE absent | PARAMS ARE absent | |||
-- Private key format not in this module -- | -- Private key format not in this module -- | |||
CERT-KEY-USAGE { nonRepudiation, digitalSignature, | CERT-KEY-USAGE { nonRepudiation, digitalSignature, | |||
keyCertSign, cRLSign } | keyCertSign, cRLSign } | |||
} | } | |||
-- | -- | |||
-- Signature Algorithms (sa-) | -- Signature Algorithms (sa-) | |||
-- | -- | |||
SignatureAlgs SIGNATURE-ALGORITHM ::= { | SignatureAlgs SIGNATURE-ALGORITHM ::= { | |||
-- This expands SignatureAlgorithms from [RFC5912] | -- This expands SignatureAlgorithms from RFC 5912 | |||
sa-rsassapssWithSHAKE128 | | sa-rsassapssWithSHAKE128 | | |||
sa-rsassapssWithSHAKE256 | | sa-rsassapssWithSHAKE256 | | |||
sa-ecdsaWithSHAKE128 | | sa-ecdsaWithSHAKE128 | | |||
sa-ecdsaWithSHAKE256, | sa-ecdsaWithSHAKE256, | |||
... | ... | |||
} | } | |||
-- | -- | |||
-- SMIME Capabilities (sa-) | -- SMIME Capabilities (sa-) | |||
-- | -- | |||
SMimeCaps SMIME-CAPS ::= { | SMimeCaps SMIME-CAPS ::= { | |||
-- The expands SMimeCaps from [RFC5912] | -- The expands SMimeCaps from RFC 5912 | |||
sa-rsassapssWithSHAKE128.&smimeCaps | | sa-rsassapssWithSHAKE128.&smimeCaps | | |||
sa-rsassapssWithSHAKE256.&smimeCaps | | sa-rsassapssWithSHAKE256.&smimeCaps | | |||
sa-ecdsaWithSHAKE128.&smimeCaps | | sa-ecdsaWithSHAKE128.&smimeCaps | | |||
sa-ecdsaWithSHAKE256.&smimeCaps, | sa-ecdsaWithSHAKE256.&smimeCaps, | |||
... | ... | |||
} | } | |||
-- RSASSA-PSS with SHAKE128 | -- RSASSA-PSS with SHAKE128 | |||
sa-rsassapssWithSHAKE128 SIGNATURE-ALGORITHM ::= { | sa-rsassapssWithSHAKE128 SIGNATURE-ALGORITHM ::= { | |||
IDENTIFIER id-RSASSA-PSS-SHAKE128 | IDENTIFIER id-RSASSA-PSS-SHAKE128 | |||
PARAMS ARE absent | PARAMS ARE absent | |||
-- The hashAlgorithm is mda-shake128 | -- The hashAlgorithm is mda-shake128 | |||
-- The maskGenAlgorithm is id-shake128 | -- The maskGenAlgorithm is id-shake128 | |||
-- Mask Gen Algorithm is SHAKE128 with output length | -- Mask Gen Algorithm is SHAKE128 with output length | |||
-- (8*ceil((n-1)/8) - 264) bits, where n is the RSA | -- (8*ceil((n-1)/8) - 264) bits, where n is the RSA | |||
-- modulus in bits. | -- modulus in bits. | |||
-- The saltLength is 32. The trailerField is 1 | -- The saltLength is 32. The trailerField is 1 | |||
HASHES { mda-shake128 } | HASHES { mda-shake128 } | |||
PUBLIC-KEYS { pk-rsa | pk-rsaSSA-PSS-SHAKE128 } | PUBLIC-KEYS { pk-rsa | pk-rsaSSA-PSS-SHAKE128 } | |||
SMIME-CAPS { IDENTIFIED BY id-RSASSA-PSS-SHAKE128 } | SMIME-CAPS { IDENTIFIED BY id-RSASSA-PSS-SHAKE128 } | |||
} | } | |||
id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { iso(1) | id-RSASSA-PSS-SHAKE128 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD1 } | 30 } | |||
-- RSASSA-PSS with SHAKE256 | -- RSASSA-PSS with SHAKE256 | |||
sa-rsassapssWithSHAKE256 SIGNATURE-ALGORITHM ::= { | sa-rsassapssWithSHAKE256 SIGNATURE-ALGORITHM ::= { | |||
IDENTIFIER id-RSASSA-PSS-SHAKE256 | IDENTIFIER id-RSASSA-PSS-SHAKE256 | |||
PARAMS ARE absent | PARAMS ARE absent | |||
-- The hashAlgorithm is mda-shake256 | -- The hashAlgorithm is mda-shake256 | |||
-- The maskGenAlgorithm is id-shake256 | -- The maskGenAlgorithm is id-shake256 | |||
-- Mask Gen Algorithm is SHAKE256 with output length | -- Mask Gen Algorithm is SHAKE256 with output length | |||
-- (8*ceil((n-1)/8) - 520)-bits, where n is the | -- (8*ceil((n-1)/8) - 520)-bits, where n is the | |||
-- RSA modulus in bits. | -- RSA modulus in bits. | |||
-- The saltLength is 64. The trailerField is 1. | -- The saltLength is 64. The trailerField is 1. | |||
HASHES { mda-shake256 } | HASHES { mda-shake256 } | |||
PUBLIC-KEYS { pk-rsa | pk-rsaSSA-PSS-SHAKE256 } | PUBLIC-KEYS { pk-rsa | pk-rsaSSA-PSS-SHAKE256 } | |||
SMIME-CAPS { IDENTIFIED BY id-RSASSA-PSS-SHAKE256 } | SMIME-CAPS { IDENTIFIED BY id-RSASSA-PSS-SHAKE256 } | |||
} | } | |||
id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { iso(1) | id-RSASSA-PSS-SHAKE256 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD2 } | 31 } | |||
-- ECDSA with SHAKE128 | -- ECDSA with SHAKE128 | |||
sa-ecdsaWithSHAKE128 SIGNATURE-ALGORITHM ::= { | sa-ecdsaWithSHAKE128 SIGNATURE-ALGORITHM ::= { | |||
IDENTIFIER id-ecdsa-with-shake128 | IDENTIFIER id-ecdsa-with-shake128 | |||
VALUE ECDSA-Sig-Value | VALUE ECDSA-Sig-Value | |||
PARAMS ARE absent | PARAMS ARE absent | |||
HASHES { mda-shake128 } | HASHES { mda-shake128 } | |||
PUBLIC-KEYS { pk-ec } | PUBLIC-KEYS { pk-ec } | |||
SMIME-CAPS { IDENTIFIED BY id-ecdsa-with-shake128 } | SMIME-CAPS { IDENTIFIED BY id-ecdsa-with-shake128 } | |||
} | } | |||
id-ecdsa-with-shake128 OBJECT IDENTIFIER ::= { iso(1) | id-ecdsa-with-shake128 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD3 } | 32 } | |||
-- ECDSA with SHAKE256 | -- ECDSA with SHAKE256 | |||
sa-ecdsaWithSHAKE256 SIGNATURE-ALGORITHM ::= { | sa-ecdsaWithSHAKE256 SIGNATURE-ALGORITHM ::= { | |||
IDENTIFIER id-ecdsa-with-shake256 | IDENTIFIER id-ecdsa-with-shake256 | |||
VALUE ECDSA-Sig-Value | VALUE ECDSA-Sig-Value | |||
PARAMS ARE absent | PARAMS ARE absent | |||
HASHES { mda-shake256 } | HASHES { mda-shake256 } | |||
PUBLIC-KEYS { pk-ec } | PUBLIC-KEYS { pk-ec } | |||
SMIME-CAPS { IDENTIFIED BY id-ecdsa-with-shake256 } | SMIME-CAPS { IDENTIFIED BY id-ecdsa-with-shake256 } | |||
} | } | |||
id-ecdsa-with-shake256 OBJECT IDENTIFIER ::= { iso(1) | id-ecdsa-with-shake256 OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) | identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) algorithms(6) | security(5) mechanisms(5) pkix(7) algorithms(6) | |||
TBD4 } | 33 } | |||
END | END | |||
]]></artwork></figure> | ]]></sourcecode> | |||
</t> | </section> | |||
<section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>We would like to thank Sean Turner, Jim Schaad, and Eric | ||||
Rescorla for their valuable contributions to this document.</t> | ||||
<t>The authors would like to thank Russ Housley for his guidance and | ||||
very valuable contributions with the ASN.1 module.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 89 change blocks. | ||||
1002 lines changed or deleted | 637 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |