<?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.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-architecture-07" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.2 -->
  <front>
    <title abbrev="Privacy Pass Architecture">The Privacy Pass Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-07"/>
    <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="September" day="20"/>
    <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"/>, 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
  /--------------------------------------------------------------------
  |                 /-----------------------------------------\
  |   Challenge ----> Attest --->                             |
  |                 | TokenRequest --------------->           |
  |   Redemption    |                              (validate) | Issuance
  |      Flow       |                              (evaluate) |   Flow
  |                 |     <-------------------  TokenResponse |
  |   <--- Response |                                         |
  |                 \-----------------------------------------/
  \--------------------------------------------------------------------
]]></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>
    </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, without
needing to modify Origin allow-lists.</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.</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.</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.{
{?CENTRALIZATION=I-D.nottingham-avoiding-internet-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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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>
        <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/wp-content/uploads/2021/01/PrivateStats-De-Identified-Authenticated-Logging-at-Scale_final.pdf">
          <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">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="5" month="August" 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-05"/>
        </reference>
        <reference anchor="CONSISTENCY">
          <front>
            <title>Key Consistency and Discovery</title>
            <author fullname="Alex Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Matthew Finkel">
              <organization>The Tor Project</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. 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">
          <front>
            <title>Anonymous Tokens with Private Metadata Bit</title>
            <author fullname="Ben Kreuter" initials="B." surname="Kreuter">
              <organization/>
            </author>
            <author fullname="Tancrède Lepoint" initials="T." surname="Lepoint">
              <organization/>
            </author>
            <author fullname="Michele Orrù" initials="M." surname="Orrù">
              <organization/>
            </author>
            <author fullname="Mariana Raykova" initials="M." surname="Raykova">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Advances in Cryptology - CRYPTO 2020" value="pp. 308-336"/>
          <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">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="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>
      </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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
W/8fqoZ52DOfAAA=

-->

</rfc>
