<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-sphincs-plus-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="SLH-DSA Signature Algorithm in CMS">Use of the SLH-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-04"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization>Amazon Web Services</organization>
      <address>
        <email>kpanos@amazon.com</email>
      </address>
    </author>
    <author initials="B." surname="Westerbaan" fullname="Bas Westerbaan">
      <organization>Cloudflare</organization>
      <address>
        <email>bas@westerbaan.name</email>
      </address>
    </author>
    <date year="2024" month="May" day="07"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 105?>

<t>SLH-DSA is a stateless hash-based signature scheme.  This document
specifies the conventions for using the SLH-DSA signature algorithm
with the Cryptographic Message Syntax (CMS).  In addition, the
algorithm identifier and public key syntax are provided.</t>
    </abstract>
  </front>
  <middle>
    <?line 112?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>NOTICE: This document will be adjusted to match the final FIPS 205 specification
that is published by NIST.  Until that happens, just about everything in
this document is likely to change.</t>
      <t>This document specifies the conventions for using the SLH-DSA hash-based
signature algorithm <xref target="FIPS205-IPD"/> with the Cryptographic Message
Syntax (CMS) <xref target="RFC5652"/> signed-data content type.</t>
      <t>SLH-DSA offers three security levels.  The parameters for each of the
security levels were chosen to provide 128 bits of security, 192 bits of
security, and 256 bits of security.  A separate algorithm identifier has
been assigned for SLH-DSA at each of these security levels.</t>
      <t>SLH-DSA is a stateless hash-based signature algorithm.  Other hash-based
signature algorithms are stateful, including HSS/LMS <xref target="RFC8554"/> and
XMSS <xref target="RFC8391"/>.  Without the need for state kept by the signer,
SLH-DSA is much less fragile.</t>
      <section anchor="asn1">
        <name>ASN.1</name>
        <t>CMS values are generated using ASN.1 <xref target="X680"/>, using the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules
(DER) <xref target="X690"/>.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>There have been recent advances in cryptanalysis and advances in the
development of quantum computers.  Each of these advances pose a
threat to widely deployed digital signature.</t>
        <t>If large-scale quantum computers are ever built, they will be able to
break many of the public-key cryptosystems currently in use, including
RSA, DSA, ECDSA, and EdDSA.  A post-quantum cryptosystem (PQC) is secure
against quantum computers that have more than a trivial number of quantum
bits (qu-bits).  It is open to conjecture when it will be feasible to build
such quantum computers; however, it is prudent to use cryptographic
algorithms that remain secure if a large-scale quantum computer is
invented.  SLH-DSA is a PQC signature algorithm.</t>
        <t>One use of a PQC signature algoritm is the protection of software
updates, perhaps using the format described in <xref target="RFC4108"/>, to enable
deployment of software that implements other new PQC algorithms for
key management and confidentiality.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="slh-dsa-hash-based-signature-algorithm-overview">
      <name>SLH-DSA Hash-based Signature Algorithm Overview</name>
      <t>SLH-DSA is a hash-based signature scheme which consists of a few
time signature construction, namely Forest of Random Subsets (FORS)
and a hypertree. FORS signs a message with a private key. The
corresponding FORS public keys are the leaves in k binary trees.
The roots of these trees are hashed together to form a FORS root.
SLH-DSA uses a one-time signature scheme called WOTS+. The FORS
tree roots are signed by a WOTS+ one-time signature private
key. The corresponding WOTS+ public keys form the leaves in d-layers
of Merkle subtrees in the SLH-DSA hypertree. The bottom layer of
that hypertree signs the FORS roots with WOTS+. The root of the
bottom Merkle subtrees are then signed with WOTS+ and the
corresponding WOTS+ public keys form the leaves of the next level up
subtree. Subtree roots are consequently signed by their corresponding
subtree layers until we reach the top subtree. The top layer subtree
forms the hypertree root which is trusted at the verifier.</t>
      <t>A SLH-DSA signature consists of the randomization string, the FORS signature,
the WOTS+ signature in each layer, and the path to the root of each subtree
until the root of the hypertree is reached.</t>
      <t>A SLH-DSA signature is verified by verifying the FORS signature, the
WOTS+ signatures and the path to the root of each subtree. When reaching
the root of the hypertree, the signature verifies only if it hashes to
the pre-trusted root of the SLH-DSA hypertree.</t>
      <t>SLH-DSA is a stateless hash-based signature algorithm. Stateful
hash-based signature schemes require that the WOTS+ private key
(generated by using a state index) is never reused or the scheme
loses it security. Although its security decreases, FORS which is
used at the bottom of the SLH-DSA hypertree does not collapse if
the same private key used to sign two or more different messages
like in stateful hash-based signature schemes. Without the need for
state kept by the signer to ensure it is not reused, SLH-DSA is much
less fragile.</t>
      <t>SLH-DSA was designed to sign up to 2^64 messages and offers three
security levels.  The parameters of the SLH-DSA hypertree include the
security parameter, the hash function, the tree height, the number of
layers of subtrees, the Winternitz parameter of WOTS+, the number of FORS
trees and leaves in each.  The parameters for each of the security levels
were chosen to provide 128 bits of security, 192 bits of security, and
256 bits of security.</t>
    </section>
    <section anchor="slh-dsa-public-key-identifier">
      <name>SLH-DSA Public Key Identifier</name>
      <t>The AlgorithmIdentifier for a SLH-DSA public key <bcp14>MUST</bcp14> use one of the
eight id-alg-slh-dsa object identifiers listed below, based on the
security level used to generate the SLH-DSA hypertree, the small or fast
version of the algorithm, and the use of SHA-256 <xref target="FIPS180"/> or
SHAKE256 <xref target="FIPS202"/>.  For example, id-alg-slh-dsa-256s-shake
represents the 256-bit security level, the small version of the
algorithm, and the use of SHAKE256.  The parameters field of the
AlgorithmIdentifier for the SLH-DSA public key <bcp14>MUST</bcp14> be absent.</t>
      <t>When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo field of
an X.509 certificate <xref target="RFC5280"/>, the certificate key usage extension <bcp14>MAY</bcp14>
contain digitalSignature, nonRepudiation, keyCertSign, and cRLSign; the
certificate key usage extension <bcp14>MUST NOT</bcp14> contain other values.</t>
      <artwork><![CDATA[
   pk-slh-dsa-128s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-128s-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-128f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-128f-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-128s-sha2 PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-128s-sha2
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-128f-sha2 PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-128f-sha2
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-192s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-192s-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-192f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-192f-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-256s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-256s-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   pk-slh-dsa-256f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-256f-shake
       -- KEY no ASN.1 wrapping --
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

   SLH-DSA-PublicKey ::= OCTET STRING

   SLH-DSA-PrivateKey ::= OCTET STRING
]]></artwork>
      <t>NOTE: The values for these object identifiers will be assigned by NIST.
Once assigned, they will be added to a future revision of this document.</t>
      <t>The SLH-DSA public key value is an OCTET STRING.</t>
      <t>The SLA-DSA private key value is an OCTET STRING.</t>
    </section>
    <section anchor="signed-data-conventions">
      <name>Signed-data Conventions</name>
      <t>As specified in CMS <xref target="RFC5652"/>, the digital signature is produced from
the message digest and the signer's private key. The signature is computed
over different values depending on whether signed attributes are absent or
present.</t>
      <t>When signed attributes are absent, the SLH-DSA signature is computed over
the content.  When signed attributes are present, a hash is computed over
the content using the same hash function that is used in the SLH-DSA tree,
and then a message-digest attribute is constructed to contain the resulting
hash value, and then the result of DER encoding the set of signed attributes,
which <bcp14>MUST</bcp14> include a content-type attribute and a message-digest attribute,
and then the SLH-DSA signature is computed over the DER-encoded output. The
SLH-DSA signature generation operation is called slh_sign; see Section 9.2 of
<xref target="FIPS205-IPD"/>. In summary:</t>
      <artwork><![CDATA[
   IF (signed attributes are absent)
   THEN slh_sign(content)
   ELSE message-digest attribute = Hash(content);
        slh_sign(DER(SignedAttributes))
]]></artwork>
      <t>When using SLH-DSA, the fields in the SignerInfo are used as follows:</t>
      <dl newline="true">
        <dt>digestAlgorithm:</dt>
        <dd>
          <t>The digestAlgorithm <bcp14>MUST</bcp14> contain the one-way hash
function used to in the SLH-DSA tree.  The algorithm identifiers for
<xref target="FIPS180"/> and <xref target="FIPS202"/> are repeated below for convenience.</t>
        </dd>
      </dl>
      <artwork><![CDATA[
      mda-sha256 DIGEST-ALGORITHM ::= {
        IDENTIFIER id-sha256
        PARAMS TYPE NULL ARE preferredAbsent }

      mda-shake256 DIGEST-ALGORITHM ::= {
        IDENTIFIER id-shake256
        PARAMS TYPE NULL ARE preferredAbsent }

      hashalgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2)
        country(16) us(840) organization(1) gov(101) csor(3)
        nistAlgorithms(4) 2 }
    
      id-sha256 OBJECT IDENTIFIER ::= { hashalgs 1 }

      id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 }
]]></artwork>
      <dl newline="true">
        <dt>signatureAlgorithm:</dt>
        <dd>
          <t>The signatureAlgorithm <bcp14>MUST</bcp14> contain one of the the SLH-DSA algorithm
identifiers, and the algorithm parameters field <bcp14>MUST</bcp14> be absent.  The
algorithm identifier <bcp14>MUST</bcp14> be one of the following: 
id-alg-slh-dsa-128s-shake, id-alg-slh-dsa-128f-shake,
id-alg-slh-dsa-128s-sha2, id-alg-slh-dsa-128f-sha2,
id-alg-slh-dsa-192s-shake, id-alg-slh-dsa-192f-shake,
id-alg-slh-dsa-256s-shake, or id-alg-slh-dsa-256f-shake.</t>
        </dd>
        <dt>signature:</dt>
        <dd>
          <t>The signature contains the signature value resulting from the
SLH-DSA signing operation with the parameters associated with the
selected signatureAlgorithm.  The SLH-DSA signing operation and the
signature verification operation are specified in <xref target="FIPS205-IPD"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>MUST</bcp14> protect the private keys.  Compromise of the
private keys may result in the ability to forge signatures.</t>
      <t>When generating an SLH-DSA key pair, an implementation <bcp14>MUST</bcp14> generate
each key pair independently of all other key pairs in the SLH-DSA
hypertree.</t>
      <t>A SLH-DSA tree <bcp14>MUST NOT</bcp14> be used for more than 2^64 signing operations.</t>
      <t>The generation of private keys relies on random numbers.  The use
of inadequate pseudo-random number generators (PRNGs) to generate
these values can result in little or no security.  An attacker may
find it much easier to reproduce the PRNG environment that produced
the keys, searching the resulting small set of possibilities, rather
than brute force searching the whole key space.  The generation of
quality random numbers is difficult, and <xref target="RFC4086"/> offers
important guidance in this area.</t>
      <t>When computing signatures, the same hash function <bcp14>SHOULD</bcp14> be used to
compute the message digest of the content and the signed attributes, if
they are present.</t>
      <t>When computing signatures, implementations <bcp14>SHOULD</bcp14> include protections against
fault injection attacks <xref target="CMP2018"/>.  Protections against these attacks
include signature verification prior to releasing the signature value to
confirm that no error injected and generating the signature a few times to
confirm that the same signature value is produced each time.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>If slh_sign is implemented in a hardware device such as hardware
security module (HSM) or portable cryptographic token, implementations
might want to  avoid is sending the full content to the device.  By
including signed attributes, which necessarily include the message-digest
attribute and the content-type attribute as described in <xref section="5.3" sectionFormat="of" target="RFC5652"/>,
the much smaller set of signed attributes are sent to the device for signing.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>For the ASN.1 Module in the Appendix of this document, IANA
is requested to assign an object identifier (OID) for the module
identifier (TBD1) with a Description of "id-mod-slh-dsa-2023".
The OID for the module should be allocated in the
"SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0).</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to
Mike Ounsworth and
Tomas Gustavsson
for their careful review and constructive comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS205-IPD" target="https://doi.org/10.6028/NIST.FIPS.205.ipd">
          <front>
            <title>Stateless Hash-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2023" month="August" day="24"/>
          </front>
          <seriesInfo name="FIPS PUB" value="205 (Initial Public Draft)"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="X680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="X690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
          <seriesInfo name="ISO/IEC" value="8825-1-2021"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC4108">
          <front>
            <title>Using Cryptographic Message Syntax (CMS) to Protect Firmware Packages</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2005"/>
            <abstract>
              <t>This document describes the use of the Cryptographic Message Syntax (CMS) to protect firmware packages, which provide object code for one or more hardware module components. CMS is specified in RFC 3852. A digital signature is used to protect the firmware package from undetected modification and to provide data origin authentication. Encryption is optionally used to protect the firmware package from disclosure, and compression is optionally used to reduce the size of the protected firmware package. A firmware package loading receipt can optionally be generated to acknowledge the successful loading of a firmware package. Similarly, a firmware package load error report can optionally be generated to convey the failure to load a firmware package. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4108"/>
          <seriesInfo name="DOI" value="10.17487/RFC4108"/>
        </reference>
        <reference anchor="RFC5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="RFC8554">
          <front>
            <title>Leighton-Micali Hash-Based Signatures</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Curcio" initials="M." surname="Curcio"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This note describes a digital-signature system based on cryptographic hash functions, following the seminal work in this area of Lamport, Diffie, Winternitz, and Merkle, as adapted by Leighton and Micali in 1995. It specifies a one-time signature scheme and a general signature scheme. These systems provide asymmetric authentication without using large integer mathematics and can achieve a high security level. They are suitable for compact implementations, are relatively simple to implement, and are naturally resistant to side-channel attacks. Unlike many other signature systems, hash-based signatures would still be secure even if it proves feasible for an attacker to build a quantum computer.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF. This has been reviewed by many researchers, both in the research group and outside of it. The Acknowledgements section lists many of them.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8554"/>
          <seriesInfo name="DOI" value="10.17487/RFC8554"/>
        </reference>
        <reference anchor="RFC8391">
          <front>
            <title>XMSS: eXtended Merkle Signature Scheme</title>
            <author fullname="A. Huelsing" initials="A." surname="Huelsing"/>
            <author fullname="D. Butin" initials="D." surname="Butin"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="J. Rijneveld" initials="J." surname="Rijneveld"/>
            <author fullname="A. Mohaisen" initials="A." surname="Mohaisen"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This note describes the eXtended Merkle Signature Scheme (XMSS), a hash-based digital signature system that is based on existing descriptions in scientific literature. This note specifies Winternitz One-Time Signature Plus (WOTS+), a one-time signature scheme; XMSS, a single-tree scheme; and XMSS^MT, a multi-tree variant of XMSS. Both XMSS and XMSS^MT use WOTS+ as a main building block. XMSS provides cryptographic digital signatures without relying on the conjectured hardness of mathematical problems. Instead, it is proven that it only relies on the properties of cryptographic hash functions. XMSS provides strong security guarantees and is even secure when the collision resistance of the underlying hash function is broken. It is suitable for compact implementations, is relatively simple to implement, and naturally resists side-channel attacks. Unlike most other signature systems, hash-based signatures can so far withstand known attacks using quantum computers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8391"/>
          <seriesInfo name="DOI" value="10.17487/RFC8391"/>
        </reference>
        <reference anchor="FIPS180">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </reference>
        <reference anchor="FIPS202">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="202"/>
        </reference>
        <reference anchor="CMP2018" target="https://link.springer.com/chapter/10.1007/978-3-319-79063-3_8">
          <front>
            <title>Grafting Trees: A Fault Attack Against the SPHINCS Framework</title>
            <author initials="L." surname="Castelnovi" fullname="Laurent Castelnovi">
              <organization/>
            </author>
            <author initials="" surname="A, Martinelli" fullname="Ange Martinelli">
              <organization/>
            </author>
            <author initials="T." surname="Prest" fullname="Thomas Prest">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Post-Quantum Cryptography" value="pp. 165-184"/>
          <seriesInfo name="PQCrypto" value="2018"/>
          <seriesInfo name="Lecture Notes in Computer Science" value="vol 10786"/>
        </reference>
      </references>
    </references>
    <?line 441?>

<section anchor="appendix-asn1-module">
      <name>Appendix: ASN.1 Module</name>
      <t>This ASN.1 Module builds upon the conventions established in <xref target="RFC5911"/>.</t>
      <sourcecode type="asn.1" markers="true"><![CDATA[
SLH-DSA-Module-2024
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
    id-smime(16) id-mod(0) id-mod-slh-dsa-2024(TBD1) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  PUBLIC-KEY, SIGNATURE-ALGORITHM, SMIME-CAPS
    FROM AlgorithmInformation-2009  -- in [RFC5911]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-algorithmInformation-02(58) } ;

--
-- Object Identifiers
--

nistAlgorithms OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) 
  country(16) us(840) organization(1) gov(101) csor(3) 4 }

sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 }

id-alg-slh-dsa-128s-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-128f-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-128s-sha2 OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-128f-sha2 OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-192s-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-192f-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-256s-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

id-alg-slh-dsa-256f-shake OBJECT IDENTIFIER ::= { sigAlgs TBD }

--
-- Signature Algorithm, Public Key, and Private Key
--

sa-slh-dsa-128s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128s-shake } }

sa-slh-dsa-128f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128f-shake } }

sa-slh-dsa-128s-sha2 SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128s-sha2
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128s-sha2 }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128s-sha2 } }

sa-slh-dsa-128f-sha2 SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128f-sha2
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128f-sha2 }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128f-sha2 } }

sa-slh-dsa-192s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-192s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-192s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-192s-shake } }

sa-slh-dsa-192f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-192f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-192f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-192f-shake } }
    
sa-slh-dsa-256s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-256s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-256s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-256s-shake } }

sa-slh-dsa-256f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-256f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-256f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-256f-shake } }

pk-slh-dsa-128s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128s-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128f-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128s-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128s-sha2
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128f-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128f-sha2
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-192s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-192s-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-192f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-192f-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-256s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-256s-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-256f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-256f-shake
    -- KEY no ASN.1 wrapping --
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

SLH-DSA-PublicKey ::= OCTET STRING

SLH-DSA-PrivateKey ::= OCTET STRING

--
-- Expand the signature algorithm set used by CMS [RFC5911]
--

SignatureAlgorithmSet SIGNATURE-ALGORITHM ::=
    { sa-slh-dsa-128s-shake |
      sa-slh-dsa-128f-shake |
      sa-slh-dsa-128s-sha2 |
      sa-slh-dsa-128f-sha2 |
      sa-slh-dsa-192s-shake |
      sa-slh-dsa-192f-shake |
      sa-slh-dsa-256s-shake |
      sa-slh-dsa-256f-shake,
      ... }

--
-- Expand the S/MIME capabilities set used by CMS [RFC5911]
--

SMimeCaps SMIME-CAPS ::=
    { sa-slh-dsa-128s-shake.&smimeCaps |
      sa-slh-dsa-128f-shake.&smimeCaps |
      sa-slh-dsa-128s-sha2.&smimeCaps |
      sa-slh-dsa-128f-sha2.&smimeCaps |
      sa-slh-dsa-192s-shake.&smimeCaps |
      sa-slh-dsa-192f-shake.&smimeCaps |
      sa-slh-dsa-256s-shake.&smimeCaps |
      sa-slh-dsa-256f-shake.&smimeCaps,
      ... }
     
END
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
2fkuU6m4BcAVMkMyNqCBFrEtBRNycJpNL7FpwbxFi1rQDubLRVNwP0SA0c1R
RXPmazoVZVLfuOJZrPsBKl/WAdUJ+90h2zKNX7Mm+AVBBqg0bHUspHT0iih+
/NrjJzh4EcZLC4kXkjONvBWEWnlYlSjhKb/R6bza3zvc5fGNq3A0/jxsHOqo
CkOfBTggise0lhtt+6ms7z1jIGCyx4OT4cUQW2nHfHh+dTbsDyd80ns3plDp
7eDd8IKxwYery9FkzHtnZ9+C+zqn32DLInnd5OPhu4ve5P1oUISt8PB8eD5w
+r2rMRF4Mro8LxXsiy8GOvhnFSiRDYL7h5HbP5lORBvB5PbtOZUY89UuHCWv
gSybPzQAo00waB1lYx8Fi1+/8hXEmvsoOP9j401JTEX4iMISm4hsdxv7ByA1
/i2aD/zHL/XRLGxd4QtWDW0fEVlj6PuUoJrvoS7BYfTuiuRrZL3COVuDwq2r
2F3AhDYvMHvuAqYA/TwCnjy/KG0+eYHnSaBUMnvyAo+kQFvzht74ZqkhS8Ni
U4LBB2TrsN8G49ngDUpJrAf3mmwuWxVuZwysbG5z0Zmkwv/AwHzXY/72l+0b
w/n+XGdr9ny2Zs9ia/Z0tmbb2TIH7bnK6j5HV90nq6q7VVPPYmn2HJZmT2Zp
toWlwh09madqv8VjmSoIeDRXpanrbD37TFU7Jh7P1pPPVGmqzViXWCu576ey
Vut7eCRrJQIey1p5ak1jpUvlGWw9Q2MlAp7AVsULPqIz8sFX1X1NGJu53dh+
8czei/sbLx7RBPngO+3L5f+ufseHXn5fLvd3tTY+9J78Urm/p4vxwVfql8v/
U89+9e79Qvm/rzfxwRf0l8v/E/Vfu8m/JP4f0nH4kHZDEzMPPsblKkz9b/Fg
upnqOtMVdd4VuS2MnXMe83h7DOO3wCuTDdscb/+3TXhtDFs3vzX33h1TN78s
vObmt3fsWjpxm9/mzQD6ZavVKtITJVGPXyL2wz94IGyN8D5Rn/sL2cc/dFGC
jfdItfXvlE6lWXcK+P6BWtYPXPDecbkG7h/4MAoLvdw/cH3FqrboIxtcHFNj
zacjrqIscSU26DkLkdzIRH2n//jtZ/Z/6Yn+5m5XAAA=

-->

</rfc>
