| rfc8708xml2.original.xml | rfc8708.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <!ENTITY RFC5652 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5652.xml"> | ||||
| <!ENTITY RFC8554 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8554.xml"> | ||||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2119.xml"> | ||||
| <!ENTITY RFC5280 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5280.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8174.xml"> | ||||
| <!ENTITY RFC5911 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5911.xml"> | ||||
| <!ENTITY RFC6268 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6268.xml"> | ||||
| <!ENTITY RFC4108 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4108.xml"> | ||||
| <!ENTITY RFC5912 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5912.xml"> | ||||
| <!ENTITY RFC4086 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4086.xml"> | ||||
| ]> | ||||
| <rfc submissionType="IETF" docName="draft-ietf-lamps-cms-hash-sig-10" category=" | ||||
| std" ipr="trust200902"> | ||||
| <!-- Generated by id2xml 1.5.0 on 2019-10-23T17:15:15Z --> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc text-list-symbols="o*+-"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc strict="yes"?> | ||||
| <?rfc toc="yes"?> | ||||
| <front> | ||||
| <title abbrev="Use of the HSS/LMS Hash-based Signature ">Use of the HSS/L | ||||
| MS Hash-based Signature Algorithm in the Cryptographic Message Syntax (CMS)</tit | ||||
| le> | ||||
| <author fullname="Russ Housley" initials="R." surname="Housley"> | ||||
| <organization abbrev="Vigil Security">Vigil Security, LLC</organization> | ||||
| <address><postal><street>516 Dranesville Road</street> | ||||
| <city>Herndon</city> <region>VA</region> <code>20170</code> | ||||
| <country>USA</country> | ||||
| </postal> | ||||
| <email>housley@vigilsec.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="October" year="2019"/> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
| <abstract><t> | category="std" consensus="true" | |||
| docName="draft-ietf-lamps-cms-hash-sig-10" number="8708" | ||||
| ipr="trust200902" obsoletes="" updates="" xml:lang="en" sortRefs="true" | ||||
| symRefs="true" tocInclude="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 2.34.0 --> | ||||
| <!-- Generated by id2xml 1.5.0 on 2019-10-23T17:15:15Z --> | ||||
| <front> | ||||
| <title abbrev="Use of the HSS/LMS Hash-Based Signature">Use of the HSS/LMS | ||||
| Hash-Based Signature Algorithm in the Cryptographic Message Syntax | ||||
| (CMS)</title> | ||||
| <seriesInfo name="RFC" value="8708"/> | ||||
| <author fullname="Russ Housley" initials="R." surname="Housley"> | ||||
| <organization abbrev="Vigil Security">Vigil Security, LLC</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>516 Dranesville Road</street> | ||||
| <city>Herndon</city> | ||||
| <region>VA</region> | ||||
| <code>20170</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>housley@vigilsec.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="January" year="2020"/> | ||||
| <abstract> | ||||
| <t> | ||||
| This document specifies the conventions for using the Hierarchical | This document specifies the conventions for using the Hierarchical | |||
| Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | |||
| signature algorithm with the Cryptographic Message Syntax (CMS). In | signature algorithm with the Cryptographic Message Syntax (CMS). In | |||
| addition, the algorithm identifier and public key syntax are | addition, the algorithm identifier and public key syntax are | |||
| provided. The HSS/LMS algorithm is one form of hash-based digital | provided. The HSS/LMS algorithm is one form of hash-based digital | |||
| signature; it is described in RFC 8554.</t> | signature; it is described in RFC 8554.</t> | |||
| </abstract> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="sect-1" numbered="true" toc="default"> | ||||
| <name>Introduction</name> | ||||
| </abstract> | <t> | |||
| </front> | ||||
| <middle> | ||||
| <section title="Introduction" anchor="sect-1"><t> | ||||
| This document specifies the conventions for using the Hierarchical | This document specifies the conventions for using the Hierarchical | |||
| Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | |||
| signature algorithm with the Cryptographic Message Syntax (CMS) <xref target= "CMS"/> | signature algorithm with the Cryptographic Message Syntax (CMS) <xref target= "RFC5652" format="default"/> | |||
| signed-data content type. The LMS system provides a one-time digital | signed-data content type. The LMS system provides a one-time digital | |||
| signature that is a variant of Merkle Tree Signatures (MTS). The HSS | signature that is a variant of Merkle Tree Signatures (MTS). The HSS | |||
| is built on top of the LMS system to efficiently scale for a larger | is built on top of the LMS system to efficiently scale for a larger | |||
| numbers of signatures. The HSS/LMS algorithm is one form of hash- | numbers of signatures. The HSS/LMS algorithm is one form of hash-based digit | |||
| based digital signature, and it is described in <xref target="HASHSIG"/>. Th | al signature, and it is described in <xref target="RFC8554" format="default"/>. | |||
| e | The | |||
| HSS/LMS signature algorithm can only be used for a fixed number of | HSS/LMS signature algorithm can only be used for a fixed number of | |||
| signing operations with a given private key, and the number of | signing operations with a given private key, and the number of | |||
| signing operations depends upon the size of the tree. The HSS/LMS | signing operations depends upon the size of the tree. The HSS/LMS | |||
| signature algorithm uses small public keys, and it has low | signature algorithm uses small public keys, and it has low | |||
| computational cost; however, the signatures are quite large. The | computational cost; however, the signatures are quite large. The | |||
| HSS/LMS private key can be very small when the signer is willing to | HSS/LMS private key can be very small when the signer is willing to | |||
| perform additional computation at signing time; alternatively, the | perform additional computation at signing time; alternatively, the | |||
| private key can consume additional memory and provide a faster | private key can consume additional memory and provide a faster | |||
| signing time. The HSS/LMS signatures <xref target="HASHSIG"/> are currently | signing time. The HSS/LMS signatures <xref target="RFC8554" format="default" | |||
| defined | /> are currently defined | |||
| to use exclusively SHA-256 <xref target="SHS"/>.</t> | to exclusively use SHA-256 <xref target="SHS" format="default"/>.</t> | |||
| <section anchor="sect-1.1" numbered="true" toc="default"> | ||||
| <section title="ASN.1" anchor="sect-1.1"><t> | <name>ASN.1</name> | |||
| CMS values are generated using ASN.1 <xref target="ASN1-B"/>, using the Basic | <t> | |||
| CMS values are generated using ASN.1 <xref target="ASN1-B" format="default"/> | ||||
| , using the Basic | ||||
| Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | |||
| <xref target="ASN1-E"/>.</t> | <xref target="ASN1-E" format="default"/>.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-1.2" numbered="true" toc="default"> | |||
| <name>Terminology</name> | ||||
| <section title="Terminology" anchor="sect-1.2"><t> | <t> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "OPTIONAL" in this document are to be interpreted as described in | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| they appear in all | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| capitals, as shown here.</t> | be interpreted as | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| </section> | when, and only when, they appear in all capitals, as shown here. | |||
| </t> | ||||
| <section title="Motivation" anchor="sect-1.3"><t> | </section> | |||
| Recent advances in cryptanalysis <xref target="BH2013"/> and progress in the | <section anchor="sect-1.3" numbered="true" toc="default"> | |||
| development of quantum computers <xref target="NAS2019"/> pose a threat to wi | <name>Motivation</name> | |||
| dely | <t> | |||
| Recent advances in cryptanalysis <xref target="BH2013" format="default"/> and | ||||
| progress in the | ||||
| development of quantum computers <xref target="NAS2019" format="default"/> po | ||||
| se a threat to widely | ||||
| deployed digital signature algorithms. As a result, there is a need | deployed digital signature algorithms. As a result, there is a need | |||
| to prepare for a day that cryptosystems such as RSA and DSA that | to prepare for a day when cryptosystems such as RSA and DSA that | |||
| depend on discrete logarithm and factoring cannot be depended upon.</t> | depend on discrete logarithms and factoring cannot be depended upon.</t> | |||
| <t> | ||||
| <t> | ||||
| If large-scale quantum computers are ever built, these computers will | If large-scale quantum computers are ever built, these computers will | |||
| be able to break many of the public-key cryptosystems currently in | be able to break many of the public key cryptosystems currently in | |||
| use. A post-quantum cryptosystem <xref target="PQC"/> is a system that is se | use. A post-quantum cryptosystem <xref target="PQC" format="default"/> is a | |||
| cure | system that is secure | |||
| against quantum computers that have more than a trivial number of | against quantum computers that have more than a trivial number of | |||
| quantum bits (qubits). It is open to conjecture when it will be | quantum bits (qubits). It is open to conjecture when it will be | |||
| feasible to build such computers; however, RSA, DSA, ECDSA, and EdDSA | feasible to build such computers; however, RSA, DSA, Elliptic Curve Digital | |||
| are all vulnerable if large-scale quantum computers come to pass.</t> | Signature Algorithm (ECDSA), and Edwards-curve Digital Signature Algorithm (E | |||
| dDSA) | ||||
| <t> | are all vulnerable if large-scale quantum computers are ever developed.</t> | |||
| <t> | ||||
| Since the HSS/LMS signature algorithm does not depend on the | Since the HSS/LMS signature algorithm does not depend on the | |||
| difficulty of discrete logarithm or factoring, the HSS/LMS signature | difficulty of discrete logarithms or factoring, the HSS/LMS signature | |||
| algorithm is considered to be post-quantum secure. One use of post- | algorithm is considered to be post-quantum secure. One use of post-quantum-s | |||
| quantum secure signatures is the protection of software updates, | ecure signatures is the protection of software updates, | |||
| perhaps using the format described in <xref target="FWPROT"/>, to enable depl | perhaps using the format described in <xref target="RFC4108" format="default" | |||
| oyment | />, to enable deployment | |||
| of software that implements new cryptosystems.</t> | of software that implements new cryptosystems.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sect-2" numbered="true" toc="default"> | ||||
| </section> | <name>HSS/LMS Hash-Based Signature Algorithm Overview</name> | |||
| <t> | ||||
| <section title="HSS/LMS Hash-based Signature Algorithm Overview" anchor=" | ||||
| sect-2"><t> | ||||
| Merkle Tree Signatures (MTS) are a method for signing a large but | Merkle Tree Signatures (MTS) are a method for signing a large but | |||
| fixed number of messages. An MTS system depends on a one-time | fixed number of messages. An MTS system depends on a one-time | |||
| signature method and a collision-resistant hash function.</t> | signature method and a collision-resistant hash function.</t> | |||
| <t> | ||||
| <t> | ||||
| This specification makes use of the hash-based algorithm specified in | This specification makes use of the hash-based algorithm specified in | |||
| <xref target="HASHSIG"/>, which is the Leighton and Micali adaptation <xref t arget="LM"/> of the | <xref target="RFC8554" format="default"/>, which is the Leighton and Micali a daptation <xref target="LM" format="default"/> of the | |||
| original Lamport-Diffie-Winternitz-Merkle one-time signature system | original Lamport-Diffie-Winternitz-Merkle one-time signature system | |||
| <xref target="M1979"/><xref target="M1987"/><xref target="M1989a"/><xref targ | <xref target="M1979" format="default"/> <xref target="M1987" | |||
| et="M1989b"/>.</t> | format="default"/> <xref target="M1989a" format="default"/> <xref target="M19 | |||
| 89b" format="default"/>.</t> | ||||
| <t> | <t> | |||
| As implied by the name, the hash-based signature algorithm depends on | As implied by the name, the hash-based signature algorithm depends on | |||
| a collision-resistant hash function. The hash-based signature | a collision-resistant hash function. The hash-based signature | |||
| algorithm specified in <xref target="HASHSIG"/> uses only the SHA-256 one-way | algorithm specified in <xref target="RFC8554" format="default"/> uses only th | |||
| hash | e SHA-256 one-way hash | |||
| function <xref target="SHS"/>, but it establishes an IANA registry <xref targ | function <xref target="SHS" format="default"/>, but it establishes an IANA re | |||
| et="IANA-LMS"/> to | gistry <xref target="IANA-LMS" format="default"/> to | |||
| permit the registration of additional one-way hash functions in the | permit the registration of additional one-way hash functions in the | |||
| future.</t> | future.</t> | |||
| <section anchor="sect-2.1" numbered="true" toc="default"> | ||||
| <section title="Hierarchical Signature System (HSS)" anchor="sect-2.1"><t | <name>Hierarchical Signature System (HSS)</name> | |||
| > | <t> | |||
| The MTS system specified in <xref target="HASHSIG"/> uses a hierarchy of tree | The MTS system specified in <xref target="RFC8554" format="default"/> uses a | |||
| s. The | hierarchy of trees. The | |||
| Hierarchical N-time Signature System (HSS) allows subordinate trees | N-time Hierarchical Signature System (HSS) allows subordinate trees | |||
| to be generated when needed by the signer. Otherwise, generation of | to be generated when needed by the signer. Otherwise, generation of | |||
| the entire tree might take weeks or longer.</t> | the entire tree might take weeks or longer.</t> | |||
| <t> | ||||
| <t> | An HSS signature as specified in <xref target="RFC8554" format="default"/> ca | |||
| An HSS signature as specified in <xref target="HASHSIG"/> carries the number | rries the number of | |||
| of | ||||
| signed public keys (Nspk), followed by that number of signed public | signed public keys (Nspk), followed by that number of signed public | |||
| keys, followed by the LMS signature as described in <xref target="sect-2.2"/> | keys, followed by the LMS signature as described in <xref target="sect-2.2" f | |||
| . The | ormat="default"/>. The | |||
| public key for the top-most LMS tree is the public key of the HSS | public key for the topmost LMS tree is the public key of the HSS | |||
| system. The LMS private key in the parent tree signs the LMS public | system. The LMS private key in the parent tree signs the LMS public | |||
| key in the child tree, and the LMS private key in the bottom-most | key in the child tree, and the LMS private key in the bottom-most | |||
| tree signs the actual message. The signature over the public key and | tree signs the actual message. The signature over the public key and | |||
| the signature over the actual message are LMS signatures as described | the signature over the actual message are LMS signatures as described | |||
| in <xref target="sect-2.2"/>.</t> | in <xref target="sect-2.2" format="default"/>.</t> | |||
| <t> | ||||
| <t> | The elements of the HSS signature value for a standalone tree (a top | |||
| The elements of the HSS signature value for a stand-alone tree (a top | ||||
| tree with no children) can be summarized as:</t> | tree with no children) can be summarized as:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(0) || | u32str(0) || | |||
| lms_signature /* signature of message */ | lms_signature /* signature of message */ | |||
| where, u32str() and || are used as defined in [HASHSIG]. | ||||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | ||||
| <t> | <t>where, u32str() and || are used as defined in <xref target="RFC8554" format=" | |||
| default"/>.</t> | ||||
| <t> | ||||
| The elements of the HSS signature value for a tree with Nspk signed | The elements of the HSS signature value for a tree with Nspk signed | |||
| public keys can be summarized as:</t> | public keys can be summarized as:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(Nspk) || | u32str(Nspk) || | |||
| signed_public_key[0] || | signed_public_key[0] || | |||
| signed_public_key[1] || | signed_public_key[1] || | |||
| ... | ... | |||
| signed_public_key[Nspk-2] || | signed_public_key[Nspk-2] || | |||
| signed_public_key[Nspk-1] || | signed_public_key[Nspk-1] || | |||
| lms_signature /* signature of message */ | lms_signature /* signature of message */ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | <t> | |||
| <t> | where, as defined in <xref target="RFC8554" | |||
| where, as defined in Section 3.3 of <xref target="HASHSIG"/>, the signed_publ | sectionFormat="of" section="3.3"/>, the signed_public_key | |||
| ic_key | structure contains the lms_signature over the public key, followed by | |||
| structure contains the lms_signature over the public key followed by | ||||
| the public key itself. Note that Nspk is the number of levels in the | the public key itself. Note that Nspk is the number of levels in the | |||
| hierarchy of trees minus 1.</t> | hierarchy of trees minus 1.</t> | |||
| </section> | ||||
| <section anchor="sect-2.2" numbered="true" toc="default"> | ||||
| <name>Leighton-Micali Signature (LMS)</name> | ||||
| </section> | <t> | |||
| Each tree in the system specified in <xref target="RFC8554" format="default"/ | ||||
| <section title="Leighton-Micali Signature (LMS)" anchor="sect-2.2"><t> | > uses the Leighton-Micali Signature (LMS) system. LMS systems have two paramet | |||
| Each tree in the system specified in <xref target="HASHSIG"/> uses the Leight | ers. The | |||
| on- | ||||
| Micali Signature (LMS) system. LMS systems have two parameters. The | ||||
| first parameter is the height of the tree, h, which is the number of | first parameter is the height of the tree, h, which is the number of | |||
| levels in the tree minus one. The <xref target="HASHSIG"/> specification sup | levels in the tree minus one. The <xref target="RFC8554" format="default"/> | |||
| ports | specification supports | |||
| five values for this parameter: h=5; h=10; h=15; h=20; and h=25. | five values for this parameter: h=5, h=10, h=15, h=20, and h=25. | |||
| Note that there are 2^h leaves in the tree. The second parameter, m, | Note that there are 2^h leaves in the tree. The second parameter, m, | |||
| is the number of bytes output by the hash function, and it is the | is the number of bytes output by the hash function, and it is the | |||
| amount of data associated with each node in the tree. The <xref target="HASH | amount of data associated with each node in the tree. The <xref target="RFC8 | |||
| SIG"/> | 554" format="default"/> | |||
| specification supports only the SHA-256 hash function <xref target="SHS"/>, w | specification supports only the SHA-256 hash function <xref target="SHS" form | |||
| ith | at="default"/>, with | |||
| m=32. As a result, the <xref target="HASHSIG"/> specification supports five | m=32. As a result, the <xref target="RFC8554" format="default"/> specificati | |||
| tree | on supports five tree | |||
| sizes; they are identified as:</t> | sizes; they are identified as:</t> | |||
| <figure><artwork><![CDATA[ | <ul> | |||
| LMS_SHA256_M32_H5; | <li>LMS_SHA256_M32_H5</li> | |||
| LMS_SHA256_M32_H10; | <li>LMS_SHA256_M32_H10</li> | |||
| LMS_SHA256_M32_H15; | <li>LMS_SHA256_M32_H15</li> | |||
| LMS_SHA256_M32_H20; and | <li>LMS_SHA256_M32_H20</li> | |||
| LMS_SHA256_M32_H25. | <li>LMS_SHA256_M32_H25</li> | |||
| ]]></artwork> | </ul> | |||
| </figure> | ||||
| <t> | <t> | |||
| The <xref target="HASHSIG"/> specification establishes an IANA registry <xref | The <xref target="RFC8554" format="default"/> specification establishes an IA | |||
| target="IANA-LMS"/> | NA registry <xref target="IANA-LMS" format="default"/> | |||
| to permit the registration of additional hash functions and | to permit the registration of additional hash functions and | |||
| additional tree sizes in the future.</t> | additional tree sizes in the future.</t> | |||
| <t> | ||||
| <t> | As specified in <xref target="RFC8554" format="default"/>, the LMS public key | |||
| As specified in <xref target="HASHSIG"/>, the LMS public key consists of four | consists of four | |||
| elements: the lms_algorithm_type from the list above, the otstype to | elements: the lms_algorithm_type from the list above, the otstype to | |||
| identify the LM-OTS type as discussed in <xref target="sect-2.3"/>, the priva | identify the Leighton-Micali One-Time Signature (LM-OTS) type as discussed in | |||
| te key | <xref target="sect-2.3" format="default"/>, the private key | |||
| identifier (I) as described in Section 5.3 of <xref target="HASHSIG"/>, and t | identifier (I) as described in <xref target="RFC8554" | |||
| he m- | sectionFormat="of" section="5.3"/>, and the m-byte string associated with the | |||
| byte string associated with the root node of the tree (T[1]).</t> | root node of the tree (T[1]).</t> | |||
| <t> | ||||
| <t> | ||||
| The LMS public key can be summarized as:</t> | The LMS public key can be summarized as:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(lms_algorithm_type) || u32str(otstype) || I || T[1] | u32str(lms_algorithm_type) || u32str(otstype) || I || T[1] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | <t> | |||
| As specified in <xref target="RFC8554" format="default"/>, | ||||
| <t> | an LMS signature consists of four | |||
| As specified in <xref target="HASHSIG"/>, an LMS signature consists of four | elements: the number of the leaf (q) associated with the LM-OTS | |||
| elements: the number of the leaf (q) associated with the LM-OTS | signature value, an LM-OTS signature value as described in | |||
| signature, an LM-OTS signature as described in <xref target="sect-2.3"/>, a | <xref target="sect-2.3" format="default"/>, a | |||
| typecode indicating the particular LMS algorithm, and an array of | typecode indicating the particular LMS algorithm, and an array of | |||
| values that is associated with the path through the tree from the | values that is associated with the path through the tree from the | |||
| leaf associated with the LM-OTS signature to the root. The array of | leaf associated with the LM-OTS signature value to the root. The array of | |||
| values contains the siblings of the nodes on the path from the leaf | values contains the siblings of the nodes on the path from the leaf | |||
| to the root but does not contain the nodes on the path itself. The | to the root but does not contain the nodes on the path itself. The | |||
| array for a tree with height h will have h values. The first value | array for a tree with height h will have h values. The first value | |||
| is the sibling of the leaf, the next value is the sibling of the | is the sibling of the leaf, the next value is the sibling of the | |||
| parent of the leaf, and so on up the path to the root.</t> | parent of the leaf, and so on up the path to the root. | |||
| </t> | ||||
| <t> | <t> | |||
| The four elements of the LMS signature value can be summarized as:</t> | The four elements of the LMS signature value can be summarized as:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(q) || | u32str(q) || | |||
| ots_signature || | ots_signature || | |||
| u32str(type) || | u32str(type) || | |||
| path[0] || path[1] || ... || path[h-1] | path[0] || path[1] || ... || path[h-1] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | <section anchor="sect-2.3" numbered="true" toc="default"> | |||
| <name>Leighton-Micali One-Time Signature (LM-OTS) Algorithm</name> | ||||
| <section title="Leighton-Micali One-time Signature Algorithm (LM-OTS)" an | <t> | |||
| chor="sect-2.3"><t> | ||||
| Merkle Tree Signatures (MTS) depend on a one-time signature method, | Merkle Tree Signatures (MTS) depend on a one-time signature method, | |||
| and <xref target="HASHSIG"/> specifies the use of the LM-OTS, which has five | and <xref target="RFC8554" format="default"/> specifies the use of the LM-OTS , which has five | |||
| parameters:</t> | parameters:</t> | |||
| <figure><artwork><![CDATA[ | <dl indent="5"> | |||
| n - The length in bytes of the hash function output. [HASHSIG] | <dt>n:</dt><dd>The length in bytes of the hash function output. <xref | |||
| supports only SHA-256 [SHS], with n=32. | target="RFC8554" format="default"/> supports only SHA-256 <xref target="SHS" for | |||
| mat="default"/>, with n=32.</dd> | ||||
| H - A preimage-resistant hash function that accepts byte strings | <dt>H:</dt><dd>A preimage-resistant hash function that accepts byte strings of a | |||
| of any length, and returns an n-byte string. | ny length and returns an n-byte string.</dd> | |||
| w - The width in bits of the Winternitz coefficients. [HASHSIG] | <dt>w:</dt><dd>The width in bits of the Winternitz coefficients. <xref | |||
| supports four values for this parameter: w=1; w=2; w=4; and | target="RFC8554" format="default"/> supports four values for this parameter: w=1 | |||
| w=8. | , w=2, w=4, and w=8.</dd> | |||
| p - The number of n-byte string elements that make up the LM-OTS | <dt>p:</dt><dd>The number of n-byte string elements that make up the LM-OTS sign | |||
| signature. | ature value.</dd> | |||
| ls - The number of bits that are left-shifted in the final step of | <dt>ls:</dt><dd>The number of bits that are left-shifted in the final step of | |||
| the checksum function, which is defined in Section 4.4 of | the checksum function, which is defined in <xref target="RFC8554" | |||
| [HASHSIG]. | sectionFormat="of" section="4.4"/>.</dd> | |||
| ]]></artwork> | </dl> | |||
| </figure> | ||||
| <t> | ||||
| The values of p and ls are dependent on the choices of the parameters | ||||
| n and w, as described in Appendix B of <xref target="HASHSIG"/>.</t> | ||||
| <t> | <t> | |||
| The [HASHSIG] specification supports four LM-OTS variants:</t> | The values of p and ls are dependent on the choices of the parameters | |||
| n and w, as described in <xref target="RFC8554" | ||||
| sectionFormat="of" section="B"/>.</t> | ||||
| <t> | ||||
| The <xref target="RFC8554"/> specification supports four LM-OTS variants:</t> | ||||
| <figure><artwork><![CDATA[ | <ul> | |||
| LMOTS_SHA256_N32_W1; | <li>LMOTS_SHA256_N32_W1</li> | |||
| LMOTS_SHA256_N32_W2; | <li>LMOTS_SHA256_N32_W2</li> | |||
| LMOTS_SHA256_N32_W4; and | <li>LMOTS_SHA256_N32_W4</li> | |||
| LMOTS_SHA256_N32_W8. | <li>LMOTS_SHA256_N32_W8</li> | |||
| ]]></artwork> | </ul> | |||
| </figure> | ||||
| <t> | <t> | |||
| The <xref target="HASHSIG"/> specification establishes an IANA registry <xref | The <xref target="RFC8554" format="default"/> specification establishes an IA | |||
| target="IANA-LMS"/> | NA registry <xref target="IANA-LMS" format="default"/> | |||
| to permit the registration of additional variants in the future.</t> | to permit the registration of additional variants in the future.</t> | |||
| <t> | ||||
| <t> | ||||
| Signing involves the generation of C, an n-byte random value.</t> | Signing involves the generation of C, an n-byte random value.</t> | |||
| <t> | ||||
| <t> | ||||
| The LM-OTS signature value can be summarized as the identifier of the | The LM-OTS signature value can be summarized as the identifier of the | |||
| LM-OTS variant, the random value, and a sequence of hash values (y[0] | LM-OTS variant, the random value, and a sequence of hash values (y[0] | |||
| through y[p-1]) that correspond to the elements of the public key as | through y[p-1]) that correspond to the elements of the public key, as | |||
| described in Section 4.5 of <xref target="HASHSIG"/>:</t> | described in <xref target="RFC8554" sectionFormat="of" section="4.5"/>:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(otstype) || C || y[0] || ... || y[p-1] | u32str(otstype) || C || y[0] || ... || y[p-1] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | </section> | |||
| <section anchor="sect-3" numbered="true" toc="default"> | ||||
| </section> | <name>Algorithm Identifiers and Parameters</name> | |||
| <t> | ||||
| <section title="Algorithm Identifiers and Parameters" anchor="sect-3"> | The algorithm identifier for an HSS/LMS hash-based signature is: </t> | |||
| <t> | ||||
| The algorithm identifier for an HSS/LMS hash-based signatures is: </t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="asn.1"><![CDATA[ | |||
| id-alg-hss-lms-hashsig OBJECT IDENTIFIER ::= { iso(1) | id-alg-hss-lms-hashsig OBJECT IDENTIFIER ::= { iso(1) | |||
| member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | |||
| smime(16) alg(3) 17 } | smime(16) alg(3) 17 } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | ||||
| <t> | ||||
| When this object identifier is used for an HSS/LMS signature, the | ||||
| AlgorithmIdentifier parameters field MUST be absent (that is, the | ||||
| parameters are not present; the parameters are not set to NULL).</t> | ||||
| <t> | <t> | |||
| The signature value is a large OCTET STRING as described in Section 2 | When this object identifier is used for an HSS/LMS signature, the | |||
| AlgorithmIdentifier parameters field <bcp14>MUST</bcp14> be absent (that is, | ||||
| the | ||||
| parameters are not present, and the parameters are not set to NULL).</t> | ||||
| <t> | ||||
| The signature value is a large OCTET STRING, as described in <xref target="se | ||||
| ct-2"/> | ||||
| of this document. The signature format is designed for easy parsing. | of this document. The signature format is designed for easy parsing. | |||
| The HSS, LMS, and LMOTS component of the signature value each format | The HSS, LMS, and LM-OTS components of the signature value each | |||
| include a counter and a type code that indirectly provide all of the | include a counter and a typecode that indirectly provide all of the | |||
| information that is needed to parse the value during signature | information | |||
| validation.</t> | that is needed to parse the value during signature validation. | |||
| </t> | ||||
| <t> | <t> | |||
| The signature value identifies the hash function used in the HSS/LMS | The signature value identifies the hash function used in the HSS/LMS | |||
| tree. In <xref target="HASHSIG"/> uses only the SHA-256 hash function <xref | tree. <xref target="RFC8554" format="default"/> uses only the SHA-256 hash f | |||
| target="SHS"/>, but it | unction <xref target="SHS" format="default"/>, but it | |||
| establishes an IANA registry <xref target="IANA-LMS"/> to permit the registra | establishes an IANA registry <xref target="IANA-LMS" format="default"/> to pe | |||
| tion of | rmit the registration of | |||
| additional hash functions in the future.</t> | additional hash functions in the future.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4" numbered="true" toc="default"> | |||
| <name>HSS/LMS Public Key Identifier</name> | ||||
| <section title="HSS/LMS Public Key Identifier" anchor="sect-4"><t> | <t> | |||
| The AlgorithmIdentifier for an HSS/LMS public key uses the id-alg- | The AlgorithmIdentifier for an HSS/LMS public key uses the id-alg-hss-lms-has | |||
| hss-lms-hashsig object identifier, and the parameters field MUST be | hsig object identifier, and the parameters field <bcp14>MUST</bcp14> be | |||
| absent.</t> | absent.</t> | |||
| <t> | ||||
| <t> | ||||
| When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | |||
| field of an X.509 certificate <xref target="RFC5280"/>, the certificate key u | field of an X.509 certificate <xref target="RFC5280" format="default"/>, the | |||
| sage | certificate key usage | |||
| extension MAY contain digitalSignature, nonRepudiation, keyCertSign, | extension <bcp14>MAY</bcp14> contain digitalSignature, nonRepudiation, keyCer | |||
| and cRLSign; however, it MUST NOT contain other values.</t> | tSign, | |||
| and cRLSign; however, it <bcp14>MUST NOT</bcp14> contain other values.</t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="asn.1"><![CDATA[ | |||
| pk-HSS-LMS-HashSig PUBLIC-KEY ::= { | pk-HSS-LMS-HashSig PUBLIC-KEY ::= { | |||
| IDENTIFIER id-alg-hss-lms-hashsig | IDENTIFIER id-alg-hss-lms-hashsig | |||
| KEY HSS-LMS-HashSig-PublicKey | KEY HSS-LMS-HashSig-PublicKey | |||
| PARAMS ARE absent | PARAMS ARE absent | |||
| CERT-KEY-USAGE | CERT-KEY-USAGE | |||
| { digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | { digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | |||
| HSS-LMS-HashSig-PublicKey ::= OCTET STRING | HSS-LMS-HashSig-PublicKey ::= OCTET STRING | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t> | |||
| <t> | ||||
| Note that the id-alg-hss-lms-hashsig algorithm identifier is also | Note that the id-alg-hss-lms-hashsig algorithm identifier is also | |||
| referred to as id-alg-mts-hashsig. This synonym is based on the | referred to as id-alg-mts-hashsig. This synonym is based on the | |||
| terminology used in an early draft of the document that became | terminology used in an early draft version of the document that became | |||
| <xref target="HASHSIG"/>.</t> | <xref target="RFC8554" format="default"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| The public key value is an OCTET STRING. Like the signature format, | The public key value is an OCTET STRING. Like the signature format, | |||
| it is designed for easy parsing. The value is the number of levels | it is designed for easy parsing. The value is the number of levels | |||
| in the public key, L, followed by the LMS public key.</t> | in the public key, L, followed by the LMS public key.</t> | |||
| <t> | ||||
| <t> | ||||
| The HSS/LMS public key value can be described as:</t> | The HSS/LMS public key value can be described as:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| u32str(L) || lms_public_key | u32str(L) || lms_public_key | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | <t> | |||
| Note that the public key for the topmost LMS tree is the public key | ||||
| <t> | ||||
| Note that the public key for the top-most LMS tree is the public key | ||||
| of the HSS system. When L=1, the HSS system is a single tree.</t> | of the HSS system. When L=1, the HSS system is a single tree.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-5" numbered="true" toc="default"> | |||
| <name>Signed-Data Conventions</name> | ||||
| <section title="Signed-data Conventions" anchor="sect-5"><t> | <t> | |||
| As specified in <xref target="CMS"/>, the digital signature is produced from | As specified in <xref target="RFC5652" format="default"/>, the digital signat | |||
| the | ure is produced from the | |||
| message digest and the signer's private key. The signature is | message digest and the signer's private key. The signature is | |||
| computed over different values depending on whether signed attributes | computed over different values depending on whether signed attributes | |||
| are absent or present.</t> | are absent or present.</t> | |||
| <t> | ||||
| <t> | ||||
| When signed attributes are absent, the HSS/LMS signature is computed | When signed attributes are absent, the HSS/LMS signature is computed | |||
| over the content. When signed attributes are present, a hash is | over the content. When signed attributes are present, a hash is | |||
| computed over the content using the same hash function that is used | computed over the content using the same hash function that is used | |||
| in the HSS/LMS tree, and then a message-digest attribute is | in the HSS/LMS tree, then a message-digest attribute is constructed with | |||
| constructed with the hash of the content, and then the HSS/LMS | the hash of the content, and then the HSS/LMS | |||
| signature is computed over the DER-encoded set of signed attributes | signature is computed over the DER-encoded set of signed attributes | |||
| (which MUST include a content-type attribute and a message-digest | (which <bcp14>MUST</bcp14> include a content-type attribute and a message-dig est | |||
| attribute). In summary:</t> | attribute). In summary:</t> | |||
| <sourcecode name="pseudocode" type=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| IF (signed attributes are absent) | IF (signed attributes are absent) | |||
| THEN HSS_LMS_Sign(content) | THEN HSS_LMS_Sign(content) | |||
| ELSE message-digest attribute = Hash(content); | ELSE message-digest attribute = Hash(content); | |||
| HSS_LMS_Sign(DER(SignedAttributes)) | HSS_LMS_Sign(DER(SignedAttributes)) | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t> | |||
| <t> | When using <xref target="RFC8554" format="default"/>, the fields in the Signe | |||
| When using <xref target="HASHSIG"/>, the fields in the SignerInfo are used as | rInfo are used as | |||
| follows:</t> | follows:</t> | |||
| <ul> | ||||
| <t><list hangIndent="3" style="hanging"><t> | <li> | |||
| digestAlgorithm MUST contain the one-way hash function used in the | digestAlgorithm <bcp14>MUST</bcp14> contain the one-way hash function used | |||
| HSS/LMS tree. In <xref target="HASHSIG"/>, SHA-256 is the only supported | in the | |||
| hash | HSS/LMS tree. In <xref target="RFC8554" format="default"/>, SHA-256 is th | |||
| e only supported hash | ||||
| function, but other hash functions might be registered in the | function, but other hash functions might be registered in the | |||
| future. For convenience, the AlgorithmIdentifier for SHA-256 | future. For convenience, the AlgorithmIdentifier for SHA-256 | |||
| from <xref target="PKIXASN1"/> is repeated here:</t> | from <xref target="RFC5912" format="default"/> is repeated here:</li></ul> | |||
| </list> | ||||
| </t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="asn.1"><![CDATA[ | |||
| mda-sha256 DIGEST-ALGORITHM ::= { | mda-sha256 DIGEST-ALGORITHM ::= { | |||
| IDENTIFIER id-sha256 | IDENTIFIER id-sha256 | |||
| PARAMS TYPE NULL ARE preferredAbsent } | PARAMS TYPE NULL ARE preferredAbsent } | |||
| id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-sha256 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) | |||
| nistAlgorithms(4) hashalgs(2) 1 } | nistAlgorithms(4) hashalgs(2) 1 } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <ul> | |||
| <t><list hangIndent="3" style="hanging"><t> | <li> | |||
| signatureAlgorithm MUST contain id-alg-hss-lms-hashsig, and the | signatureAlgorithm <bcp14>MUST</bcp14> contain id-alg-hss-lms-hashsig, and | |||
| algorithm parameters field MUST be absent.</t> | the | |||
| algorithm parameters field <bcp14>MUST</bcp14> be absent.</li> | ||||
| </list> | <li> | |||
| </t> | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| signature contains the single HSS signature value resulting from | signature contains the single HSS signature value resulting from | |||
| the signing operation as specified in <xref target="HASHSIG"/>.</t> | the signing operation as specified in <xref target="RFC8554" format="defau | |||
| lt"/>.</li> | ||||
| </list> | </ul> | |||
| </t> | </section> | |||
| <section anchor="sect-6" numbered="true" toc="default"> | ||||
| </section> | <name>Security Considerations</name> | |||
| <t> | ||||
| <section title="Security Considerations" anchor="sect-6"><t> | Implementations <bcp14>MUST</bcp14> protect the private keys. Compromise of | |||
| Implementations MUST protect the private keys. Compromise of the | the | |||
| private keys may result in the ability to forge signatures. Along | private keys may result in the ability to forge signatures. Along | |||
| with the private key, the implementation MUST keep track of which | with the private key, the implementation <bcp14>MUST</bcp14> keep track of wh ich | |||
| leaf nodes in the tree have been used. Loss of integrity of this | leaf nodes in the tree have been used. Loss of integrity of this | |||
| tracking data can cause a one-time key to be used more than once. As | tracking data can cause a one-time key to be used more than once. As | |||
| a result, when a private key and the tracking data are stored on non- | a result, when a private key and the tracking data are stored on non-volatile | |||
| volatile media or stored in a virtual machine environment, failed | media or in a virtual machine environment, failed | |||
| writes, virtual machine snapshotting or cloning, and other | writes, virtual machine snapshotting or cloning, and other | |||
| operational concerns must be considered to ensure confidentiality and | operational concerns must be considered to ensure confidentiality and | |||
| integrity.</t> | integrity.</t> | |||
| <t> | ||||
| <t> | When generating an LMS key pair, an implementation <bcp14>MUST</bcp14> genera | |||
| When generating an LMS key pair, an implementation MUST generate each | te each | |||
| key pair independently of all other key pairs in the HSS tree.</t> | key pair independently of all other key pairs in the HSS tree.</t> | |||
| <t> | ||||
| <t> | An implementation <bcp14>MUST</bcp14> ensure that an LM-OTS private key is us | |||
| An implementation MUST ensure that a LM-OTS private key is used to | ed to | |||
| generate a signature only one time, and ensure that it cannot be used | generate a signature only one time and ensure that it cannot be used | |||
| for any other purpose.</t> | for any other purpose.</t> | |||
| <t> | ||||
| <t> | ||||
| The generation of private keys relies on random numbers. The use of | The generation of private keys relies on random numbers. The use of | |||
| inadequate pseudo-random number generators (PRNGs) to generate these | inadequate pseudorandom number generators (PRNGs) to generate these | |||
| values can result in little or no security. An attacker may find it | values can result in little or no security. An attacker may find it | |||
| much easier to reproduce the PRNG environment that produced the keys, | much easier to reproduce the PRNG environment that produced the keys, | |||
| searching the resulting small set of possibilities, rather than brute | searching the resulting small set of possibilities, rather than brute-force s | |||
| force searching the whole key space. The generation of quality | earching the whole key space. The generation of quality | |||
| random numbers is difficult, and <xref target="RFC4086"/> offers important gu | random numbers is difficult, and <xref target="RFC4086" format="default"/> of | |||
| idance | fers important guidance | |||
| in this area.</t> | in this area.</t> | |||
| <t> | ||||
| <t> | ||||
| The generation of hash-based signatures also depends on random | The generation of hash-based signatures also depends on random | |||
| numbers. While the consequences of an inadequate pseudo-random | numbers. While the consequences of an inadequate pseudorandom | |||
| number generator (PRNG) to generate these values is much less severe | number generator (PRNG) to generate these values is much less severe | |||
| than in the generation of private keys, the guidance in <xref target="RFC4086 "/> | than in the generation of private keys, the guidance in <xref target="RFC4086 " format="default"/> | |||
| remains important.</t> | remains important.</t> | |||
| <t> | ||||
| <t> | When computing signatures, the same hash function <bcp14>SHOULD</bcp14> be us | |||
| When computing signatures, the same hash function SHOULD be used to | ed to | |||
| compute the message digest of the content and the signed attributes, | compute the message digest of the content and the signed attributes, if they | |||
| if they are present.</t> | are present.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-7" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section title="IANA Considerations" anchor="sect-7"><t> | <t> | |||
| SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0) | In the "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" | |||
| registry, change the reference for value 64 to point to this | registry, IANA has updated the reference for value 64 to point to this | |||
| document.</t> | document.</t> | |||
| <t> | ||||
| <t> | In the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)" | |||
| In the SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3) | registry, IANA has updated the description for value 17 to | |||
| registry, change the description for value 17 to | "id-alg-hss-lms-hashsig" and updated the reference to point to this | |||
| "id-alg-hss-lms-hashsig" and change the reference to point to this | ||||
| document.</t> | document.</t> | |||
| <t> | ||||
| IANA has also added the following note to the "SMI Security for S/&wj;MIME | ||||
| Algorithms (1.2.840.113549.1.9.16.3)" registry:</t> | ||||
| <t> | <ul empty="true"> | |||
| Also, add the following note to the registry:</t> | <li>Value 17, "id-alg-hss-lms-hashsig", is also referred to as | |||
| "id-alg-mts-hashsig".</li> | ||||
| <t><list style="hanging" hangIndent="3"><t> | </ul> | |||
| Value 17, "id-alg-hss-lms-hashsig", is also referred to as | </section> | |||
| "id-alg-mts-hashsig". | </middle> | |||
| </t> | <back> | |||
| <displayreference target="RFC8554" to="HASHSIG"/> | ||||
| </list> | <displayreference target="RFC5652" to="CMS"/> | |||
| </t> | <displayreference target="RFC5911" to="CMSASN1"/> | |||
| <displayreference target="RFC6268" to="CMSASN1U"/> | ||||
| </section> | <displayreference target="RFC4108" to="FWPROT"/> | |||
| <displayreference target="RFC5912" to="PKIXASN1"/> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| <reference anchor="ASN1-B"><front> | ||||
| <title>Information technology -- Abstract Syntax Notation One (ASN.1): Sp | ||||
| ecification of basic notation</title> | ||||
| <author> | ||||
| <organization>ITU-T</organization> | ||||
| </author> | ||||
| <date year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="ITU-T" value="Recommendation X.680"/> | ||||
| </reference> | ||||
| <reference anchor="ASN1-E"><front> | ||||
| <title>Information technology -- ASN.1 encoding rules: Specification of B | ||||
| asic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Enco | ||||
| ding Rules (DER)</title> | ||||
| <author> | ||||
| <organization>ITU-T</organization> | ||||
| </author> | ||||
| <date year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="ITU-T" value="Recommendation X.690"/> | ||||
| </reference> | ||||
| <reference anchor="CMS" target="http://www.rfc-editor.org/info/rfc5652">< | ||||
| front> | ||||
| <title>Cryptographic Message Syntax (CMS)</title> | ||||
| <author fullname="R. Housley" initials="R." surname="Housley"> | ||||
| </author> | ||||
| <date month="September" year="2009"/> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="70"/> | ||||
| <seriesInfo name="RFC" value="5652"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5652"/> | ||||
| </reference> | ||||
| <reference anchor="HASHSIG" target="https://rfc-editor.org/rfc/rfc8554.tx | ||||
| t"><front> | ||||
| <title>Leighton-Micali Hash-Based Signatures</title> | ||||
| <author fullname="D. McGrew" initials="D." surname="McGrew"> | ||||
| </author> | ||||
| <author fullname="M. Curcio" initials="M." surname="Curcio"> | ||||
| </author> | ||||
| <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"> | ||||
| </author> | ||||
| <date month="April" year="2019"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8554"/> | ||||
| </reference> | ||||
| &RFC2119; | ||||
| &RFC5280; | ||||
| &RFC8174; | ||||
| <reference anchor="SHS"><front> | ||||
| <title>FIPS Publication 180-3: Secure Hash Standard</title> | ||||
| <author> | ||||
| <organization>National Institute of Standards and Technology (NIST)</orga | ||||
| nization> | ||||
| </author> | ||||
| <date month="October" year="2008"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <reference anchor="BH2013" target="https://media.blackhat.com/us-13/us-13 | ||||
| -Stamos-The-Factoring-Dead.pdf"><front> | ||||
| <title>The Factoring Dead: Preparing for the Cryptopocalypse</title> | ||||
| <author> | ||||
| <organization>Ptacek, T., T. Ritter, J. Samuel, and A. Stamos</organizati | ||||
| on> | ||||
| </author> | ||||
| <date month="August" year="2013"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="CMSASN1" target="http://www.rfc-editor.org/info/rfc591 | ||||
| 1"><front> | ||||
| <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIM | ||||
| E</title> | ||||
| <author fullname="P. Hoffman" initials="P." surname="Hoffman"> | ||||
| </author> | ||||
| <author fullname="J. Schaad" initials="J." surname="Schaad"> | ||||
| </author> | ||||
| <date month="June" year="2010"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5911"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5911"/> | ||||
| </reference> | ||||
| <reference anchor="CMSASN1U" target="http://www.rfc-editor.org/info/rfc62 | ||||
| 68"><front> | ||||
| <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax | ||||
| (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title> | ||||
| <author fullname="J. Schaad" initials="J." surname="Schaad"> | ||||
| </author> | ||||
| <author fullname="S. Turner" initials="S." surname="Turner"> | ||||
| </author> | ||||
| <date month="July" year="2011"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6268"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6268"/> | ||||
| </reference> | ||||
| <reference anchor="FWPROT" target="http://www.rfc-editor.org/info/rfc4108 | ||||
| "><front> | ||||
| <title>Using Cryptographic Message Syntax (CMS) to Protect Firmware Packa | ||||
| ges</title> | ||||
| <author fullname="R. Housley" initials="R." surname="Housley"> | ||||
| </author> | ||||
| <date month="August" year="2005"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4108"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4108"/> | ||||
| </reference> | ||||
| <reference anchor="IANA-LMS" target="https://www.iana.org/assignments/lei | ||||
| ghton-micali-signatures/leighton-micali-signatures.xhtml"><front> | ||||
| <title>IANA Registry for Leighton-Micali Signatures (LMS) </title> | ||||
| <author> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | <references> | |||
| <reference anchor="LM"><front> | <name>References</name> | |||
| <title>Large provably fast and secure digital signature schemes from secu | <references> | |||
| re hash functions</title> | <name>Normative References</name> | |||
| <author fullname="T. Leighton" initials="T." surname="Leighton"> | ||||
| </author> | ||||
| <author fullname="S. Micali" initials="S." surname="Micali"> | <reference anchor="ASN1-B"> | |||
| </author> | <front> | |||
| <title>Information technology -- Abstract Syntax Notation One (ASN.1 | ||||
| ): Specification of basic notation</title> | ||||
| <seriesInfo name="ITU-T" value="Recommendation X.680"/> | ||||
| <author> | ||||
| <organization>ITU-T</organization> | ||||
| </author> | ||||
| <date month="August" year="2015"/> | ||||
| </front> | ||||
| </reference> | ||||
| <date month="July" year="1995"/> | <reference anchor="ASN1-E"> | |||
| </front> | <front> | |||
| <title>Information technology -- ASN.1 encoding rules: Specification | ||||
| of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished | ||||
| Encoding Rules (DER)</title> | ||||
| <seriesInfo name="ITU-T" value="Recommendation X.690"/> | ||||
| <author> | ||||
| <organization>ITU-T</organization> | ||||
| </author> | ||||
| <date month="August" year="2015"/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name="U.S." value="Patent 5,432,852"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </reference> | FC.5652.xml"/> | |||
| <reference anchor="M1979"><front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <title>Secrecy, Authentication, and Public Key Systems</title> | FC.8554.xml"/> | |||
| <author fullname="R. Merkle" initials="R." surname="Merkle"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.2119.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5280.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <date year="1979"/> | <reference anchor="SHS"> | |||
| </front> | <front> | |||
| <title>Secure Hash Standard (SHS)</title> | ||||
| <seriesInfo name="FIPS PUB" value="180-3"/> | ||||
| <author> | ||||
| <organization>National Institute of Standards and Technology (NIST | ||||
| )</organization> | ||||
| </author> | ||||
| <date month="October" year="2008"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <seriesInfo name="Stanford" value="University Information Systems Laborat | <references> | |||
| ory Technical Report 1979-1"/> | <name>Informative References</name> | |||
| </reference> | ||||
| <reference anchor="M1987"><front> | ||||
| <title>A Digital Signature Based on a Conventional Encryption Function</t | ||||
| itle> | ||||
| <author fullname="R. Merkle" initials="R." surname="Merkle"> | ||||
| </author> | ||||
| <date year="1988"/> | <reference anchor="BH2013" target="https://media.blackhat.com/us-13/us-1 | |||
| </front> | 3-Stamos-The-Factoring-Dead.pdf"> | |||
| <front> | ||||
| <title>The Factoring Dead: Preparing for the Cryptopocalypse</title> | ||||
| <author fullname="Thomas Ptacek" initials="T." surname="Ptacek"/> | ||||
| <author fullname="Tom Ritter" initials="T." surname="Ritter"/> | ||||
| <author fullname="Javed Samuel" initials="J." surname="Samuel"/> | ||||
| <author fullname="Alex Stamos" initials="A." surname="Stamos"/> | ||||
| <date month="August" year="2013"/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name="Lecture" value="Notes in Computer Science crypto87"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </reference> | FC.5911.xml"/> | |||
| <reference anchor="M1989a"><front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <title>A Certified Digital Signature</title> | FC.6268.xml"/> | |||
| <author fullname="R. Merkle" initials="R." surname="Merkle"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.4108.xml"/> | |||
| <date year="1990"/> | <reference anchor="IANA-LMS" target="https://www.iana.org/assignments/le | |||
| </front> | ighton-micali-signatures/"> | |||
| <front> | ||||
| <title>Leighton-Micali Signatures (LMS)</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name="Lecture" value="Notes in Computer Science crypto89"/> | <reference anchor="LM"> | |||
| </reference> | <front> | |||
| <reference anchor="M1989b"><front> | <title>Large provably fast and secure digital signature schemes | |||
| <title>One Way Hash Functions and DES</title> | based on secure hash functions</title> | |||
| <author fullname="R. Merkle" initials="R." surname="Merkle"> | <seriesInfo name="U.S." value="Patent 5,432,852"/> | |||
| </author> | <author fullname="T. Leighton" initials="T." surname="Leighton"/> | |||
| <author fullname="S. Micali" initials="S." surname="Micali"/> | ||||
| <date month="July" year="1995"/> | ||||
| </front> | ||||
| </reference> | ||||
| <date year="1990"/> | <reference anchor="M1979"> | |||
| </front> | <front> | |||
| <title>Secrecy, Authentication, and Public Key Systems</title> | ||||
| <seriesInfo name="Technical Report" value="No. 1979-1"/> | ||||
| <seriesInfo name="Information Systems Laboratory," value="Stanford University"/> | ||||
| <author fullname="R. Merkle" initials="R." surname="Merkle"/> | ||||
| <date year="1979"/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name="Lecture" value="Notes in Computer Science crypto89"/> | <reference anchor="M1987"> | |||
| </reference> | <front> | |||
| <reference anchor="NAS2019"><front> | <title>A Digital Signature Based on a Conventional Encryption | |||
| <title>Quantum Computing: Progress and Prospects</title> | Function</title> | |||
| <author> | <seriesInfo name="DOI" value="10.1007/3-540-48184-2_32"/> | |||
| <organization>National Academies of Sciences, Engineering, and Medicine</ | <author fullname="R. Merkle" initials="R." surname="Merkle"/> | |||
| organization> | <date year="1988"/> | |||
| </author> | </front> | |||
| <refcontent>Advances in Cryptology -- CRYPTO '87 Proceedings</refcontent> | ||||
| <refcontent>Lecture Notes in Computer Science Vol. 293</refcontent> | ||||
| </reference> | ||||
| <date year="2019"/> | <reference anchor="M1989a"> | |||
| </front> | <front> | |||
| <title>A Certified Digital Signature</title> | ||||
| <seriesInfo name="DOI" value="10.1007/0-387-34805-0_21"/> | ||||
| <author fullname="R. Merkle" initials="R." surname="Merkle"/> | ||||
| <date year="1990"/> | ||||
| </front> | ||||
| <refcontent>Advances in Cryptology -- CRYPTO '89 Proceedings</refcontent> | ||||
| <refcontent>Lecture Notes in Computer Science Vol. 435</refcontent> | ||||
| </reference> | ||||
| <seriesInfo name="The National Academies Press," value="DOI 10.17226/2519 | <reference anchor="M1989b"> | |||
| 6"/> | <front> | |||
| </reference> | <title>One Way Hash Functions and DES</title> | |||
| <reference anchor="PKIXASN1" target="http://www.rfc-editor.org/info/rfc59 | <seriesInfo name="DOI" value="10.1007/0-387-34805-0_40"/> | |||
| 12"><front> | <author fullname="R. Merkle" initials="R." surname="Merkle"/> | |||
| <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (P | <date year="1990"/> | |||
| KIX)</title> | </front> | |||
| <author fullname="P. Hoffman" initials="P." surname="Hoffman"> | <refcontent>Advances in Cryptology -- CRYPTO '89 Proceedings</refcontent> | |||
| </author> | <refcontent>Lecture Notes in Computer Science Vol. 435</refcontent> | |||
| </reference> | ||||
| <author fullname="J. Schaad" initials="J." surname="Schaad"> | <reference anchor="NAS2019"> | |||
| </author> | <front> | |||
| <title>Quantum Computing: Progress and Prospects</title> | ||||
| <seriesInfo name="DOI" value="10.17226/25196"/> | ||||
| <author> | ||||
| <organization>National Academies of Sciences, Engineering, and Med | ||||
| icine</organization> | ||||
| </author> | ||||
| <date year="2019"/> | ||||
| </front> | ||||
| <refcontent>The National Academies Press</refcontent> | ||||
| </reference> | ||||
| <date month="June" year="2010"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </front> | FC.5912.xml"/> | |||
| <seriesInfo name="RFC" value="5912"/> | <reference anchor="PQC" target="http://www.springer.com/cda/content/docu | |||
| <seriesInfo name="DOI" value="10.17487/RFC5912"/> | ment/cda_downloaddocument/9783540887010-c1.pdf"> | |||
| </reference> | <front> | |||
| <reference anchor="PQC" target="http://www.pqcrypto.org/www.springer.com/ | <title>Introduction to post-quantum cryptography</title> | |||
| cda/content/document/cda_downloaddocument/9783540887010-c1.pdf"><front> | <seriesInfo name="DOI" value="10.1007/978-3-540-88702-7_1"/> | |||
| <title>Introduction to post-quantum cryptography</title> | <author fullname="D. Bernstein" initials="D." surname="Bernstein"/> | |||
| <author fullname="D. Bernstein" initials="D." surname="Bernstein"> | <date year="2009"/> | |||
| </author> | </front> | |||
| </reference> | ||||
| <date year="2009"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </front> | FC.4086.xml"/> | |||
| </reference> | </references> | |||
| &RFC4086; | </references> | |||
| </references> | ||||
| <section title="ASN.1 Module" anchor="sect-appendix"> | ||||
| <figure><artwork><![CDATA[ | <section anchor="sect-appendix" numbered="true" toc="default"> | |||
| <name>ASN.1 Module</name> | ||||
| <sourcecode name="" type="asn.1"><![CDATA[ | ||||
| <CODE STARTS> | <CODE STARTS> | |||
| MTS-HashSig-2013 | MTS-HashSig-2013 | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | |||
| id-smime(16) id-mod(0) id-mod-mts-hashsig-2013(64) } | id-smime(16) id-mod(0) id-mod-mts-hashsig-2013(64) } | |||
| DEFINITIONS IMPLICIT TAGS ::= BEGIN | DEFINITIONS IMPLICIT TAGS ::= BEGIN | |||
| EXPORTS ALL; | EXPORTS ALL; | |||
| skipping to change at line 798 ¶ | skipping to change at line 693 ¶ | |||
| -- | -- | |||
| -- Expand the S/MIME capabilities set used by CMS [CMSASN1] | -- Expand the S/MIME capabilities set used by CMS [CMSASN1] | |||
| -- | -- | |||
| SMimeCaps SMIME-CAPS ::= | SMimeCaps SMIME-CAPS ::= | |||
| { sa-HSS-LMS-HashSig.&smimeCaps, ... } | { sa-HSS-LMS-HashSig.&smimeCaps, ... } | |||
| END | END | |||
| <CODE ENDS> | <CODE ENDS> | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </section> | |||
| </section> | ||||
| <section title="Acknowledgements" numbered="no" anchor="acknowledgements" | ||||
| ><t> | ||||
| Many thanks to Scott Fluhrer, Jonathan Hammell, Ben Kaduk, Panos | ||||
| Kampanakis, Barry Leiba, John Mattsson, Jim Schaad, Sean Turner, | ||||
| Daniel Van Geest, Roman Danyliw, Dale Worley, and Joe Clarke for | ||||
| their careful review and comments.</t> | ||||
| </section> | ||||
| </back> | <section numbered="false" anchor="acknowledgements" toc="default"> | |||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| Many thanks to <contact fullname="Joe Clarke" />, <contact fullname="Roman | ||||
| Danyliw" />, <contact fullname="Scott Fluhrer" />, <contact | ||||
| fullname="Jonathan Hammell" />, <contact fullname="Ben Kaduk" />, <contact | ||||
| fullname="Panos Kampanakis" />, <contact fullname="Barry Leiba" />, | ||||
| <contact fullname="John Mattsson" />, <contact fullname="Jim Schaad" />, | ||||
| <contact fullname="Sean Turner" />, <contact fullname="Daniel Van Geest" | ||||
| />, and <contact fullname="Dale Worley" /> for their careful review and | ||||
| comments.</t> | ||||
| </section> | ||||
| </rfc> | </back> | |||
| </rfc> | ||||
| End of changes. 112 change blocks. | ||||
| 631 lines changed or deleted | 533 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/ | ||||