<?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-ietf-privacypass-architecture-09" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="Privacy Pass Architecture">The Privacy Pass Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-09"/>
    <author initials="A." surname="Davidson" fullname="Alex Davidson">
      <organization>LIP</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>alex.davidson92@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar">
      <organization>Fastly</organization>
      <address>
        <email>jri@fastly.com</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</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="December" day="08"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies the Privacy Pass architecture and requirements for
its constituent protocols used for constructing anonymous-credential
authentication mechanisms. It provides recommendations on how the architecture
should be deployed to ensure the privacy of clients and the security of all
participating entities.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Privacy Pass is an architecture for authorization based on anonymous-credential
authentication mechanisms. Typical approaches for authorizing clients,
such as through the use of long-term cookies, are not privacy-friendly
since they allow servers to track clients across sessions and interactions.
Privacy Pass takes a different approach: instead of presenting linkable
state carrying information to servers, e.g., a cookie indicating whether
or not the client is an authorized user or has completed some prior
challenge, clients present unlinkable proofs that attest to this information.
These proofs, or tokens, are anonymous in the sense that a given token cannot
be linked to the protocol instance in which that token was initially issued.</t>
      <t>At a high level, the Privacy Pass architecture consists of two protocols:
issuance and redemption. The issuance protocol runs between an endpoint referred
to as a Client and two functions in the Privacy Pass architecture:
Attestation and Issuance. These two network functions can be implemented by the
same protocol participant, but can also be implemented separately. The entity that
implements Issuance, referred to as the Issuer, is responsible for issuing tokens in
response to requests from Clients. The entity that implements Attestation, referred to
as the Attester, is responsible for attesting to properties about
the Client for which tokens are issued. The Issuer needs to be
trusted by the server that later redeems the token. Attestation can be
performed by the Issuer or by an Attester that is trusted by the Issuer.
Clients might prefer to select different Attesters, separate from the Issuer,
to be able to use preferred authentication methods or to improve privacy by not
directly communicating with an Issuer. Depending on the attestation,
Attesters can store state about a Client, such as the number of overall tokens
issued thus far. As an example of an issuance protocol, in the original Privacy
Pass protocol <xref target="PPSRV"/><xref target="PPEXT"/>, tokens were only issued to Clients that solved
CAPTCHAs. In this context, the Attester attested that some client solved a
CAPTCHA and the resulting token produced by the Issuer was proof of this fact.</t>
      <t>The redemption protocol runs between Client and Origin (server). It allows
Origins to challenge Clients to present one or more tokens for authorization.
Depending on the type of token, e.g., whether or not it can be cached, the
Client either presents a previously obtained token or invokes the issuance
protocol to acquire one for authorization.</t>
      <t>The issuance and redemption protocols operate in concert as shown in
the figure below.</t>
      <figure anchor="fig-overview">
        <name>Privacy Pass Architectural Components</name>
        <artwork><![CDATA[
      Origin          Client        Attester          Issuer
  /---------------------------------------------------------------------
  |                  /-----------------------------------------\
  | TokenChallenge --> Attest --->                             |
  |                  | TokenRequest --------------->           |
  |   Redemption     |                              (validate) | Issuance
  |      Flow        |                              (evaluate) |   Flow
  |                  |     <-------------------  TokenResponse |
  |     <---- Token  |                                         |
  |                  \-----------------------------------------/
  \---------------------------------------------------------------------
]]></artwork>
      </figure>
      <t>This document describes requirements for both issuance and redemption
protocols. It also provides recommendations on how the architecture
should be deployed to ensure the privacy of clients and the security of
all participating entities.</t>
      <t>The privacypass working group is working on
<xref target="HTTP-Authentication"/> as an instantiation
of a redemption protocol and <xref target="ISSUANCE"/> as an
instantiation of the issuance protocol.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.</t>
      <ul spacing="normal">
        <li>Client: An entity that seeks authorization to an Origin.</li>
        <li>Origin: An entity that redeems tokens presented by Clients.</li>
        <li>Issuer: An entity that issues tokens to Clients for properties
attested to by the Attester.</li>
        <li>Attester: An entity that attests to properties of Client for the
purposes of token issuance.</li>
      </ul>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The Privacy Pass architecture consists of four logical entities --
Client, Origin, Issuer, and Attester -- that work in concert as
shown in <xref target="introduction"/> for token issuance and redemption. This
section describes the purpose of token issuance and redemption
and the requirements therein on the relevant participants.</t>
      <section anchor="redemption-protocol">
        <name>Redemption Protocol</name>
        <t>The redemption protocol is an authorization protocol wherein Clients present tokens
to Origins for authorization. Normally, redemption follows a challenge-response flow,
wherein the Origin challenges Clients for a token and, if possible, Clients present
a valid token for the challenge in response. Alternatively, when configured to do so,
Clients may opportunistically present tokens to Origins without a corresponding challenge.</t>
        <t>The context in which an Origin challenges a Client for a token is referred to
as the redemption context. This context includes all information associated with
the redemption event, such as the timestamp of the event, Client visible information
(including the IP address), and the Origin name.</t>
        <t>The challenge controls the type of token that the Origin will accept for the
given resource. As described in <xref target="HTTP-Authentication"/>,
there are a number of ways in which the token may vary, including:</t>
        <ul spacing="normal">
          <li>Issuance protocol. The token identifies the type of issuance protocol
required for producing the token. Different issuance protocols have different
security properties, e.g., some issuance protocols may produce tokens that
are publicly verifiable, whereas others may not have this property.</li>
          <li>Issuer identity. Tokens identify which Issuers are trusted for a given
issuance protocol. Each Issuer, in turn, determines which Attesters it is
willing to accept in the issuance protocol. This means that if an Origin
origin.example accepts tokens issued by Issuer issuer.example, and that
Issuer in turn accepts different types of attestation from more than one
trusted Attester, then a Client may use either of these trusted Attesters
to issue and redeem tokens for origin.example. However, origin.example neither
explicitly specifies nor learns the Attesters or their attestation formats
used for token issuance.</li>
          <li>Redemption context. Tokens can be bound to a given redemption context, which
influences a client's ability to pre-fetch and cache tokens. For example,
an empty redemption context always allows tokens to be issued and redeemed
non-interactively, whereas a fresh and random redemption context means
that the redeemed token must be issued only after the client receives the challenge.
See Section 2.1.1 of <xref target="HTTP-Authentication"/> for more details.</li>
          <li>Per-Origin or cross-Origin. Tokens can be constrained to the Origin for
which the challenge originated (referred to as per-Origin tokens), or
can be used across multiple Origins (referred to as cross-Origin tokens).
The set of Origins for which a cross-Origin token is applicable is referred
to as the cross-Origin set.</li>
        </ul>
        <t>Origins that admit cross-Origin tokens bear some risk of allowing tokens
issued for one Origin to be spent in an interaction with another Origin.
In particular, depending on the use case, Origins may need to maintain
state to track redeemed tokens. For example, Origins that accept cross-Origin
tokens across shared redemption contexts SHOULD track which tokens have been
redeemed already in those redemption contexts, since these tokens can
be issued and then spent multiple times in response to any such challenge.
See Section 2.1.1 of <xref target="HTTP-Authentication"/> for discussion.</t>
      </section>
      <section anchor="issuance-protocol">
        <name>Issuance Protocol</name>
        <t>The issuance protocol embodies the core of Privacy Pass. It takes as input
a challenge from the redemption protocol and produces a token, as shown
in the figure below.</t>
        <figure anchor="fig-issuance">
          <name>Issuance Overview</name>
          <artwork><![CDATA[
  Origin          Client        Attester          Issuer

                  +--------------------------------------\
    Challenge ----> Attest ------->                      |
                  | TokenRequest ------------------>     |
                  |                            (validate)|
                  |                            (evaluate)|
      Token  <----+  <-------------------  TokenResponse |
                  |--------------------------------------/
]]></artwork>
        </figure>
        <t>Clients interact with the Attester and Issuer to produce a token in response to
a challenge. The context in which an Attester vouches for a Client during issuance
is referred to as the attestation context. This context includes all information
associated with the issuance event, such as the timestamp of the event and
Client visible information, including the IP address or other information specific
to the type of attestation done.</t>
        <t>Each issuance protocol may be different, e.g., in the number and types of
participants, underlying cryptographic constructions used when issuing tokens,
and even privacy properties.</t>
        <t>Clients initiate the issuance protocol using the challenge, a randomly
generated nonce, and public key for the Issuer, all of which are the Client's
private input to the protocol and ultimately bound to an output Token;
see Section 2.2. of <xref target="HTTP-Authentication"/> for details. Future specifications
may change or extend the Client's input to the issuance protocol to produce
Tokens with a different structure.</t>
        <t>The issuance protocol itself can be any interactive protocol between Client,
Issuer, or other parties that produces a valid authenticator over the Client's
private input, subject to the following security requirements.</t>
        <ol spacing="normal" type="1"><li>Unconditional input secrecy. The issuance protocol MUST NOT reveal anything
about the Client's private input, including the challenge and nonce, to the
Attester or Issuer, regardless of the hardness assumptions of the underlying
cryptographic protocol(s). The issuance protocol can reveal the Issuer public
key for the purposes of determining which private key to use in producing the
token.</li>
          <li>One-more forgery security. The issuance protocol MUST NOT allow malicious
Clients or Attesters (acting as Clients) to forge tokens offline or otherwise
without interacting with the Issuer directly.</li>
          <li>Concurrent security. The issuance protocol MUST be safe to run concurrently
with arbitrarily many Clients, Attesters and Issuers.</li>
        </ol>
        <t>See <xref target="extensions"/> for requirements on new issuance protocol variants and related
extensions.</t>
        <t>Clients obtain the Issuer public key directly from the Origin using the process
described in <xref target="HTTP-Authentication"/>. Clients MAY apply some form of key
consistency check to determine if this public key is consistent and correct for
the specified Issuer. See <xref target="CONSISTENCY"/> for example
mechanisms. Depending on the deployment, the Attester might assist the Client
in applying these consistency checks across clients.</t>
        <t>Depending on the use case, issuance may require some form of Client
anonymization service, similar to an IP-hiding proxy, so that Issuers cannot
learn information about Clients. This can be provided by an explicit
participant in the issuance protocol, or it can be provided via external means,
such as through the use of an IP-hiding proxy service like Tor. In general,
Clients SHOULD minimize or remove identifying information where possible when
invoking the issuance protocol.</t>
        <t>Issuers MUST NOT issue tokens for Clients through untrusted Attesters. This is
important because the Attester's role is to vouch for trust in
privacy-sensitive Client information, such as account identifiers or IP address
information, to the Issuer. Tokens produced by an Issuer that admits issuance
for any type of attestation cannot be relied on for any specific property.
See <xref target="attester-role"/> for more details.</t>
        <section anchor="attester-role">
          <name>Attester Role</name>
          <t>Attestation is an important part of the issuance protocol. Attestation is the
process by which an Attester bears witness to, confirms, or authenticates a
Client so as to verify a property about the Client that is required for
Issuance. Examples of attestation properties include, though are not limited
to:</t>
          <ul spacing="normal">
            <li>Capable of solving a CAPTCHA. Clients that solve CAPTCHA challenges can be
attested to have this capability for the purpose of being ruled out as a bot
or otherwise automated Client.</li>
            <li>Client state. Clients can be associated with state and the attester can
attest to this state. Examples of state include the number of issuance
protocol invocations, the Client's geographic region, and whether the
client has a valid application-layer account.</li>
            <li>Trusted device. Some Clients run on trusted hardware that are capable of
producing device-level attestation statements.</li>
          </ul>
          <t>Each of these attestation types has different security properties. For example,
attesting to having a valid account is different from attesting to running on
trusted hardware. In general, minimizing the set of attestation formats helps
minimize the amount of information leaked through a token.</t>
          <t>Each attestation format also has an impact on the overall system privacy.
Requiring a conjunction of attestation types could decrease the overall
anonymity set size. For example, the number of Clients that have solved a
CAPTCHA in the past day, that have a valid account, and that are running on a
trusted device is less than the number of Clients that have solved a CAPTCHA in
the past day. Attesters SHOULD not admit attestation types that result in small
anonymity sets.</t>
          <t>The trustworthiness of attesters depends on their ability to correctly and
reliably perform attestation during the issuance protocol. However, certain
types of attestation can vary in value over time, e.g., if the attestation
process is compromised or maliciously automated. These are considered
exceptional events and require configuration changes to address the underlying
cause. For example, if attestation is compromised because of a zero-day exploit
on compliant devices, then the corresponding attestation format should be
untrusted until the exploit is patched. Addressing changes in attestation
quality is therefore a deployment-specific task. In Split Attester and Issuer
deployments (see <xref target="deploy-split"/>), Issuers can choose to remove compromised
Attesters from their trusted set until the compromise is patched.</t>
        </section>
        <section anchor="issuer-role">
          <name>Issuer Role</name>
          <t>Issuers MUST be uniquely identifiable by all Clients with a consistent
identifier. In a web context, this identifier might be the Issuer host name. As
discussed in <xref target="privacy"/>, ecosystems that admit a large number of Issuers can
lead to privacy concerns for the Clients in the ecosystem. Therefore, in
practice, the number of Issuers should be bounded. The actual Issuers can be
replaced with different Issuers as long as the total never exceeds these
bounds. Moreover, Issuer replacements also have an effect on client anonymity
that is similar to when a key rotation occurs. See <xref target="privacy"/> for more details
about maintaining privacy with multiple Issuers.</t>
          <section anchor="key-management">
            <name>Key Management</name>
            <t>Issuers maintain an issuance key pair for the issuance protocol.
The Issuer public key is made available to all Clients in such
a way that key rotations and other updates are publicly visible.
See <xref target="key-rotation-privacy"/> for more considerations around
Issuer key rotation. The key material and protocol configuration
that an Issuer uses to produce tokens corresponds to two different
pieces of information.</t>
            <ul spacing="normal">
              <li>The issuance protocol in use; and</li>
              <li>The public keys that are active for the Issuer.</li>
            </ul>
            <t>The way that the Issuer publishes and maintains this information impacts
the effective privacy of the clients; see <xref target="privacy"/> for more details.
The fundamental requirement for key management and discovery is that Issuers
cannot target specific clients with unique keys without detection. There
are a number of ways in which this might be implemented:</t>
            <ul spacing="normal">
              <li>Servers use a verifiable, tamper-free registry from which clients discover
keys. Similar to related mechanisms and protocols such as Certificate
Transparency <xref target="RFC6962"/>, this may require external auditors or additional
client behavior to ensure the registry state is consistent for all clients.</li>
              <li>Clients use an anonymity-preserving tool such as Tor to discover keys
from multiple network vantage points. This is done to ensure consistent
keys to seemingly different clients.</li>
              <li>Clients embed Issuer keys into software.</li>
            </ul>
            <t>As above, specific mechanisms for key management and discovery are out of scope
for this document.</t>
          </section>
        </section>
        <section anchor="metadata">
          <name>Metadata</name>
          <t>Certain instantiations of the issuance protocol may permit public or private
metadata to be cryptographically bound to a token. As an example, one
trivial way to include public metadata is to assign a unique issuer
public key for each value of metadata, such that N keys yields log2(N)
bits of metadata. The total amount of metadata bits included in a token
is the sum of public and private metadata bits.</t>
          <t>Public metadata is that which clients can observe as part of the token
issuance flow. Public metadata can either be transparent or opaque. For
example, transparent public metadata is a value that the client either
generates itself, or the Issuer provides during the issuance flow and
the client can check for correctness. Opaque public metadata is metadata
the client can see but cannot check for correctness. As an example, the
opaque public metadata might be a "fraud detection signal", computed on
behalf of the Issuer, during token issuance. In normal circumstances,
Clients cannot determine if this value is correct or otherwise a tracking
vector.</t>
          <t>Private metadata is that which Clients cannot observe as part of the token
issuance flow. Such instantiations may be built on the Private Metadata Bit
construction from Kreuter et al. <xref target="KLOR20"/>
or the attribute-based VOPRF from Huang et al. <xref target="HIJK21"/>.</t>
          <t>Metadata may also be arbitrarily long or bounded in length. The amount of
permitted metadata may be determined by application or by the underlying
cryptographic protocol.</t>
        </section>
        <section anchor="extensions">
          <name>Issuance Protocol Extensibility</name>
          <t>The Privacy Pass architecture and ecosystem are both intended to be receptive to
extensions that expand the current set of functionalities through new issuance
protocols. Each issuance protocol MUST include a detailed analysis of the
privacy impacts of the extension, why these impacts are justified, and
guidelines on how to deploy the protocol to minimize any privacy impacts.
Any extension to the Privacy Pass protocol MUST adhere to the guidelines
specified in <xref target="issuer-role"/> for managing Issuer public key data.</t>
        </section>
      </section>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <t>A Client uses Privacy Pass to separate attestation context and redemption
context. Linking or combining these contexts can reveal sensitive information
about the Client, including their identity or browsing history. Depending on
the deployment model, separating these contexts can take different forms. The
Origin, Attester, and Issuer portrayed in <xref target="fig-overview"/> can be instantiated
and deployed in a number of ways. This section covers some expected deployment
models and their corresponding security and privacy considerations.</t>
      <t>The discussion below assumes non-collusion between entities that have access to
the attestation context and entities that have access to the redemption context, as collusion between such entities
would enable linking of these contexts. Generally, this means that entities operated
by separate parties do not collude. Mechanisms for enforcing non-collusion are out of
scope for this architecture.</t>
      <section anchor="deploy-shared">
        <name>Shared Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by the same entity,
as shown in the figure below.</t>
        <figure anchor="fig-deploy-shared">
          <name>Shared Deployment Model</name>
          <artwork><![CDATA[
                   +------------------------------------------+
      Client       |  Attester         Issuer         Origin  |
        |          |                                          |
        |          |          Challenge                       |
        <----------------------------------------------+      |
        |          | Attest                                   |
        +----------------->                                   |
        |          |     TokenRequest                         |
        +-------------------------------->                    |
        |          |     TokenResponse                        |
        <--------------------------------+                    |
        |          |          Redeem                          |
        +---------------------------------------------->      |
                   +------------------------------------------+
]]></artwork>
        </figure>
        <t>This model represents the initial deployment of Privacy Pass, as described in <xref target="PPSRV"/>.
In this model, the Attester, Issuer, and Origin share the attestation and redemption contexts.
As a result, attestation mechanisms that can uniquely identify a Client, e.g., requiring
that Clients authenticate with some type of application-layer account, are not appropriate,
as they could be used to learn or reconstruct a Client's browsing history.</t>
        <t>Attestation and redemption context unlinkability requires that these events be
separated over time, such as through the use of tokens with an empty redemption
context, or be separated over space, such as through the use of an anonymizing
proxy when connecting to the Origin.</t>
      </section>
      <section anchor="deploy-joint-issuer">
        <name>Joint Attester and Issuer</name>
        <t>In this model, the Attester and Issuer are operated by the same entity
that is separate from the Origin, as shown in the figure below.</t>
        <figure anchor="fig-deploy-joint-issuer">
          <name>Joint Attester and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +---------------------------+   |           |
        |          |  Attester         Issuer  |   |           |
        |          |                           |   |           |
        |          | Attest                    |   |           |
        +----------------->                    |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          +---------------------------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This model is useful if an Origin wants to offload attestation and issuance to a
trusted entity. In this model, the Attester and Issuer share an attestation
context for the Client, which can be separate from the Origin's redemption
context.</t>
        <t>For certain types of issuance protocols, this model separates attestation and redemption
contexts. However, issuance protocols that require the Issuer to learn information about
the Origin, such as that which is described in <xref target="RATE-LIMITED"/>,
are not appropriate since they could link attestation and redemption contexts through the Origin name.</t>
      </section>
      <section anchor="deploy-joint-origin">
        <name>Joint Origin and Issuer</name>
        <t>In this model, the Origin and Issuer are operated by the same entity, separate from
the Attester, as shown in the figure below. The Issuer accepts token requests that come
from trusted Attesters. Depending on the issuance protocol, the Attester may relay these
requests between Client and Issuer over an authenticated channel, or trust may be established
in some other manner.</t>
        <figure anchor="fig-deploy-joint-origin">
          <name>Joint Origin and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                    +--------------------------+
      Client                        |   Issuer         Origin  |
        |                Challenge  |                          |
        <-----------------------------------------------+      |
        |                           |                          |
        |          +-----------+    |                          |
        |          |  Attester |    |                          |
        |          |           |    |                          |
        |          | Attest    |    |                          |
        +----------------->    |    |                          |
        |          |           |    |                          |
        |          |     TokenRequest                          |
        +-------------------------------->                     |
        |          |           |    |                          |
        |          |     TokenResponse                         |
        <--------------------------------+                     |
        |          |           |    |                          |
        |          +-----------+    |                          |
        |                           |                          |
        |                 Redeem    |                          |
        +----------------------------------------------->      |
                                    +--------------------------+
]]></artwork>
        </figure>
        <t>This model is useful for Origins that require Client-identifying attestation,
e.g., through the use of application-layer account information, but do not
otherwise want to learn information about individual Clients beyond what is
observed during the token redemption, such as Client IP addresses.</t>
        <t>In this model, attestation and redemption contexts are separate. As a result,
any type of attestation is suitable in this model. Moreover, any type of token
challenge is suitable assuming there is more than one Origin involved, since no
single party will have access to the identifying Client information and unique
Origin information. If there is only a single Origin, then per-Origin tokens
are not appropriate in this model, since the Attester can learn the redemption
context. However, the Attester does not learn whether a token is per-Origin or
cross-Origin.</t>
      </section>
      <section anchor="deploy-split">
        <name>Split Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by different entities,
as shown in the figure below. As with the joint Origin and Issuer model, the Issuer
accepts token requests that come from trusted Attesters, and the details of that
trust establishment depend on the issuance protocol.</t>
        <figure anchor="fig-deploy-split">
          <name>Split Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +-----------+                   |           |
        |          |  Attester |                   |           |
        |          |           |                   |           |
        |          | Attest    |    +----------+   |           |
        +----------------->    |    |  Issuer  |   |           |
        |          |           |    |          |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |           |    |          |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          |           |    |          |   |           |
        |          +-----------+    +----------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This is the most general deployment model, and is necessary for some
types of issuance protocols where the Attester plays a role in token
issuance; see <xref target="RATE-LIMITED"/> for one such type of issuance protocol.
In this model, the Attester, Issuer, and Origin have a separate view
of the Client: the Attester sees potentially sensitive Client identifying
information, such as account identifiers or IP addresses, the Issuer
sees only the information necessary for issuance, and the Origin sees
token challenges, corresponding tokens, and Client source information,
such as their IP address. As a result, attestation and redemption contexts
are separate, and therefore any type of token challenge is suitable in
this model as long as there is more than a single Origin. As in the
Joint Origin and Issuer model in <xref target="deploy-joint-origin"/>, if there is
only a single Origin, then per-Origin tokens are not appropriate.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>A Client uses Privacy Pass to separate attestation context and redemption
context. Depending on the deployment model, this can take different forms.
For example, any Client can only remain private relative to the entire
space of other Clients using the protocol. Moreover, by owning tokens for
a given set of keys, the Client's anonymity set shrinks to the total number
of Clients controlling tokens for the same keys.</t>
      <t>In the following, we consider the possible ways that Issuers can leverage their
position to try and reduce the size of the anonymity sets to which Clients
belong, often by segregating Clients. For each case, we provide mitigations that
the Privacy Pass ecosystem must implement to prevent these actions.</t>
      <section anchor="metadata-privacy-implications">
        <name>Metadata Privacy Implications</name>
        <t>Any metadata bits of information can be used to further segment the
size of the Client's anonymity set. Any Issuer that wanted to
track a single Client could add a single metadata bit to Client tokens. For
the tracked Client it would set the bit to <tt>1</tt>, and <tt>0</tt> otherwise. Adding
additional bits provides an exponential increase in tracking granularity
similarly to introducing more Issuers (though with more potential
targeting).</t>
        <t>For this reason, the amount of metadata used by an Issuer in creating
redemption tokens must be taken into account -- together with the bits
of information that Issuers may learn about Clients otherwise. Since this
metadata may be useful for practical deployments of Privacy Pass, Issuers
must balance this against the reduction in Client privacy. In general,
bounding the metadata permitted ensures that it cannot uniquely identify individual
Clients.</t>
      </section>
      <section anchor="key-rotation-privacy">
        <name>Issuer Key Rotation</name>
        <t>Issuer key rotation is important to hedge against long-term private key
compromise. If an Issuer realizes that a key compromise has occurred then the
Issuer should generate a new key and make it available to Clients. If
possible, it should invoke any revocation procedures that may apply for
the old key.</t>
        <t>Key rotation can also be used to segment Client anonymity sets. In
particular, when an Issuer rotates their key, any Client that invokes the
issuance protocol in this key cycle will be part of a group of possible Clients
owning valid tokens for this key. To mechanize this attack strategy, an Issuer
could introduce a key rotation policy that forces Clients into small key cycles,
reducing the size of the anonymity set for these Clients.</t>
        <t>In general, key rotations represent a trade-off between Client privacy and
Issuer security. Therefore, it is still important that key rotations occur on
a regular cycle to reduce the harmfulness of an Issuer key compromise. If there
are multiple Issuer keys in rotation, Clients can apply some form of consistency
mechanism <xref target="CONSISTENCY"/> to ensure that they receive the same key as other Clients.
Likewise, Origins can use one or more public keys for redemption to support Issuer
key rotation.</t>
      </section>
      <section anchor="servers">
        <name>Issuer Selection</name>
        <t>Similarly to the Issuer rotation dynamic discussed above, if there are a large
number of Issuers, and Origins accept all of them, segregation can occur. If
Clients obtain tokens from many Issuers, and Origins later challenge a Client
for a token from each Issuer, Origins can learn information about the Client.
Each per-Issuer token that a Client holds essentially corresponds to a bit of
information about the Client that Origin learns. Therefore, there is an
exponential loss in anonymity relative to the number of Issuers.</t>
        <t>For example, if there are 32 Issuers, then Origins learn 32 bits of
information about the Client if a valid token is presented for each Issuer.
As a contrasting example, if Clients ensure that they only hold tokens issued from
4 Issuers, then this increases the potential size of the anonymity sets
that the Client belongs to. However, this doesn't protect Clients
completely as it would if only 4 Issuers were permitted across the whole
system. For example, these 4 Issuers could be different for each Client.
Therefore, the selection of Issuers for which a Client possesses tokens is still
revealing. This trade-off is important in deciding the effective anonymity
of each Client in the system.</t>
        <t>Clients SHOULD bound the number of Issuers they are willing to request tokens
from at any given time. The exact bound depends on the deployment model and
number of Clients, i.e., having a very large Client base could potentially
allow for larger values. Issuer replacements should only occur with the same
frequency as config rotations as they can lead to similar losses in
anonymity if clients still hold redemption tokens for previously active
Issuers.</t>
        <t>Alternatively, when applicable, trusted registries can indicate which Issuers
are deemed to be active. If a Client is asked to invoke the issuance protocol
for an Issuer that is not declared active, then the client can refuse to run the
protocol and obtain a token.</t>
        <t>Another option to allow a large number of Issuers in the ecosystem,
while preventing the joining of a number of different tokens, is for the
Client to maintain sharded "redemption partitions". This would allow the
Client to redeem the tokens it wishes to use in a particular context,
while still allowing the Client to maintain a large variety of tokens
from many Issuers. Within a redemption partition, the Client limits the
number of different Issuers used to a small number to maintain the
privacy properties the Client requires. As long as each redemption
partition maintains a strong privacy boundary with the others, the
number of bits of information the Origin can learn is bounded by the
number of "redemption partitions".</t>
        <t>To support this strategy, the client keeps track of a <tt>partition</tt> which
contains the set of Issuers that redemptions have been attempted
against. An empty redemption is returned when the limit has been
hit:</t>
        <artwork><![CDATA[
  Client(partition, issuer)                     Issuer(skS, pkS)
  ------------------------------------------------------------
  if issuer not in partition {
    if partition.length > REDEEM_LIMIT {
      Output {}
      return
    }
    partition.push(issuer)
  }
  token = store[issuer.id].pop()
  req = Redeem(token, info)

                               req
                        ------------------>

                               if (dsIdx.includes(req.data)) {
                                 raise ERR_DOUBLE_SPEND
                               }
                               resp = Verify(pkS, skS, req)
                               if resp.success {
                                 dsIdx.push(req.data)
                               }

                                resp
                        <------------------
  Output resp
]]></artwork>
      </section>
      <section anchor="side-channel-attacks">
        <name>Side-Channel Attacks</name>
        <t>Side-channel attacks, such as those based on timing correlation, could be
used to link attestation and redemption contexts together. In particular,
for interactive tokens that are bound to a Client-specific redemption
context, the anonymity set of Clients during the issuance protocol consists
of those Clients that started issuance between the time of the Origin's
challenge and the corresponding token redemption. Depending on the number
of Clients using a particular Issuer during that time window, the set can
be small. Appliations should take such side channels into consideration before
choosing a particular deployment model and type of token challenge and redemption
context.</t>
      </section>
    </section>
    <section anchor="centralization">
      <name>Centralization</name>
      <t>A consequence of limiting the number of participants (Attesters or Issuers) in
Privacy Pass deployments for meaningful privacy is that it forces concentrated
centralization amongst those participants.
<xref target="CENTRALIZATION"/> discusses
several ways in which this might be mitigated. For example, a multi-stakeholder
governance model could be established to determine what candidate participants
are fit to operate as participants in a Privacy Pass deployment. This is
precisely the system used to control the Web's trust model.</t>
      <t>Alternatively, Privacy Pass deployments might mitigate this problem through
implementation. For example, rather than centralize the role of attestation
in one or few entities, attestation could be a distributed function performed
by a quorum of many parties, provided that neither Issuers nor Origins learn
which attester implementations were chosen. As a result, clients could have
more opportunities to switch between attestation participants.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Beyond the aforementioned security goals for the issuance protocol
(<xref target="issuance-protocol"/>), it is important for Privacy Pass deployments to
mitigate the risk of abuse by malicious Origins.</t>
      <t>For example, when a Client holds cross-Origin tokens for an Origin, it
is possible for any Origin in the cross-Origin set to deplete that Client
set of tokens. To prevent this from happening, tokens can be scoped to single
Origins such that they can only be redeemed for a single Origin.
Alternatively, if tokens are cross-Origin, Clients can use alternate methods
to prevent many tokens from being redeemed at once. For example,
if the Origin requests an excess of tokens, the Client could choose to
not present any tokens for verification if a redemption had already
occurred in a given time window.</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="PPEXT" target="https://github.com/privacypass/challenge-bypass-extension">
          <front>
            <title>Privacy Pass Browser Extension</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PPSRV" target="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">
          <front>
            <title>Cloudflare Supports Privacy Pass</title>
            <author initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HIJK21" target="https://research.fb.com/privatestats">
          <front>
            <title>PrivateStats: De-Identified Authenticated Logging at Scale</title>
            <author initials="S." surname="Huang">
              <organization/>
            </author>
            <author initials="S." surname="Iyengar">
              <organization/>
            </author>
            <author initials="S." surname="Jeyaraman">
              <organization/>
            </author>
            <author initials="S." surname="Kushwah">
              <organization/>
            </author>
            <author initials="C. K." surname="Lee">
              <organization/>
            </author>
            <author initials="Z." surname="Luo">
              <organization/>
            </author>
            <author initials="P." surname="Mohassel">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Shaikh">
              <organization/>
            </author>
            <author initials="Y. C." surname="Sung">
              <organization/>
            </author>
            <author initials="A." surname="Zhang">
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="HTTP-Authentication">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <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="28" month="November" year="2022"/>
            <abstract>
              <t>   This document defines an HTTP authentication scheme that 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 an acceptable
   Privacy Pass token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-auth-scheme-06"/>
        </reference>
        <reference anchor="ISSUANCE">
          <front>
            <title>Privacy Pass Issuance Protocol</title>
            <author fullname="Sofia Celi" initials="S." surname="Celi">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Alex Davidson" initials="A." surname="Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Armando Faz-Hernandez" initials="A." surname="Faz-Hernandez">
              <organization>Cloudflare</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="6" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies two variants of the the two-message issuance
   protocol for Privacy Pass tokens: one that produces tokens that are
   privately verifiable, and another that produces tokens that are
   publicly verifiable.  The privately verifiable issuance protocol
   optionally supports public metadata during the issuance flow.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protocol-06"/>
        </reference>
        <reference anchor="CONSISTENCY">
          <front>
            <title>Key Consistency and Discovery</title>
            <author fullname="Alex Davidson" initials="A." surname="Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Matthew Finkel" initials="M." surname="Finkel">
              <organization>The Tor Project</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="17" month="August" year="2022"/>
            <abstract>
              <t>   This document describes the key consistency and correctness
   requirements of protocols such as Privacy Pass, Oblivious DoH, and
   Oblivious HTTP for user privacy.  It discusses several mechanisms and
   proposals for enabling user privacy in varying threat models.  In
   concludes with discussion of open problems in this area.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wood-key-consistency-03"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="KLOR20" target="http://dx.doi.org/10.1007/978-3-030-56784-2_11">
          <front>
            <title>Anonymous Tokens with Private Metadata Bit</title>
            <author fullname="Ben Kreuter" surname="Kreuter"/>
            <author fullname="Tancrède Lepoint" surname="Lepoint"/>
            <author fullname="Michele Orrù" surname="Orrù"/>
            <author fullname="Mariana Raykova" surname="Raykova"/>
            <author>
              <organization>Springer International Publishing</organization>
            </author>
            <date year="2020"/>
          </front>
          <refcontent>Advances in Cryptology – CRYPTO 2020, pp. 308-336</refcontent>
          <seriesInfo name="DOI" value="10.1007/978-3-030-56784-2_11"/>
        </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="6" month="July" 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-03"/>
        </reference>
        <reference anchor="CENTRALIZATION">
          <front>
            <title>Internet Consolidation: What can Standards Efforts Do?</title>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
         </author>
            <date day="3" month="December" year="2022"/>
            <abstract>
              <t>   Despite the Internet being designed and operated as a decentralized
   network-of-networks, forces continuously emerge to encourage and
   sometimes enforce consolidation of power into few hands.

   This document offers a definition of consolidation and relates it to
   centralization, explains why they are undesirable, identifies forces
   that contribute to them, catalogues limitations of common approaches
   to decentralization, and explores what Internet standards efforts can
   do.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-avoiding-internet-centralization-06"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Eric Kinnear, Scott Hendrickson, Tommy Pauly, Christopher Patton, Benjamin Schwartz,
Steven Valdez and other members of the Privacy Pass Working Group for many helpful contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
070oKKlJCCB35MyVWv3J2mX3/wF3SHO4YqEAAA==

-->

</rfc>
