<?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-05" 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-05"/>
    <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="28"/>
    <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>The final version of <xref target="FIPS205-IPD"/> is expected to define two signature modes:
pure mode and predigest mode. This document only specifies the use of pure mode
with the CMS 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
twelve 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-shake-256s
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>
      <artwork><![CDATA[
   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-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs TBD }

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

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

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

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

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

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

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

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

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

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

   id-alg-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs TBD }
]]></artwork>
      <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-sha2-128s PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-sha2-128s
       -- KEY no ASN.1 wrapping --
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SLH-DSA-PrivateKey }

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

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

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

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

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

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

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

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

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

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

   pk-slh-dsa-shake-256f PUBLIC-KEY ::= {
       IDENTIFIER id-alg-slh-dsa-shake-256f
       -- KEY no ASN.1 wrapping --
       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>No additional encoding of the SLH-DSA public key value is applied in the
SubjectPublicKeyInfo field of an X.509 certificate.  However, whenever the
SLH-DSA public key value appears outside of a certificate, it <bcp14>MAY</bcp14> be
encoded as 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 (pure mode) 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. The
signed attributes <bcp14>MUST</bcp14> include a content-type attribute and a message-digest
attribute. The message-digest attribute contains the hash value of the
content. The SLH-DSA signature is computed over the DER encoding of the set
of signed attributes. 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>In some implementations, performance may be significantly improved by
signing and verifying DER(SignedAttributes) when the content is large. That
is, passing an entire large message content to the signing function or the
signature validation function can have an impact on performance. When the
signed attributes are present, <xref section="5.3" sectionFormat="of" target="RFC5652"/> requires the
inclusion of the content-type attribute and the message-digest attribute. Other
attributes can also be included.</t>
      <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> identify a one-way hash function.  To ensure
collision resistance, the identified hash function <bcp14>SHOULD</bcp14> produce a
hash value that is at least twice the size of the hash function used in
the  SLH-DSA tree.  The following hash functions defined in <xref target="FIPS180"/>
and <xref target="FIPS202"/> are <bcp14>RECOMMENDED</bcp14> for use with the variants of SLH-DSA:</t>
        </dd>
      </dl>
      <artwork><![CDATA[
      id-alg-slh-dsa-sha2-128s:  SHA-256
      id-alg-slh-dsa-sha2-128f:  SHA-256
      id-alg-slh-dsa-sha2-192s:  SHA-512
      id-alg-slh-dsa-sha2-192f:  SHA-512
      id-alg-slh-dsa-sha2-256s:  SHA-512
      id-alg-slh-dsa-sha2-256f:  SHA-512
      id-alg-slh-dsa-shake-128s: SHAKE128
      id-alg-slh-dsa-shake-128f: SHAKE128
      id-alg-slh-dsa-shake-192s: SHAKE256
      id-alg-slh-dsa-shake-192f: SHAKE256
      id-alg-slh-dsa-shake-256s: SHAKE256
      id-alg-slh-dsa-shake-256f: SHAKE256
]]></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:</t>
        </dd>
      </dl>
      <artwork><![CDATA[
      id-alg-slh-dsa-sha2-128s,  id-alg-slh-dsa-sha2-128f,
      id-alg-slh-dsa-sha2-192s,  id-alg-slh-dsa-sha2-192f,
      id-alg-slh-dsa-sha2-256s,  id-alg-slh-dsa-sha2-256f,
      id-alg-slh-dsa-shake-128s, id-alg-slh-dsa-shake-128f,
      id-alg-slh-dsa-shake-192s, id-alg-slh-dsa-shake-192f,
      id-alg-slh-dsa-shake-256s, id-alg-slh-dsa-shake-256f.
]]></artwork>
      <dl newline="true">
        <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 511?>

<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-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs TBD }

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pk-slh-dsa-shake-256f PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-shake-256f
    -- KEY no ASN.1 wrapping --
    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-sha2-128s |
      sa-slh-dsa-sha2-128f |
      sa-slh-dsa-sha2-192s |
      sa-slh-dsa-sha2-192f |
      sa-slh-dsa-sha2-256s |
      sa-slh-dsa-sha2-256f |
      sa-slh-dsa-shake-128s |
      sa-slh-dsa-shake-128f |
      sa-slh-dsa-shake-192s |
      sa-slh-dsa-shake-192f |
      sa-slh-dsa-shake-256s |
      sa-slh-dsa-shake-256f,
      ... }

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

SMimeCaps SMIME-CAPS ::=
    { sa-slh-dsa-sha2-128s.&smimeCaps |
      sa-slh-dsa-sha2-128f.&smimeCaps |
      sa-slh-dsa-sha2-192s.&smimeCaps |
      sa-slh-dsa-sha2-192f.&smimeCaps |
      sa-slh-dsa-sha2-256s.&smimeCaps |
      sa-slh-dsa-sha2-256f.&smimeCaps |
      sa-slh-dsa-shake-128s.&smimeCaps |
      sa-slh-dsa-shake-128f.&smimeCaps |
      sa-slh-dsa-shake-192s.&smimeCaps |
      sa-slh-dsa-shake-192f.&smimeCaps |
      sa-slh-dsa-shake-256s.&smimeCaps |
      sa-slh-dsa-shake-256f.&smimeCaps,
      ... }
     
END
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
fzG4GyY/awAA

-->

</rfc>
