<?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.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yun-privacypass-arc-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="Privacy Pass Issuance Protocol for ARC">Privacy Pass Issuance Protocol for Anonymous Rate-Limited Credentials</title>
    <seriesInfo name="Internet-Draft" value="draft-yun-privacypass-arc-00"/>
    <author initials="C." surname="Yun" fullname="Cathie Yun">
      <organization>Apple, Inc.</organization>
      <address>
        <email>cathie@apple.com</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Apple, Inc.</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2025" month="February" day="05"/>
    <abstract>
      <?line 40?>

<t>This document specifies the issuance and redemption protocols for
tokens based on the Anonymous Rate-Limited Credential (ARC) protocol.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-yun-privacypass-arc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        PRIVACYPASS Privacy Pass mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/USER/REPO"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="ARCHITECTURE"/> describes the Privacy Pass architecture, and <xref target="ISSUANCE"/>
and <xref target="AUTHSCHEME"/> describe the issuance and redemption protocols for
basic Privacy Pass tokens, i.e., those computed using blind RSA signatures
(as specified in <xref target="BLIND-RSA"/>) or verifiable oblivious
pseudorandom functions (as specified in <xref target="VOPRFS"/>). These protocols
are widely deployed in practice for a variety of applications, including
anonymous authentication for protocols such as Oblivious HTTP <xref target="OHTTP"/>
and the Distributed Aggregation Protocol <xref target="DAP"/>. While
effective, these variants of Privacy Pass tokens are limited in that
each token can only be spent once. These are often calle "one-time-use" tokens.
This means that applications which wish to limit access to a given user, e.g.,
for the purposes of throttling or rate limiting them, must issue one token
for each redemption.</t>
      <t>The Anonymous Rate-Limited Credential (ARC) protocol, as specified in [TODO],
offers a more scalable approach to rate limiting. In particular, ARC credentials
can be issued once and then presented (or redeemed) up to some fixed-amount
of time for distinct, per-origin presentation contexts. This means that a Client
will only be able to present a limited number of tokens associated with a given
context.</t>
      <t>This document specifies the issuance and redemption protocols for ARC. <xref target="motivation"/>
describes motivation for this new type of token, <xref target="overview"/> presents an overview
of the protocols, and the remainder of the document specifies the protocols themselves.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>To demonstrate how ARC is useful, consider the case where a client wishes to keep
its IP address private while accessing a service. The client can hide its IP
address using a proxy service or a VPN. However, doing so severely limits the
client's ability to access services and content, since servers might not be able
to enforce their policies without a stable and unique client identifier.</t>
      <t>With one-time-use tokens, the server can verify that each client access meets
a particular bar for attestation, i.e., the bar that is enforced during issuance,
but cannot be used by the server to rate limit a specific client. This is because
there is no mechanism in the issuance protocol to link repeated Client token
requests in order to apply rate-limiting.</t>
      <t>There are several use cases for rate-limiting anonymous clients that are common
on the Internet. These routinely use client IP address tracking, among other
characteristics, to implement rate-limiting.</t>
      <t>One example of this use case is rate-limiting website accesses to a client to
help prevent abusive behavior. Operations that are sensitive to abuse, such as
account creation on a website or logging into an account, often employ rate-limiting
as a defense-in-depth strategy. Additional verification can be required by these
pages when a client exceeds a set rate-limit.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the terms Origin, Client, Issuer, and Token as defined in
<xref section="2" sectionFormat="of" target="ARCHITECTURE"/>. Moreover, the following additional terms are
used throughout this document.</t>
      <ul spacing="normal">
        <li>
          <t>Issuer Public Key: The public key (from a private-public key pair) used by
the Issuer for issuing and verifying Tokens.</t>
        </li>
        <li>
          <t>Issuer Private Key: The private key (from a private-public key pair) used by
the Issuer for issuing and verifying Tokens.</t>
        </li>
      </ul>
      <t>Unless otherwise specified, this document encodes protocol messages in TLS
notation from <xref section="3" sectionFormat="of" target="TLS13"/>. Moreover, all constants are in
network byte order.</t>
    </section>
    <section anchor="overview">
      <name>Protocol Overview</name>
      <t>The issuance and redemption protocols defined in this document are built on
the Anonymous Rate-Limited Credential (ARC) protocol. In contrast to the core
Privacy Pass protocols which are one-time-use anonymous credentials, ARC allows
clients to turn a single credential output from an issuance protocol into a
fixed number of unlinkable tokens, each of which are bound to some agreed-upon
public presentation context.</t>
      <t>With ARC, Clients receive TokenChallenge inputs from the redemption protocol
(<xref section="2.1" sectionFormat="comma" target="AUTHSCHEME"/>). If they have a valid credential for the designated
Issuer, Clients can use the TokenChallenge to produce a single token for
presentation. Otherwise, Clients invoke the issuance protocol to obtain a
credential. This interaction is shown below.</t>
      <figure anchor="fig-overview">
        <name>Issuance and Redemption Overview</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="544" viewBox="0 0 544 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,80 L 40,128" fill="none" stroke="black"/>
              <path d="M 40,160 L 40,256" fill="none" stroke="black"/>
              <path d="M 80,48 L 80,80" fill="none" stroke="black"/>
              <path d="M 168,48 L 168,80" fill="none" stroke="black"/>
              <path d="M 216,80 L 216,112" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,176" fill="none" stroke="black"/>
              <path d="M 256,48 L 256,80" fill="none" stroke="black"/>
              <path d="M 312,32 L 312,96" fill="none" stroke="black"/>
              <path d="M 336,48 L 336,80" fill="none" stroke="black"/>
              <path d="M 376,80 L 376,120" fill="none" stroke="black"/>
              <path d="M 376,152 L 376,232" fill="none" stroke="black"/>
              <path d="M 408,48 L 408,80" fill="none" stroke="black"/>
              <path d="M 440,48 L 440,80" fill="none" stroke="black"/>
              <path d="M 472,80 L 472,256" fill="none" stroke="black"/>
              <path d="M 512,48 L 512,80" fill="none" stroke="black"/>
              <path d="M 536,32 L 536,96" fill="none" stroke="black"/>
              <path d="M 312,32 L 536,32" fill="none" stroke="black"/>
              <path d="M 8,48 L 80,48" fill="none" stroke="black"/>
              <path d="M 168,48 L 256,48" fill="none" stroke="black"/>
              <path d="M 336,48 L 408,48" fill="none" stroke="black"/>
              <path d="M 440,48 L 512,48" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 168,80 L 256,80" fill="none" stroke="black"/>
              <path d="M 336,80 L 408,80" fill="none" stroke="black"/>
              <path d="M 440,80 L 512,80" fill="none" stroke="black"/>
              <path d="M 312,96 L 368,96" fill="none" stroke="black"/>
              <path d="M 384,96 L 464,96" fill="none" stroke="black"/>
              <path d="M 480,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 48,128 L 208,128" fill="none" stroke="black"/>
              <path d="M 288,128 L 464,128" fill="none" stroke="black"/>
              <path d="M 40,144 L 176,144" fill="none" stroke="black"/>
              <path d="M 312,144 L 472,144" fill="none" stroke="black"/>
              <path d="M 56,174 L 72,174" fill="none" stroke="black"/>
              <path d="M 56,178 L 72,178" fill="none" stroke="black"/>
              <path d="M 184,174 L 200,174" fill="none" stroke="black"/>
              <path d="M 184,178 L 200,178" fill="none" stroke="black"/>
              <path d="M 40,192 L 128,192" fill="none" stroke="black"/>
              <path d="M 288,192 L 368,192" fill="none" stroke="black"/>
              <path d="M 48,208 L 128,208" fill="none" stroke="black"/>
              <path d="M 296,208 L 376,208" fill="none" stroke="black"/>
              <path d="M 48,240 L 128,240" fill="none" stroke="black"/>
              <path d="M 272,240 L 464,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="472,240 460,234.4 460,245.6" fill="black" transform="rotate(0,464,240)"/>
              <polygon class="arrowhead" points="472,128 460,122.4 460,133.6" fill="black" transform="rotate(0,464,128)"/>
              <polygon class="arrowhead" points="376,192 364,186.4 364,197.6" fill="black" transform="rotate(0,368,192)"/>
              <polygon class="arrowhead" points="208,176 196,170.4 196,181.6" fill="black" transform="rotate(0,200,176)"/>
              <polygon class="arrowhead" points="64,176 52,170.4 52,181.6" fill="black" transform="rotate(180,56,176)"/>
              <polygon class="arrowhead" points="56,208 44,202.4 44,213.6" fill="black" transform="rotate(180,48,208)"/>
              <polygon class="arrowhead" points="48,144 36,138.4 36,149.6" fill="black" transform="rotate(180,40,144)"/>
              <g class="text">
                <text x="44" y="68">Client</text>
                <text x="212" y="68">Attester</text>
                <text x="372" y="68">Issuer</text>
                <text x="476" y="68">Origin</text>
                <text x="248" y="132">Request</text>
                <text x="244" y="148">TokenChallenge</text>
                <text x="128" y="180">Attestation</text>
                <text x="208" y="196">CredentialRequest</text>
                <text x="212" y="212">CredentialResponse</text>
                <text x="216" y="228">|</text>
                <text x="168" y="244">Request</text>
                <text x="208" y="244">+</text>
                <text x="240" y="244">Token</text>
                <text x="216" y="260">|</text>
                <text x="376" y="260">|</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                                      +---------------------------+
+--------+          +----------+      |  +--------+   +--------+  |
| Client |          | Attester |      |  | Issuer |   | Origin |  |
+---+----+          +-----+----+      |  +----+---+   +---+----+  |
    |                     |           +-------|-----------|------ +
    |                     |                   |           |
    |--------------------- Request ---------------------->|
    <----------------- TokenChallenge --------------------+
    |                     |                   |           |
    | <== Attestation ==> |                   |           |
    +----------- CredentialRequest ---------->|           |
    |<---------- CredentialResponse ----------+           |
    |                     |                   |           |
    |----------- Request + Token ------------------------>|
    |                     |                   |           |
]]></artwork>
        </artset>
      </figure>
      <t>Similar to the core Privacy Pass protocols, the TokenChallenge can
be interactive or non-interactive, and per-origin or cross-origin.</t>
      <t>ARC is only compatible with deployment models where the Issuer and Origin
are operated by the same entity (see <xref section="4" sectionFormat="of" target="ARCHITECTURE"/>), as
tokens produced from a credential are not publicly verifiable. The details
of attestation are outside the scope of the issuance protocol; see
<xref section="4" sectionFormat="of" target="ARCHITECTURE"/> for information about how attestation can
be implemented in each of the relevant deployment models.</t>
      <t>The issuance and redemption protocols in this document are built on
<xref target="ARC"/>.</t>
    </section>
    <section anchor="setup">
      <name>Configuration</name>
      <t>ARC Issuers are configured with key material used for issuance and token
verification. Concretely, Issuers run the <tt>SetupServer</tt> function from <xref target="ARC"/>
to produce a private and public key, denoted skI and pkI, respectively.</t>
      <artwork><![CDATA[
skI, pkI = SetupServer()
]]></artwork>
      <t>The Issuer Public Key ID, denoted <tt>issuer_key_id</tt>, is computed as the
SHA-256 hash of the Issuer Public Key, i.e., <tt>issuer_key_id = SHA-256(pkI_serialized)</tt>,
where <tt>pkI_serialized</tt> is the serialized version of <tt>pkI</tt> as described in [Section 4.1 of ARC].</t>
    </section>
    <section anchor="token-challenge-requirements">
      <name>Token Challenge Requirements</name>
      <t>Clients receive challenges for tokens as described in <xref target="AUTHSCHEME"/>.
The HTTP authentication challenge also <bcp14>SHOULD</bcp14> contain the following
additional attribute:</t>
      <ul spacing="normal">
        <li>
          <t>"rate-limit", which contains a JSON number indicating the presentation
limit to use for ARC.</t>
        </li>
      </ul>
    </section>
    <section anchor="credential-issuance-protocol">
      <name>Credential Issuance Protocol</name>
      <t>Issuers provide an Issuer Private and Public Key, denoted <tt>skI</tt> and <tt>pkI</tt>
respectively, used to produce tokens as input to the protocol. See <xref target="setup"/>
for how these keys are generated.</t>
      <t>Clients provide the following as input to the issuance protocol:</t>
      <ul spacing="normal">
        <li>
          <t>Issuer Request URL: A URL identifying the location to which issuance requests
are sent. This can be a URL derived from the "issuer-request-uri" value in the
Issuer's directory resource, or it can be another Client-configured URL. The value
of this parameter depends on the Client configuration and deployment model.
For example, in the 'Joint Origin and Issuer' deployment model, the Issuer
Request URL might correspond to the Client's configured Attester, and the
Attester is configured to relay requests to the Issuer.</t>
        </li>
        <li>
          <t>Issuer name: An identifier for the Issuer. This is typically a host name that
can be used to construct HTTP requests to the Issuer.</t>
        </li>
        <li>
          <t>Issuer Public Key: <tt>pkI</tt>, with a key identifier <tt>token_key_id</tt> computed as
described in <xref target="setup"/>.</t>
        </li>
      </ul>
      <t>Given this configuration and these inputs, the two messages exchanged in
this protocol to produce a credential are described below.</t>
      <section anchor="client-to-issuer-request">
        <name>Client-to-Issuer Request</name>
        <t>Given Origin-provided input <tt>tokenChallenge</tt> and the Issuer Public Key ID <tt>issuer_key_id</tt>,
the Client first creates a credential request message using the <tt>CredentialRequest</tt>
function from <xref target="ARC"/> as follows:</t>
        <artwork><![CDATA[
request_context = concat(tokenChallenge.issuer_name, issuer_key_id)
(clientSecrets, request) = CredentialRequest(request_context)
]]></artwork>
        <t>The Client then creates a TokenRequest structure as follows:</t>
        <artwork><![CDATA[
struct {
  uint16_t token_type = 0xC7D3; /* Type ARC(P-384) */
  uint8_t truncated_issuer_key_id;
  uint8_t encoded_request[Nrequest];
} TokenRequest;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>"token_type" is a 2-octet integer.</t>
          </li>
          <li>
            <t>"truncated_issuer_key_id" is the least significant byte of the <tt>issuer_key_id</tt>
(<xref target="setup"/>) in network byte order (in other words, the last 8
bits of <tt>issuer_key_id</tt>). This value is truncated so that Issuers cannot use
<tt>issuer_key_id</tt> as a way of uniquely identifying Clients; see <xref target="security"/>
and referenced information for more details.</t>
          </li>
          <li>
            <t>"encoded_request" is the Nrequest-octet request, computed as the serialization
of the <tt>request</tt> value as defined in [Section 4.2.1 of ARC].</t>
          </li>
        </ul>
        <t>The Client then generates an HTTP POST request to send to the Issuer Request URL,
with the TokenRequest as the content. The media type for this request is
"application/private-credential-request". An example request for the Issuer Request URL
"https://issuer.example.net/request" is shown below.</t>
        <artwork><![CDATA[
POST /request HTTP/1.1
Host: issuer.example.net
Accept: application/private-credential-response
Content-Type: application/private-credential-request
Content-Length: <Length of TokenRequest>

<Bytes containing the TokenRequest>
]]></artwork>
      </section>
      <section anchor="issuer-to-client-request">
        <name>Issuer-to-Client Request</name>
        <t>Upon receipt of the request, the Issuer validates the following conditions:</t>
        <ul spacing="normal">
          <li>
            <t>The TokenRequest contains a supported token_type equal to value 0xC7D3.</t>
          </li>
          <li>
            <t>The TokenRequest.truncated_token_key_id corresponds to the truncated key ID
of an Issuer Public Key, with corresponding secret key <tt>skI</tt>, owned by
the Issuer.</t>
          </li>
          <li>
            <t>The TokenRequest.encoded_request is of the correct size (<tt>Nrequest</tt>).</t>
          </li>
        </ul>
        <t>If any of these conditions is not met, the Issuer <bcp14>MUST</bcp14> return an HTTP 422
(Unprocessable Content) error to the client.</t>
        <t>If these conditions are met, the Issuer then tries to deserialize
TokenRequest.encoded_request according to [Section 4.2.1 of ARC], yielding <tt>request</tt>.
If this fails, the Issuer <bcp14>MUST</bcp14> return an HTTP 422 (Unprocessable Content)
error to the client. Otherwise, if the Issuer is willing to produce a credential
for the Client, the Issuer completes the issuance flow by an issuance response
as follows:</t>
        <artwork><![CDATA[
response = CredentialResponse(skI, pkI, request)
]]></artwork>
        <t>The Issuer then creates a TokenResponse structured as follows:</t>
        <artwork><![CDATA[
struct {
   uint8_t encoded_response[Nresponse];
} TokenResponse;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>"encoded_response" is the Nresponse-octet encoded issuance response message, computed
as the serialization of <tt>response</tt> as specified in [Section 4.2.2 of ARC].</t>
          </li>
        </ul>
        <t>The Issuer generates an HTTP response with status code 200 whose content
consists of TokenResponse, with the content type set as
"application/private-credential-response".</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/private-credential-response
Content-Length: <Length of TokenResponse>

<Bytes containing the TokenResponse>
]]></artwork>
      </section>
      <section anchor="credential-finalization">
        <name>Credential Finalization</name>
        <t>Upon receipt, the Client handles the response and, if successful, deserializes
the content values <tt>TokenResponse.encoded_response</tt> according to [Section 4.2.2 of ARC]
yielding <tt>response</tt>. If deserialization fails, the Client aborts the protocol.
Otherwise, the Client processes the response as follows:</t>
        <artwork><![CDATA[
credential = FinalizeCredential(clientSecrets, pkI, request, response)
]]></artwork>
        <t>The Client then saves the credential structure, associated with the given Issuer
Name, to use when producing Token values in response to future token challenges.</t>
      </section>
    </section>
    <section anchor="token-redemption-protocol">
      <name>Token Redemption Protocol</name>
      <t>The token redemption protocol takes as input TokenChallenge and presentation limit
values from <xref section="2.1" sectionFormat="comma" target="AUTHSCHEME"/>; the presentation limit is sent as an additional
attribute within the HTTP challenge as described in <xref target="token-challenge-requirements"/>.
Clients use credentials from the issuance protocol in producing tokens
bound to the TokenChallenge. The process for producing a token in this
way, as well as verifying a resulting token, is described in the following sections.</t>
      <section anchor="token-creation">
        <name>Token Creation</name>
        <t>Given a TokenChallenge value as input, denoted <tt>challenge</tt>, a presentation limit,
denoted <tt>presentationLimit</tt>, and a previously computed credential that is valid
for the Issuer identifier in the challenge, denoted <tt>credential</tt>, Clients compute
a credential presentation value as follows:</t>
        <artwork><![CDATA[
presentation_context = concat(challenge_digest, issuer_key_id)
state = MakePresentationState(credential, presentation_context, presentationLimit)
newState, nonce, presentation = Present(state)
]]></artwork>
        <t>Subsequent presentations <bcp14>MUST</bcp14> use the updated state, denoted <tt>newState</tt>. Reusing
the original state will break the presentation unlinkability properties of ARC;
see <xref target="security"/>.</t>
        <t>The resulting Token value is then constructed as follows:</t>
        <artwork><![CDATA[
struct {
    uint16_t token_type = 0xC7D3; /* Type ARC(P-384) */
    uint8_t issuer_key_id[Nid];
    uint32_t presentation_nonce;
    uint8_t presentation[Npresentation];
} Token;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>"token_type" is a 2-octet integer, in network byte order, equal to 0xC7D3.</t>
          </li>
          <li>
            <t>"issuer_key_id" is a Nid-octet identifier for the Issuer Public Key, computed
as defined in <xref target="setup"/>.</t>
          </li>
          <li>
            <t>"presentation_nonce" is a 32-bit encoding of the nonce output from ARC.</t>
          </li>
          <li>
            <t>"presentation" is a Npresentation-octet presentation, set to the serialized
<tt>presentation</tt> value (see [Section 4.3.2 of ARC] for serialiation details).</t>
          </li>
        </ul>
      </section>
      <section anchor="verification">
        <name>Token Verification</name>
        <t>Given a deserialized presentation from the token, denoted <tt>presentation</tt> and
obtained by deserializing a presentation according to [Section 4.3.2 of ARC],
a presentation limit, denoted <tt>presentation_limit</tt>, a presentation nonce
from a token, denoted <tt>nonce</tt>, and the digest of a token challenge, denoted
<tt>challenge_digest</tt>, verifying a Token requires invoking the VerifyPresentation
function from [Section 4.3.3 of ARC] in the following wayz:</t>
        <artwork><![CDATA[
request_context = concat(tokenChallenge.issuer_name, issuer_key_id)
presentation_context = concat(challenge_digest, issuer_key_id)
valid = VerifyPresentation(skI, pkI, request_context, presentation_context, nonce, presentation, presentation_limit)
]]></artwork>
        <t>This function returns True if the CredentialToken is valid, and False otherwise.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Privacy considerations for tokens based on deployment details, such as issuer configuration
and issuer selection, are discussed in <xref section="6.1" sectionFormat="of" target="ARCHITECTURE"/>. Note that ARC
requires a joint Origin and Issuer configuration given that it is privately verifiable.</t>
      <t>ARC offers Origin-Client unlinkability, Issuer-Client unlinkability, and redemption context
unlinkability, as described in <xref section="3.3" sectionFormat="of" target="ARCHITECTURE"/>, with one exception.
While redemption context unlinkability is achieved by re-randomizing credentials every time
they are presented as tokens, there is a reduction in the anonymity set in the case of presentation
nonce collisions, as detailed in <xref section="7.2" sectionFormat="of" target="AUTHSCHEME"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document updates the "Privacy Pass Token Type" Registry with the
following entries.</t>
      <ul spacing="normal">
        <li>
          <t>Value: 0xC7D3</t>
        </li>
        <li>
          <t>Name: ARC (P-384)</t>
        </li>
        <li>
          <t>Token Structure: As defined in <xref section="2.2" sectionFormat="of" target="AUTHSCHEME"/></t>
        </li>
        <li>
          <t>Token Key Encoding: Serialized as described in <xref target="setup"/></t>
        </li>
        <li>
          <t>TokenChallenge Structure: As defined in <xref section="2.1" sectionFormat="of" target="AUTHSCHEME"/></t>
        </li>
        <li>
          <t>Public Verifiability: N</t>
        </li>
        <li>
          <t>Public Metadata: N</t>
        </li>
        <li>
          <t>Private Metadata: N</t>
        </li>
        <li>
          <t>Nk: 0 (not applicable)</t>
        </li>
        <li>
          <t>Nid: 32</t>
        </li>
        <li>
          <t>Reference: This document</t>
        </li>
        <li>
          <t>Notes: None</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ARC">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ARCHITECTURE">
          <front>
            <title>The Privacy Pass Architecture</title>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="J. Iyengar" initials="J." surname="Iyengar"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document specifies the Privacy Pass architecture and requirements for its constituent protocols used for authorization based on privacy-preserving authentication mechanisms. It describes the conceptual model of Privacy Pass and its protocols, its security and privacy goals, practical deployment models, and recommendations for each deployment model, to help ensure that the desired security and privacy goals are fulfilled.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9576"/>
          <seriesInfo name="DOI" value="10.17487/RFC9576"/>
        </reference>
        <reference anchor="AUTHSCHEME">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="S. Valdez" initials="S." surname="Valdez"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document defines an HTTP authentication scheme for Privacy Pass, a privacy-preserving authentication mechanism used for authorization. The authentication scheme specified in this document can be used by Clients to redeem Privacy Pass tokens with an Origin. It can also be used by Origins to challenge Clients to present Privacy Pass tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9577"/>
          <seriesInfo name="DOI" value="10.17487/RFC9577"/>
        </reference>
        <reference anchor="ISSUANCE">
          <front>
            <title>Privacy Pass Issuance Protocols</title>
            <author fullname="S. Celi" initials="S." surname="Celi"/>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="S. Valdez" initials="S." surname="Valdez"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document specifies two variants of the two-message issuance protocol for Privacy Pass tokens: one that produces tokens that are privately verifiable using the Issuer Private Key and one that produces tokens that are publicly verifiable using the Issuer Public Key. Instances of "issuance protocol" and "issuance protocols" in the text of this document are used interchangeably to refer to the two variants of the Privacy Pass issuance protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9578"/>
          <seriesInfo name="DOI" value="10.17487/RFC9578"/>
        </reference>
        <reference anchor="BLIND-RSA">
          <front>
            <title>RSA Blind Signatures</title>
            <author fullname="F. Denis" initials="F." surname="Denis"/>
            <author fullname="F. Jacobs" initials="F." surname="Jacobs"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="October" 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.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9474"/>
          <seriesInfo name="DOI" value="10.17487/RFC9474"/>
        </reference>
        <reference anchor="VOPRFS">
          <front>
            <title>Oblivious Pseudorandom Functions (OPRFs) Using Prime-Order Groups</title>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="A. Faz-Hernandez" initials="A." surname="Faz-Hernandez"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="December" year="2023"/>
            <abstract>
              <t>An Oblivious Pseudorandom Function (OPRF) is a two-party protocol between a client and a server for computing the output of a Pseudorandom Function (PRF). The server provides the PRF private key, and the client provides the PRF input. At the end of the protocol, the client learns the PRF output without learning anything about the PRF private key, and the server learns neither the PRF input nor output. An OPRF can also satisfy a notion of 'verifiability', called a VOPRF. A VOPRF ensures clients can verify that the server used a specific private key during the execution of the protocol. A VOPRF can also be partially oblivious, called a POPRF. A POPRF allows clients and servers to provide public input to the PRF computation. This document specifies an OPRF, VOPRF, and POPRF instantiated within standard prime-order groups, including elliptic curves. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9497"/>
          <seriesInfo name="DOI" value="10.17487/RFC9497"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OHTTP">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="January" year="2024"/>
            <abstract>
              <t>This document describes Oblivious HTTP, a protocol for forwarding encrypted HTTP messages. Oblivious HTTP allows a client to make multiple requests to an origin server without that server being able to link those requests to the client or to identify the requests as having come from the same client, while placing only limited trust in the nodes used to forward the messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9458"/>
          <seriesInfo name="DOI" value="10.17487/RFC9458"/>
        </reference>
        <reference anchor="DAP">
          <front>
            <title>Distributed Aggregation Protocol for Privacy Preserving Measurement</title>
            <author fullname="Tim Geoghegan" initials="T." surname="Geoghegan">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Brandon Pitman" initials="B." surname="Pitman">
              <organization>ISRG</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="February" year="2025"/>
            <abstract>
              <t>   There are many situations in which it is desirable to take
   measurements of data which people consider sensitive.  In these
   cases, the entity taking the measurement is usually not interested in
   people's individual responses but rather in aggregated data.
   Conventional methods require collecting individual responses and then
   aggregating them, thus representing a threat to user privacy and
   rendering many such measurements difficult and impractical.  This
   document describes a multi-party distributed aggregation protocol
   (DAP) for privacy preserving measurement (PPM) which can be used to
   collect aggregate data without revealing any individual user's data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-14"/>
        </reference>
        <reference anchor="RATE-LIMITED">
          <front>
            <title>Rate-Limited Token Issuance Protocol</title>
            <author fullname="Scott Hendrickson" initials="S." surname="Hendrickson">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Jana Iyengar" initials="J." surname="Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez" initials="S." surname="Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="1" month="April" year="2024"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-rate-limit-tokens-06"/>
        </reference>
      </references>
    </references>
    <?line 435?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Tommy Pauly and the authors
of <xref target="RATE-LIMITED"/>
for helpful discussions on rate-limited tokens.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc63LbRrL+P08xK/9YKSbpyHYSh7aSKLITa9eWdCQ6qVQq
ZYHAkMQRCPDgIpmxlWc5z3Ke7HzdPTMYgPRls1mXqwwO5tLT1697Bh4Oh6pO
68yM9c5ZmV5H8VqfRVWlj6uqifLY6LOyqIu4yPSsKPVhXuTrZdFU+jyqzfBF
ukxrk+ij0iQmr9Moq3ZUNJ2W5voT5zs/2lExppoX5XqsqzpRKiniPFqCoKSM
ZvVw3eTDlcy0wkTDqIyHn3+uqma6TKsqLfJ6vULn42eTH1Rc5JXJq6Ya67ps
jMqb5dSUY5VghbECTQ/UtckbPGs9L4tmNdZn58c/HR79cnZ4cYFGmSskHI3L
KM3G+ucfvzNvouUqM6O4WKIZhCzGelHXq2p8717w7t7PP9L8ab1opmP96uLZ
+b3zZ2enaMtAR1VvH/TicPLsYqJU1NSLAjTrIQZonebYzNFI/9Lk/FtYcxTV
i9T4xqKcR3n6e1SDHWN9uMKcA32cxyN+a2QDMY/5Llr5LXRXOBzpn4siCVdZ
lGlVF6uFKTtvsdwHVrn5bmGiVZrPp2ldjXJTK5UX5RLEXTPjIXOIa/h0RJKN
Z+WcRCrtz48nz44mr86fjfX5D0dff/HVl9T+avL84uj5s5e+9Su0Hl9cvDo8
OfJtj5RK81m7jhoOhzqaVnUZxaBgskgrDc1qltBTXa1MnM5SU+l6YXTqVDPK
E02avFwRI/XKampFqqrq4gqqpadRBYXHWxr5UXPQu9jVnp9pJGQt0yTJjFJ3
wL26LJImpvWUevs25MHtrU5MFZfp1NLZsSfSPiwW100JKRDlb986ntzeKmlo
WRdM9i/sGZtN4+66woaBTkdmNMBURWU0lGnV0MabCmLX0yzFpOcXh7pK53lE
FFZqN6o82xPoHKj72/cvjk+eDtHxgGT48KuHt7d7UC59bUp0i6aZ0QUmu07B
YbWqTJMUJegtlnrW5MyzSm+b96fTs/MfLmTSr7/CpCM9WRgQ6nenotLomzQx
2Rp8WWXFWgavSFtSsIWcU6SvozI19VoXM01mk8ZsYbT7PM6aBJsFo50KkOGS
1KUTz9Bys2rihQapp24/+vlkcgZivz2lB6H1i0dWciShpzA9iIv5ejifl2Yu
83r/ibFPD88OyJJA5Gy4Wi2HSbS6vYWlLlLol5nNoB+wBpITbZ+2E+V1RfvZ
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
A06m8rj0RAAA

-->

</rfc>
