<?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.15 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-architecture-06" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.1 -->
  <front>
    <title abbrev="Privacy Pass Architecture">Privacy Pass Architectural Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-06"/>
    <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="August" day="05"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies the architectural framework for constructing
secure and anonymity-preserving instantiations of the Privacy Pass
protocol. It provides recommendations on how the protocol ecosystem
should be constructed 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 a protocol 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., whether or not the client
is an authorized user or has completed some prior challenge, clients
present unlinkable proofs that attest to this information.</t>
      <t>The most basic Privacy Pass protocol provides a set of cross-origin
authorization tokens that protect the client's anonymity during interactions
with a server. This allows clients to communicate an attestation of a
previously authenticated server action, without having to reauthenticate
manually. The tokens retain anonymity in the sense that the act of
revealing them cannot be linked back to the session where they were
initially issued.</t>
      <t>At a high level, Privacy Pass is composed of two protocols: issuance
and redemption.</t>
      <t>The issuance protocol runs between a Client and two network 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 Issuer is responsible for issuing tokens in
response to requests from Clients. The Attester is responsible for attesting
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 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 is cross-origin
or per-origin, and 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. This document also describes ecosystem considerations that
impact the stated privacy and security guarantees of the 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 challenges Clients for tokens.</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 a simple challenge-response based authorization
protocol between Client and Origin. Origins prompt Clients with a token
challenge and, if possible, Clients present a valid token for the challenge
in response. 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. The selected Issuer transitively determines what types
of attestation the Origin is willing to accept. For example, if a given Issuer
<tt>issuer.example</tt> has two trusted Attesters, then any Origin choosing <tt>issuer.example</tt>
as its Issuer is willing to accept attestation checks done by either of these
two Attesters.</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, or can be used across Origins.</li>
        </ul>
        <t>Depending on the use case, Origins may need to maintain state to track
redeemed tokens. For example, Origins that accept cross-origin
across shared redemption contexts tokens 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>
        <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.
If tokens protected with resources are unique to a single Origin, then
said Origin MUST NOT admit cross-origin tokens for authorization.</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 ----> TokenRequest --->                    |
                  |             (attest)                 |
                  |                TokenRequest --->     |
                  |                            (evaluate)|
                  |                   <--- TokenResponse |
      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 Token issuance protocol using the challenge, a randomly
generated nonce, and public key for the Issuer. The Token issuance protocol
itself can be any interactive protocol between Client, Issuer, or other
parties that produces a valid authenticator over the Client's 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. The issuance protocol can reveal the Issuer public key for
the purposes of determining which private key to use in producing the token.
A result of this property is that the redemption flow is unlinkable
from the issuance flow.</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.</li>
        </ol>
        <t>Each Issuance protocol MUST come with a detailed analysis of the privacy impacts
of the protocol, why these impacts are justified, and guidelines on how to deploy
the protocol to minimize any privacy impacts.</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 consistency and correct for the specified
Issuer. See <xref target="CONSISTENCY"/> for example mechanisms.
Depending on the deployment, the Attester may be able to 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,
e.g., 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 attest
to this capability for the purposes 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 have different security properties. For
example, attesting to having a valid account is different from attesting to be
running on trusted hardware. In general, Attesters should accept a limited form
of attestation formats.</t>
          <t>Each attestation format also has an impact on the overall system privacy. For
example, the number of users in possession of a single class of trusted device
might be lesser than the number of users that can solve CAPTCHAs. Similarly,
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, have a valid account, and are running on a trusted
device is lesser 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, in practice,
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, 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 later 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>To facilitate issuance, the Issuer MUST hold an Issuance key pair at any
given time. The Issuer public key MUST be made available to all Clients in
such a way that key rotations and other updates are publicly visible.
The key material and protocol configuration that an Issuer uses to produce
tokens corresponds to a number of 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
must be unable to 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 anchor="key-rotation">
            <name>Key Rotation</name>
            <t>Token issuance associates all issued tokens with a particular choice of
key. If an Issuer issues tokens with many keys, then this may harm the
anonymity of the Client. For example, they would be able to map the
Client's access patterns by inspecting which key each token they possess
has been issued under.</t>
            <t>To prevent against this, Issuers MUST only use one private key for
issuing tokens at any given time. Servers MAY use one or more keys for
redemption to allow Issuers for seamless key rotation.</t>
            <t>Servers may rotate keys as a means of revoking tokens issued under old
or otherwise expired keys. Alternatively, Issuers may include expiration
information as metadata alongside the token; See <xref target="metadata"/> for more
discussion about metadata constraints. Both techniques are equivalent
since they cryptographically bind expiration to individual tokens.
Key rotations should be limited in frequency for similar reasons.</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 protocol and ecosystem are both intended to be receptive to
extensions that expand the current set of functionalities through new issuance
protocols. Each issuance protocol SHOULD come with 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>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 different ways. This section covers some expected
deployment models and their corresponding security and privacy considerations.
The discussion below assumes non-collusion between entities when operated by
separate parties. 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, e.g., through the use of tokens with an empty redemption context,
or over space, e.g., 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 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. (Note, however, that 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 assuming 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>Client uses Private 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 anonymity sets that Clients belong
to (or, user segregation). 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 Issuer's 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,
Issuers should bound the metadata permitted so as to not allow it to uniquely
identify each possible user.</t>
      </section>
      <section anchor="issuer-key-rotation">
        <name>Issuer Key Rotation</name>
        <t>Techniques to introduce Client "segregation" can be used to reduce
Client anonymity. Such techniques are closely linked to the type of key
schedule that is used by the Issuer. 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. Thus, reducing the
size of the anonymity set for these Clients.</t>
        <t>Issuers SHOULD invoke key rotation for a period of time between 1 and 12 weeks.
Key rotations represent a trade-off between Client privacy and continued Issuer
security. Therefore, it is still important that key rotations occur on a
regular cycle to reduce the harmfulness of an Issuer key compromise.</t>
        <t>With a large number of Clients, a minimum of one week gives a large enough
window for Clients to participate in the issuance protocol and thus enjoy the
anonymity guarantees of being part of a larger group. A maximum of
12 weeks limits the damage caused by a 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>
      </section>
      <section anchor="servers">
        <name>Large Number of Issuers</name>
        <t>Similarly to the Issuer rotation dynamic that is raised above, if there
are a large number of Issuers, and Origins accept all of them, segregation
can occur. For example, 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 learn. Therefore, there is an exponential loss in
anonymity relative to the number of Issuers that there are.</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 one.
If the distribution of Issuer trust is anything close to a uniform
distribution, then this is likely to uniquely identify any Client amongst
all other Internet users. Assuming a uniform distribution is clearly the
worst-case scenario, and unlikely to be accurate, but it provides a stark
warning against allowing too many Issuers at any one time.</t>
        <t>In cases where clients can hold tokens for all Issuers at any given
time, a strict bound SHOULD be applied to the active number of Issuers
in the ecosystem. We propose that allowing no more than 4 Issuers at any
one time is highly preferable (leading to a maximum of 64 possible user
segregations). However, having a very large user 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>In addition, we RECOMMEND that trusted registries indicate at all times
which Issuers are deemed to be active. If a Client is asked to invoke
any Privacy Pass exchange for an Issuer that is not declared active,
then the client SHOULD refuse to retrieve the Issuer public key
during the protocol.</t>
        <section anchor="more-servers">
          <name>Allowing More Issuers</name>
          <t>The bounds on the numbers of Issuers that this document proposes above are
very restrictive. This is because this document considers a situation where
a Client could be challenged (and asked to redeem) tokens for any Issuer.</t>
          <t>An alternative system is to ensure a robust strategy for ensuring that
Clients only possess redemption tokens for a similarly small number of
Issuers at any one time. This prevents a malicious verifier from being
able to invoke redemptions for many Issuers since the Client would only
be holding redemption tokens for a small set of Issuers. When a Client
is issued tokens from a new Issuer and already has tokens from the
maximum number of Issuers, it simply deletes the oldest set of
redemption tokens in storage and then stores the newly acquired tokens.</t>
          <t>For example, if Clients ensure that they only hold redemption tokens for
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 they possess tokens for is still
revealing. Understanding this trade-off is important in deciding the
effective anonymity of each Client in the system.</t>
          <section anchor="redemption-partitions">
            <name>Redemption Partitions</name>
            <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 each other, the
verifier will only be able to learn a number of bits of information up
to the limits within that "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>
      </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 participants are
fit to operate as participants in a Privacy Pass deployment. This is precisely
the model 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>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>We present a number of security considerations that prevent malicious
Clients from abusing the protocol.</t>
      <section anchor="token-exhaustion">
        <name>Token Exhaustion</name>
        <t>When a Client holds tokens for an Issuer, it is possible for any
verifier to invoke that client to redeem tokens for that Issuer. This
can lead to an attack where a malicious verifier can force a Client to
spend all of their tokens from a given Issuer. To prevent this from
happening, tokens can be scoped to single Origins such that they can only
be redeemed within for a single Origin.</t>
        <t>If tokens are cross-Origin, Clients should 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>
    </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="6" month="July" 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-04"/>
        </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="4" month="March" 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-02"/>
        </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>
        <reference anchor="CENTRALIZATION">
          <front>
            <title>Centralization, Decentralization, and Internet Standards</title>
            <author fullname="Mark Nottingham">
	 </author>
            <date day="9" month="July" year="2022"/>
            <abstract>
              <t>   Despite being designed and operated as a decentralized network-of-
   networks, the Internet is continuously subjected to forces that
   encourage centralization.

   This document offers a definition of centralization, explains why it
   is undesirable, identifies different types of it, catalogues
   limitations of common approaches to decentralization, and explores
   what Internet standards efforts can do to address it.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-avoiding-internet-centralization-05"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Scott Hendrickson, Tommy Pauly, 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:
H4sIAAAAAAAAA+196Zbb1png//sUGOmHpWOSWuJxkspkKZfkdsVaalTleJJO
HxskLkm4SIDGBapEy8qzzLP0k/W33gUAS1VypvvMOc2TpUQCd/nut293Op2a
tmw39ii7d9aUV/lin53lzmXHzWJdtnbRdk2+yb5s8q29rpvLeyafzxt7dZQd
etqaol5U8PhRVjT5sp2Wtl1Od/z0Dh6e5tHD08efmyJv7ZFZwP+u6mZ/lJXV
sjam3DVHWdt0rn36+PFvHz81l3YPKyiOstOqtU1l2+kzHN8Y1+ZV8V2+qSuY
c2+d2ZVH2b+29WKSubppG7t08Nd+i3/8mzF5167r5shkU5PBp6zcUXY8y57l
V2Xh6oq+5PUfb+zb9Pu6WR1lL07P6B+LsoXVvijdXH5d1F3V4g7OYNpulW/o
W7vNy81RlsNgs0IG++3TP63w69mi3iYL+fMsO93bapU30Tr+nFd58jUt48vc
tZt9PMUPTfmnJX07GPdkhnv8tq6LaNyTdVO6tt6tbZP8SsOfbOquWG5yOFD8
zgEcbXuUPXn8JLuorytnqyI7byNAnOcV4km1KN2iTuHxTQXnjY/DGbusXmbH
W9uUizxe/CK//tPa5ruyWs3L1s3ggI2p6mabt+UV4EeWvfny5OmTJ7+VP3/z
2WefHwGaALJEz5ydPf8/F0c0rqB1gqdfNPW1g90+f9vaypVybm3erHBv67bd
uaNHj1Zlu+7mCMNHEd4+WqzzzQYOwU7njMg2GuXs7PzNX5KJAwCz8263A5Rw
yWJGp55v6tVs4d+kNYR/Tp0MpPQ0pYXRSB6tM3/or2Yw82YDT1by9fBkvzr9
89dPnyQLZ0bQWjwuGOWZnZ4WtmrLZQlneAzT4D+QXIvsRb1awYFleZudLwDD
741uqrHOItHPlgzU6910UQMRV+2jbrep88I9evr46ZNHj588iqeeJjNPk5mn
MvM0b6c083fLsso3s12xpCUQT0HCyXDkEQBN5f8FVOez7Ksur1YHf43Jb+z3
P9t9DkzSQ3r4xNedW1/n6/HfgT6/nmUvrB3/+W/wW1eP/3Y2y17Wa8ADuxl/
AEj7Tb5ad1Xerm9Y3/k6Ly8PLO+vM1zheXcIQDDF39YIPjOdTrN8DtwiXwD9
XqxLl4E86LZwcpnb2QWepcvgJLM8kTBLlTAZ0DNwjgqG6BYtHLFxdgGSIgMm
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

-->

</rfc>
