<?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-rfc2629 version 1.5.26 (Ruby 2.3.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-sphincs-plus-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="SPHINCS+ Signature Algorithm in CMS">Use of the SPHINCS+ Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-02"/>
    <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="2023" month="May" day="17"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>SPHINCS+ is a stateless hash-based signature scheme.  This document
specifies the conventions for using the SPHINCS+ stateless hash-based
signature algorithm with the Cryptographic Message Syntax (CMS).  In
addition, the algorithm identifier and public key syntax are
provided.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>NOTICE: This document will be adjusted to match the SPHINCS+ 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 SPHINCS+ hash-based
signature algorithm (add reference to the NIST document here)
with the Cryptographic Message Syntax (CMS) <xref target="RFC5652"/>
signed-data content type.</t>
      <t>SPHINCS+ 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 SPHINCS+ at each of these security levels.</t>
      <t>SPHINCS+ 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,
SPHINCS+ 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.  SPHINCS+ 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>
      </section>
    </section>
    <section anchor="sphincs-hash-based-signature-algorithm-overview">
      <name>SPHINCS+ Hash-based Signature Algorithm Overview</name>
      <t>SPHINCS+ 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.
SPHINCS+ 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 SPHINCS+ 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 SPHINCS+ signature consists of 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 SPHINCS+ 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 SPHINCS+ hypertree.</t>
      <t>SPHINCS+ 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 SPHINCS+ 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, SPHINCS+
is much less fragile.</t>
      <t>SPHINCS+ was designed to sign up to 2^64 messages and offers three
security levels.  The parameters of the SPHINCS+ 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="sphincs-public-key-identifier">
      <name>SPHINCS+ Public Key Identifier</name>
      <t>The AlgorithmIdentifier for a SPHINCS+ public key <bcp14>MUST</bcp14> use one of the
eight id-alg-sphincs-plus object identifiers listed below, based on the
security level used to generate the SPHINCS+ 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-sphincs-plus-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 SPHINCS+ 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-sphincs-plus-128s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-128s-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-128f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-128f-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-128s-sha2 PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-128s-sha2
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-128f-sha2 PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-128f-sha2
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-192s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-192s-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-192f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-192f-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-256s-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-256s-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   pk-sphincs-plus-256f-shake PUBLIC-KEY ::= {
       IDENTIFIER id-alg-sphincs-plus-256f-shake
       KEY SPHINCS-Plus-PublicKey
       PARAMS ARE absent
       CERT-KEY-USAGE
         { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
       PRIVATE-KEY SPHINCS-Plus-PrivateKey }

   SPHINCS-Plus-PublicKey ::= OCTET STRING

   SPHINCS-Plus-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 SPHINCS+ public key value is an OCTET STRING.</t>
      <t>The SPHINCS+ 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 SPHINCS+ 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 SPHINCS+ 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 SPHINCS+ signature is computed over the DER-encoded output.
In summary:</t>
      <artwork><![CDATA[
   IF (signed attributes are absent)
   THEN SPHINCS_Plus_Sign(content)
   ELSE message-digest attribute = Hash(content);
        SPHINCS_Plus_Sign(DER(SignedAttributes))
]]></artwork>
      <t>When using SPHINCS+, 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 SPHINCS+ 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 SPHINCS+ 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-sphincs-plus-128s-shake, id-alg-sphincs-plus-128f-shake,
id-alg-sphincs-plus-128s-sha2, id-alg-sphincs-plus-128f-sha2,
id-alg-sphincs-plus-192s-shake, id-alg-sphincs-plus-192f-shake,
id-alg-sphincs-plus-256s-shake, or id-alg-sphincs-plus-256f-shake.</t>
        </dd>
        <dt>
signature:  </dt>
        <dd>
          <t>The signature contains the signature value resulting from the
SPHINCS+ signing operation with the parameters associated with the
selected signatureAlgorithm.  The SPHINCS+ signing operation and the
signature verification operation are specified in TBD.</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 SPHINCS+ key pair, an implementation <bcp14>MUST</bcp14> generate
each key pair independently of all other key pairs in the SPHINCS+
hypertree.</t>
      <t>A SPHINCS+ 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="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-sphincs-plus-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 for his careful review and constructive comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc4108">
          <front>
            <title>Using Cryptographic Message Syntax (CMS) to Protect Firmware Packages</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8554">
          <front>
            <title>Leighton-Micali Hash-Based Signatures</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="M. Curcio" initials="M." surname="Curcio">
              <organization/>
            </author>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8391">
          <front>
            <title>XMSS: eXtended Merkle Signature Scheme</title>
            <author fullname="A. Huelsing" initials="A." surname="Huelsing">
              <organization/>
            </author>
            <author fullname="D. Butin" initials="D." surname="Butin">
              <organization/>
            </author>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag">
              <organization/>
            </author>
            <author fullname="J. Rijneveld" initials="J." surname="Rijneveld">
              <organization/>
            </author>
            <author fullname="A. Mohaisen" initials="A." surname="Mohaisen">
              <organization/>
            </author>
            <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>
    <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"><![CDATA[
<CODE STARTS>

SPHINCS-Plus-Module-2023
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
    id-smime(16) id-mod(0) id-mod-sphincs-plus-2022(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
--

id-alg-sphincs-plus-128s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-128f-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-128s-sha2 OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-128f-sha2 OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-192s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-192f-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-256s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-sphincs-plus-256f-shake OBJECT IDENTIFIER ::= { TBD }


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

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

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

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

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

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

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

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

pk-sphincs-plus-128s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-128s-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-128f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-128f-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-128s-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-128s-sha2
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-128f-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-128f-sha2
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-192s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-192s-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-192f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-192f-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-256s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-256s-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

pk-sphincs-plus-256f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-sphincs-plus-256f-shake
    KEY SPHINCS-Plus-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
      { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SPHINCS-Plus-PrivateKey }

SPHINCS-Plus-PublicKey ::= OCTET STRING

SPHINCS-Plus-PrivateKey ::= OCTET STRING

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

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

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

SMimeCaps SMIME-CAPS ::=
    { sa-sphincs-plus-128s-shake.&smimeCaps |
      sa-sphincs-plus-128f-shake.&smimeCaps |
      sa-sphincs-plus-128s-sha2.&smimeCaps |
      sa-sphincs-plus-128f-sha2.&smimeCaps |
      sa-sphincs-plus-192s-shake.&smimeCaps |
      sa-sphincs-plus-192f-shake.&smimeCaps |
      sa-sphincs-plus-256s-shake.&smimeCaps |
      sa-sphincs-plus-256f-shake.&smimeCaps,
      ... }
     
END

<CODE ENDS>
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
