<?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.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-sphincs-plus-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.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-09"/>
    <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="August" day="21"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 106?>

<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 113?>

<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"/> with the Cryptographic Message
Syntax (CMS) <xref target="RFC5652"/> signed-data content type.</t>
      <t>SLH-DSA offers 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-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-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-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   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 <xref target="RFC5280"/>.  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>No additional encoding of the SLH-DSA private key value is applied in the
PrivateKeyInfo field of an Asymmetric Key Package <xref target="RFC5958"/>.  However,
whenever the SLH-DSA private key value appears outside of a Asymmetric Key
Package, it <bcp14>MAY</bcp14> be encoded as 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"/>. 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-slh-dsa-sha2-128s:  SHA-256
      id-slh-dsa-sha2-128f:  SHA-256
      id-slh-dsa-sha2-192s:  SHA-512
      id-slh-dsa-sha2-192f:  SHA-512
      id-slh-dsa-sha2-256s:  SHA-512
      id-slh-dsa-sha2-256f:  SHA-512
      id-slh-dsa-shake-128s: SHAKE128
      id-slh-dsa-shake-128f: SHAKE128
      id-slh-dsa-shake-192s: SHAKE256
      id-slh-dsa-shake-192f: SHAKE256
      id-slh-dsa-shake-256s: SHAKE256
      id-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-slh-dsa-sha2-128s,  id-slh-dsa-sha2-128f,
      id-slh-dsa-sha2-192s,  id-slh-dsa-sha2-192f,
      id-slh-dsa-sha2-256s,  id-slh-dsa-sha2-256f,
      id-slh-dsa-shake-128s, id-slh-dsa-shake-128f,
      id-slh-dsa-shake-192s, id-slh-dsa-shake-192f,
      id-slh-dsa-shake-256s, id-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 signature generation
operation is specified in Section 9.2 of <xref target="FIPS205"/> and the SLH-DSA
signature verification operation is specified in Section 9.3 of <xref target="FIPS205"/>.</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-2024".
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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="FIPS205" target="https://doi.org/10.6028/NIST.FIPS.205">
          <front>
            <title>Stateless Hash-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
          <seriesInfo name="FIPS PUB" value="205"/>
        </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="RFC5958">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </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="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 515?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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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
AAA=

-->

</rfc>
