<?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.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-signature-key-blinding-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title>Key Blinding for Signature Schemes</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-signature-key-blinding-00"/>
    <author initials="F." surname="Denis" fullname="Frank Denis">
      <organization>Fastly Inc.</organization>
      <address>
        <postal>
          <street>475 Brannan St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>fde@00f.net</email>
      </address>
    </author>
    <author initials="E." surname="Eaton" fullname="Edward Eaton">
      <organization>University of Waterloo</organization>
      <address>
        <postal>
          <street>200 University Av West</street>
          <city>Waterloo</city>
          <country>Canada</country>
        </postal>
        <email>ted@eeaton.ca</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare, Inc.</organization>
      <address>
        <postal>
          <street>101 Townsend St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="June" day="21"/>
    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes extensions to existing digital signature schemes for key blinding.
The core property of signing with key blinding is that a blinded public key and
all signatures produced using the blinded key pair are independent of the
unblinded key pair. Moreover, signatures produced using blinded key pairs
are indistinguishable from signatures produced using unblinded key pairs.
This functionality has a variety of applications, including Tor onion services
and privacy-preserving airdrop for bootstrapping cryptocurrency systems.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cfrg.github.io/draft-irtf-cfrg-signature-key-blinding/draft-irtf-cfrg-signature-key-blinding.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-irtf-cfrg-signature-key-blinding/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CFRG Working Group mailing list (<eref target="mailto:cfrg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cfrg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cfrg/draft-irtf-cfrg-signature-key-blinding"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Digital signature schemes allow a signer to sign a message using a private signing
key and produce a digital signature such that anyone can verify the digital signature
over the message with the public verification key corresponding to the signing key.
Digital signature schemes typically consist of three functions:</t>
      <ul spacing="normal">
        <li>KeyGen: A function for generating a private signing key <tt>skS</tt> and the corresponding
public verification key <tt>pkS</tt>.</li>
        <li>Sign(skS, msg): A function for signing an input message <tt>msg</tt> using a private
signing key <tt>skS</tt>, producing a digital signature <tt>sig</tt>.</li>
        <li>Verify(pkS, msg, sig): A function for verifying the digital signature <tt>sig</tt> over
input message <tt>msg</tt> against a public verification key <tt>pkS</tt>, yielding true if
the signature is valid and false otherwise.</li>
      </ul>
      <t>In some applications, it's useful for a signer to produce digital signatures using
the same long-term private signing key such that a verifier cannot link any two signatures
to the same signer. In other words, the signature produced is independent of the
long-term private-signing key, and the public verification key for verifying the
signature is independent of the long-term public verification key. This type of
functionality has a number of practical applications, including, for example,
in the Tor onion services protocol <xref target="TORDIRECTORY"/> and privacy-preserving airdrop
for bootstrapping cryptocurrency systems <xref target="AIRDROP"/>. It is also necessary for
a variant of the Privacy Pass issuance protocol <xref target="RATELIMITED"/>.</t>
      <t>One way to accomplish this is by signing with a private key which is a function of the
long-term private signing key and a freshly chosen blinding key, and similarly by producing
a public verification key which is a function of the long-term public verification key
and same blinding key. A signature scheme with this functionality is referred to as signing
with key blinding. A signature scheme with key blinding extends a basic digital scheme with
four new functions:</t>
      <ul spacing="normal">
        <li>BlindKeyGen: A function for generating a private blind key.</li>
        <li>BlindPublicKey(pkS, bk): Blind the public verification key <tt>pkS</tt> using the private
blinding key <tt>bk</tt>, yielding a blinded public key <tt>pkR</tt>.</li>
        <li>UnblindPublicKey(pkR, bk): Unblind the public verification key <tt>pkR</tt> using the private
blinding key <tt>bk</tt>.</li>
        <li>BlindKeySign(skS, bk, msg): Sign a message <tt>msg</tt> using the private signing key <tt>skS</tt>
with the private blind key <tt>bk</tt>.</li>
      </ul>
      <t>A signature scheme with key blinding aims to achieve unforgeability and unlinkability.
Informally, unforgeability means that one cannot produce a valid (message, signature)
pair for any blinding key without access to the private signing key. Similarly,
unlinkability means that one cannot distinguish between two signatures produced from
two separate key signing keys, and two signatures produced from the same signing
key but with different blinding keys.</t>
      <t>This document describes extensions to EdDSA <xref target="RFC8032"/> and ECDSA <xref target="ECDSA"/> to enable
signing with key blinding. Security analysis of these extensions is currently underway;
see <xref target="sec-considerations"/> for more details.</t>
      <t>This functionality is also possible with other signature schemes, including some post-quantum
signature schemes <xref target="ESS21"/>, though such extensions are not specified here.</t>
      <section anchor="disclaimer">
        <name>DISCLAIMER</name>
        <t>This document is a work in progress and is still undergoing security analysis.
As such, it <bcp14>MUST NOT</bcp14> be used for real world applications. See <xref target="sec-considerations"/>
for additional information.</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>
      <t>The following terms are used throughout this document to describe the blinding modification.</t>
      <ul spacing="normal">
        <li>
          <tt>G</tt>: The standard base point.</li>
        <li>
          <tt>sk</tt>: A signature scheme private key. For EdDSA, this is a a randomly generated
private seed of length 32 bytes or 57 bytes according to <xref section="5.1.5" sectionFormat="comma" target="RFC8032"/>
or <xref section="5.2.5" sectionFormat="comma" target="RFC8032"/>, respectively. For <xref target="ECDSA"/>, <tt>sk</tt> is a random scalar
in the prime-order elliptic curve group.</li>
        <li>
          <tt>pk(sk)</tt>: The public key corresponding to the private key <tt>sk</tt>.</li>
        <li>
          <tt>concat(x0, ..., xN)</tt>: Concatenation of byte strings.
<tt>concat(0x01, 0x0203, 0x040506) = 0x010203040506</tt>.</li>
        <li>ScalarMult(pk, k): Multiply the public key pk by scalar k, producing a new
public key as a result.</li>
        <li>ModInverse(x, L): Compute the multiplicative inverse of x modulo L.</li>
      </ul>
      <t>In pseudocode descriptions below, integer multiplication of two scalar values is denoted
by the * operator. For example, the product of two scalars <tt>x</tt> and <tt>y</tt> is denoted as <tt>x * y</tt>.</t>
    </section>
    <section anchor="key-blinding">
      <name>Key Blinding</name>
      <t>At a high level, a signature scheme with key blinding allows signers to blind their
private signing key such that any signature produced with a private signing key and blinding
key is independent of the private signing key. Similar to the signing key, the blinding key
is also a private key that remains secret. For example, the blind is a 32-byte or 57-byte
random seed for Ed25519 or Ed448 variants, respectively, whereas the blind for ECDSA over P-256 is
a random scalar in the P-256 group. Key blinding introduces four new functionalities for the signature scheme:</t>
      <ul spacing="normal">
        <li>BlindKeyGen: A function for generating a private blind key.</li>
        <li>BlindPublicKey(pkS, bk): Blind the public verification key <tt>pkS</tt> using the private
blinding key <tt>bk</tt>, yielding a blinded public key <tt>pkR</tt>.</li>
        <li>UnblindPublicKey(pkR, bk): Unblind the public verification key <tt>pkR</tt> using the private
blinding key <tt>bk</tt>.</li>
        <li>BlindKeySign(skS, bk, msg): Sign a message <tt>msg</tt> using the private signing key <tt>skS</tt>
with the private blind key <tt>bk</tt>.</li>
      </ul>
      <t>For a given <tt>bk</tt> produced from BlindKeyGen, correctness requires the following equivalence to hold:</t>
      <artwork><![CDATA[
UnblindPublicKey(BlindPublicKey(pkS, bk), bk) = pkS
]]></artwork>
      <t>Security requires that signatures produced using BlindKeySign are unlinkable from
signatures produced using the standard signature generation function with the same
private key.</t>
    </section>
    <section anchor="ed25519ph-ed25519ctx-and-ed25519">
      <name>Ed25519ph, Ed25519ctx, and Ed25519</name>
      <t>This section describes implementations of BlindPublicKey, UnblindPublicKey, and BlindKeySign as
modifications of routines in <xref section="5.1" sectionFormat="comma" target="RFC8032"/>. BlindKeyGen invokes the key generation
routine specified in <xref section="5.1.5" sectionFormat="comma" target="RFC8032"/> and outputs only the private key.</t>
      <section anchor="blindpublickey-and-unblindpublickey">
        <name>BlindPublicKey and UnblindPublicKey</name>
        <t>BlindPublicKey transforms a private blind bk into a scalar for the edwards25519 group
and then multiplies the target key by this scalar. UnblindPublicKey performs essentially
the same steps except that it multiplies the target public key by the multiplicative
inverse of the scalar, where the inverse is computed using the order of the group L,
described in <xref section="5.1" sectionFormat="comma" target="RFC8032"/>.</t>
        <t>More specifically, BlindPublicKey(pk, bk) works as follows.</t>
        <ol spacing="normal" type="1"><li>Hash the 32-byte private key bk using SHA-512, storing the digest in a 64-octet
large buffer, denoted b. Interpret the lower 32 bytes buffer as a little-endian
integer, forming a secret scalar s. Note that this explicitly skips the buffer
pruning step in <xref section="5.1" sectionFormat="comma" target="RFC8032"/>.</li>
          <li>Perform a scalar multiplication ScalarMult(pk, s), and output the encoding of the
resulting point as the public key.</li>
        </ol>
        <t>UnblindPublicKey(pkR, bk) works as follows.</t>
        <ol spacing="normal" type="1"><li>Compute the secret scalar s from bk as in BlindPublicKey.</li>
          <li>Compute the sInv = ModInverse(s, L), where L is as defined in <xref section="5.1" sectionFormat="comma" target="RFC8032"/>.</li>
          <li>Perform a scalar multiplication ScalarMult(pk, sInv), and output the encoding
of the resulting point as the public key.</li>
        </ol>
      </section>
      <section anchor="blindkeysign">
        <name>BlindKeySign</name>
        <t>BlindKeySign transforms a private key bk into a scalar for the edwards25519 group and a
message prefix to blind both the signing scalar and the prefix of the message used
in the signature generation routine.</t>
        <t>More specifically, BlindKeySign(skS, bk, msg) works as follows:</t>
        <ol spacing="normal" type="1"><li>Hash the private key skS, 32 octets, using SHA-512.  Let h denote the
resulting digest.  Construct the secret scalar s1 from the first
half of the digest, and the corresponding public key A1, as
described in <xref section="5.1.5" sectionFormat="comma" target="RFC8032"/>.  Let prefix1 denote the second
half of the hash digest, h[32],...,h[63].</li>
          <li>Hash the 32-byte private key bk using SHA-512, storing the digest in a 64-octet
large buffer, denoted b. Interpret the lower 32 bytes buffer as a little-endian
integer, forming a secret scalar s2. Let prefix2 denote the second half of
the hash digest, b[32],...,b[63].</li>
          <li>Compute the signing scalar s = s1 * s2 (mod L) and the signing public key A = ScalarMult(G, s).</li>
          <li>Compute the signing prefix as concat(prefix1, prefix2).</li>
          <li>Run the rest of the Sign procedure in <xref section="5.1.6" sectionFormat="comma" target="RFC8032"/> from step (2) onwards
using the modified scalar s, public key A, and string prefix.</li>
        </ol>
      </section>
    </section>
    <section anchor="ed448ph-and-ed448">
      <name>Ed448ph and Ed448</name>
      <t>This section describes implementations of BlindPublicKey, UnblindPublicKey, and BlindKeySign as
modifications of routines in <xref section="5.2" sectionFormat="comma" target="RFC8032"/>. BlindKeyGen invokes the key generation
routine specified in <xref section="5.1.5" sectionFormat="comma" target="RFC8032"/> and outputs only the private key.</t>
      <section anchor="blindpublickey-and-unblindpublickey-1">
        <name>BlindPublicKey and UnblindPublicKey</name>
        <t>BlindPublicKey and UnblindPublicKey for Ed448ph and Ed448 are implemented just as these
routines are for Ed25519ph, Ed25519ctx, and Ed25519, except that SHAKE256 is used instead
of SHA-512 for hashing the secret blind to a 114-byte buffer (and using the lower 57-bytes for
the secret), and the order of the edwards448 group L is as defined in <xref section="5.2.1" sectionFormat="comma" target="RFC8032"/>.</t>
      </section>
      <section anchor="blindkeysign-1">
        <name>BlindKeySign</name>
        <t>BlindKeySign for Ed448ph and Ed448 is implemented just as this routine for Ed25519ph,
Ed25519ctx, and Ed25519, except in how the scalars (s1, s2), public keys (A1, A2),
and message strings (prefix1, prefix2) are computed. More specifically,
BlindKeySign(skS, bk, msg) works as follows:</t>
        <ol spacing="normal" type="1"><li>Hash the private key skS, 57 octets, using SHAKE256(skS, 117).  Let h denote the
resulting digest. Construct the secret scalar s1 from the first
half of the digest, and the corresponding public key A1, as
described in <xref section="5.2.5" sectionFormat="comma" target="RFC8032"/>.  Let prefix1 denote the second
half of the hash digest, h[57],...,h[113].</li>
          <li>Perform the same routine to transform the secret blind bk into a secret
scalar s2, public key A2, and prefix2.</li>
          <li>Compute the signing scalar s = s1 * s2 (mod L) and the signing public key A = ScalarMult(A1, s2).</li>
          <li>Compute the signing prefix as concat(prefix1, prefix2).</li>
          <li>Run the rest of the Sign procedure in <xref section="5.2.6" sectionFormat="comma" target="RFC8032"/> from step (2) onwards
using the modified scalar s, public key A, and string prefix.</li>
        </ol>
      </section>
    </section>
    <section anchor="ecdsa">
      <name>ECDSA</name>
      <t>[[DISCLAIMER: Multiplicative blinding for ECDSA is known to be NOT be SUF-CMA-secure in the presence of an adversary that controls the blinding value. <xref target="MSMHI15"/> describes this in the context of related-key attacks. This variant may likely be removed in followup versions of this document based on further analysis.]]</t>
      <t>This section describes implementations of BlindPublicKey, UnblindPublicKey, and BlindKeySign as
functions implemented on top of an existing <xref target="ECDSA"/> implementation. BlindKeyGen invokes the
key generation routine specified in <xref target="ECDSA"/> and outputs only the private key. In the descriptions
below, let p be the order of the corresponding elliptic curve group used for ECDSA. For example, for
P-256, p = 115792089210356248762697446949407573529996955224135760342422259061068512044369.</t>
      <section anchor="blindpublickey-and-unblindpublickey-2">
        <name>BlindPublicKey and UnblindPublicKey</name>
        <t>BlindPublicKey multiplies the public key pkS by an augmented private key bk yielding a
new public key pkR. UnblindPublicKey inverts this process by multiplying the input public
key by the multiplicative inverse of the augmented bk. Augmentation here maps the private
key bk to another scalar using hash_to_field as defined in <xref section="5" sectionFormat="of" target="H2C"/>,
with DST set to "ECDSA Key Blind", L set to the value corresponding to the target curve,
e.g., 48 for P-256 and 72 for P-384, expand_message_xmd with a hash function matching
that used for the corresponding digital signature algorithm, and prime modulus equal to
the order p of the corresponding curve. Letting HashToScalar denote this augmentation
process, BlindPublicKey and UnblindPublicKey are then implemented as follows:</t>
        <artwork><![CDATA[
BlindPublicKey(pk, bk)   = ScalarMult(pk, HashToScalar(bk))
UnblindPublicKey(pkR, bk) = ScalarMult(pkR, ModInverse(HashToScalar(bk), p))
]]></artwork>
      </section>
      <section anchor="blindkeysign-2">
        <name>BlindKeySign</name>
        <t>BlindKeySign transforms the signing key skS by the private key bk into a new
signing key, skR, and then invokes the existing ECDSA signing procedure. More
specifically, skR = skS * HashToScalar(bk) (mod p).</t>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <!-- replace these with more rigorous definitions -->

<t>The signature scheme extensions in this document aim to achieve unforgeability
and unlinkability. Informally, unforgeability means that one cannot produce a
valid (message, signature) pair for any blinding key without access to the
private signing key. Similarly, unlinkability means that one cannot distinguish
between two signatures produced from two separate key signing keys, and two
signatures produced from the same signing key but with different blinds. Security
analysis of the extensions in this document with respect to these two properties
is currently underway.</t>
      <t>Preliminary analysis has been done for a variant of these extensions used for
identity key blinding routine used in Tor's Hidden Service feature <xref target="TORBLINDING"/>.
For EdDSA, further analysis is needed to ensure this is compliant with the signature
algorithm described in <xref target="RFC8032"/>.</t>
      <t>The constructions in this document assume that both the signing and blinding keys
are private, and, as such, not controlled by an attacker.
<xref target="MSMHI15"/> demonstrate that ECDSA with attacker-controlled multiplicative blinding
for producing related keys can be abused to produce forgeries. In particular,
if an attacker can control the private blinding key used in BlindKeySign, they
can construct a forgery over a different message that validates under a different
public key. One mitigation to this problem is to change BlindKeySign such that the
signature is computed over the input message as well as the blind public key.
However, this would require verifiers to treat both the blind public key
and message as input to their verification interface. The construction in
<xref target="ecdsa"/> does not require this change. However, further analysis is needed to
determine whether or not this construction is safe.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This section contains test vectors for a subset of the signature schemes
covered in this document.</t>
      <section anchor="ed25519-test-vectors">
        <name>Ed25519 Test Vectors</name>
        <t>This section contains test vectors for Ed25519 as described in <xref target="RFC8032"/>.
Each test vector lists the private key and blind seeds, denoted skS and bk
and encoded as hexadecimal strings, along with the public key pkS corresponding
to skS encoded has hexadecimal strings according to <xref section="5.1.2" sectionFormat="comma" target="RFC8032"/>.
Each test vector also includes the blinded public key pkR computed from skS and bk,
denoted pkR and encoded has a hexadecimal string. Finally, each vector includes
the message and signature values, each encoded as hexadecimal strings.</t>
        <artwork><![CDATA[
// Randomly generated private key and blind seed
skS: 875532ab039b0a154161c284e19c74afa28d5bf5454e99284bbcffaa71eebf45
pkS: 3b5983605b277cd44918410eb246bb52d83adfc806ccaa91a60b5b2011bc5973
bk: c461e8595f0ac41d374f878613206704978115a226f60470ffd566e9e6ae73bf
pkR: e52bbb204e72a816854ac82c7e244e13a8fcc3217cfdeb90c8a5a927e741a20f
message: 68656c6c6f20776f726c64
signature: f35d2027f14250c07b3b353359362ec31e13076a547c749a981d0135fce06
7a361ad6522849e6ed9f61d93b0f76428129b9eb3f9c3cd0bfa1bc2a086a5eebd09
]]></artwork>
        <artwork><![CDATA[
// Randomly generated private key seed and zero blind seed
skS: f3348942e77a83943a6330d372e7531bb52203c2163a728038388ea110d1c871
pkS: ada4f42be4b8fa93ddc7b41ca434239a940b4b18d314fe04d5be0b317a861ddf
bk: 0000000000000000000000000000000000000000000000000000000000000000
pkR: 7b8dcabbdfce4f8ad57f38f014abc4a51ac051a4b77b345da45ee2725d9327d0
message: 68656c6c6f20776f726c64
signature: b38b9d67cb4182e91a86b2eb0591e04c10471c1866202dd1b3b076fb86a61
c7c4ab5d626e5c5d547a584ca85d44839c13f6c976ece0dcba53d82601e6737a400
]]></artwork>
      </section>
      <section anchor="ecdsap-384-sha-384-test-vectors">
        <name>ECDSA(P-384, SHA-384) Test Vectors</name>
        <t>This section contains test vectors for ECDSA with P-384 and SHA-384, as
described in <xref target="ECDSA"/>. Each test vector lists the signing and blinding keys,
denoted skS and bk, each serialized as a big-endian integers and encoded
as hexadecimal strings. Each test vector also blinded public key pkR,
encoded as compressed elliptic curve points according to <xref target="ECDSA"/>. Finally,
each vector lists message and signature values, where the message is encoded
as a hexadecimal string, and the signature value is serialized as the
concatenation of scalars (r, s) and encoded as a hexadecimal string.</t>
        <artwork><![CDATA[
// Randomly generated signing and blind private keys
skS: 0e1e4fcc2726e36c5a24be3d30dc6f52d61e6614f5c57a1ec7b829d8adb7c85f456
c30c652d9cd1653cef4ce4da9008d
pkS: 03c66e61f5e12c35568928d9a0ffbc145ee9679e17afea3fba899ed3f878f9e82a8
859ce784d9ff43fea2bc8e726468dd3
bk: 865b6b7fc146d0f488854932c93128c3ab3572b7137c4682cb28a2d55f7598df467
e890984a687b22c8bc60a986f6a28
pkR: 038defb9b698b91ee7f3985e54b57b519be237ced2f6f79408558ff7485bf2d60a2
4dc986b9145e422ea765b56de7c5956
message: 68656c6c6f20776f726c64
signature: 5e5643a8c22b274ec5f776e63ed23ff182c8c87642e35bd5a5f7455ae1a19
a9956795df33e2f8b30150904ef6ba5e7ee4f18cef026f594b4d21fc157552ce3cf6d7ef
c3226b8d8194fc93df1c7f5facafc96daab7c5a0d840fbd3b9342f2ddad
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ECDSA">
          <front>
            <title>Public Key Cryptography for the Financial Services Industry - The Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="2005" month="November"/>
          </front>
          <seriesInfo name="ANSI" value="ANS X9.62-2005"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <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="ESS21" target="https://eprint.iacr.org/2021/963">
          <front>
            <title>Post-Quantum Key-Blinding for Authentication in Anonymity Networks</title>
            <author initials="E." surname="Eaton" fullname="Edward Eaton">
              <organization/>
            </author>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization/>
            </author>
            <author initials="R." surname="Stracovsky" fullname="Roy Stracovsky">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="TORDIRECTORY" target="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">
          <front>
            <title>Tor directory protocol, version 3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AIRDROP" target="https://eprint.iacr.org/2020/676.pdf">
          <front>
            <title>An airdrop that preserves recipient privacy</title>
            <author initials="R. S." surname="Wahby" fullname="Riad S. Wahby">
              <organization/>
            </author>
            <author initials="D." surname="Boneh" fullname="Dan Boneh">
              <organization/>
            </author>
            <author initials="C." surname="Jeffrey" fullname="Christopher Jeffrey">
              <organization/>
            </author>
            <author initials="J." surname="Poon" fullname="Joseph Poon">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TORBLINDING" target="https://www-users.cse.umn.edu/~hoppernj/basic-proof.pdf">
          <front>
            <title>Proving Security of Tor’s Hidden Service Identity Blinding Protocol</title>
            <author initials="N." surname="Hopper" fullname="Nicholas Hopper">
              <organization/>
            </author>
            <date year="2013"/>
          </front>
        </reference>
        <reference anchor="RATELIMITED">
          <front>
            <title>Rate-Limited Token Issuance Protocol</title>
            <author fullname="Scott Hendrickson">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="May" year="2022"/>
            <abstract>
              <t>   This document specifies a variant of the Privacy Pass issuance
   protocol that allows for tokens to be rate-limited on a per-origin
   basis.  This enables origins to use tokens for use cases that need to
   restrict access from anonymous clients.

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/tfpauly/privacy-proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-privacypass-rate-limit-tokens-02"/>
        </reference>
        <reference anchor="MSMHI15">
          <front>
            <title>On the Security of the Schnorr Signature Scheme and DSA Against Related-Key Attacks</title>
            <author fullname="Hiraku Morita" initials="H." surname="Morita">
              <organization/>
            </author>
            <author fullname="Jacob C. N. Schuldt" initials="J." surname="Schuldt">
              <organization/>
            </author>
            <author fullname="Takahiro Matsuda" initials="T." surname="Matsuda">
              <organization/>
            </author>
            <author fullname="Goichiro Hanaoka" initials="G." surname="Hanaoka">
              <organization/>
            </author>
            <author fullname="Tetsu Iwata" initials="T." surname="Iwata">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Information Security and Cryptology - ICISC 2015" value="pp. 20-35"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-30840-1_2"/>
        </reference>
        <reference anchor="H2C">
          <front>
            <title>Hashing to Elliptic Curves</title>
            <author fullname="Armando Faz-Hernandez">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Sam Scott">
              <organization>Cornell Tech</organization>
            </author>
            <author fullname="Nick Sullivan">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Riad S. Wahby">
              <organization>Stanford University</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date day="15" month="June" year="2022"/>
            <abstract>
              <t>   This document specifies a number of algorithms for encoding or
   hashing an arbitrary string to a point on an elliptic curve.  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-hash-to-curve-16"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Dennis Jackson for helpful discussions
that informed the development of this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
