<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wiggers-hbs-state-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.1 -->
  <front>
    <title abbrev="HBS: State and Backup">Hash-based Signatures: State and Backup Management</title>
    <seriesInfo name="Internet-Draft" value="draft-wiggers-hbs-state-01"/>
    <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
      <organization>PQShield</organization>
      <address>
        <postal>
          <country>The Netherlands</country>
        </postal>
        <email>thom@thomwiggers.nl</email>
      </address>
    </author>
    <author initials="K." surname="Bashiri" fullname="Kaveh Bashiri">
      <organization>BSI</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>kaveh.bashiri.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Kölbl" fullname="Stefan Kölbl">
      <organization>Google</organization>
      <address>
        <postal>
          <country>Switzerland</country>
        </postal>
        <email>kste@google.com</email>
      </address>
    </author>
    <author initials="J." surname="Goodman" fullname="Jim Goodman">
      <organization>Crypto4A Technologies</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>jimg@crypto4a.com</email>
      </address>
    </author>
    <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
      <organization>BSI</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>kousidis.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="September" day="24"/>
    <keyword>stateful hash-based signatures</keyword>
    <keyword>XMSS</keyword>
    <keyword>LMS</keyword>
    <keyword>state management</keyword>
    <abstract>
      <?line 167?>

<t>Stateful Hash-Based Signature Schemes (S-HBS) such as LMS, HSS, XMSS and
XMSS<sup>MT</sup> combine Merkle trees with One-Time Signatures (OTS) to
provide signatures that are resistant against attacks using large-scale quantum
computers. Unlike conventional stateless digital signature schemes, S-HBS have
a state to keep track of which OTS keys have been used, as double-signing with
the same OTS key allows forgeries.</t>
      <t>This document provides guidance and documents security considerations for the
operational and technical aspects of deploying systems that rely on S-HBS.
Management of the state of the S-HBS, including any handling of redundant key
material, is a sensitive topic, and we discuss some approaches to handle the
associated challenges. We also describe the challenges that need to be resolved
before certain approaches should be considered.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/hbs-guidance/draft-hbs-state"/>.</t>
    </note>
  </front>
  <middle>
    <?line 183?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Stateful Hash-Based Signature Schemes (S-HBS) such as LMS, HSS, XMSS and
XMSS<sup>MT</sup> combine Merkle trees with One-Time Signatures (OTS) in order
to provide digital signature schemes that remain secure even when large-scale
quantum computers become available. Their theoretic security is well understood
and depends only on the security of the underlying hash function. As such, they
can serve as an important building block for quantum-resistant information and
communication technology. S-HBS are specified in <xref target="RFC8391"/>, <xref target="RFC8554"/>,
and NIST <xref target="SP-800-208"/>.</t>
      <t>The private key of an S-HBS is a finite collection of OTS keys and an
associated data structure which keeps track of which OTS keys have been used.
This data structure is typically a simple counter and often called an index; we
refer to it as the <strong>state</strong> of the private key. Each S-HBS private key can be
used to sign a finite number of messages, and the state must be updated with
each generated signature.</t>
      <t>One must not reuse any OTS key that is part of an S-HBS private key. If an
attacker is able to obtain signatures for two different messages created using
the same OTS key, it is computationally feasible for that attacker to create
forgeries <xref target="BH16"/>. As noted in <xref target="MCGREW"/> and <xref target="ETSI-TR-103-692"/>, extreme care
should be taken in order to avoid the risk that an OTS key will be reused
accidentally.</t>
      <t>The statefulness of S-HBS leads to significant challenges in practice:</t>
      <ul spacing="normal">
        <li>
          <t>Implementers must ensure that each creation of a signature updates the state
correctly.</t>
        </li>
        <li>
          <t>If the S-HBS private key is distributed to multiple signers at the same time,
implementers must ensure that they never use the same OTS key. This may
require synchronization between all signers.</t>
        </li>
        <li>
          <t>If key backups are required, implementers must ensure that any backup
mechanism can not lead to re-using a previously used OTS key.</t>
        </li>
      </ul>
      <t>The purpose of this document is to present, recall, and discuss various
strategies for a correct state and backup management for S-HBS.</t>
      <section anchor="when-are-s-hbs-appropriate">
        <name>When are S-HBS appropriate?</name>
        <t>The issues with state management described above, as well as the limited number
of signatures, lead to new requirements that most developers will not be
familiar with and that require careful handling in practice: S-HBS are not
general-purpose signature schemes. Most applications, especially those that may
produce unrestricted numbers of signatures, should use <em>stateless</em> hash-based
signature schemes like SLH-DSA <xref target="FIPS205"/>, which use the same security
assumptions, or schemes based on other assumptions, such as ML-DSA <xref target="FIPS204"/>,
instead. However, if performance, signature or key sizes of stateless
alternatives are prohibitive, and the specific use case allows a very tight
control of the signing environment, using S-HBS may be an appropriate solution.
It seems likely that in many scenarios, this will only be possible when using
purpose-designed hardware, such as hardware-security modules.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 anchor="specific-terminology-in-the-context-of-s-hbs">
        <name>Specific terminology in the context of S-HBS</name>
        <t>In this subsection we specify certain notions which are important in the
context of S-HBS.</t>
        <section anchor="state-management">
          <name>State management</name>
          <t>In this document <em>state management</em> refers to the handling and implementation
of the state of the private key.</t>
          <t>This includes mechanisms, which aim:</t>
          <ul spacing="normal">
            <li>
              <t>to securely update the state after each signature,</t>
            </li>
            <li>
              <t>to set up S-HBS with a split state and/or private key, so that signatures can
be generated from either part without risk of state reuse,</t>
            </li>
            <li>
              <t>to enable effective but secure handling of private key and state backup
material,</t>
            </li>
            <li>
              <t>to guarantee the availability of both the private key and its state across
the lifetime of the key.</t>
            </li>
          </ul>
          <t>Note that in particular implementations of S-HBS, or in alternative signature
mechanisms such as, e.g., puncturable schemes <xref target="BSW16"/>, the state and private
key might be inseparable. However, even in these scenarios, this document's
guidance should still apply.</t>
        </section>
        <section anchor="backup-management">
          <name>Backup management</name>
          <t>In order to mitigate failure of, e.g., devices storing key material and to
facilitate other types of disaster recovery, backups of private keys and their
associated states <bcp14>SHOULD</bcp14> be considered as part of a security architecture.</t>
          <t>In this document, <em>backup management</em> refers to all mechanisms surrounding the
goal to guarantee the availability of the private key and state, but with
special care to avoid state reuse by rolling back to a state in which
already-used OTS keys are still available.</t>
          <t>These mechanisms include procedures and protocols, which aim:</t>
          <ul spacing="normal">
            <li>
              <t>to securely store this private key and state material outside the in-use
signing device,</t>
            </li>
            <li>
              <t>to import an externally stored private key and state to a newly initiated
signing device,</t>
            </li>
            <li>
              <t>allow practicing with backup recovery and to ensure backups are valid.</t>
            </li>
          </ul>
          <t>Backup management can be viewed as a more specific type of state management; we
make this distinction to clarify the aims of our recommendations.</t>
        </section>
        <section anchor="keymovement">
          <name>Key export, key import and key transfer</name>
          <t>As part of state and backup management, we will discuss mechanisms to export,
import or transfer private key and state material. In order to avoid
misunderstandings we now specify these notions more precisely.</t>
          <dl>
            <dt>key export</dt>
            <dd>
              <t>mechanism of exporting secret data, which yields (partial) private
key and state material, from the signing device to external storage. This
external storage may be given in digital or non-digital form.</t>
            </dd>
            <dt>key import</dt>
            <dd>
              <t>mechanism of importing secret data, which loads (partial) private
key and state material, from external storage to the signing device.</t>
            </dd>
            <dt>key transfer</dt>
            <dd>
              <t>a cryptographically protected transfer of ownership of private key and
state material from one signing device to another.</t>
            </dd>
          </dl>
          <t>Systems and architectures relying on key transfer are generally expected to
require fewer operational and manually-executed steps and checks to avoid state
reuse.</t>
          <t>Note that, at times, secure variants of the aforementioned primitives may be
required (e.g., securely importing/exporting the key). In these situations
cryptographic mechanisms <bcp14>SHOULD</bcp14> be utilized to provide assurances related to
the confidentiality (e.g., utilizing symmetric/asymmetric encryption
mechanisms) and/or integrity/authenticity (e.g., utilizing digital signatures,
hash functions, and keyed message authentication codes) of the associated
operations.</t>
        </section>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>An important aspect of the evaluation of various hash-based signature state and
backup management options is to consider the operational costs associated with
the option(s) being evaluated. In the past, a traditional trust infrastructure
solution could utilize straightforward archival procedures to make copies of
the keys, which could then be distributed geographically to ensure their
availability and deliver a sufficiently resilient solution, all the while
enforcing whatever security protocols and procedures were required.
Unfortunately, stateful hash-based signatures introduce an additional
constraint in that they need to ensure the state is never re-used. Hence,
archival procedures used for traditional trust infrastructures have to be
amended/redesigned to be used as viable options.</t>
      <t>One of the most problematic aspects of providing a long-lived resilient
solution is simply managing the physical media on which the keys/state are
stored externally (i.e., outside of the signing device) throughout the course
of their lifetime. Physical media/devices degrade over time, and the more
complex the media/device, the more likely it is to fail at some point in time
(e.g., data stored on a CD vs. data stored on a USB drive vs. data stored in a
Hardware Security Module). Combine that fact with the long lifetimes associated
with stateful hash-based signature keys (e.g., 10-20+ years) and the
difficulties associated with transferring keys between devices, and one finds
them self with a perplexing set of challenges that needs to be accounted for in
any state selection process of a proper state and backup management solution.
Compounding these complexities is the fact any resilient state management
system <bcp14>SHOULD</bcp14> also provide some means to verify the integrity of these long
lived backups to ensure they will be valid when they are required, and to
ensure the operators know how to execute the necessary recovery procedure(s).</t>
      <t>Similarly, many of the prescribed state management options require a high
degree of operator involvement which means one <bcp14>SHOULD</bcp14> consider the costs
associated with training the operator element to ensure processes and procedures
are adhered to and failures caught early and corrected before a catastrophic
loss of security can occur (e.g., accidentally instantiating multiple instances
of a stateful hash-based signature key/state). Note that training is not a
fixed one-time cost either as long lifetimes will necessitate succession
planning amongst the operator element, and training of each successive generation
of participants. Mechanisms also <bcp14>SHOULD</bcp14> be put in place to mitigate the
ever-present insider threat via mechanisms such as M-of-N controls, ensuring
least-privileges amongst participants, and enforcing a segregation of duties to
ensure multiple parties are required to collude to undermine a solution's
security. Note that the segregation of duties <bcp14>MUST</bcp14> persist across successive
generations to ensure participants do not acquire multiple roles over time,
thereby undermining the intended segregation.</t>
      <t>Lastly, costs associated with any external dependencies required by a
particular solution (e.g., access to a public ledger or transparency log,
providing accurate time references and synchronization mechanisms, access to
attestation facilities, etc.) <bcp14>MUST</bcp14> be accounted for as well, particularly if a
system is operating in an offline mode that makes delivering these additional
capabilities all the more complicated and expensive.</t>
    </section>
    <section anchor="requirements-for-secure-state-management">
      <name>Requirements for secure state management</name>
      <t>A system deploying S-HBS <bcp14>SHOULD</bcp14> fulfill certain requirements to allow securely
handling the state. The system <bcp14>MUST</bcp14> ensure that no two signing operations can
ever be issued from the same state. In addition, the generation of a signature
and update of the state <bcp14>SHOULD</bcp14> appear to be an <em>atomic transaction</em>. This means
that the system <bcp14>MUST NOT</bcp14> release a signature without irrevocably and correctly
updating the state.</t>
      <t>These requirements impose significant restrictions on the underlying technical
approach and a careful implementation of how the state will be updated or
synchronized. The abstraction layers of modern systems can make it particularly
difficult to guarantee that no two versions of the same state are present. The
main concerns here are</t>
      <ul spacing="normal">
        <li>
          <t>how the actual storage for the state is implemented,</t>
        </li>
        <li>
          <t>how it is modified,</t>
        </li>
        <li>
          <t>how an accidental/intentional failure/glitch might affect the state security,
and</t>
        </li>
        <li>
          <t>cloning.</t>
        </li>
      </ul>
      <t>A system may have a version of the private key stored in non-volatile memory
(e.g. a disk) and will load it into volatile memory (e.g. RAM) while
processing. Here, an implementer <bcp14>MUST</bcp14> ensure that these are always perfectly
synchronized <xref target="MCGREW"/>, meaning that no parts of the system are allowed to read
any version of the key during procedures which load, write or modify keys. This can be particularly challenging if there are
additional abstraction layers present in the system, like additional caches
which may affect reading/writing the state and its potential existence in
multiple locations.</t>
      <t>Cloning is another concern, as it can easily lead to re-using the same state.
This can happen for instance if a process which issues a signing operation is
forked, and no proper synchronization is enforced in the implementation to
guarantee correct state update. Virtual machine (VM) cloning is another
potential security risk here, as both backing up a VM into non-volatile memory
or live cloning of a VM can easily lead to a state re-use <xref target="MCGREW"/>. With users
shifting workloads to cloud service providers, the issue of VM cloning may
become more prevalent.</t>
      <t>Using dedicated cryptographic hardware is <bcp14>RECOMMENDED</bcp14> to enforce these
requirements, ensure correct behavior and handle the complexity of state
management. In particular, this enables implementing rollback resistant
counters which can be difficult to achieve in a software-only fashion.</t>
      <t>On the verifier side, no state management is required. However, the verifier
needs to trust the signer to not have re-used the state. A verifier <bcp14>MAY</bcp14> want to
check that no state re-use happened in the past by a signer, before accepting a
signature.</t>
      <t>In practice, this can be done if the verifier has access to all signatures
issued by the signer. As the signatures contain the index of the OTS key used,
detecting if an index was used more than once becomes trivial. In practice,
such a (public) data structure which contains all signatures <bcp14>MAY</bcp14> already be
present in some use cases (e.g. certificate transparency <xref target="RFC9162"/>) or could
be built. It is worth noting that while trusting the signer to not re-use the
state is a strong assumption, other signature schemes like ECDSA introduce
similar assumptions for the verifier, by requiring the signer to never re-use
the nonce.</t>
    </section>
    <section anchor="potential-solutions">
      <name>Potential Solutions</name>
      <t>A variety of potential solutions have been proposed both within the
<xref target="SP-800-208"/> specification, as well as from external sources. This section
describes a number of approaches and their potential advantages/disadvantages.</t>
      <section anchor="multiple-public-keys-sp-800-208">
        <name>Multiple Public Keys (SP-800-208)</name>
        <t>The <xref target="SP-800-208"/> proposes generating multiple S-HBS keypairs and configuring
devices and clients to accept signatures created by any of these keys.</t>
        <t>This negatively impacts one of the advantages of using S-HBS by increasing the
public key footprint within the client, which can be problematic if it has
limited public key storage capacity. <xref target="SP-800-208"/> addresses this concern by
suggesting using a mechanism such as that proposed in <xref target="RFC8649"/> to update
the stored public key by having the current key endorse the next key that is to
be installed. Unfortunately, for many constrained devices the public key is
embedded in immutable ROM or fuses due to security reasons, so it cannot be
updated in this manner.</t>
        <t>The proposal of using multiple S-HBS keypairs for a single instance also
generates questions as to how to establish that approach in existing public key
infrastructures. For example, issueing multiple certificates adds the storage
needs of the certificate material to the public key footprint. In order to
alternatively issue multiple public keys encoded inside a single certificate
one would need a standardized format if interoperability is a concern.</t>
      </section>
      <section anchor="nist-dist-multi-tree">
        <name>Distributed Multi-trees (SP-800-208)</name>
        <t>The <xref target="SP-800-208"/> also proposes creating multiple S-HBS keys across multiple
cryptographic modules using a distributed multi-tree approach that is a variant
of the standard hyper-tree based S-HBS schemes HSS and XMSS<sup>MT</sup>. In
this approach trees are instantiated on a root device (HSM<sub>root</sub>), as
well as one or more subordinate devices (HSM<sub>sub[i]</sub>), and the root
tree is used to sign the root nodes of the subordinate trees to synthesize a
multi-level S-HBS key. The root device is only ever used to sign subordinate
device root nodes, while the subordinate device(s) is(are) used to sign
messages. This is relatively straightforward to do using HSS, and <xref target="SP-800-208"/>
describes the necessary algorithmic modifications when using XMSS<sup>MT</sup>.</t>
        <t>One drawback of this approach is the increased signature size as an additional
OTS needs to be generated, effectively doubling the overall signature size.
Another concern is the single point of failure nature of relying on the root
tree module to sign all of the subordinate trees; if the root tree device fails
then no new subordinate trees can be signed. <xref target="SP-800-208"/> suggested that as
many subordinate trees as possible be generated during the initial root key
generation and subordinate-signing procedure. Unfortunately, this can incur a
large capital expenditure to procure all of the necessary devices, many of
which may not be used for a long period of time, if at all. The subordinate
tree root node signing process <bcp14>MUST</bcp14> also be carefully managed to ensure top
level trees are only ever used to sign the root nodes of trusted/approved
subordinate trees to ensure that no malicious signing request is accepted,
which would effectively give a rogue entity the ability to generate valid
signatures, thereby undermining the security of the entire system.</t>
        <t>The <xref target="SP-800-208"/> also suggests combining distributed multi-trees with multiple
root public keys as a means to mitigate some of the concerns regarding having a
single point of failure in the root tree. However, even if a system operator
does everything right, use cases with exceptionally long lifetimes of 10-20+
years (e.g., automotive and aerospace/satellite applications) will require
system operators to rely on devices well beyond their expected lifetimes of
5-10 years, which may constitute an unacceptable business risk.</t>
      </section>
      <section anchor="sectorization">
        <name>Sectorization</name>
        <t>Distributed multi-trees attempt to partition a S-HBS signing space amongst
multiple cryptographic modules by breaking up the signing space along the
boundaries of the subordinate trees generated during the multi-tree key
generation process. An alternative approach would be to use only a single tree,
and partition its signature space along some power-of-2 less than the total
number of leaves in the tree (e.g., 2<sup>s</sup> for a tree of height h &gt; s),
creating N = 2<sup>h-s</sup> partitions or sectors, which are instantiated as N
height-s Merkle trees whose root nodes are considered interior nodes of the
overall height-h Merkle tree. Hence, there is no additional OTS required to
sign their root nodes; their values are used as-is in the underlying S-HBS
scheme's tree ascent mechanism, yielding a common public key (i.e., root node)
for all sectors. Care <bcp14>MUST</bcp14> be taken to ensure that each sector uses the same
root tree identifier (i.e., the "I" value for HSS/LMS and "root" value for
XMSS/XMSS<sup>MT</sup>).</t>
        <t>Each of the N sectors' OTS private key values can be generated pseudo-randomly
from a unique seed value generated from an appropriate source of randomness. The
private keys from different sectors are independent when generated by this process. This
requires that the path information for each sector's root node (i.e., all off-path nodes
between the sector root node and the top level node value) be stored with each
sector's private key at key generation time since a sector will not know the
seed information required to compute any of the other sectors' root nodes
during the tree ascent phase of a signature generation operation. During
signature generation the signer appends the stored path information to the path
information it computes to ascend from the leaf OTS to the sector's root node
(which it can compute given that it knows its own seed value).</t>
        <t>Hence, sectorized key generation results in a single public key value and
2<sup>h-s</sup> private key values, each capable of generating 2<sup>s</sup>
signatures, after which the sectorized key is exhausted.</t>
        <t>In addition to avoiding an increased signature size; when unique seeds are
utilized sectorization breaks a given S-HBS key/state into multiple independent
fragments that can be managed as independent objects. As a result, system
operators <bcp14>MAY</bcp14> distribute sectors to multiple cryptographic devices, allowing
for performance scaling, and resiliency/availability, while only requiring them
to manage the uniqueness of each sector instead of having to co-ordinate state
usage between devices since in this scenario a sector cannot generate
signatures from another sector's signature space.</t>
      </section>
      <section anchor="keystate-transfer">
        <name>Key/State Transfer</name>
        <t>S-HBS key/state transfer between cryptographic modules entails having a means
to migrate one instance of a S-HBS key/state on a source device to a separate
destination device, while ensuring that any copy of the key/state is deleted
from the source device.</t>
        <t>This capability may help alleviate the aforementioned concern regarding
operating devices beyond their expected lifetimes by allowing operators to
migrate S-HBS key/state to a newer device when the original device begins to
approach its end-of-life. However, it still leaves the operator vulnerable to
having the source device fail before the key/state can be transferred,
effectively causing the loss of the key/state. Hence, it will not be of much
help addressing the single point of failure issue identified for root trees,
but may be useful for managing subordinate trees.</t>
        <t>A more elaborate variant of key transfer, going beyond what <xref target="SP-800-208"/>
allows, can be found described in <xref target="alt-backup-mgmt"/> where key transfer is
accomplished using a two-step export and import process with hash-based
transfer validation to yield a more robust transfer mechanism.</t>
      </section>
      <section anchor="key-rotation">
        <name>Key Rotation</name>
        <t>Key rotation, such as that defined in <xref target="RFC8649"/>, would generate new S-HBS
keys on an as-needed basis, and provide a means to transition the system on to
using this new S-HBS key, while generating the next key in the chain in
preparation of a future rotation/update. However, this just shifts the problem
to the PKI and certificate handling.</t>
        <t>Key rotation is not foolproof since in most use cases it will require
redundancy to ensure there is at least one S-HBS signing key available to
attest to newly generated keys. In addition, for many applications the device
keys cannot be updated due to engineering constraints or security reasons.</t>
      </section>
      <section anchor="variable-length-signature-chains">
        <name>Variable-length Signature Chains</name>
        <t>A variant of the key rotation approach is to simply have an available signing
tree endorse a new subordinate tree when it is about to become exhausted (e.g.,
use its final OTS to sign the root node of a new subordinate tree, creating a
{n+1}-layer multi-tree from a {n}-layer multi-tree). This process can in theory
be repeated as many times as necessary. However, this entails having a
multi-tree scheme with a variable number of levels, and hence, variable length
signatures.</t>
        <t>In addition to departing quite significantly from the current S-HBS
specifications and <xref target="SP-800-208"/>, this approach has a number of significant
challenges on both the engineering and operational fronts. Firstly, the
variable length nature of the signature can lead to variable length
verification of signatures, which may cause significant issues for use cases
with strict time constraints (e.g., secure booting of a semiconductor device).
From an operational perspective, the ability of a subordinate tree to sign
either messages or new subordinate trees leads to severe security implications
as the rigor around authorizing those two types of operations will vary
dramatically, leading to either a much more onerous message signing operation,
or a much more risky subordinate tree signing operation. This may put the
system operator in an untenable situation where no users are satisfied with the
resulting solution, and hence, <bcp14>SHOULD NOT</bcp14> be considered as a viable solution.</t>
      </section>
      <section anchor="pre-assigning-states">
        <name>Pre-assigning States</name>
        <t>In some applications, individual one-time signatures (or states) can be
pre-assigned to the to-be-signed objects. This may for example be possible if
the signed objects are monotonically increasingly numbered. One example of such
a use case may be software signing. This solution basically externalizes the
state management to the to-be signed messages.</t>
        <t>Expanding on the given example, for software that is released with strictly
increasing, simple single-position version numbers (i.e., versions 1, 2, 3...),
this can be trivially implemented. As versions have a one-to-one correspondence
to an S-HBS signing state, operators <bcp14>MUST</bcp14> ensure that versions can only be
minted a single time. This <bcp14>MAY</bcp14> require skipping version numbers if a release
process failed, to avoid double-signing.</t>
        <t>This scheme can be adapted to more complicated release schemes: for example,
minor update-releases 1.0 to 1.99 can be accommodated by assigning signatures
1-100 for these version numbers, while release 2.0-2.99 would get signatures
101-200. The assignments <bcp14>MUST</bcp14> be fixed as the scheme is set up, and operators
<bcp14>SHOULD</bcp14> take into account that they are strictly limiting the number of update
releases. In the described solution to state management, one <bcp14>MUST</bcp14> move up a
major release number after 99 minor releases, even if this would break, e.g.,
semantic versioning conventions.</t>
        <t>A variant of pre-assigning signatures is doing this on the basis of time, which
we describe in the next section.</t>
      </section>
      <section anchor="time-based-state-management">
        <name>Time-based State Management</name>
        <t>As a variant of pre-assigning one-time signatures based on external counters,
it is in theory possible to base the selection of one-time signature indexes on
the current date and time. For example, if a given S-HBS instance offers 1024
total signatures, they could be broken up into 8 groups of 128 OTS instances
each, with the first 128 allowed to be used in the first time window, the
second 128 in the second time window, and so on, until the signature space is
effectively exhausted after 8 time windows. Note that a time-based approach to
state management will "waste" any OTS keys that are unused in past time
windows. One <bcp14>MUST NOT</bcp14> attempt to use these keys after the time window has gone
by.</t>
        <t>Any time-based approach has a very strict reliance on accurate time-keeping and
synchronization of clocks. In particular, we identify that at least the
following engineering-related challenges need to be considered:</t>
        <ul spacing="normal">
          <li>
            <t>Signing devices <bcp14>MUST</bcp14> have accurate timekeeping (which is a very challenging
engineering problem <xref target="XKCD1883"/>, <xref target="XKCD2867"/>, <xref target="TIMEFALSEHOODS"/>).</t>
          </li>
          <li>
            <t>Time on signing devices <bcp14>MUST NOT</bcp14> be allowed to ever move backwards, as this
can cause double-signing.</t>
          </li>
          <li>
            <t>Within time windows, signers <bcp14>MUST</bcp14> track the number of signatures produced to
ensure it does not exceed the number allowed within the window.</t>
          </li>
          <li>
            <t>Signing devices <bcp14>MUST</bcp14> still operate consistently with the requirements of
state keeping for S-HBS: the signature index within a time window <bcp14>SHOULD</bcp14>
still appear to be updated atomically, and signatures <bcp14>MUST NOT</bcp14> be released
before state changes have been recorded.</t>
          </li>
          <li>
            <t>A system <bcp14>SHOULD</bcp14> be robust against exhaustion of the number of signatures
available in a time window, as in this case it is <bcp14>REQUIRED</bcp14> to wait until the
next time window starts before new messages can be signed.</t>
          </li>
          <li>
            <t>Time on signing devices <bcp14>SHOULD NOT</bcp14> be allowed to be moved forward maliciously
or accidentally, which would allow for a simple denial-of-service attack by
skipping over portions of the signature space.</t>
          </li>
          <li>
            <t>If a signing device needs to be replaced, the replacement device <bcp14>MUST</bcp14> be set
up with its time in sync with or ahead of the device it is to replace. This
implies the current time on signing devices <bcp14>SHOULD</bcp14> be continuously recorded.</t>
          </li>
          <li>
            <t>Rate limiting <bcp14>MAY</bcp14> need to be considered, as exhausting the available
signatures in a given time window may otherwise be easy.</t>
          </li>
          <li>
            <t>It <bcp14>MAY</bcp14> be necessary for signers to keep a separate clock for time-based state
management, and one for not necessarily monotonically increasing "wall-time",
e.g., if signed artifacts are expected to be time-stamped with real-world time.</t>
          </li>
        </ul>
        <t>If these concerns can not be sufficiently addressed, time-based state
management as described in this paragraph <bcp14>SHOULD NOT</bcp14> be used. Note that this
list of concerns is not exhaustive, and other, unmentioned, concerns may also
be relevant to the security of a time-based solution.</t>
        <t>Time-based systems can be backed up by simply recording the private keys and
the configuration of the time windows. In case of loss of a signing device, a
time-based state management system can be recovered by using this information
to bring online a new device in the next time window. This approach <bcp14>MAY</bcp14> also be
used as a recovery mechanism in the case of (suspected) state consistency
problems during a time window. However, the operator <bcp14>MUST NOT</bcp14> allow new
signatures to be produced before the new time window starts, unless they know
the exact state at which the previous device became unavailable and are able to
set up the new device accordingly. Waiting until the start of the next time
window avoids double signing, as the OTS keys assigned to future time windows
are guaranteed to have not yet been used. However, this might incur significant
downtime of the signing systems. Downtime <bcp14>MAY</bcp14> be avoided by forcibly moving the
signing device to the next time window by incrementing its clock; however, this
induced clock drift will then need to be accounted for in the future. If clock
drift is to be avoided, this approach <bcp14>SHOULD</bcp14> account for availability
considerations.</t>
      </section>
    </section>
    <section anchor="alt-backup-mgmt">
      <name>Backup management beyond NIST SP-800-208</name>
      <t>In this section, an alternative backup mechanism for S-HBS is presented in a
generic form, which makes the strategy applicable for both multi-tree instances
XMSS<sup>MT</sup> and HSS.  However, following the same arguments as in
<xref target="sectorization"/>, with minor modifications, the presented strategy is also
applicable for single-tree instances such as XMSS and LMS.</t>
      <t>The strategy presented in this section builds upon the multi-tree variant
approach from <xref target="SP-800-208"/>, and aims to mitigate its limitations described in
<xref target="nist-dist-multi-tree"/>.  Thus, it is assumed that already a top-level Merkle
tree (for signing the root-nodes of sub-trees) and several bottom-level Merkle
trees (for signing messages) are initiated.  These bottom-level trees <bcp14>MAY</bcp14> be
implemented on different hardware modules in order to obtain redundancy and
improve availability.  Let R be the number of these already initiated
bottom-level trees.  Let h<sub>0</sub> be the height of the top-level-tree.  It
is assumed that R + 1 is strictly smaller than 2<sup>h<sub>0</sub></sup>, the
number of leaves of the top-level tree.</t>
      <t>In this new strategy, after the completed key generation procedure from the
multi-tree variant approach from <xref target="SP-800-208"/>, further bottom-level trees are
generated, one by one, in one of the hardware modules.  These new  bottom-level
trees are each generated from a different seed, which is chosen uniformly at
random.  For the sake of clarity, let us introduce some notation:</t>
      <ul spacing="normal">
        <li>
          <t>S denotes the number of these newly generated bottom-level trees.  Note that
at most 2<sup>h<sub>0</sub></sup> - R new bottom-level trees can be
generated, i.e. S is lower or equal to 2<sup>h<sub>0</sub></sup> - R.  In the
following we suppose that S is <em>strictly smaller</em> than
2<sup>h<sub>0</sub></sup> - R.</t>
        </li>
        <li>
          <t>I<sub>new</sub> denotes the set of indices that belong to these newly
generated bottom-level trees, i.e. I<sub>new</sub> = {R, R+1, ..., R+S-1}. I<sub>new</sub> is zero-indexed here.</t>
        </li>
      </ul>
      <t>For each new bottom-level tree, after it has been generated, the following
steps <bcp14>MUST</bcp14> be performed:</t>
      <ul spacing="normal">
        <li>
          <t>sign the corresponding root node with an unused OTS key from the top-level
tree,</t>
        </li>
        <li>
          <t>securely <em>key export</em> (as decribed in <xref target="keymovement"/>) the seed, which was
used to generate the bottom-level tree,</t>
        </li>
        <li>
          <t>export the signature of the root node, the corresponding OTS key index and
finally the hash of the seed, using appropriate domain separation (i.e.
ensuring there is no domain overlap with the hashes in the S-HBS scheme, and
the hash of the seed includes the public key and leaf index to mitigate
multi-target attacks),</t>
        </li>
        <li>
          <t>irreversibly delete the seed and the bottom-level tree from the hardware
module.</t>
        </li>
      </ul>
      <t>The newly generated bottom-level trees (i.e. those bottom-level trees, whose
indices belong to I<sub>new</sub>) are only used in order to guarantee
availability in the <em>worst-case scenario</em>, where at the same time both</t>
      <ul spacing="normal">
        <li>
          <t>none of the R bottom-level Merkle trees (which were generated according to
the multi-tree variant approach from <xref target="SP-800-208"/>) are available for signing
messages and</t>
        </li>
        <li>
          <t>the top-level Merkle tree (which is used for signing the root-nodes of
sub-trees) is also not available any more.</t>
        </li>
      </ul>
      <t>This scenario may, for example, happen if all hardware modules are broken at
the same time.</t>
      <t>As soon as this worst-case scenario occurs, the newly generated bottom-level
trees (i.e. those bottom-level trees, whose indices belong to I<sub>new</sub>)
need to be initiated in order to ensure availability. In order to do this the
following steps <bcp14>MUST</bcp14> be performed:</t>
      <ul spacing="normal">
        <li>
          <t>initiate a new hardware module</t>
        </li>
        <li>
          <t>securely <em>key import</em> (as decribed in <xref target="keymovement"/>) the first unused seed
into this hardware module</t>
        </li>
        <li>
          <t>generate the bottom-level tree corresponding to the seed</t>
        </li>
        <li>
          <t>irreversibly delete the seed from the backup medium</t>
        </li>
        <li>
          <t>perform a correctness check by letting the hardware module output the hash of
the seed</t>
        </li>
      </ul>
      <t>Now this bottom-level tree can be used to sign messages. As soon as no more OTS
on the bottom-level tree are available or as soon as the hardware module is
broken, the above steps with a new seed from the backup medium can be repeated.</t>
      <t>Note that the resulting signatures generated from these backed up seeds do not
require any special processing on the verifier side. The signature stored
alongside the backed up seed, and the signature generated from the bottom-level
trees created from the backed up seed can be combined to match the format of a
signature over the complete tree.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Further security considerations, which are not already covered in this
document, are given in <xref target="SP-800-208"/>, <xref target="MCGREW"/>, <xref target="FIPS205"/>, <xref target="RFC8391"/> and
<xref target="RFC8554"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="MCGREW" target="https://tubiblio.ulb.tu-darmstadt.de/id/eprint/101633">
          <front>
            <title>State Management for Hash-Based Signatures</title>
            <author initials="D." surname="McGrew">
              <organization/>
            </author>
            <author initials="P." surname="Kampanakis">
              <organization/>
            </author>
            <author initials="S." surname="Fluhrer">
              <organization/>
            </author>
            <author initials="S." surname="Gazdag">
              <organization/>
            </author>
            <author initials="D." surname="Butin">
              <organization/>
            </author>
            <author initials="J." surname="Buchmann">
              <organization/>
            </author>
            <date year="2016" month="November" day="02"/>
          </front>
        </reference>
        <reference anchor="SP-800-208" target="https://doi.org/10.6028/NIST.SP.800-208">
          <front>
            <title>NIST SP 800-208: Recommendation for Stateful Hash-Based Signature Schemes</title>
            <author initials="D." surname="Cooper" fullname="David Cooper">
              <organization/>
            </author>
            <author initials="D." surname="Apon" fullname="David Apon">
              <organization/>
            </author>
            <author initials="Q." surname="Dang" fullname="Quynh Dang">
              <organization/>
            </author>
            <author initials="M." surname="Davidson" fullname="Michael Davidson">
              <organization/>
            </author>
            <author initials="M." surname="Dworkin" fullname="Morris Dworkin">
              <organization/>
            </author>
            <author initials="C." surname="Miller" fullname="Carl Miller">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="NIST Special Publication" value=""/>
        </reference>
        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>FIPS 204: Module-Lattice-Based Digital Signature Standard</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
          <seriesInfo name="Federal Information Processing Standards" value=""/>
        </reference>
        <reference anchor="FIPS205" target="https://doi.org/10.6028/NIST.FIPS.205">
          <front>
            <title>FIPS 205: Stateless Hash-Based Digital Signature Standard</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
          <seriesInfo name="Federal Information Processing Standards" value=""/>
        </reference>
        <reference anchor="BH16" target="https://eprint.iacr.org/2016/1042.pdf">
          <front>
            <title>Oops, I did it again – Security of One-Time Signatures under Two-Message Attacks.</title>
            <author initials="L." surname="Bruinderink">
              <organization/>
            </author>
            <author initials="A." surname="Hülsing">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="ETSI-TR-103-692" target="https://www.etsi.org/deliver/etsi_tr/103600_103699/103692/01.01.01_60/tr_103692v010101p.pdf">
          <front>
            <title>State management for stateful authentication mechanisms</title>
            <author initials="" surname="European Telecommunications Standards Institute (ETSI)">
              <organization/>
            </author>
            <date year="2021" month="November"/>
          </front>
        </reference>
        <reference anchor="BSW16" target="https://link.springer.com/chapter/10.1007/978-3-662-49896-5_28">
          <front>
            <title>New Negative Results on Differing-Inputs Obfuscation</title>
            <author initials="M." surname="Bellare">
              <organization/>
            </author>
            <author initials="I." surname="Stepanovss">
              <organization/>
            </author>
            <author initials="B." surname="Waters">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HBSX509" target="https://www.ietf.org/archive/id/draft-gazdag-x509-hash-sigs-02.html">
          <front>
            <title>Internet X.509 Public Key Infrastructure: Algorithm Identifiers for Hash-based Signatures</title>
            <author initials="K." surname="Bashiri">
              <organization/>
            </author>
            <author initials="S." surname="Fluhrer">
              <organization/>
            </author>
            <author initials="S." surname="Gazdag">
              <organization/>
            </author>
            <author initials="D." surname="Van Geest">
              <organization/>
            </author>
            <author initials="S." surname="Kousidis">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="XKCD2867" target="https://xkcd.com/2867/">
          <front>
            <title>xkcd: DateTime</title>
            <author initials="R." surname="Munroe">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="XKCD1883" target="https://xkcd.com/1883/">
          <front>
            <title>xkcd: Timezones</title>
            <author initials="R." surname="Munroe">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TIMEFALSEHOODS" target="https://gist.github.com/timvisee/fcda9bbdff88d45cc9061606b4b923ca">
          <front>
            <title>Falsehoods programmers believe about time</title>
            <author initials="T." surname="Visée">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="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="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC8649">
          <front>
            <title>Hash Of Root Key Certificate Extension</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>This document specifies the Hash Of Root Key certificate extension. This certificate extension is carried in the self-signed certificate for a trust anchor, which is often called a Root Certification Authority (CA) certificate. This certificate extension unambiguously identifies the next public key that will be used at some point in the future as the next Root CA certificate, eventually replacing the current one.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8649"/>
          <seriesInfo name="DOI" value="10.17487/RFC8649"/>
        </reference>
        <reference anchor="RFC8411">
          <front>
            <title>IANA Registration for the Cryptographic Algorithm Object Identifier Range</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Andrews" initials="R." surname="Andrews"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>When the Curdle Security Working Group was chartered, a range of object identifiers was donated by DigiCert, Inc. for the purpose of registering the Edwards Elliptic Curve key agreement and signature algorithms. This donated set of OIDs allowed for shorter values than would be possible using the existing S/MIME or PKIX arcs. This document describes the donated range and the identifiers that were assigned from that range, transfers control of that range to IANA, and establishes IANA allocation policies for any future assignments within that range.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8411"/>
          <seriesInfo name="DOI" value="10.17487/RFC8411"/>
        </reference>
      </references>
    </references>
    <?line 828?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was inspired by discussions at the 2nd Oxford Post-Quantum
Cryptography Summit 2023.</t>
      <t>We gratefully acknowledge Melissa Azouaoui for her input to this document.</t>
      <t>The abstract and the introduction are based on the introduction in <xref target="HBSX509"/>.
Thanks go to the authors of this document. "Copying always makes things easier
and less error-prone" - <xref target="RFC8411"/>.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <ul spacing="normal">
        <li>
          <t>Jeff Andersen (Google)</t>
        </li>
        <li>
          <t>Bruno Couillard (Crypto4A Technologies)</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V92ZIbydXefT1FuedCbAtAL1xEUvpHam7D1rBJDrtHI8XE
BKOASgAlFqqgWrrZM8EIv4NfwLd+AV/5ynoTP4nPd5bMrALIkcI39m9LYgOo
XE6e5Ttb1nQ6TbqiK93j9OBl1q6n86x1eXpZrKqs6xvXPk4vu6xzaVbl6ZNs
8aHfphdZla3cxlXdQZLN5427xsNPLnd/epAs6INV3dw+TotqWSdJXi+qbEOz
5U227KY3xWrlmna6nrfTFg9Pj0+Stp9virYt6qq73dJPz59fvUjTr9KsbGua
qahyt3X0XzT/JD1wedHVTZGV+OP87An9T93Qv95dvThIqn4zd83jJKehHyeL
umpd1fa0qSUN5hJa+N2EBm5cRgNfukXfFN3tAX10UzcfVk3db+nz1i3yot1m
3WJ9kHxwt/Rd/jhJpymveNmX6TpQrvWUwy/+enF5if99dXHpH0g3nn400bWr
elraVyn+z2Z8W7fd9Ls+q7p+k37fuvS8St82dVcv6rI90B8LcQ5+oJUW1Sr9
Bs/ad5usKOm77T8Wfypct5zVzcq+yprFmr5ad922fXx0hF/io+LazeynR/jg
aN7UN607ojGO7NlV0a37efS0fDBb1JsjHOGqL/KsWrgjOV1/qvZ8Sf9uu+j5
+KGZDlbU48ePPsMss3W3KQ+SJOu7dd3wkRQVHe7VLP1BfpvQpMJvV+t6E39K
23ycvv3ucl24MscHi7qvOjDq1dqlr123dk1JnMw/dkJPmmXzJ/yXrmRWlYmf
9NsZMX27LpoiTPptdu3W8cc865PL88GE37iGWOI2mugDnpvN5Tk+lj+t8A0I
HWa8nKXf/vN/lPMyTHhJ/JhV0cc84Td1vSrdYM7Lm6L7WXYYz9t27k8r/vVw
qj/PMEhOywxz/bnYxB/yTE+b221X3ztLr9xiXdVlvSpcO5j4KTF/nkVz/r3Y
rP60kOey3Q3WfVuQ9MVbzK6buh1886+SVR/ZoehXwh5V3UHh3dZ9uiAqrok4
pUvfvXjapsVmWxYLUpS36fw2pWFI4n75I311cnr33qf0DrQbTdeRGB2yAvzl
P4UvK/9V4v/5OEmiZ4h3ScGdT5/NhNWXZb9uXDMtN+10Uzduus2azbR1XSu/
pLEf3n10Ev64f/8ejZimF0+/eff8B3xOCiJrVo6kzYSt6+fFvCzqWV/OZ10/
zWlMkqO8m+XuqMiP3LYpqu7o5Pjkwd27MoJYBlHrQe2ntO6UrcWTkbXgp7w4
8v/pWT6bpReLbxp3M/z4LR1xttnS0B/kKMNXdPovhAw7n3+T/Zxnq50JnvRd
UQ0//TM+XayJEeQLNgTpKW1xenIyPT4FzS7fTh8eH09Pjx/up1teF6wVT45n
D45PHx69Pr+8ml2+nelDMaUO8B0NmNqA6TtHHEZEo4nJoDHlLs1s7CNherlY
E5FJy3+JlE/reuvpYpLxLLsu8uFX4YmzbV3t/X30hf76uxl9Va1Gv/6uv63W
8Rf664uZDNTujH9RLNaZK8dfR8/dsO0aP1Y3TdGOvtSHnhIXFWW5s/WnWVPG
38gxv1l0NZl/Ou7TY/64dQ3pI8jd41ROausWBB3Stz0JxoKPCBzx4vzt5enx
vX+DHfDEjB4ZMAM+TDEO7SnvSzd9lXVdsXB65s8Ksng0eXT2HamOrMm/cPiv
eZH01HnV0jw9CWa99A+2rHu88r0d8Pzpvenxw+nJ3R1SvHC5a3hIVUg1w42F
a1nP+cEDae7/+6S5v48091W5lDRVLA7/X5LmycuTB/vpIpp1VmSLhukD/UNE
unc62+bLmC5v6m07Sc/TnASz6NJslRVV+r//y39NDZtiR28qN70qNi7Su2lP
eLhJr27q6QUtjfR0etZ1hMHb2T56eelhur0iHdn0gNW0yg/7f3M2S1/+83+W
2PRIj2Lnz68uz6dX76Ynx3enDx6d7ifCzc3NjAyYcEjuSjJ7zRE+eN81RIy7
D46P3+N/Hj3ivx6dHh2fzPj/v39wfNQ18uXp9fEJ/t92TLrLEbZmVesROghA
H6qMpxtig6wq2s1eizXc+vO+IY1KeOCK2BTKvK90mDZirsBzd0CNwyF7nZC1
YRa5/OFzPFIS7WctGIWgJSNqWuK2c6DN7OT4+HdHj373cEr0fXA6vffo4aMH
0/vvTwfG57W7of+sGFCQ3Wn7smtT2uyzYrnE0a6m59W2p8/ezJd9q9rus9JE
+vmJK8k3cMPPz2dAmWSx6+t2ZLGfEO6mHTcsDeQQ/vX+8aPP88LA26AlA4II
+lmxeZ9+pMen7FqRU9WSsWa8P1Aj5xVNV7ku/euMfqxqPP3W3UJgm6ztmn4B
ASEGLskNJQdjk57DcyyWBa0zAJmx2/sFNTME+un/BV75CzHVN448op0HPLil
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
wpsAAA==

-->

</rfc>
