<?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.6.33 (Ruby 3.1.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-crypto-deployment-considerations-00" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="Deployment Considerations for Cryptographic Protocols">Deployment Considerations for Cryptographic Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-crypto-deployment-considerations-00"/>
    <author fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2023" month="May" day="15"/>
    <abstract>
      <?line 27?>

<t>Many real world problems require implementing and deploying cryptography as
part of the solution. In general, there is no single standard or set of requirements
by which applications determine what type of cryptographic solution is best for
their problem. Different applications and deployments can lead to varying tradeoffs
in computation, memory, network, and bandwidth properties of a solution. Moreover,
practical aspects of modern software engineering, especially around long-term
maintenance costs, may influence what type of cryptographic solutions are deployed
in practice. This document attempts to cover different factors that influence
what type of cryptography is deployed in practice with the goal of helping
cryptographic researchers navigate the tradeoffs and assumptions made in new
and emerging work.</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/chris-wood/draft-crypto-deployment-considerations"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Software engineering is like any other form of engineering; every problem that
needs a solution requires careful cost-benefit analysis to determine what type
of solution is best. Naturally, there is rarely one single best answer. Engineers
make tradeoffs when navigating the solution space as a way of balancing a variety
of real world constraints and requirements.</t>
      <t>Constraints and requirements vary widely in practice. For example, constraints
can apply to the specific properties of a solution, such as the amount of computation
or network round trips required by a particular cryptographic protocol. Constraints
can also apply to the threat model and trust assumptions to a soluton, such as
whether or not different parties in the system are considered trusted or not.
Finally, constraints can also apply to pragmatic engineering considerations beyond
the functional properties of a cryptographic solution, such as the long-term
maintenance costs of implementing a particular algorithm or solution.</t>
      <t>Engineering is a balancing act of tradeoffs with the end goal of providing high
value solutions. For problems that require (in part) cryptographic solutions,
balancing the different real world constraints well is particularly important.
Improper or incorrect solutions can be costly in the best case or have security
vulnerabilities in the worst case. Awareness of the real world requirements or
constraints that influence engineering and deployment decisions can help navigating
the solution space by designing cryptographic algorithms or protocols.</t>
      <t>To that end, the intent of this document is twofold. The first objective of this
document is to discuss constraints and requirements that are factored into the
implementation and deployment of real world cryptographic solutions.
The second objective of this document is to survey concrete examples of deployed
cryptography to illustrate how certain tradeoffs with respect to these constraints
and requirements were made.</t>
      <t>The target audience of this document is cryptographic and security researchers who
are working on solutions to problems that exist in the real world.</t>
      <!--
TODO: include discussion about communication. Broadcast is bad, unicast is good. Mutually authenticated channels are good.
TODO: Real world examples to thread into the discussion include iCloud Private Relay, Private Access Tokens, GeoKDLv2, Prio (ENPA), STAR, QUIC, WireGuard, ZCash(?), WhatsApp E2E encrypted backup (no threshold OPRF)
-->

</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>
    <section anchor="functional-considerations">
      <name>Functional Considerations</name>
      <t>Functional constraints determine what functional properties of a solution are feasible
for a particular deployment. The functional properties of a cryptographic solution
generally include the amount of computation, memory, network round trips, and network
bandwidth needed for a particular solution. These properties all contribute to the overall
quality of a solution. For example, in applications which have real-time requirements,
such as web browsing, excessive computation means that a solution takes longer to complete,
which may negatively influence the user experience.</t>
      <t>In general, functional properties affect the cost of a solution, where cost can be
measured in terms of financial expense, battery life or power consumption, or cost to
the end user experience. Solutions seek to minimize their cost while maximizing their
quality.</t>
      <t>This section describes how these properties are constrained in practice to minimize cost
and provides examples of how these constraints influenced other relevant quality metrics.</t>
      <section anchor="computation">
        <name>Computation</name>
        <t>Minimizing computation is generally always better, but only up to a point. For example,
consider the problem of authenticated key exchange with TLS. The actual key exchange step
generally involves some public key cryptography operations. When used in the context of a
user-facing application, such as web browser, a desired cryptographic solutions to the key
exchange step should be less than the amount of time that a human can perceive any latency,
as otherwise the cost of this step can negatively affect the user experience. However,
minimizing the cost of this step is only useful up to the point where the cost of network
round trips exceeds that of the key exchange computation. In other words, at a certain point,
the cost of computation is no longer the bottleneck.</t>
        <t>As another example, sometimes cryptographic solutions can minimize computation as a way
of decreasing financial cost to deploy the solution, but this too has a limit. For example,
consider the case of privacy-preserving measurement using <xref target="STAR"/>. STAR
is a very lightweight and efficient protocol for measuring heavy hitters. However, this
efficiency comes from a relaxation of the threat model. STAR is most cost efficient when
it assumes honest clients and honest servers, as otherwise there is no need to do additional
checks to mitigate abuse by malicious parties. STAR was motivated by the need to decrease the
cost of measuring heavy hitters through less computation, yet at the cost of a weakened
threat model compared to alternative solutions.</t>
        <t>As another example, consider the case of batched zero knowledge proof generation and verification
for cryptographic constructions based on VOPRFs. Solutions may wish to minimize the cost of proof
generation and verification across many independent requests as a way of decreasing overall
computation. However, in practice, an implementation of this solution is more complex than
one in which there is no coordination across independent requests, in particular because the
VOPRF signer needs to implement batching and the logic necessary to handle batch processing
in a timely manner. Thus, this decrease in computation comes at the cost of implementation
complexity.</t>
      </section>
      <section anchor="memory">
        <name>Memory</name>
        <t>Minimizing memory consumption -- or state -- is an advantageous goal. However, it's important
to distinguish what types of memory or state a particular proposes when exploring this
constraint. There are effectively two types of memory or state that are relevant for
cryptographic solutions:</t>
        <ol spacing="normal" type="1"><li>Long-term state, such as private keying material that exists for repeated runs of a
cryptographic protocol.</li>
          <li>Ephemeral state, such as one-time-use key shares and random nonces used for a key
exchange protocol, that only exists for the duration of a given cryptographic protocol
and is effectively captured or constrained within the state machine of a protocol.</li>
        </ol>
        <t>Minimizing all three types of state or memory is generally infeasible; every solution
inevitably requires some form of state. Moreover, there is generally no best answer
for which type of state to minimize. Considerations that apply to each are below.</t>
        <ol spacing="normal" type="1"><li>
            <t>Long-term state. Minimizing this type of state simplifies management. For example,
in the case of long-term private keys, minimizing the number of keys can simplify
mechanics that need to be in place to deal with issues such as revocation and rotation.
Fewer keys may need to change as a result. However, minimizing such long-term state
means that each key gets more use across all possible users. In the extreme case where
there is just a single key, the key becomes a shared resource with access contention.
Requests to use the key can therefore lead to decreased performance, especially if
access is protected by a mutex or similar. In comparison, where there is one key per
possible user, this contention may not exist, but managing these keys may require
more complicated key management machinery.  </t>
            <t>
Minimizing long-term state and the contention that results can also manifest in security
vulnerabilities if contention is not dealt with appropriately. For example, some hash-based
signature schemes require that no nonce ever be reused, as otherwise the private signing key
is immediately revealed. Minimizing the number of private signing keys increases the need
for contention, since if the signer does not properly track signed nonces then key compromise
is possible. Some cryptographic protocols assume techniques to manage such state exist, yet
for practical reasons are not very realistic. Some threshold signature protocols, for example,
may assume that signature nonces are tracked globally across all signing participants, but
implementing such a strongly consistent database for is challenging in practice. The CAP
(consistency, availability, partition-tolerance) theorem [TODO] strongly suggests that such
assumptions are impractical for protocols that require availability, since typically
consistency and partition-tolerance are necessary for security.  </t>
            <t>
In general, long-term state is feasible to maintain provided there is no consequence
for contention, be it a performance consequence due to mutual access or a security
consequence to failure to properly manage this state.</t>
          </li>
          <li>
            <t>Ephemeral state. Minimizing this type of state simplifies the protocol state machine.
As such, minimizing this is useful insofar as it helps minimize the overall cost
of the protocol. A "stateless" protocol, i.e., one in which the state machine does not
encode state across rounds of interaction, is generally the best outcome, as it means
that there is no need to track state across rounds of interaction. A "stateful" protocol
is one in which the state machine does require state that extends beyond rounds of
interaction.  </t>
            <t>
There are significant practical differences between stateful and stateless protocols.
In particular, a stateless protocols maps very cleanly to stateless transport protocols
such as HTTP, making them much easier to deploy in modern application environments than
stateful counterparts. While stateful protocols can be implemented using HTTP as transport,
this requires either storing and managing protocol state in a local database. (An alternate
strategy might be to store state "on the wire," where this state is encrypted for only one
party and then transferred between parties, but this requires replay protection and thefore
yet again some form of local database.)  </t>
            <t>
Not all deployment environments offer some form of local database. Moreover, even for those
that do, the consistency guarantee of the database may not be that which is necessary for
the protocol.</t>
          </li>
        </ol>
      </section>
      <section anchor="round-trips">
        <name>Round Trips</name>
        <t>The benefit of reducing protocol rounds depends on factors. As described in <xref target="memory"/>, minimzing the
number of rounds to exactly one has the benefit of producing a stateless protocol, thereby easing
deployment. Assuming all other functional characteristics (computation cost, memory, etc) stay the same,
reducing the number of rounds decreases the performance profile of the protocol.
However, often reducing the number of rounds negatively affects other aspects of the protocol.
For example, reducing rounds may require more bandwidth per round, more complicated implementation
or cryptography in order to provide the same functionality, or it may require a weaker threat model.</t>
        <t>As an example, some protocols are specified with a notion of preprocessing, wherein one or
more parties do some amount of work a priori, either locally or in collaboration with other
parties, in order to simplify the main online protocol. As an example, the <xref target="FROST"/>
threshold signature protocol consists of two phases, one of which can be done offline by
signing parties in a preprocessing phase. Splitting protocols into an offline and online
phase can help reduce the cost of the online phase, but necessarily requires coordination
between the offline and online phases. As described in <xref target="memory"/>, technologies for
coordination may or may not be available for a particular deployment environment.</t>
        <t>As another example, some applications of zero knowledge proofs involve an offline phase that's
done to minimize the cost of proof generation in the online phase. This split is done for
practical reasons: proof generation without precomputation can be expensive. However, implementations
that use such precomputation are almost always more complicated in practice. Precomputation
is done by some process that's running in the background and separated from processes that
wish to use the output of this precomputation in the online phase. This means there must now
exist some form of IPC between these processes, and, additionally, requires that the process
implementing the online phase implement some form of input validation.</t>
        <t>As a final note, there is little difference between two or more rounds in a stateful protocol
from an implementation perspective. Any protocol which requires two rounds must necessarily
have some mechanism for dealing with state across the rounds, and this mechanism can also be
used for storing state across any subsequent rounds. Thus, practically speaking, unless there
are performance reasons to do so, optimizing a protocol with more complicated cryptography to
reduce the number of rounds from three or more to exactly two is often not a desirable tradeoff.</t>
      </section>
      <section anchor="bandwidth">
        <name>Bandwidth</name>
        <t>Minimizing bandwidth is an important goal of a cryptographic protocol depending on the
deployment environment. Some deployments have access to a transport protocol without
practical bandwidth constraints. Examples of such protocols include applications built
over TLS, QUIC, or HTTP. Such protocols expose streams to applications, where said
streams have no practical input length restrictions. In such settings, reducing bandwidth
can help improve performance by decreasing the time to transfer messages, assuming
the number of rounds, computation, or memory requirements do not increase as a result.
However, in practice, protocols that have no theoretical limit may experience practical
limits:</t>
        <ol spacing="normal" type="1"><li>HTTP implementations can limit the size of headers that are used to convey information
between recipients. As this is an implementation detail, the exact limit is not well
established. Nevertheless, the fact that these limits exist means that protocols using
HTTP in this manner must take precaution.</li>
          <li>TCP segment and QUIC packet sizes have a maximum length, and sending messages that exceed
the size of these lengths means that multiple packets will be sent, some of which are
at the maximum size of each packet. Some networks can react poorly to such packets, e.g.,
by dropping them from an active connection, causing the transport protocol retranmission
logic to retransmit them.</li>
        </ol>
        <t>Some protocols have constraints that are imposed by the underlying protocol. For example,
protocols like DNS have strict message limits codified by the wire format, meaning it
is not possible to exceed these limits. Deployments of post quantum cryptographic solutions
for DNSSEC, especially post quantum signatures, will face these bandwidth limits.
Depending on these limits, alternative cryptographic solutions may be necessary to solve
the problem. One recent example of this is <xref target="MERKLETREECERTS"/>,
wherein effectively all digital signatures in TLS handshake were replaced by compact Merkle Tree proofs.</t>
        <t>Reducing bandwidth to avoid practical or theoretical limits is advantageous. This
is especially true if the bandwidth cost exceeds the bandwidth cost of actual application data.
As an example, Privacy Pass could theoretically use post quantum blind signature protocols
for producing one-time-use anonymous tokens. However, in most practical applications,
the size of these signatures would overshadow the size of application data that accompanies
these tokens, effectively hindering deployment of the solution. In the particular case of
Privacy Pass, this may mean that alternate cryptographic solutions may be required.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>Beyond the functional constraints that one must consider before choosing a
protocol to deploy, there are also practical implementation constraints that
affect deployment, including those that are paid up front to ship a solution,
referred to as bootstrapping costs, and then those that are paid after the
solution has been shipped.</t>
      <section anchor="bootstrapping">
        <name>Bootstrapping</name>
        <t>Implementing new cryptography of any form always has a cost. For example, perhaps the
new cryptography is not yet specified and exists only in academic literature. In this case,
the cost of implementing it requires careful collaboration with cryptographic experts.
In other cases, perhaps the cryptography is well understood and specified, but for licensing
reasons it's not possible to reuse existing implementations. In this case, the cost comes
from re-implementing, which comes with additional risk of introducing bugs not found in
other implementations.</t>
        <t>Even when these bootstrapping costs seem small, they may matter in practice. There are
often time pressures to deliver a solution for the desired problem in a timely manner.
Product deadlines push towards simple and easy-to-implement solutions, sometimes even
ones with less-than-ideal security or privacy properties, over more complicated but
perhaps ultimately better solutions. Cryptographic researchers can help mitigate this
tradeoff in practice by working to ensure that the cost of implementing their work is
minimal. That might mean simplifying protocols, producing technical specifications that
faciliate engineering work, producing verified implementations that are provably correct
with tools such as <xref target="hacspec"/>, or even releasing high quality production software that
could be used without license constraints.</t>
      </section>
      <section anchor="long-term-maintenance">
        <name>Long-Term Maintenance</name>
        <t>Perhaps the most important implementation factor to consider when choosing a cryptographic
solution is the long-term maintenance cost. There are many factors that go into this cost.</t>
        <ol spacing="normal" type="1"><li>
            <t>External dependencies. Implementing a cryptographic solution that is exposed to users
through an API or some other way means that implementations must continue to maintain and update
this functionality over time. If there are bugs or security vulnerabilities, they must be fixed.
External dependencies of this nature tend to inevitably ossify in practice, meaning that it
is difficult to transition users off the solution and towards something better. Cryptographic
solutions with no external users are much easier to manage long term as they do not require
coordination or a more thoughtful deprecation strategy.  </t>
            <t>
It's important to note that external dependencies may not always come in the form of a user
calling some new API. Such dependencies can be through high-level features that are built on
the cryptographic solution. For example, imagine a contact discovery application built on
some version of private information retrieval (PIR). The dependents of the PIR technology
are not necessarily applications that invoke the system, but the end users themselves, who
come to expect certain privacy properties for contact discovery. New cryptographic solutions
may require new conceptual mental models for users that they are unfamiliar with, making it
difficult for end users to meaningfully engage with the system. As a relevant example, it seems
unclear how one would succinctly explain concepts like multiparty computation to a layperson.
The cost of educating and informing such users about relevant details of the system should
be factored in where appropriate.  </t>
            <t>
Another relevant example is the deployment of cryptographic solutions with no obvious
post quantum upgrade path. Consider the design of non-trivial anonymous credential systems
built on pairing-friendly curves, e.g., such as those built with <xref target="BBS"/>
and <xref target="BLS"/> under the hood. Pairings do not currently have a post-quantum
variant. As such, any application that deploys these anonymous credentials potentially
introduces a new feature for users that cannot be replicated in the advent of a post quantum
capable attacker. Deploying technology with such limitations in place ultimately does a
disservice to the end user.</t>
          </li>
          <li>
            <t>Internal dependencies. Implementing new cryptographic solutions that pull in new cryptographic
dependencies is also problematic. Depending on the platform and deployment environment, new
dependencies can be problematic for a number of reasons. They may introduce new code into
production, thereby expanding the attack surface. Auditing or verifying these dependencies
can help, but is imperfect. New dependencies can lead to code and binary bloat, especially
with cryptographic implementations that do not themselves minimize dependencies. Finally,
new internal dependencies mean that these dependencies must be actively maintained going
forward. If there are bugs or security vulnerabilities reported, they must be patched.  </t>
            <t><!-- TODO: ECVRF vs ristretto255-VRF  -->
            </t>
          </li>
          <li>Knowledge cost. Sometimes the engineers that bringup a solution are not those that
maintain a solution long-term. This is often true when, for example, production services
transfer from an engineering team actively building a service to a service reliability
team that maintains it. Successful maintenance of a cryptographic solution generally
requires some working knowledge of this system in order to ease SRE costs, and there is
a cost in transferring this knowledge across teams. This cost is paid in the development of
training, education, and documentation resources, for example. This cost can be paid
through the natural course of product development, or other change in product ownership,
e.g., if an knowledgeable engineer leaves the project or the project is transferred to
another team.</li>
        </ol>
        <t>For these reasons, cryptographic solutions that minimize new dependencies, reuse existing
cryptographic components, and are accommodating to future threat models (such as post quantum
attackers) are highly desirable and, in practice, will often eclipse solutions that offer
only slightly better functional properties. The long-term maintenance costs are bearable
provided the proposed cryptographic solution has noticably better functional, security,
or privacy properties.</t>
      </section>
    </section>
    <section anchor="ecosystem-and-adoption-considerations">
      <name>Ecosystem and Adoption Considerations</name>
      <t>Constraints and considerations for cryptographic solutions also extend to the ecosystem
in which they are deployed. Cryptographic solutions that solve many diverse problems
are generally better than those which are single purpose. As a practical example,
iCloud Private Relay and Private Access Tokens both use blind RSA <xref target="BLINDRSA"/>
as a form of anonymous credential in part because the same protocol could fit multiple
use cases. In fact, blind RSA has been proposed as a solution to more use cases
in practice, including those around anti-abuse for privacy-preserving ad click attribution.
It would have been possible to use VOPRFs for iCloud Private Relay and blind RSA
for Privacy Pass for performance reasons, but implementing fewer cryptographic
primitives offered more value than slight improvements in functional properties.</t>
      <t>Beyond solution reuse, there is also value in implementation reuse. Using blind RSA
as another example, this particular protocol only requires the client and signer
to support the protocol; it does not require the verifier of the protocol to implement
any new cryptography, since most popular cryptographic libraries support RSA signature
verification. This meant that use of blind RSA for these two use cases described above
eased adoption for consumers of blind RSA tokens by not forcing any new cryptographic
solutions onto verifiers.</t>
      <t>Cryptographic solutions sometimes also make inaccurate assumptions about deployment
environments, or fail to factor in properties of existing deployments. For example,
some cryptographic protocols are designed with specific algorithms baked into the
specification, sometimes because these algorithms offer better security properties,
but these algorithms do not have widespread deployment in existing infrastructure.
As an example, most hardware software modules (HSMs) are quite limited in the types
of algorithms they support. For instance, some only support a variety of NIST curves.
As such, in deployments where this limitation exists, cryptographic solutions that
require an elliptic curve as the basis for a prime-order group will lean towards solutions
built on NIST curves, as doing so accommodates existing deployed infrastructure.</t>
      <!-- ## Usability Constraints

XXX: user stuff is hard... protocols that require proper use are less good than those that don't require proper use (this means reusing concepts rather than building cryptography that introduces new concepts for users to grok -->

</section>
    <section anchor="general-recommendations">
      <name>General Recommendations</name>
      <t>This document discusses a number of considerations and constraints that influence
how engineering decisions are made. Again, there is certainly no single set of
standard best practices or recommendations that would guide towards a consistent
outcome. However, there are very general practices that do empirically yield positive
outcomes for the deployment of cryptographic solutions. This section discusses
some of these recommendations.</t>
      <ol spacing="normal" type="1"><li>Always favor simplicity. Simplicity will almost always yield the best outcomes. Simple
protocols and algorithms are easier to understand, implement, and ultimately deploy. Sometimes
we pay for simplicity with lack of generality or forward-looking support, or by lesser
functional properties, but these costs are almost always worth the gains that come from a
conceptually simple protocol.</li>
        <li>Maximize reuse where possible, especially when avoiding reuse only leads to marginal gains.
Reuse typically means less work for implementers to adopt, communicate, and maintain a solution
long term.</li>
        <li>Collaborate. When in doubt, maintain open lines of communication and collaboration with
industry to help navigate the many dimensions of tradeoffs discussed in this document.
This isn't always feasible, especially for industry sectors that work in isolation or
secret, but where feasible, leverage the opportunity.</li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document discusses considerations relevant to the implementation and deployment
of cryptography in practice. The document is effectively a collection of security
considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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">
              <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">
          <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="hacspec" target="https://github.com/hacspec/hacspec">
          <front>
            <title>hacspec: A specification language for crypto primitives in Rust</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="STAR">
          <front>
            <title>STAR: Distributed Secret Sharing for Private Threshold Aggregation Reporting</title>
            <author fullname="Alex Davidson" initials="A." surname="Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Shivan Kaul Sahib" initials="S. K." surname="Sahib">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Peter Snyder" initials="P." surname="Snyder">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="24" month="October" year="2022"/>
            <abstract>
              <t>   Servers often need to collect data from clients that can be privacy-
   sensitive if the server is able to associate the collected data with
   a particular user.  In this document we describe STAR, an efficient
   and secure threshold aggregation protocol for collecting measurements
   from clients by an untrusted aggregation server, while maintaining
   K-anonymity guarantees.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dss-star-02"/>
        </reference>
        <reference anchor="FROST">
          <front>
            <title>Two-Round Threshold Schnorr Signatures with FROST</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>Zcash Foundation</organization>
            </author>
            <author fullname="Chelsea Komlo" initials="C." surname="Komlo">
              <organization>University of Waterloo, Zcash Foundation</organization>
            </author>
            <author fullname="Ian Goldberg" initials="I." surname="Goldberg">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="8" month="May" year="2023"/>
            <abstract>
              <t>   This document specifies the Flexible Round-Optimized Schnorr
   Threshold (FROST) signing protocol.  FROST signatures can be issued
   after a threshold number of entities cooperate to compute a
   signature, allowing for improved distribution of trust and redundancy
   with respect to a secret key.  FROST depends only on a prime-order
   group and cryptographic hash function.  This document specifies a
   number of ciphersuites to instantiate FROST using different prime-
   order groups and hash functions.  One such ciphersuite can be used to
   produce signatures that can be verified with an Edwards-Curve Digital
   Signature Algorithm (EdDSA, as defined in RFC8032) compliant
   verifier.  However, unlike EdDSA, the signatures produced by FROST
   are not deterministic.  This document is a product of the Crypto
   Forum Research Group (CFRG) in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-frost-13"/>
        </reference>
        <reference anchor="MERKLETREECERTS">
          <front>
            <title>Merkle Tree Certificates for TLS</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Devon O'Brien" initials="D." surname="O'Brien">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="10" month="March" year="2023"/>
            <abstract>
              <t>   This document describes Merkle Tree certificates, a new certificate
   type for use with TLS.  A relying party that regularly fetches
   information from a transparency service can use this certificate type
   as a size optimization over more conventional mechanisms with post-
   quantum signatures.  Merkle Tree certificates integrate the roles of
   X.509 and Certificate Transparency, achieving comparable security
   properties with a smaller message size, at the cost of more limited
   applicability.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-davidben-tls-merkle-tree-certs-00"/>
        </reference>
        <reference anchor="BBS">
          <front>
            <title>The BBS Signature Scheme</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Vasilis Kalos" initials="V." surname="Kalos">
              <organization>MATTR</organization>
            </author>
            <author fullname="Andrew Whitehead" initials="A." surname="Whitehead">
              <organization>Portage</organization>
            </author>
            <author fullname="Mike Lodder" initials="M." surname="Lodder">
              <organization>CryptID</organization>
            </author>
            <date day="11" month="March" year="2023"/>
            <abstract>
              <t>   BBS is a digital signature scheme categorized as a form of short
   group signature that supports several unique properties.  Notably,
   the scheme supports signing multiple messages whilst producing a
   single output digital signature.  Through this capability, the
   possessor of a signature is able to generate proofs that selectively
   disclose subsets of the originally signed set of messages, whilst
   preserving the verifiable authenticity and integrity of the messages.
   Furthermore, these proofs are said to be zero-knowledge in nature as
   they do not reveal the underlying signature; instead, what they
   reveal is a proof of knowledge of the undisclosed signature.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-bbs-signatures-02"/>
        </reference>
        <reference anchor="BLS">
          <front>
            <title>BLS Signatures</title>
            <author fullname="Dan Boneh" initials="D." surname="Boneh">
              <organization>Stanford University</organization>
            </author>
            <author fullname="Sergey Gorbunov" initials="S." surname="Gorbunov">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Riad S. Wahby" initials="R. S." surname="Wahby">
              <organization>Carnegie Mellon University</organization>
            </author>
            <author fullname="Hoeteck Wee" initials="H." surname="Wee">
              <organization>NTT Research and ENS, Paris</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Zhenfei Zhang" initials="Z." surname="Zhang">
              <organization>Algorand</organization>
            </author>
            <date day="16" month="June" year="2022"/>
            <abstract>
              <t>   BLS is a digital signature scheme with aggregation properties.  Given
   set of signatures (signature_1, ..., signature_n) anyone can produce
   an aggregated signature.  Aggregation can also be done on secret keys
   and public keys.  Furthermore, the BLS signature scheme is
   deterministic, non-malleable, and efficient.  Its simplicity and
   cryptographic properties allows it to be useful in a variety of use-
   cases, specifically when minimal storage space or bandwidth are
   required.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-bls-signature-05"/>
        </reference>
        <reference anchor="BLINDRSA">
          <front>
            <title>RSA Blind Signatures</title>
            <author fullname="Frank Denis" initials="F." surname="Denis">
              <organization>Fastly Inc.</organization>
            </author>
            <author fullname="Frederic Jacobs" initials="F." surname="Jacobs">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="April" year="2023"/>
            <abstract>
              <t>   This document specifies an RSA-based blind signature protocol.  RSA
   blind signatures were first introduced by Chaum for untraceable
   payments.  A signature that is output from this protocol can be
   verified as an RSA-PSS signature.

   This document is a product of the Crypto Forum Research Group (CFRG)
   in the IRTF.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/chris-wood/draft-wood-cfrg-blind-signatures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-rsa-blind-signatures-12"/>
        </reference>
      </references>
    </references>
    <?line 456?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was motivated by discussions that took place during the Real World
Crypto 2023 conference.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA51965LjyHHu/3oKePaHZh0kpV3LYZ+x7HVvT492QnM73S2v
bId/gECRhBtEUSigOdTEvIufxU928svMKlSB7JZ0FIqd7iZQl6y8fHmp5HK5
NEMztPZV8eK1PbTutLfdUFy7zje17cuhoZ+KjeuL6/50GNy2Lw+7pio+9W5w
lWv9C1Ou1719/P9/vyoHu3X96VXRdBtnTO2qrtzTguq+3AzLit9b1nHwZZUN
vvzVr4wf1/vGe/p1OB3ozbe3929MN+7Xtn9lahr/lcFLtvOjf1VsytZbQyv+
O2PKcdg5eqhYmoL+txnbVia/3vWNH9xhZ/vialX87FzNT7h+W3bNn3hueqp1
Y71py97yh3ZfNu2roiqP/7qz5aHptutm8KvODsZ0rt/TW4+0FoONxt/w4q6s
/MFW8gv+F84kfFBcFfi32TQVT120Zbcdy61l2gqNikPf7BsM6omUxe3ohxfT
gGW/tcOrYjcMB//ql7/cNsNuXK8qt/+lzhH+NcYsl8uiXPuhLyta+fuyOxW9
Ldvi6Pq2pmncurV7T3/749j0tmj2B/qdjoY2XJRdXchh4bdqOvVTUXpzKPuh
cJti2NnCu3bEXlbF267Y2o5OtF3gEwzpi84VnoZo6cGBBi37mohfeMvv69SY
1Jv1qTgSU+2K8nBolUCeFjHYft90lj4shwKcgTerjA/DGjDh2voB5DS0hKYP
21wVr5vNhtZEbJ2NP22UV0GnTqdiy7qgk3gse94+UbC2brPxdOQF0fowDvz2
otjbPfH8oiDeIKo+LHi4Nf3n2NTDDpMfbD80dJS05jKh1XvXW/do+4U54Hho
OS0Rls5t4Ef3jiSjo+c3w5HYsrDdlkhge1rNorDMQ2Xb0ln0bqQZW9dtl6CT
IdbtBtuVXWVppX7wtMbyBJlsR4s//gVUJKLQlEIUW2PPuka7Ku53RGKS7ZEV
RDkMdn+gJROxKmynqCOVN/SK6+kjTBjnN0/Nf8LZhTmLZM7iSDzOnLZ1RCR6
a2dbCKXJV99bb8u+Ir4jpisfmy0pDH4tnh4fTun9SEvmbe7pA0zV2aPBZ8SI
/RYHjrNciQDtm7purTHfEHsPvavHCu8ac3fhaLCFtnmwBUTNQQTAiHusOXnq
nwpLlDoFzmQCGfqs9gmHBNEAQ/aWFBqf5nJN8rVpiPBd2Z58w4S/ICGGZpzL
xKr4UA5jD7ZJxLOn0YmPHL2tYsryU3b+aPtVcaPL9sRYDykpjzvbBTKziCSa
gHRcSedWYj9HYj5azLokTVexYoFUNXY4GZb/qI6g2Wn4BjKIs0hVAx3F9TMf
s5wSm9TYScatb0jV2M8lFNsincFAyqEGTiAgr13V8pMiuyj8CN3k+fFyT3LH
KixRB4ZmU0VQiFwOfXOICpYUAwlsAd3ZVCNZm5n4HdSYrorr+Upb7/LlDjsi
3cBqomV6DP2IY0uYm57U1SeLJ/GzzJdYqhsSceVliclhepw8iTYrgmCorc5i
a317Zd40nfBTenrnK6YD2cJOVpmw5ACA+O7kuhpam+x3x1JGzDE/jssaKz+c
Z7QhBsntXHoeZUsIhrTNnk1U0NXG3OQiXqbsXIkhnAQjaCtLpxI0Fu3isanx
/K7Z7sxjScpwUrfCp9Ees8IMRvkl+JlW+O1TunphpsVg2ulEnxCuo21b7GLa
N6Rmf3A92Wc607d7oTlo0HSV63sySoltwPGuhZwibpiVlUZVeou3duUj7c5W
I9HyZB7HFphg3bRNymC0MH1lVVxBkXbW+4ApkqVngk5WPd1Kbloy5srNOv1Y
NT4uHwYkUV7mgvIiUa2tb7bdDP4Q6SOXYD1RaqGk7p0siY6eVWzB3KdIKbWb
UNxHt3FtDYtKDN+AGG7930RqAn7hBZO9QJq+8dVIVHpOV8oKILdigNmYitYw
kfMFfM5oNNPHl9ltZbBeOlyS1fMFF7MF+7F/tCest+rJSgVdzOcc8UUGAuil
pm1HbI+e37ljUZH4l2CaXMR6RkGDKkRvM/V+RpQjzB3MPU4J+pNxdFGOdcOs
c2n9s1OnIQNPZ1jjuHMG5IbaB7OAhaKwsPJL5dp+Jn8kyMBEblrWb/6GnLj7
j68/woOq2rG24bz5rNZuHGBs9mOn2HVV/Ni7siYR4uWuS2I6/lB+35KvQzhz
HEZBiuQiQefBT6PT3ZVdZ1tBevykTn07cUA8LCZxD0wcOCldWVhsw14UuYTN
I47u1rYlGYbw61VVQb7v3QO5b4vit9b97vW7x+/5AVe8vPnw6erbRXF3f3W7
KP7v799eL4qf6fB+O5K/sCj+47r0u5c/0AM/Ew391eFQ3Hx/Q2LGRwTDWlYP
46F42clK/Y4kq/j46fbNt4Th/gXgjUzqI7YfIP9rglFdw78LRzwQn9K+CYS9
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
P+PLDBRgF9//6vu/A6n12trK/D+Qnbs9Om8AAA==

-->

</rfc>
