rfc9576.original   rfc9576.txt 
Network Working Group A. Davidson Internet Engineering Task Force (IETF) A. Davidson
Internet-Draft LIP Request for Comments: 9576 LIP
Intended status: Informational J. Iyengar Category: Informational J. Iyengar
Expires: 28 March 2024 Fastly ISSN: 2070-1721 Fastly
C. A. Wood C. A. Wood
Cloudflare Cloudflare
25 September 2023 May 2024
The Privacy Pass Architecture The Privacy Pass Architecture
draft-ietf-privacypass-architecture-16
Abstract Abstract
This document specifies the Privacy Pass architecture and This document specifies the Privacy Pass architecture and
requirements for its constituent protocols used for authorization requirements for its constituent protocols used for authorization
based on privacy-preserving authentication mechanisms. It describes based on privacy-preserving authentication mechanisms. It describes
the conceptual model of Privacy Pass and its protocols, its security the conceptual model of Privacy Pass and its protocols, its security
and privacy goals, practical deployment models, and recommendations and privacy goals, practical deployment models, and recommendations
for each deployment model that helps ensure the desired security and for each deployment model, to help ensure that the desired security
privacy goals are fulfilled. and privacy goals are fulfilled.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This document is not an Internet Standards Track specification; it is
provisions of BCP 78 and BCP 79. published for informational purposes.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are candidates for any level of Internet
Standard; see Section 2 of RFC 7841.
This Internet-Draft will expire on 28 March 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9576.
Copyright Notice Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology
3. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Architecture
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Overview
3.2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Use Cases
3.3. Privacy Goals and Threat Model . . . . . . . . . . . . . 7 3.3. Privacy Goals and Threat Model
3.4. Redemption Protocol . . . . . . . . . . . . . . . . . . . 9 3.4. Redemption Protocol
3.5. Issuance Protocol . . . . . . . . . . . . . . . . . . . . 11 3.5. Issuance Protocol
3.5.1. Attester Role . . . . . . . . . . . . . . . . . . . . 13 3.5.1. Attester Role
3.5.2. Issuer Role . . . . . . . . . . . . . . . . . . . . . 15 3.5.2. Issuer Role
3.5.3. Issuance Metadata . . . . . . . . . . . . . . . . . . 16 3.5.3. Issuance Metadata
3.5.4. Future Issuance Protocol Requirements . . . . . . . . 16 3.5.4. Future Issuance Protocol Requirements
3.6. Information Flow . . . . . . . . . . . . . . . . . . . . 17 3.6. Information Flow
3.6.1. Token Challenge Flow . . . . . . . . . . . . . . . . 17 3.6.1. Token Challenge Flow
3.6.2. Attestation Flow . . . . . . . . . . . . . . . . . . 17 3.6.2. Attestation Flow
3.6.3. Issuance Flow . . . . . . . . . . . . . . . . . . . . 17 3.6.3. Issuance Flow
3.6.4. Token Redemption Flow . . . . . . . . . . . . . . . . 19 3.6.4. Token Redemption Flow
4. Deployment Models . . . . . . . . . . . . . . . . . . . . . . 19 4. Deployment Models
4.1. Shared Origin, Attester, Issuer . . . . . . . . . . . . . 19 4.1. Shared Origin, Attester, Issuer
4.2. Joint Attester and Issuer . . . . . . . . . . . . . . . . 20 4.2. Joint Attester and Issuer
4.3. Joint Origin and Issuer . . . . . . . . . . . . . . . . . 21 4.3. Joint Origin and Issuer
4.4. Split Origin, Attester, Issuer . . . . . . . . . . . . . 22 4.4. Split Origin, Attester, Issuer
5. Deployment Considerations . . . . . . . . . . . . . . . . . . 23 5. Deployment Considerations
5.1. Discriminatory Treatment . . . . . . . . . . . . . . . . 23 5.1. Discriminatory Treatment
5.2. Centralization . . . . . . . . . . . . . . . . . . . . . 24 5.2. Centralization
6. Privacy Considerations . . . . . . . . . . . . . . . . . . . 24 6. Privacy Considerations
6.1. Partitioning by Issuance Metadata . . . . . . . . . . . . 25 6.1. Partitioning by Issuance Metadata
6.2. Partitioning by Issuance Consistency . . . . . . . . . . 26 6.2. Partitioning by Issuance Consistency
6.3. Partitioning by Side-Channels . . . . . . . . . . . . . . 27 6.3. Partitioning by Side Channels
7. Security Considerations . . . . . . . . . . . . . . . . . . . 27 7. Security Considerations
7.1. Token Caching . . . . . . . . . . . . . . . . . . . . . . 27 7.1. Token Caching
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 8. IANA Considerations
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 9. References
9.1. Normative References . . . . . . . . . . . . . . . . . . 28 9.1. Normative References
9.2. Informative References . . . . . . . . . . . . . . . . . 28 9.2. Informative References
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 30 Acknowledgements
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 Authors' Addresses
1. Introduction 1. Introduction
Privacy Pass is an architecture for authorization based on privacy- Privacy Pass is an architecture for authorization based on privacy-
preserving authentication mechanisms. In other words, relying preserving authentication mechanisms. In other words, relying
parties authenticate clients in a privacy-preserving way, i.e., parties authenticate Clients in a privacy-preserving way, i.e.,
without learning any unique, per-client information through the without learning any unique, per-Client information through the
authentication protocol, and then make authorization decisions on the authentication protocol, and then make authorization decisions on the
basis of that authentication succeeding or failing. Possible basis of that authentication succeeding or failing. Possible
authorization decisions might be to provide clients with read access authorization decisions might be to provide Clients with read access
to a particular resource or write access to a particular resource. to a particular resource or write access to a particular resource.
Typical approaches for authorizing clients, such as through the use Typical approaches for authorizing Clients, such as through the use
of long-term state (cookies), are not privacy-friendly since they of long-term state (cookies), are not privacy friendly, since they
allow servers to track clients across sessions and interactions. allow servers to track Clients across sessions and interactions.
Privacy Pass takes a different approach: instead of presenting Privacy Pass takes a different approach: instead of presenting
linkable state-carrying information to servers, e.g., a cookie linkable state-carrying information to servers, e.g., a cookie
indicating whether or not the client is an authorized user or has indicating whether or not the Client is an authorized user or has
completed some prior challenge, clients present unlinkable proofs completed some prior challenge, Clients present unlinkable proofs
that attest to this information. These proofs, or tokens, are that attest to this information. These proofs, or tokens, are
private in the sense that a given token cannot be linked to the private in the sense that a given token cannot be linked to the
protocol interaction where that token was initially issued. protocol interaction where that token was initially issued.
At a high level, the Privacy Pass architecture consists of two At a high level, the Privacy Pass architecture consists of two
protocols: redemption and issuance. The redemption protocol, protocols: redemption and issuance. The redemption protocol,
described in [AUTHSCHEME], runs between Clients and Origins described in [AUTHSCHEME], runs between Clients and Origins
(servers). It allows Origins to challenge Clients to present tokens (servers). It allows Origins to challenge Clients to present tokens
for consumption. Origins verify the token to authenticate the Client for consumption. Origins verify the token to authenticate the Client
-- without learning any specific information about the Client -- and -- without learning any specific information about the Client -- and
then make an authorization decision on the basis of the token then make an authorization decision on the basis of the token
verifying successfully or not. Depending on the type of token, e.g., verifying successfully or not. Depending on the type of token, e.g.,
whether or not it can be cached, the Client either presents a whether or not it can be cached, the Client either presents a
previously obtained token or invokes an issuance protocol, such as previously obtained token or invokes an issuance protocol, e.g., the
[ISSUANCE], to acquire a token to present as authorization. protocols described in [ISSUANCE], to acquire a token to present as
authorization.
This document describes requirements for both redemption and issuance This document describes requirements for both redemption and issuance
protocols and how they interact. It also provides recommendations on protocols and how they interact. It also provides recommendations on
how the architecture should be deployed to ensure the privacy of how the architecture should be deployed to ensure the privacy of
clients and the security of all participating entities. Clients and the security of all participating entities.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
The following terms are used throughout this document: The following terms are used throughout this document:
Client: An entity that seeks authorization to an Origin. Using Client: An entity that seeks authorization to an Origin. Using
[RFC9334] terminology, Clients implement the RATS Attester role. terminology from [RFC9334], Clients implement the Remote
ATtestation procedureS (RATS) Attester role.
Token: A cryptographic authentication message used for authorization Token: A cryptographic authentication message used for authorization
decisions, produced as output from an issuance mechanism or decisions, produced as output from an issuance mechanism or
protocol. protocol.
Origin: An entity that consumes tokens presented by Clients and uses Origin: An entity that consumes tokens presented by Clients and uses
them to make authorization decisions. them to make authorization decisions.
Token challenge: The mechanism by which Origins request tokens from Token challenge: The mechanism by which Origins request tokens from
Clients, often denoted TokenChallenge. Clients, often denoted TokenChallenge.
skipping to change at page 4, line 34 skipping to change at line 173
Redemption: The mechanism by which Clients present tokens to Origins Redemption: The mechanism by which Clients present tokens to Origins
for the purposes of authorization. for the purposes of authorization.
Issuer: An entity that issues tokens to Clients for properties Issuer: An entity that issues tokens to Clients for properties
attested to by the Attester. attested to by the Attester.
Issuance: The mechanism by which an Issuer produces tokens for Issuance: The mechanism by which an Issuer produces tokens for
Clients. Clients.
Attester: An entity that attests to properties of Clients for the Attester: An entity that attests to properties of Clients for the
purposes of token issuance. Using [RFC9334] terminology, purposes of token issuance. Using terminology from [RFC9334],
Attesters implement the RATS Verifier role. Attesters implement the RATS Verifier role.
Attestation procedure: The procedure by which an Attester determines Attestation procedure: The procedure by which an Attester determines
whether or not a Client has the specific set of properties that whether or not a Client has the specific set of properties that
are necessary for token issuance. are necessary for token issuance.
The trust relationships between each of the entities in this list is The trust relationships between each of the entities in this list are
further elaborated upon in Section 3.3. further elaborated upon in Section 3.3.
3. Architecture 3. Architecture
The Privacy Pass architecture consists of four logical entities -- The Privacy Pass architecture consists of four logical entities --
Client, Origin, Issuer, and Attester -- that work in concert for Client, Origin, Issuer, and Attester -- that work in concert for
token redemption and issuance. This section presents an overview of token redemption and issuance. This section presents an overview of
Privacy Pass, a high-level description of the threat model and Privacy Pass, a high-level description of the threat model and
privacy goals of the architecture, and the goals and requirements of privacy goals of the architecture, and the goals and requirements of
the redemption and issuance protocols. Deployment variations for the the redemption and issuance protocols. Deployment variations for the
Origin, Issuer, and Attester in this architecture, including Origin, Issuer, and Attester in this architecture, including
considerations for implementing these entities, are further discussed considerations for implementing these entities, are further discussed
in Section 4. in Section 4.
3.1. Overview 3.1. Overview
This section describes the typical interaction flow for Privacy Pass. This section describes the typical interaction flow for Privacy Pass,
as shown in Figure 1.
1. A Client interacts with an Origin by sending a request or 1. A Client interacts with an Origin by sending a request or
otherwise interacting with the Origin in a way that triggers a otherwise interacting with the Origin in a way that triggers a
response containing a token challenge. The token challenge response containing a token challenge. The token challenge
indicates a specific Issuer to use. indicates a specific Issuer to use.
2. If the Client already has a token available that satisfies the 2. If the Client already has a token available that satisfies the
token challenge, e.g., because the Client has a cache of token challenge, e.g., because the Client has a cache of
previously issued tokens, it can skip to step 6 and redeem its previously issued tokens, it can skip to step 6 and redeem its
token; see Section 7.1 for security considerations of cached token; see Section 7.1 for security considerations regarding
tokens. cached tokens.
3. If the Client does not have a token available and decides it 3. If the Client does not have a token available and decides it
wants to obtain one (or more) bound to the token challenge, it wants to obtain one (or more) bound to the token challenge, it
then invokes the issuance protocol. As a prerequisite to the then invokes the issuance protocol. As a prerequisite to the
issuance protocol, the Client runs the deployment-specific issuance protocol, the Client runs the deployment-specific
attestation process that is required for the designated Issuer. attestation process that is required for the designated Issuer.
Client attestation can be done via proof of solving a CAPTCHA, Client attestation can be done via proof of solving a CAPTCHA,
checking device or hardware attestation validity, etc.; see checking device or hardware attestation validity, etc.; see
Section 3.5.1 for more details. Section 3.5.1 for more details.
4. If the attestation process completes successfully, the client 4. If the attestation process completes successfully, the Client
creates a token request to send to the designated Issuer creates a token request to send to the designated Issuer
(generally via the Attester, though it is not required to be sent (generally via the Attester, though it is not required to be sent
through the Attester). The Attester and Issuer might be through the Attester). The Attester and Issuer might be
functions on the same server, depending on the deployment model functions on the same server, depending on the deployment model
(see Section 4). Depending on the attestation process, it is (see Section 4). Depending on the attestation process, it is
possible for attestation to run alongside the issuance protocol, possible for attestation to run alongside the issuance protocol,
e.g., where Clients send necessary attestation information to the e.g., where Clients send necessary attestation information to the
Attester along with their token request. If the attestation Attester along with their token request. If the attestation
process fails, the Client receives an error and issuance aborts process fails, the Client receives an error and issuance aborts
without a token. without a token.
5. The Issuer generates a token response based on the token request, 5. The Issuer generates a token response based on the token request,
which is returned to the Client (generally via the Attester). which is returned to the Client (generally via the Attester).
Upon receiving the token response, the Client computes a token Upon receiving the token response, the Client computes a token
from the token challenge and token response. This token can be from the token challenge and token response. This token can be
validated by anyone with the per-Issuer key, but cannot be linked validated by anyone with the per-Issuer key but cannot be linked
to the content of the token request or token response. to the content of the token request or token response.
6. If the Client has a token, it includes it in a subsequent request 6. If the Client has a token, it includes it in a subsequent request
to the Origin, as authorization. This token is sent only once in to the Origin, as authorization. This token is sent only once in
reaction to a challenge; Clients do not send tokens more than reaction to a challenge; Clients do not send tokens more than
once, even if they receive duplicate or redundant challenges. once, even if they receive duplicate or redundant challenges.
The Origin validates that the token was generated by the expected The Origin validates that the token was generated by the expected
Issuer and has not already been redeemed for the corresponding Issuer and has not already been redeemed for the corresponding
token challenge. If the Client does not have a token, perhaps token challenge. If the Client does not have a token, perhaps
because issuance failed, the client does not reply to the because issuance failed, the Client does not reply to the
Origin's challenge with a new request. Origin's challenge with a new request.
+--------+ +--------+ +----------+ +--------+ +--------+ +--------+ +----------+ +--------+
| Origin | | Client | | Attester | | Issuer | | Origin | | Client | | Attester | | Issuer |
+---+----+ +---+----+ +----+-----+ +---+----+ +---+----+ +---+----+ +----+-----+ +---+----+
| | | | | | | |
|<----- Request ------+ | | |<----- Request ------+ | |
+-- TokenChallenge -->| | | +-- TokenChallenge -->| | |
| |<== Attestation ==>| | | |<== Attestation ==>| |
| | | | | | | |
| +--------- TokenRequest ------->| | +--------- TokenRequest ------->|
| |<-------- TokenResponse -------+ | |<-------- TokenResponse -------+
|<-- Request+Token ---+ | | |<-- Request+Token ---+ | |
| | | | | | | |
Figure 1: Privacy pass redemption and issuance protocol interaction Figure 1: Privacy Pass Redemption and Issuance Protocol Interaction
3.2. Use Cases 3.2. Use Cases
Use cases for Privacy Pass are broad and depend greatly on the Use cases for Privacy Pass are broad and depend greatly on the
deployment model as discussed in Section 4. The initial motivating deployment model as discussed in Section 4. The initial motivating
use case for Privacy Pass [PrivacyPassCloudflare] was to help rate- use case for Privacy Pass [PrivacyPassCloudflare] was to help rate-
limit malicious or otherwise abusive traffic from services such as limit malicious or otherwise abusive traffic from services such as
Tor [DMS2004]. The generalized and evolved architecture described in Tor [DMS2004]. The generalized and evolved architecture described in
this document also work for this use case. However, for added this document also works for this use case. However, for added
clarity, some more possible use cases are described below. clarity, some more possible use cases are described below.
* Low-quality, anti-fraud signal for open Internet services. Tokens * Low-quality, anti-fraud signal for open Internet services. Tokens
can attest that the Client behind the user agent is likely not a can attest that the Client behind the user agent is likely not a
bot attempting to perform some form of automated attack such as bot attempting to perform some form of automated attack such as
credential stuffing. Example attestation procedures for this use credential stuffing. Example attestation procedures for this use
case might be solving some form of CAPTCHA or presenting evidence case might be solving some form of CAPTCHA or presenting evidence
of a valid, unlocked device in good standing. of a valid, unlocked device in good standing.
* Privacy-preserving authentication for proprietary services. * Privacy-preserving authentication for proprietary services.
skipping to change at page 7, line 20 skipping to change at line 301
Redemption context: The interactions and set of information shared Redemption context: The interactions and set of information shared
between the Client and Origin, i.e., the information that is between the Client and Origin, i.e., the information that is
provided or otherwise available to the Origin during redemption provided or otherwise available to the Origin during redemption
that might be used to identify a Client and construct a token that might be used to identify a Client and construct a token
challenge. This context includes all information associated with challenge. This context includes all information associated with
redemption, such as the timestamp of the event, Client-visible redemption, such as the timestamp of the event, Client-visible
information (including the IP address), and the Origin name. information (including the IP address), and the Origin name.
Issuance context: The interactions and set of information shared Issuance context: The interactions and set of information shared
between the Client, Attester, and Issuer, i.e., the information between the Client, Attester, and Issuer, i.e., the information
that is provided or otherwise available to Attester and Issuer that is provided or otherwise available to the Attester and Issuer
during issuance that might be used to identify a Client. This during issuance that might be used to identify a Client. This
context includes all information associated with issuance, such as context includes all information associated with issuance, such as
the timestamp of the event, any Client-visible information the timestamp of the event, any Client-visible information
(including the IP address), and the Origin name (if revealed (including the IP address), and the Origin name (if revealed
during issuance). This does not include the token challenge in during issuance). This does not include the token challenge in
its entirety, as that is kept secret from the Issuer during the its entirety, as that is kept secret from the Issuer during the
issuance protocol. issuance protocol.
Attestation context: The interactions and set of information shared Attestation context: The interactions and set of information shared
between the Client and Attester only, for the purposes of between the Client and Attester only, for the purposes of
attesting the validity of the Client, that is provided or attesting the validity of the Client, that is provided or
otherwise available during attestation that might be used to otherwise available during attestation that might be used to
identify the Client. This context includes all information identify the Client. This context includes all information
associated with attestation, such as the timestamp of the event associated with attestation, such as the timestamp of the event
and any Client-visible information, including information needed and any Client-visible information, including information needed
for the attestation procedure to complete. for the attestation procedure to complete.
The privacy goals of Privacy Pass assume a threat model in which The privacy goals of Privacy Pass assume a threat model in which
Origins trust specific Issuers to produce tokens, and Issuers in turn Origins trust specific Issuers to produce tokens, and Issuers in turn
trust one or more Attesters to correctly run the attestation trust one or more Attesters to correctly run the attestation
procedure with Clients. This arrangement ensures that tokens which procedure with Clients. This arrangement ensures that tokens that
validate for a given Issuer were only issued to a Client that validate for a given Issuer were only issued to a Client that
successfully completed attestation with an Attester that the Issuer successfully completed attestation with an Attester that the Issuer
trusts. Moreover, this arrangement means that if an Origin accepts trusts. Moreover, this arrangement means that if an Origin accepts
tokens issued by an Issuer that trusts multiple Attesters, then a tokens issued by an Issuer that trusts multiple Attesters, then a
Client can use any one of these Attesters to issue and redeem tokens Client can use any one of these Attesters to issue and redeem tokens
for the Origin. Whether or not these different entities in the for the Origin. Whether or not these different entities in the
architecture collude for learning redemption, issuance, or architecture collude for learning redemption, issuance, or
attestation contexts, as well as the necessary preconditions for attestation contexts, as well as the necessary preconditions for
context unlinkability, depends on the deployment model; see Section 4 context unlinkability, depends on the deployment model; see Section 4
for more details. for more details.
The mechanisms for establishing trust between each entity in this The mechanisms for establishing trust between each entity in this
arrangement are deployment-specific. For example, in settings where arrangement are deployment specific. For example, in settings where
Clients interact with Issuers through an Attester, Attesters and Clients interact with Issuers through an Attester, Attesters and
Issuers might use mutually authenticated TLS to authenticate one Issuers might use mutually authenticated TLS to authenticate one
another. In settings where Clients do not communicate with Issuers another. In settings where Clients do not communicate with Issuers
through an Attester, the Attesters might convey this trust via a through an Attester, the Attesters might convey this trust via a
digital signature that Issuers can verify. digital signature that Issuers can verify.
Clients explicitly trust Attesters to perform attestation correctly Clients explicitly trust Attesters to perform attestation correctly
and in a way that does not violate their privacy. In particular, and in a way that does not violate their privacy. In particular,
this means that Attesters which may be privy to private information this means that Attesters that may be privy to private information
about Clients are trusted to not disclose this information to non- about Clients are trusted to not disclose this information to non-
colluding parties. Colluding parties are assumed to have access to colluding parties. Colluding parties are assumed to have access to
the same information; see Section 4 for more about different the same information; see Section 4 for more about different
deployment models and non-collusion assumptions. However, Clients deployment models and non-collusion assumptions. However, Clients
assume Issuers and Origins are malicious. assume that Issuers and Origins are malicious.
Given this threat model, the privacy goals of Privacy Pass are Given this threat model, the privacy goals of Privacy Pass are
oriented around unlinkability based on redemption, issuance, and oriented around unlinkability based on redemption, issuance, and
attestation contexts, as described below. attestation contexts, as described below.
1. Origin-Client unlinkability. This means that given two 1. Origin-Client unlinkability. This means that given two
redemption contexts, the Origin cannot determine if both redemption contexts, the Origin cannot determine if both
redemption contexts correspond to the same Client or two redemption contexts correspond to the same Client or two
different Clients. Informally, this means that a Client in a different Clients. Informally, this means that a Client in a
redemption context is indistinguishable from any other Client redemption context is indistinguishable from any other Client
skipping to change at page 9, line 13 skipping to change at line 385
referred to as an attestation anonymity set. referred to as an attestation anonymity set.
4. Redemption context unlinkability. Given two redemption contexts, 4. Redemption context unlinkability. Given two redemption contexts,
the Origin cannot determine which issuance and attestation the Origin cannot determine which issuance and attestation
contexts each redemption corresponds to, even with the contexts each redemption corresponds to, even with the
collaboration of the Issuer and Attester (should these be collaboration of the Issuer and Attester (should these be
different parties). This means that any information that may be different parties). This means that any information that may be
learned about the Client during the issuance and attestation learned about the Client during the issuance and attestation
flows cannot be used by the Origin to compromise Client privacy. flows cannot be used by the Origin to compromise Client privacy.
These unlinkability properties ensure that only the Client is able to These unlinkability properties ensure that only the Clients are able
correlate information that might be used to identify them with to correlate information that might be used to identify them with
activity on the Origin. The Attester, Issuer, and Origin only activity on the Origin. The Attester, Issuer, and Origin only
receive the information necessary to perform their respective receive the information necessary to perform their respective
functions. functions.
The manner in which these unlinkability properties are achieved The manner in which these unlinkability properties are achieved
depends on the deployment model, type of attestation, and issuance depends on the deployment model, type of attestation, and issuance
protocol details. For example, as discussed in Section 4, in some protocol details. For example, as discussed in Section 4, in some
cases it is necessary to use an anonymization service such as Tor cases it is necessary to use an anonymization service that hides
[DMS2004] which hides Clients IP addresses. In general, Client IP addresses, such as Tor [DMS2004]. In general,
anonymization services ensures that all Clients which use the service anonymization services ensure that all Clients that use the service
are indistinguishable from one another, though in practice there may are indistinguishable from one another, though in practice there may
be small distinguishing features (TLS fingerprints, HTTP headers, be small distinguishing features (TLS fingerprints, HTTP headers,
etc). Moreover, Clients generally trust these services to not etc.). Moreover, Clients generally trust these services to not
disclose private Client information (such as IP addresses) to disclose private Client information (such as IP addresses) to
untrusted parties. Failure to use an anonymization service when untrusted parties. Failure to use an anonymization service when
interacting with Attesters, Issuers, or Origins can allow the set of interacting with Attesters, Issuers, or Origins can allow the set of
possible Clients to be partitioned by the Client's IP address, and possible Clients to be partitioned by the Client's IP address and can
can therefore lead to unlinkability violations. Similarly, malicious therefore lead to unlinkability violations. Similarly, malicious
Origins may attempt to link two redemption contexts together by using Origins may attempt to link two redemption contexts together by using
Client-specific Issuer public keys. See Section 5 and Section 6 for Client-specific Issuer Public Keys. See Sections 5 and 6 for more
more information. information.
The remainder of this section describes the functional properties and Sections 3.4 and 3.5 describe the functional properties and security
security requirements of the redemption and issuance protocols in requirements of the redemption and issuance protocols in more detail.
more detail. Section 3.6 describes how information flows between Section 3.6 describes how information flows between the Issuer,
Issuer, Origin, Client, and Attester through these protocols. Origin, Client, and Attester through these protocols.
3.4. Redemption Protocol 3.4. Redemption Protocol
The Privacy Pass redemption protocol, described in [AUTHSCHEME], is The Privacy Pass redemption protocol, described in [AUTHSCHEME], is
an authorization protocol wherein Clients present tokens to Origins an authorization protocol wherein Clients present tokens to Origins
for authorization. Normally, redemption is preceded by a challenge, for authorization. Normally, redemption is preceded by a challenge,
wherein the Origin challenges Clients for a token with a wherein the Origin challenges Clients for a token with a
TokenChallenge ([AUTHSCHEME], Section 2.1) and, if possible, Clients TokenChallenge ([AUTHSCHEME], Section 2.1) and, if possible, Clients
present a valid Token ([AUTHSCHEME], Section 2.2) in reaction to the present a valid token ([AUTHSCHEME], Section 2.2) in reaction to the
challenge. This interaction is shown below. challenge. This interaction is shown below.
+--------+ +--------+ +--------+ +--------+
| Origin | | Client | | Origin | | Client |
+---+----+ +---+----+ +---+----+ +---+----+
| | | |
|<----- Request ------+ |<----- Request ------+
+-- TokenChallenge -->| +-- TokenChallenge -->|
| | <== Issuance protocol ==> | | <== Issuance protocol ==>
|<-- Request+Token ---+ |<-- Request+Token ---+
| | | |
Figure 2: Challenge and redemption protocol interaction Figure 2: Challenge and Redemption Protocol Interaction
Alternatively, when configured to do so, Clients may Alternatively, when configured to do so, Clients may
opportunistically present Token values to Origins without a opportunistically present token values to Origins without a
corresponding TokenChallenge. corresponding TokenChallenge.
The structure and semantics of the TokenChallenge and Token messages The structure and semantics of the TokenChallenge and token messages
depend on the issuance protocol and token type being used; see depend on the issuance protocol and token type being used; see
[AUTHSCHEME] for more information. [AUTHSCHEME] for more information.
The challenge provides the client with the information necessary to The challenge provides the Client with the information necessary to
obtain tokens that the server might subsequently accept in the obtain tokens that the server might subsequently accept in the
redemption context. There are a number of ways in which the token redemption context. There are a number of ways in which the token
may vary based on this challenge, including: may vary based on this challenge, including the following:
* Issuance protocol. The challenge identifies the type of issuance * Issuance protocol. The challenge identifies the type of issuance
protocol required for producing the token. Different issuance protocol required for producing the token. Different issuance
protocols have different security properties, e.g., some issuance protocols have different security properties, e.g., some issuance
protocols may produce tokens that are publicly verifiable, whereas protocols may produce tokens that are publicly verifiable, whereas
others may not have this property. others may not have this property.
* Issuer identity. Token challenges identify which Issuers are * Issuer identity. Token challenges identify which Issuers are
trusted for a given issuance protocol. As described in trusted for a given issuance protocol. As described in
Section 3.3, the choice of Issuer determines the type of Attesters Section 3.3, the choice of Issuer determines the type of Attesters
and attestation procedures possible for a token from the specified and attestation procedures possible for a token from the specified
Issuer, but the Origin does not learn exactly which Attester was Issuer, but the Origin does not learn exactly which Attester was
used for a given token issuance event. used for a given token issuance event.
* Redemption context. Challenges can be bound to a given redemption * Redemption context. Challenges can be bound to a given redemption
context, which influences a client's ability to pre-fetch and context, which influences a Client's ability to pre-fetch and
cache tokens. For example, an empty redemption context always cache tokens. For example, an empty redemption context always
allows tokens to be issued and redeemed non-interactively, whereas allows tokens to be issued and redeemed non-interactively, whereas
a fresh and random redemption context means that the redeemed a fresh and random redemption context means that the redeemed
token must be issued only after the client receives the challenge. token must be issued only after the Client receives the challenge.
See Section 2.1.1 of [AUTHSCHEME] for more details. See Section 2.1.1 of [AUTHSCHEME] for more details.
* Per-Origin or cross-Origin. Challenges can be constrained to the * Per-Origin or cross-Origin. Challenges can be constrained to the
Origin for which the challenge originated (referred to as per- Origin for which the challenge originated (referred to as per-
Origin tokens), or can be used across multiple Origins (referred Origin tokens) or can be used across multiple Origins (referred to
to as cross-Origin tokens). The set of Origins for which a cross- as cross-Origin tokens). The set of Origins for which a cross-
Origin token is applicable is referred to as the cross-Origin set. Origin token is applicable is referred to as the cross-Origin set.
Opting into this set is done by explicitly agreeing on the Opting into this set is done by explicitly agreeing on the
contents of the set. Every Origin in a cross-Origin set, by contents of the set. Every Origin in a cross-Origin set, by
opting in, agrees to admit tokens for any other Origin in the set. opting in, agrees to admit tokens for any other Origin in the set.
See Section 2.1.1 of [AUTHSCHEME] for more information on how this See Section 2.1.1 of [AUTHSCHEME] for more information on how this
set is created. set is created.
Origins that admit cross-Origin tokens bear some risk of allowing Origins that admit cross-Origin tokens bear some risk of allowing
tokens issued for one Origin to be spent in an interaction with tokens issued for one Origin to be spent in an interaction with
another Origin. In particular, cross-Origin tokens issued based on a another Origin. In particular, cross-Origin tokens issued based on a
challenge for one Origin can be redeemed at another Origin in the challenge for one Origin can be redeemed at another Origin in the
cross-Origin set, which can make it difficult to regulate token cross-Origin set, which can make it difficult to regulate token
consumption. Depending on the use case, Origins may need to maintain consumption. Depending on the use case, Origins may need to maintain
state to track redeemed tokens. For example, Origins that accept state to track redeemed tokens. For example, Origins that accept
cross-Origin tokens across shared redemption contexts SHOULD track cross-Origin tokens across shared redemption contexts SHOULD track
which tokens have been redeemed already in those redemption contexts, which tokens have already been redeemed in those redemption contexts,
since these tokens can be issued and then spent multiple times for since these tokens can be issued and then spent multiple times for
any such challenge. Note that Clients which redeem the same token to any such challenge. Note that Clients that redeem the same token to
multiple Origins do risk those Origins being able to link Client multiple Origins do risk those Origins being able to link Client
activity together, which can disincentivize this behavior. See activity together, which can disincentivize this behavior. See
Section 2.1.1 of [AUTHSCHEME] for discussion. Section 2.1.1 of [AUTHSCHEME] for discussion.
How Clients respond to token challenges can have privacy How Clients respond to token challenges can have privacy
implications. For example, if an Origin allows the Client to choose implications. For example, if an Origin allows the Client to choose
an Issuer, then the choice of Issuer can reveal information about the an Issuer, then the choice of Issuer can reveal information about the
Client used to partition anonymity sets; see Section 6.2 for more Client used to partition anonymity sets; see Section 6.2 for more
information about these privacy considerations. information about these privacy considerations.
3.5. Issuance Protocol 3.5. Issuance Protocol
The Privacy Pass issuance protocol, described in [ISSUANCE], is a The Privacy Pass issuance protocols, such as those described in
two-message protocol that takes as input a TokenChallenge from the [ISSUANCE], are two-message protocols that take as input a
redemption protocol ([AUTHSCHEME], Section 2.1) and produces a Token TokenChallenge from the redemption protocol ([AUTHSCHEME],
([AUTHSCHEME], Section 2.2), as shown in Figure 1. Section 2.1) and produce a token ([AUTHSCHEME], Section 2.2), as
shown in Figure 1.
The structure and semantics of the TokenRequest and TokenResponse The structure and semantics of the TokenRequest and TokenResponse
messages depend on the issuance protocol and token type being used; messages depend on the issuance protocol and token type being used;
see [ISSUANCE] for more information. see [ISSUANCE] for more information.
Clients interact with the Attester and Issuer to produce a token for Clients interact with the Attester and Issuer to produce a token for
a challenge. The context in which an Attester vouches for a Client a challenge. The context in which an Attester vouches for a Client
during issuance is referred to as the attestation context. This during issuance is referred to as the attestation context. This
context includes all information associated with the issuance event, context includes all information associated with the issuance event,
such as the timestamp of the event and Client-visible information, such as the timestamp of the event and Client-visible information,
including the IP address or other information specific to the type of including the IP address or other information specific to the type of
attestation done. attestation done.
Each issuance protocol may be different, e.g., in the number and Each issuance protocol may be different, e.g., in the number and
types of participants, underlying cryptographic constructions used types of participants, underlying cryptographic constructions used
when issuing tokens, and even privacy properties. when issuing tokens, and even privacy properties.
Clients initiate the issuance protocol using the token challenge, a Clients initiate the issuance protocol using the token challenge, a
randomly generated nonce, and public key for the Issuer, all of which randomly generated nonce, and a public key for the Issuer, all of
are the Client's private input to the protocol and ultimately bound which are the Client's private input to the protocol and ultimately
to an output Token; see Section 2.2 of [AUTHSCHEME] for details. bound to an output token; see Section 2.2 of [AUTHSCHEME] for
Future specifications may change or extend the Client's input to the details. Future specifications may change or extend the Client's
issuance protocol to produce Tokens with a different structure. input to the issuance protocol to produce tokens with a different
structure.
Token properties vary based on the issuance protocol. Important Token properties vary based on the issuance protocol. Important
properties supported in this architecture are described below. properties supported in this architecture are described below.
1. Public verifiability. This means the Token can be verified using 1. Public verifiability. This means that the token can be verified
the Issuer public key. A Token that does not have public using the Issuer Public Key. A token that does not have public
verifiability can only be verified using the Issuer secret key. verifiability can only be verified using the Issuer secret key.
2. Public metadata. This means that the Token can be 2. Public metadata. This means that the token can be
cryptographically bound to arbitrary public information. See cryptographically bound to arbitrary public information. See
Section 6.1 for privacy considerations of public metadata. Section 6.1 for privacy considerations regarding public metadata.
3. Private metadata. This means that the Token can be 3. Private metadata. This means that the token can be
cryptographically bound to arbitrary private information, i.e., cryptographically bound to arbitrary private information, i.e.,
information that the Client does not observe during Token information that the Client does not observe during token
issuance or redemption. See Section 6.1 for privacy issuance or redemption. See Section 6.1 for privacy
considerations of private metadata. considerations regarding private metadata.
The issuance protocol itself can be any interactive protocol between The issuance protocol itself can be any interactive protocol between
Client, Issuer, or other parties that produces a valid token bound to the Client, Issuer, or other parties that produces a valid token
the Client's private input, subject to the following security bound to the Client's private input, subject to the following
requirements. security requirements.
1. Unconditional input secrecy. The issuance protocol MUST NOT 1. Unconditional input secrecy. The issuance protocol MUST NOT
reveal anything about the Client's private input, including the reveal anything about the Client's private input, including the
challenge and nonce, to the Attester or Issuer, regardless of the challenge and nonce, to the Attester or Issuer, regardless of the
hardness assumptions of the underlying cryptographic protocol(s). hardness assumptions of the underlying cryptographic protocol(s).
This property is sometimes also referred to as blindness. This property is sometimes also referred to as blindness.
2. One-more forgery security. The issuance protocol MUST NOT allow 2. One-more forgery security. The issuance protocol MUST NOT allow
malicious Clients or Attesters (acting as Clients) to forge malicious Clients or Attesters (acting as Clients) to forge
tokens offline or otherwise without interacting with the Issuer tokens offline or otherwise without interacting with the Issuer
directly. directly.
3. Concurrent security. The issuance protocol MUST be safe to run 3. Concurrent security. The issuance protocol MUST be safe to run
concurrently with arbitrarily many Clients, Attesters and concurrently with arbitrarily many Clients, Attesters, and
Issuers. Issuers.
See Section 3.5.4 for requirements on new issuance protocol variants See Section 3.5.4 for requirements on new issuance protocol variants
and related extensions. and related extensions.
In the sections below, we describe the Attester and Issuer roles in In the sections below, we describe the Attester and Issuer roles in
more detail. more detail.
3.5.1. Attester Role 3.5.1. Attester Role
In Privacy Pass, attestation is the process by which an Attester In Privacy Pass, attestation is the process by which an Attester
bears witness to, confirms, or authenticates a Client so as to verify bears witness to, confirms, or authenticates a Client so as to verify
properties about the Client that are required for Issuance. Issuers properties about the Client that are required for issuance. Issuers
trust Attesters to perform attestation correctly, i.e., to implement trust Attesters to perform attestation correctly, i.e., to implement
attestation procedures in a way that are not subverted or bypassed by attestation procedures in such a way that those procedures are not
malicious Clients. subverted or bypassed by malicious Clients.
[RFC9334] describes an architecture for attestation procedures. [RFC9334] describes an architecture for attestation procedures.
Using that architecture as a conceptual basis, Clients are RATS Using that architecture as a conceptual basis, Clients are RATS
attesters that produce attestation evidence, and Attesters are RATS Attesters that produce attestation evidence, and Attesters are RATS
verifiers that appraise the validity of attestation evidence. Verifiers that appraise the validity of attestation evidence.
The type of attestation procedure is a deployment-specific option and The type of attestation procedure is a deployment-specific option and
outside the scope of the issuance protocol. Example attestation outside the scope of the issuance protocol. Example attestation
procedures are below. procedures are below.
* Solving a CAPTCHA. Clients that solve CAPTCHA challenges can be * Solving a CAPTCHA. Clients that solve CAPTCHA challenges can be
attested to have this capability for the purpose of being ruled attested to have this capability for the purpose of being ruled
out as a bot or otherwise automated Client. out as a bot or otherwise automated Client.
* Presenting evidence of Client device validity. Some Clients run * Presenting evidence of Client device validity. Some Clients run
on trusted hardware that are capable of producing device-level on trusted hardware that is capable of producing device-level
attestation evidence. attestation evidence.
* Proving properties about Client state. Clients can be associated * Proving properties about Client state. Clients can be associated
with state and the Attester can verify this state. Examples of with state, and the Attester can verify this state. Examples of
state include the Client's geographic region and whether the state include the Client's geographic region and whether the
Client has a valid application-layer account. Client has a valid application-layer account.
Attesters may support different types of attestation procedures. Attesters may support different types of attestation procedures.
Each attestation procedure has different security properties. For Each attestation procedure has different security properties. For
example, attesting to having a valid account is different from example, attesting to having a valid account is different from
attesting to running on trusted hardware. Supporting multiple attesting to running on trusted hardware. Supporting multiple
attestation procedures is an important step towards ensuring attestation procedures is an important step towards ensuring
equitable access for Clients; see Section 5.1. equitable access for Clients; see Section 5.1.
The role of the Attester in the issuance protocol and its impact on The role of the Attester in the issuance protocol and its impact on
privacy depends on the type of attestation procedure, issuance privacy depend on the type of attestation procedure, issuance
protocol, and deployment model. For instance, increasing the number protocol, and deployment model. For instance, increasing the number
of required attestation procedures could decrease the overall of required attestation procedures could decrease the overall
anonymity set size. As an example, the number of Clients that have anonymity set size. As an example, the number of Clients that have
solved a CAPTCHA in the past day, that have a valid account, and that 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 are running on a trusted device is less than the number of Clients
that have solved a CAPTCHA in the past day. See Section 6.2 for more that have solved a CAPTCHA in the past day. See Section 6.2 for more
discussion of how the variety of attestation procedures can discussion of how the variety of attestation procedures can
negatively impact Client privacy. negatively impact Client privacy.
Depending on the issuance protocol, the Issuer might learn Depending on the issuance protocol, the Issuer might learn
information about the Origin. To ensure Issuer-Client unlinkability, information about the Origin. To ensure Issuer-Client unlinkability,
the Issuer should be unable to link that information to a specific the Issuer should be unable to link that information to a specific
Client. For such issuance protocols where the Attester has access to Client. For such issuance protocols where the Attester has access to
Client-specific information, such as is the case for attestation Client-specific information, such as is the case for attestation
procedures that involve Client-specific information (such as procedures that involve Client-specific information (such as
application-layer account information) or for deployment models where application-layer account information) or for deployment models where
the Attester learns Client-specific information (such as Client IP the Attester learns Client-specific information (such as Client IP
addresses), Clients trust the Attester to not share any Client- addresses), Clients trust the Attester to not share any Client-
specific information with the Issuer. In deployments where the specific information with the Issuer. In deployments where the
Attester does not learn Client-specific information, or where the Attester does not learn Client-specific information or where the
Attester and Issuer are operated by the same entity (such as in the Attester and Issuer are operated by the same entity (such as in the
Joint Attester and Issuer model described in Section 4.2), the Client Joint Attester and Issuer model described in Section 4.2), the Client
does not need to explicitly trust the Attester in this regard. does not need to explicitly trust the Attester in this regard.
Issuers trust Attesters to correctly and reliably perform Issuers trust Attesters to correctly and reliably perform
attestation. However, certain types of attestation can vary in value attestation. However, certain types of attestation procedures can
over time, e.g., if the attestation procedure is compromised. Broken vary in value over time, e.g., if the attestation procedure is
attestation procedures are considered exceptional events and require compromised. Broken attestation procedures are considered
configuration changes to address the underlying cause. For example, exceptional events and require configuration changes to address the
if an attestation procedure is compromised or subverted because of a underlying cause. For example, if an attestation procedure is
zero-day exploit on devices that implement the attestation procedure, compromised or subverted because of a zero-day exploit on devices
then the corresponding attestation procedure should be untrusted that implement the attestation procedure, then the corresponding
until the exploit is patched. Addressing changes in attestation attestation procedure should be untrusted until the exploit is
quality is therefore a deployment-specific task. In Split Attester patched. Addressing changes in attestation quality is therefore a
and Issuer deployments (see Section 4.4), Issuers can choose to deployment-specific task. In Split Origin, Attester, and Issuer
remove compromised Attesters from their trusted set until the deployments (see Section 4.4), Issuers can choose to remove
compromise is patched. compromised Attesters from their trusted set until the compromise is
patched.
From the perspective of an Origin, tokens produced by an Issuer with From the perspective of an Origin, tokens produced by an Issuer with
at least one compromised Attester cannot be trusted assuming the at least one compromised Attester cannot be trusted, assuming that
Origin does not know which attestation procedure was used for the Origin does not know which attestation procedure was used for
issuance. This is because the Origin cannot distinguish between issuance. This is because the Origin cannot distinguish between
tokens that were issued via compromised Attesters and tokens that tokens that were issued via compromised Attesters and tokens that
were issued via uncompromised Attesters absent some distinguishing were issued via uncompromised Attesters, absent some distinguishing
information in the tokens themselves or from the Issuer. As a information in the tokens themselves or from the Issuer. As a
result, until the attestation procedure is fixed, the Issuer cannot result, until the attestation procedure is fixed, the Issuer cannot
be trusted by Origins. Moreover, as a consequence, any tokens issued be trusted by Origins. Moreover, as a consequence, any tokens issued
by an Issuer with a compromised attester may no longer be trusted by by an Issuer with a compromised Attester may no longer be trusted by
Origins, even if those tokens were issued to Clients interacting with Origins, even if those tokens were issued to Clients interacting with
an uncompromised Attester. an uncompromised Attester.
3.5.2. Issuer Role 3.5.2. Issuer Role
In Privacy Pass, the Issuer is responsible for completing the In Privacy Pass, the Issuer is responsible for completing the
issuance protocol for Clients that complete attestation through a issuance protocol for Clients that complete attestation through a
trusted Attester. As described in Section 3.5.1, Issuers explicitly trusted Attester. As described in Section 3.5.1, Issuers explicitly
trust Attesters to correctly and reliably perform attestation. trust Attesters to correctly and reliably perform attestation.
Origins explicitly trust Issuers to only issue tokens from trusted Origins explicitly trust Issuers to only issue tokens from trusted
skipping to change at page 15, line 38 skipping to change at line 690
form of Client anonymization service, similar to an IP-hiding proxy, form of Client anonymization service, similar to an IP-hiding proxy,
so that Issuers cannot learn information about Clients. This can be so that Issuers cannot learn information about Clients. This can be
provided by an explicit participant in the issuance protocol, or it 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- can be provided via external means, such as through the use of an IP-
hiding proxy service like Tor [DMS2004]. In general, Clients SHOULD hiding proxy service like Tor [DMS2004]. In general, Clients SHOULD
minimize or remove identifying information where possible when minimize or remove identifying information where possible when
invoking the issuance protocol. invoking the issuance protocol.
Issuers are uniquely identifiable by all Clients with a consistent Issuers are uniquely identifiable by all Clients with a consistent
identifier. In a web context, this identifier might be the Issuer identifier. In a web context, this identifier might be the Issuer
host name. Issuers maintain one or more configurations, including hostname. Issuers maintain one or more configurations, including
issuance key pairs, for use in the issuance protocol. Each issuance key pairs, for use in the issuance protocol. Each
configuration is assumed to have a unique and canonical identifier, configuration is assumed to have a unique and canonical identifier,
sometimes referred to as a key identifier or key ID. Issuers can sometimes referred to as a key identifier or key ID. Issuers can
rotate these configurations as needed to mitigate risk of compromise; rotate these configurations as needed to mitigate the risk of
see Section 6.2 for more considerations around configuration compromise; see Section 6.2 for more considerations around
rotation. The Issuer public key for each active configuration is configuration rotation. The Issuer Public Key for each active
made available to Origins and Clients for use in the issuance and configuration is made available to Origins and Clients for use in the
redemption protocols. issuance and redemption protocols.
3.5.3. Issuance Metadata 3.5.3. Issuance Metadata
Certain instantiations of the issuance protocol may permit public or Certain instantiations of the issuance protocol may permit public or
private metadata to be cryptographically bound to a token. As an private metadata to be cryptographically bound to a token. As an
example, one trivial way to include public metadata is to assign a 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 unique Issuer Public Key for each value of metadata, such that N keys
yields log_2(N) bits of metadata. Metadata may be public or private. yield log_2(N) bits of metadata. Metadata may be public or private.
Public metadata is that which clients can observe as part of the Public metadata is metadata that Clients can observe as part of the
token issuance flow. Public metadata can either be transparent or token issuance flow. Public metadata can be either transparent or
opaque. For example, transparent public metadata is a value that the opaque. For example, transparent public metadata is a value that
client either generates itself, or the Issuer provides during the either the Client generates itself or the Issuer provides during the
issuance flow and the client can check for correctness. Opaque issuance flow and that the Client can check for correctness. Opaque
public metadata is metadata the client can see but cannot check for public metadata is metadata the Client can see but cannot check for
correctness. As an example, the opaque public metadata might be a correctness. As an example, the opaque public metadata might be a
"fraud detection signal", computed on behalf of the Issuer, during "fraud detection signal", computed on behalf of the Issuer, during
token issuance. Generally speaking, Clients cannot determine if this token issuance. Generally speaking, Clients cannot determine if this
value is generated in a way that permits tracking. value is generated in a way that permits tracking.
Private metadata is that which Clients cannot observe as part of the Private metadata is metadata that Clients cannot observe as part of
token issuance flow. Such instantiations can be built on the Private the token issuance flow. Such instantiations can be built on the
Metadata Bit construction from Kreuter et al. [KLOR20] or the private metadata bit construction from Kreuter et al. [KLOR20] or the
attribute-based VOPRF from Huang et al. [HIJK21]. attribute-based Verifiable Oblivious Pseudorandom Function (VOPRF)
from Huang et al. [HIJK21].
Metadata can be arbitrarily long or bounded in length. The amount of Metadata can be arbitrarily long or bounded in length. The amount of
permitted metadata may be determined by application or by the permitted metadata may be determined by an application or by the
underlying cryptographic protocol. The total amount of metadata bits underlying cryptographic protocol. The total amount of metadata bits
included in a token is the sum of public and private metadata bits. included in a token is the sum of public and private metadata bits.
Every bit of metadata can be used to partition the Client issuance or Every bit of metadata can be used to partition the Client issuance or
redemption anonymity sets; see Section 6.1 for more information. redemption anonymity sets; see Section 6.1 for more information.
3.5.4. Future Issuance Protocol Requirements 3.5.4. Future Issuance Protocol Requirements
The Privacy Pass architecture and ecosystem are both intended to be The Privacy Pass architecture and ecosystem are both intended to be
receptive to extensions that expand the current set of receptive to extensions that expand the current set of
functionalities through new issuance protocols. Each new issuance functionalities through new issuance protocols. Each new issuance
protocol and extension MUST adhere to the following requirements: protocol and extension MUST adhere to the following requirements:
1. Include a detailed analysis of the privacy impacts of the 1. Include a detailed analysis of the privacy impacts of the
extension, why these impacts are justified, and guidelines on how extension, why these impacts are justified, and guidelines on how
to use the protocol to mitigate or minimize negative deployment to use the protocol to mitigate or minimize negative deployment
or privacy consequences discussed in Section 5 and Section 6, or privacy consequences discussed in Sections 5 and 6,
respectively. respectively.
2. Adhere to the guidelines specified in Section 3.5.2 for managing 2. Adhere to the guidelines specified in Section 3.5.2 for managing
Issuer public key data. Issuer Public Key data.
3. Clearly specify how to interpret and validate TokenChallenge and 3. Clearly specify how to interpret and validate TokenChallenge and
Token messages that are exchanged during the redemption protocol. token messages that are exchanged during the redemption protocol.
3.6. Information Flow 3.6. Information Flow
The end-to-end process of redemption and issuance protocols involves The end-to-end process of redemption and issuance protocols involves
information flowing between Issuer, Origin, Client, and Attester. information flowing between the Issuer, Origin, Client, and Attester.
That information can have implications on the privacy goals that That information can have implications on the privacy goals that
Privacy Pass aims to provide as outlined in Section 3.3. In this Privacy Pass aims to provide as outlined in Section 3.3. In this
section, we describe the flow of information between each party. How section, we describe the flow of information between each party. How
this information affects the privacy goals in particular deployment this information affects the privacy goals in particular deployment
models is further discussed in Section 4. models is further discussed in Section 4.
3.6.1. Token Challenge Flow 3.6.1. Token Challenge Flow
To use Privacy Pass, Origins choose an Issuer from which they are To use Privacy Pass, Origins choose an Issuer from which they are
willing to accept tokens. Origins then construct a token challenge willing to accept tokens. Origins then construct a token challenge
skipping to change at page 18, line 21 skipping to change at line 808
* Issuer configuration. Information about the Issuer configuration, * Issuer configuration. Information about the Issuer configuration,
such as its identity or the public key used to validate tokens it such as its identity or the public key used to validate tokens it
creates, can be revealed during issuance and contribute to the creates, can be revealed during issuance and contribute to the
attestation or issuance contexts. attestation or issuance contexts.
* Attestation information. The issuance protocol can contribute * Attestation information. The issuance protocol can contribute
information to the attestation or issuance contexts based on what information to the attestation or issuance contexts based on what
attestation procedure the Issuer uses to trust a token request. attestation procedure the Issuer uses to trust a token request.
In particular, a token request that is validated by a given In particular, a token request that is validated by a given
Attester means that the Client which generated the token request Attester means that the Client that generated the token request
must be capable of the completing the designated attestation must be capable of completing the designated attestation
procedure. procedure.
* Origin information. The issuance protocol can contribute * Origin information. The issuance protocol can contribute
information about the Origin that challenged the Client in information about the Origin that challenged the Client; see
Section 3.6.1. In particular, a token request designated for a Section 3.6.1. In particular, a token request designated for a
specific Issuer might imply that the resulting token is for an specific Issuer might imply that the resulting token is for an
Origin that trusts the specified Issuer. However, this is not Origin that trusts the specified Issuer. However, this is not
always true, as some token requests can correspond to cross-Origin always true, as some token requests can correspond to cross-Origin
tokens, i.e., they are tokens that would be accepted at any Origin tokens, i.e., they are tokens that would be accepted at any Origin
that accepts the cross-Origin token. that accepts the cross-Origin token.
Moreover, a token may contribute information to the issuance Moreover, a token may contribute information to the issuance
attestation or contexts as described below. attestation or contexts as described below.
skipping to change at page 19, line 9 skipping to change at line 842
* Token. The token produced by the issuance protocol can contain * Token. The token produced by the issuance protocol can contain
information from the issuance context. In particular, depending information from the issuance context. In particular, depending
on the issuance protocol, tokens can contain public or private on the issuance protocol, tokens can contain public or private
metadata, and Issuers can choose that metadata on the basis of metadata, and Issuers can choose that metadata on the basis of
information in the issuance context. information in the issuance context.
Exceptional cases in the issuance protocol, such as when either the Exceptional cases in the issuance protocol, such as when either the
Attester or Issuer aborts the protocol, can contribute information to Attester or Issuer aborts the protocol, can contribute information to
the attestation or issuance contexts. The extent to which the attestation or issuance contexts. The extent to which
information in this context harms the Issuer-Client or Attester- information in this context harms the Issuer-Client or Attester-
Origin unlinkability goals in Section 3.3 depends on deployment Origin unlinkability goals as discussed in Section 3.3 depends on the
model; see Section 4. Clients can choose whether or not to deployment model; see Section 4. Clients can choose whether or not
contribute information to these contexts based on local policy or to contribute information to these contexts based on local policy or
preference. preference.
3.6.4. Token Redemption Flow 3.6.4. Token Redemption Flow
Clients send tokens to Origins during the redemption protocol. Any Clients send tokens to Origins during the redemption protocol. Any
information that is added to the token during issuance can therefore information that is added to the token during issuance can therefore
be sent to the Origin. Information can either be explicitly passed be sent to the Origin. Information can be either (1) explicitly
in a token, or it can be implicit in the way the Client responds to a passed in a token or (2) implicit in the way the Client responds to a
token challenge. For example, if a Client fails to complete token challenge. For example, if a Client fails to complete issuance
issuance, and consequently fails to redeem a token for a token and consequently fails to redeem a token for a token challenge, this
challenge, this can reveal information to the Origin that it might can reveal information to the Origin that it might not otherwise have
not otherwise have access to. However, an Origin cannot necessarily access to. However, an Origin cannot necessarily distinguish between
distinguish between a Client that fails to complete issuance and one a Client that fails to complete issuance and one that ignores the
that ignores the token challenge altogether. token challenge altogether.
4. Deployment Models 4. Deployment Models
The Origin, Attester, and Issuer portrayed in Figure 1 can be The Origin, Attester, and Issuer portrayed in Figure 1 can be
instantiated and deployed in a number of ways. The deployment model instantiated and deployed in a number of ways. The deployment model
directly influences the manner in which attestation, issuance, and directly influences the manner in which attestation, issuance, and
redemption contexts are separated to achieve Origin-Client, Issuer- redemption contexts are separated to achieve Origin-Client, Issuer-
Client, and Attester-Origin unlinkability. Client, and Attester-Origin unlinkability.
This section covers some expected deployment models and their This section covers some expected deployment models and their
corresponding security and privacy considerations. Each deployment corresponding security and privacy considerations. Each deployment
model is described in terms of the trust relationships and model is described in terms of the trust relationships and
communication patterns between Client, Attester, Issuer, and Origin. communication patterns between the Client, Attester, Issuer, and
Entities drawn within the same bounding box are assumed to be Origin. Entities drawn within the same bounding box are assumed to
operated by the same party and are therefore able to collude. be operated by the same party and are therefore able to collude.
Collusion can enable linking of attestation, issuance, and redemption Collusion can enable linking of attestation, issuance, and redemption
contexts. Entities not drawn within the same bounding box are contexts. Entities not drawn within the same bounding box (i.e.,
assumed to not collude, meaning that entities operated by separate operated by separate parties) are assumed to not collude. Mechanisms
parties that do not collude. Mechanisms for enforcing non-collusion for enforcing non-collusion are out of scope for this architecture.
are out of scope for this architecture.
4.1. Shared Origin, Attester, Issuer 4.1. Shared Origin, Attester, Issuer
In this model, the Origin, Attester, and Issuer are all operated by In this model, the Origin, Attester, and Issuer are all operated by
the same entity, as shown in Figure 3. the same entity, as shown in Figure 3.
+---------------------------------------------. +---------------------------------------------.
+--------+ | +----------+ +--------+ +--------+ | +--------+ | +----------+ +--------+ +--------+ |
| Client | | | Attester | | Issuer | | Origin | | | Client | | | Attester | | Issuer | | Origin | |
+---+----+ | +-----+----+ +----+---+ +---+----+ | +---+----+ | +-----+----+ +----+---+ +---+----+ |
skipping to change at page 20, line 33 skipping to change at line 912
described in [PrivacyPassCloudflare]. In this model, the Attester, described in [PrivacyPassCloudflare]. In this model, the Attester,
Issuer, and Origin share the attestation, issuance, and redemption Issuer, and Origin share the attestation, issuance, and redemption
contexts. As a result, attestation mechanisms that can uniquely contexts. As a result, attestation mechanisms that can uniquely
identify a Client, e.g., requiring that Clients authenticate with identify a Client, e.g., requiring that Clients authenticate with
some type of application-layer account, are not appropriate, as they some type of application-layer account, are not appropriate, as they
could lead to unlinkability violations. could lead to unlinkability violations.
Origin-Client, Issuer-Client, and Attester-Origin unlinkability Origin-Client, Issuer-Client, and Attester-Origin unlinkability
requires that issuance and redemption events be separated over time, requires that issuance and redemption events be separated over time,
such as through the use of tokens that correspond to token challenges such as through the use of tokens that correspond to token challenges
with an empty redemption context (see Section 3.4), or be separated with an empty redemption context (see Section 3.4), or that they be
over space, such as through the use of an anonymizing service when separated over space, such as through the use of an anonymizing
connecting to the Origin. service when connecting to the Origin.
4.2. Joint Attester and Issuer 4.2. Joint Attester and Issuer
In this model, the Attester and Issuer are operated by the same In this model, the Attester and Issuer are operated by the same
entity that is separate from the Origin. The Origin trusts the joint entity, separate from the Origin. The Origin trusts the joint
Attester and Issuer to perform attestation and issue Tokens. Clients Attester and Issuer to perform attestation and issue tokens. Clients
interact with the joint Attester and Issuer for attestation and interact with the joint Attester and Issuer for attestation and
issuance. This arrangement is shown in Figure 4. issuance. This arrangement is shown in Figure 4.
+------------------------------. +------------------------------.
+--------+ | +----------+ +--------+ | +--------+ +--------+ | +----------+ +--------+ | +--------+
| Client | | | Attester | | Issuer | | | Origin | | Client | | | Attester | | Issuer | | | Origin |
+---+----+ | +-----+----+ +----+---+ | +---+----+ +---+----+ | +-----+----+ +----+---+ | +---+----+
| `-------|---------------|-----' | | `-------|---------------|-----' |
|<---------------------------------- TokenChallenge --+ |<---------------------------------- TokenChallenge --+
| | | | | | | |
skipping to change at page 21, line 24 skipping to change at line 943
+------------- TokenRequest ----------->| | +------------- TokenRequest ----------->| |
|<----------- TokenResponse ------------+ | |<----------- TokenResponse ------------+ |
| | | |
+----------------------- Token -----------------------> +----------------------- Token ----------------------->
| | | |
Figure 4: Joint Attester and Issuer Deployment Model Figure 4: Joint Attester and Issuer Deployment Model
This model is useful if an Origin wants to offload attestation and This model is useful if an Origin wants to offload attestation and
issuance to a trusted entity. In this model, the Attester and Issuer issuance to a trusted entity. In this model, the Attester and Issuer
share an attestation and issuance context for the Client, which is share an attestation and issuance context for the Client, separate
separate from the Origin's redemption context. from the Origin's redemption context.
Similar to the Shared Origin, Attester, Issuer model, Issuer-Client Similar to the shared Origin, Attester, Issuer model, Issuer-Client
and Origin-Client unlinkability in this model requires issuance and and Origin-Client unlinkability in this model requires that issuance
redemption events, respectively, be separated over time or space. and redemption events, respectively, be separated over time or space.
Attester-Origin unlinkability requires that the Attester and Issuer Attester-Origin unlinkability requires that the Attester and Issuer
do not learn the Origin for a particular token request. For this do not learn the Origin for a particular token request. For this
reason, issuance protocols that require the Issuer to learn reason, issuance protocols that require the Issuer to learn
information about the Origin, such as that which is described in information about the Origin, such as the issuance protocol described
[RATE-LIMITED], are not appropriate since they could lead to in [RATE-LIMITED], are not appropriate, since they could lead to
Attester-Origin unlinkability violations through the Origin name. Attester-Origin unlinkability violations through the Origin name.
4.3. Joint Origin and Issuer 4.3. Joint Origin and Issuer
In this model, the Origin and Issuer are operated by the same entity, In this model, the Origin and Issuer are operated by the same entity,
separate from the Attester, as shown in the figure below. The Issuer separate from the Attester, as shown in Figure 5. The Issuer accepts
accepts token requests that come from trusted Attesters. Since the token requests that come from trusted Attesters. Since the Attester
Attester and Issuer are separate entities, this model requires some and Issuer are separate entities, this model requires some mechanism
mechanism by which Issuers establish trust in the Attester (as by which Issuers establish trust in the Attester (as described in
described in Section 3.3). For example, in settings where the Section 3.3). For example, in settings where the Attester is a
Attester is a Client-trusted service that directly communicates with Client-trusted service that directly communicates with the Issuer,
the Issuer, one way to establish this trust is via mutually- one way to establish this trust is via mutually authenticated TLS.
authenticated TLS. However, alternative authentication mechanisms However, alternative authentication mechanisms are possible. In this
are possible. This arrangement is shown in Figure 5. model, the Origin and Issuer are operated by the same entity,
separate from the Attester, as shown in the figure below.
+----------------------------. +----------------------------.
+--------+ +----------+ | +--------+ +--------+ | +--------+ +----------+ | +--------+ +--------+ |
| Client | | Attester | | | Issuer | | Origin | | | Client | | Attester | | | Issuer | | Origin | |
+---+----+ +-----+----+ | +----+---+ +---+----+ | +---+----+ +-----+----+ | +----+---+ +---+----+ |
| | `------|-------------|------' | | `------|-------------|------'
|<-------------------------------- TokenChallenge --+ |<-------------------------------- TokenChallenge --+
| | | | | | | |
|<=== Attestation ===>| | | |<=== Attestation ===>| | |
| | | | | | | |
skipping to change at page 22, line 28 skipping to change at line 993
| | | |
Figure 5: Joint Origin and Issuer Deployment Model Figure 5: Joint Origin and Issuer Deployment Model
This model is useful for Origins that require Client-identifying This model is useful for Origins that require Client-identifying
attestation, e.g., through the use of application-layer account attestation, e.g., through the use of application-layer account
information, but do not otherwise want to learn information about information, but do not otherwise want to learn information about
individual Clients beyond what is observed during the token individual Clients beyond what is observed during the token
redemption, such as Client IP addresses. redemption, such as Client IP addresses.
In this model, attestation contexts are separate from issuer and In this model, attestation contexts are separate from Issuer and
redemption contexts. As a result, any type of attestation is redemption contexts. As a result, any type of attestation is
suitable in this model. suitable in this model.
Moreover, any type of token challenge is suitable assuming there is Moreover, assuming that there is more than one Origin involved, any
more than one Origin involved, since no single party will have access type of token challenge is suitable, since no single party will have
to the identifying Client information and unique Origin information. access to the identifying Client information and unique Origin
Issuers that produce tokens for a single Origin are not suitable in information. Issuers that produce tokens for a single Origin are not
this model since an Attester can infer the Origin from a token suitable in this model, since an Attester can infer the Origin from a
request, as described in Section 3.6.3. However, since the issuance token request, as described in Section 3.6.3. However, since the
protocol provides input secrecy, the Attester does not learn details issuance protocol provides input secrecy, the Attester does not learn
about the corresponding token challenge, such as whether the token details about the corresponding token challenge, such as whether the
challenge is per-Origin or cross-Origin. token challenge is per Origin or across Origins.
4.4. Split Origin, Attester, Issuer 4.4. Split Origin, Attester, Issuer
In this model, the Origin, Attester, and Issuer are all operated by In this model, the Origin, Attester, and Issuer are all operated by
different entities. As with the joint Origin and Issuer model, the different entities. As with the Joint Origin and Issuer model
Issuer accepts token requests that come from trusted Attesters, and (Section 4.3), the Issuer accepts token requests that come from
the details of that trust establishment depend on the issuance trusted Attesters, and the details of that trust establishment depend
protocol and relationship between Attester and Issuer; see on the issuance protocol and relationship between the Attester and
Section 3.3. This arrangement is shown in Figure 1. Issuer; see Section 3.3. This arrangement is shown in Figure 1.
This is the most general deployment model, and is necessary for some This is the most general deployment model and is necessary for some
types of issuance protocols where the Attester plays a role in token types of issuance protocols where the Attester plays a role in token
issuance; see [RATE-LIMITED] for one such type of issuance protocol. issuance; see [RATE-LIMITED] for one such type of issuance protocol.
In this model, the Attester, Issuer, and Origin have a separate view In this model, the Attester, Issuer, and Origin have a separate view
of the Client: the Attester sees potentially sensitive Client of the Client: the Attester sees potentially sensitive Client-
identifying information, such as account identifiers or IP addresses, identifying information, such as account identifiers or IP addresses;
the Issuer sees only the information necessary for issuance, and the the Issuer sees only the information necessary for issuance; and the
Origin sees token challenges, corresponding tokens, and Client source Origin sees token challenges, corresponding tokens, and Client source
information, such as their IP address. As a result, attestation, information, such as their IP address. As a result, attestation,
issuance, and redemption contexts are separate, and therefore any issuance, and redemption contexts are separate, and therefore any
type of token challenge is suitable in this model as long as there is type of token challenge is suitable in this model as long as there is
more than a single Origin. more than a single Origin.
As in the Joint Origin and Issuer model in Section 4.3, and as As with the Joint Origin and Issuer model (Section 4.3), and as
described in Section 3.6.3, if the Issuer produces tokens for a described in Section 3.6.3, if the Issuer produces tokens for a
single Origin, then per-Origin tokens are not appropriate since the single Origin, then per-Origin tokens are not appropriate, since the
Attester can infer the Origin from a token request. Attester can infer the Origin from a token request.
5. Deployment Considerations 5. Deployment Considerations
Section 4 discusses deployment models that are possible in practice. Section 4 discusses deployment models that are possible in practice.
Beyond possible implications on security and privacy properties of Beyond possible implications on security and privacy properties of
the resulting system, Privacy Pass deployments can impact the overall the resulting system, Privacy Pass deployments can impact the overall
ecosystem in two important ways: (1) discriminatory treatment of ecosystem in two important ways: (1) discriminatory treatment of
Clients and the gated access to otherwise open services, and (2) Clients and the gated access to otherwise open services and
centralization. This section describes considerations relevant to (2) centralization. This section describes considerations relevant
these topics. to these topics.
5.1. Discriminatory Treatment 5.1. Discriminatory Treatment
Origins can use tokens as a signal for distinguishing between Clients Origins can use tokens as a signal for distinguishing between
that are capable of completing attestation with one Attester trusted (1) Clients that are capable of completing attestation with one
by the Origin's chosen Issuer, and Clients that are not capable of Attester trusted by the Origin's chosen Issuer and (2) Clients that
doing the same. A consequence of this is that Privacy Pass could are not capable of doing the same. A consequence of this is that
enable discriminatory treatment of Clients based on Attestation Privacy Pass could enable discriminatory treatment of Clients based
support. For example, an Origin could only authorize Clients that on attestation support. For example, an Origin could only authorize
successfully authenticate with a token, prohibiting access to all Clients that successfully authenticate with a token, prohibiting
other Clients. access to all other Clients.
The type of attestation procedures supported for a particular The types of attestation procedures supported for a particular
deployment depends greatly on the use case. For example, consider a deployment depend greatly on the use case. For example, consider a
proprietary deployment of Privacy Pass that authorizes clients to proprietary deployment of Privacy Pass that authorizes Clients to
access a resource such as an anonymization service. In this context, access a resource such as an anonymization service. In this context,
it is reasonable to support specific types of attestation procedures it is reasonable to support specific types of attestation procedures
that demonstrate Clients can access the resource, such as with an that demonstrate that Clients can access the resource, such as with
account or specific type of device. However, in open deployments of an account or specific type of device. However, in open deployments
Privacy Pass that are used to safeguard access to otherwise open or of Privacy Pass that are used to safeguard access to otherwise open
publicly accessible resources, diversity in attestation procedures is or publicly accessible resources, diversity in attestation procedures
critically important so as to not discriminate against Clients that is critically important so as to not discriminate against Clients
choose certain software, hardware, or identity providers. that choose certain software, hardware, or identity providers.
In principle, Issuers should strive to mitigate discriminatory In principle, Issuers should strive to mitigate discriminatory
behavior by providing equitable access to all Clients. This can be behavior by providing equitable access to all Clients. This can be
done by working with a set of Attesters that are suitable for all done by working with a set of Attesters that are suitable for all
Clients. In practice, this may require tradeoffs in what type of Clients. In practice, this may require trade-offs in what type of
attestation Issuers are willing to trust so as to enable more attestation Issuers are willing to trust so as to enable more
widespread support. In other words, trusting a variety of Attesters widespread support. In other words, trusting a variety of Attesters
with a diverse set of attestation procedures would presumably with a diverse set of attestation procedures would presumably
increase support among Clients, though most likely at the expense of increase support among Clients, though most likely at the expense of
decreasing the overall value of tokens issued by the Issuer. decreasing the overall value of tokens issued by the Issuer.
For example, to disallow discriminatory behavior between Clients with For example, to disallow discriminatory behavior between Clients with
and without device attestation support, an Issuer may wish to support and without device attestation support, an Issuer may wish to support
Attesters that support CAPTCHA-based attestation. This means that Attesters that support CAPTCHA-based attestation. This means that
the overall attestation value of a Privacy Pass token is bound by the the overall attestation value of a Privacy Pass token is bound by the
difficulty in spoofing or bypassing either one of these attestation difficulty in spoofing or bypassing either one of these attestation
procedures. procedures.
5.2. Centralization 5.2. Centralization
A consequence of limiting the number of participants (Attesters or A consequence of limiting the number of participants (Attesters or
Issuers) in Privacy Pass deployments for meaningful privacy is that Issuers) in Privacy Pass deployments for meaningful privacy is that
it forces concentrated centralization amongst those participants. it forces concentrated centralization among those participants.
[CENTRALIZATION] discusses several ways in which this might be [CENTRALIZATION] discusses several ways in which this might be
mitigated. For example, a multi-stakeholder governance model could mitigated. For example, a multi-stakeholder governance model could
be established to determine what candidate participants are fit to be established to determine what candidate participants are fit to
operate as participants in a Privacy Pass deployment. This is operate as participants in a Privacy Pass deployment. This is
precisely the system used to control the Web's trust model. precisely the system used to control the Web's trust model.
Alternatively, Privacy Pass deployments might mitigate this problem Alternatively, Privacy Pass deployments might mitigate this problem
through implementation. For example, rather than centralize the role through implementation. For example, rather than centralize the role
of attestation in one or few entities, attestation could be a of attestation in one or a few entities, attestation could be a
distributed function performed by a quorum of many parties, provided distributed function performed by a quorum of many parties, provided
that neither Issuers nor Origins learn which Attester implementations that neither Issuers nor Origins learn which Attester implementations
were chosen. As a result, Clients could have more opportunities to were chosen. As a result, Clients could have more opportunities to
switch between attestation participants. switch between attestation participants.
6. Privacy Considerations 6. Privacy Considerations
The previous section discusses the impact of deployment details on The previous section discusses the impact of deployment details on
Origin-Client, Issuer-Client, and Attester-Origin unlinkability. The Origin-Client, Issuer-Client, and Attester-Origin unlinkability. The
value these properties affords to end users depends on the size of value these properties afford to end users depends on the size of
anonymity sets in which Clients or Origins are unlinkable. For anonymity sets in which Clients or Origins are unlinkable. For
example, consider two different deployments, one wherein there exists example, consider two different deployments, one wherein there exists
a redemption anonymity set of size two and another wherein there a redemption anonymity set of size two and another wherein there
redemption anonymity set of size 2^32. Although Origin-Client exists a redemption anonymity set of size 2^32. Although Origin-
unlinkability guarantees that the Origin cannot link any two requests Client unlinkability guarantees that the Origin cannot link any two
to the same Client based on these contexts, respectively, the requests to the same Client based on these contexts, respectively,
probability of determining the "true" Client is higher the smaller the smaller these sets become, the higher the probability of
these sets become. determining the "true" Client.
In practice, there are a number of ways in which the size of In practice, there are a number of ways in which the size of
anonymity sets may be reduced or partitioned, though they all center anonymity sets may be reduced or partitioned, though they all center
around the concept of consistency. In particular, by definition, all around the concept of consistency. In particular, by definition, all
Clients in an anonymity set share a consistent view of information Clients in an anonymity set share a consistent view of information
needed to run the issuance and redemption protocols. An example type needed to run the issuance and redemption protocols. The Issuer
of information needed to run these protocols is the Issuer public Public Key is an example of the type of information needed to run
key. When two Clients have inconsistent information, these Clients these protocols. When two Clients have inconsistent information,
effectively have different redemption contexts and therefore belong these Clients effectively have different redemption contexts and
in different anonymity sets. therefore belong in different anonymity sets.
The following sections discuss issues that can influence anonymity The following subsections discuss issues that can influence anonymity
set size. For each issue, we discuss mitigations or safeguards to set size. For each issue, we discuss mitigations or safeguards to
protect against the underlying problem. protect against the underlying problem.
6.1. Partitioning by Issuance Metadata 6.1. Partitioning by Issuance Metadata
Any public or private metadata bits of information can be used to Any public or private metadata bits of information can be used to
further segment the size of the Client's anonymity set. Any Issuer further segment the size of the Client anonymity set. Any Issuer
that wanted to track a single Client could add a single metadata bit 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 1, to Client tokens. For the tracked Client, it would set the bit to 1,
and 0 otherwise. Adding additional bits provides an exponential and 0 otherwise. Adding additional bits provides an exponential
increase in tracking granularity similarly to introducing more increase in tracking granularity in a manner similar to introducing
Issuers (though with more potential targeting). more Issuers (though with more potential targeting).
For this reason, deployments should take the amount of metadata used For this reason, deployments should take the amount of metadata used
by an Issuer in creating redemption tokens must into account -- by an Issuer in creating tokens, together with the bits of
together with the bits of information that Issuers may learn about information that Issuers may learn about Clients through other means,
Clients otherwise. Since this metadata may be useful for practical into account. Since this metadata may be useful for practical
deployments of Privacy Pass, Issuers must balance this against the deployments of Privacy Pass, Issuers must balance this against the
reduction in Client privacy. reduction in Client privacy.
The number of permitted metadata values often depends on deployment- The number of permitted metadata values often depends on deployment-
specific details. In general, limiting the amount of metadata specific details. In general, limiting the amount of metadata
permitted helps limit the extent to which metadata can uniquely permitted helps limit the extent to which metadata can uniquely
identify individual Clients. Failure to bound the number of possible identify individual Clients. Failure to bound the number of possible
metadata values can therefore lead to reduction in Client privacy. metadata values can therefore lead to a reduction in Client privacy.
Most token types do not admit any metadata, so this bound is Most token types do not admit any metadata, so this bound is
implicitly enforced. implicitly enforced.
6.2. Partitioning by Issuance Consistency 6.2. Partitioning by Issuance Consistency
Anonymity sets can be partitioned by information used for the Anonymity sets can be partitioned by information used for the
issuance protocol, including: metadata, Issuer configuration (keys), issuance protocol, including metadata, Issuer configuration (keys),
and Issuer selection. and Issuer selection.
Any issuance metadata bits of information can be used to partition Any issuance metadata bits of information can be used to partition
the Client anonymity set. For example, any Issuer that wanted to the Client anonymity set. For example, any Issuer that wanted to
track a single Client could add a single metadata bit to Client track a single Client could add a single metadata bit to Client
tokens. For the tracked Client it would set the bit to 1, and 0 tokens. For the tracked Client, it would set the bit to 1, and 0
otherwise. Adding additional bits provides an exponential increase otherwise. Adding additional bits provides an exponential increase
in tracking granularity similarly to introducing more Issuers (though in tracking granularity in a manner similar to introducing more
with more potential targeting). Issuers (though with more potential targeting).
The number of active Issuer configurations also contributes to The number of active Issuer configurations also contributes to
anonymity set partitioning. In particular, when an Issuer updates anonymity set partitioning. In particular, when an Issuer updates
their configuration and the corresponding key pair, any Client that their configuration and the corresponding key pair, any Client that
invokes the issuance protocol with this configuration becomes part of invokes the issuance protocol with this configuration becomes part of
a set of Clients which also ran the issuance protocol using the same a set of Clients that also ran the issuance protocol using the same
configuration. Issuer configuration updates, e.g., due to key configuration. Issuer configuration updates, e.g., due to key
rotation, are an important part of hedging against long-term private rotation, are an important part of hedging against long-term private
key compromise. In general, key rotations represent a trade-off key compromise. In general, key rotations represent a trade-off
between Client privacy and Issuer security. Therefore, it is between Client privacy and Issuer security. Therefore, it is
important that key rotations occur on a regular cycle to reduce the important that key rotations occur on a regular cycle to reduce the
harm of an Issuer key compromise. harm of an Issuer key compromise.
Lastly, if Clients are willing to issue and redeem tokens from a Lastly, if Clients are willing to issue and redeem tokens from a
large number of Issuers for a specific Origin, and that Origin large number of Issuers for a specific Origin and that Origin accepts
accepts tokens from all Issuers, partitioning can occur. As an tokens from all Issuers, partitioning can occur. As an example, if a
example, if a Client obtains tokens from many Issuers and an Origin Client obtains tokens from many Issuers and an Origin later
later challenges that Client for a token from each Issuer, the Origin challenges that Client for a token from each Issuer, the Origin can
can learn information about the Client. This arrangement might learn information about the Client. This arrangement might happen if
happen if Clients request tokens from different Issuers, each of Clients request tokens from different Issuers, each of which has
which have different Attester preferences. Each per-Issuer token different Attester preferences. Each per-Issuer token that a Client
that a Client holds essentially corresponds to a bit of information holds essentially corresponds to a bit of information about the
about the Client that Origin learns. Therefore, there is an Client that the Origin learns. Therefore, there is an exponential
exponential loss in privacy relative to the number of Issuers. loss in privacy relative to the number of Issuers.
The fundamental problem here is that the number of possible issuance The fundamental problem here is that the number of possible issuance
configurations, including the keys in use and the Issuer identities configurations, including the keys in use and the Issuer identities
themselves, can partition the Client anonymity set. To mitigate this themselves, can partition the Client anonymity set. To mitigate this
problem, Clients SHOULD bound the number of active issuance problem, Clients SHOULD bound the number of active issuance
configurations per Origin as well as across Origins. Moreover, configurations per Origin as well as across Origins. Moreover,
Clients SHOULD employ some form of consistency mechanism to ensure Clients SHOULD employ some form of consistency mechanism to ensure
that they receive the same configuration information and are not that they receive the same configuration information and are not
being actively partitioned into smaller anonymity sets. See being actively partitioned into smaller anonymity sets. See
[CONSISTENCY] for possible consistency mechanisms. Depending on the [CONSISTENCY] for possible consistency mechanisms. Depending on the
deployment, the Attester might assist the Client in applying these deployment, the Attester might assist the Client in applying these
consistency checks across clients. Failure to apply a consistency consistency checks across Clients. Failure to apply a consistency
check can allow Client-specific keys to violate Origin-Client check can allow Client-specific keys to violate Origin-Client
unlinkability. unlinkability.
6.3. Partitioning by Side-Channels 6.3. Partitioning by Side Channels
Side-channel attacks, such as those based on timing correlation, Side-channel attacks, such as those based on timing correlation,
could be used to reduce anonymity set size. In particular, for could be used to reduce anonymity set size. In particular, for
interactive tokens that are bound to a Client-specific redemption interactive tokens that are bound to a Client-specific redemption
context, the anonymity set of Clients during the issuance protocol context, the anonymity set of Clients during the issuance protocol
consists of those Clients that started issuance between the time of consists of those Clients that started issuance between the time of
the Origin's challenge and the corresponding token redemption. the Origin's challenge and the corresponding token redemption.
Depending on the number of Clients using a particular Issuer during Depending on the number of Clients using a particular Issuer during
that time window, the set can be small. Applications should take that time window, the set can be small. Applications should take
such side channels into consideration before choosing a particular such side channels into consideration before choosing a particular
deployment model and type of token challenge and redemption context. deployment model and type of token challenge and redemption context.
7. Security Considerations 7. Security Considerations
This document describes security and privacy requirements for the This document describes security and privacy requirements for the
Privacy Pass redemption and issuance protocols. It also describes Privacy Pass redemption and issuance protocols. It also describes
deployment models built around non-collusion assumptions and privacy deployment models built around non-collusion assumptions and privacy
considerations for using Privacy Pass within those models. Ensuring considerations for using Privacy Pass within those models. Ensuring
Client privacy -- separation of attestation and redemption contexts Client privacy -- separation of attestation and redemption contexts
-- requires active work on behalf of the Client, especially in the -- requires active work on behalf of the Client, especially in the
presence of malicious Issuers and Origins. Implementing mitigations presence of malicious Issuers and Origins. Implementing the
discussed in Section 4 and Section 6 is therefore necessary to ensure mitigations discussed in Sections 4 and 6 is therefore necessary to
that Privacy Pass offers meaningful privacy improvements to end- ensure that Privacy Pass offers meaningful privacy improvements to
users. end users.
7.1. Token Caching 7.1. Token Caching
Depending on the Origin's token challenge, Clients can request and Depending on the Origin's token challenge, Clients can request and
cache more than one token using an issuance protocol. Cached tokens cache more than one token using an issuance protocol. Cached tokens
help improve privacy by separating the time of token issuance from help improve privacy by separating the time of token issuance from
the time of token redemption, and also allow Clients to reduce the the time of token redemption; they also allow Clients to reduce the
overhead of receiving new tokens via the issuance protocol. overhead of receiving new tokens via the issuance protocol.
As a consequence, Origins that send token challenges which are As a consequence, Origins that send token challenges that are
compatible with cached tokens need to take precautions to ensure that compatible with cached tokens need to take precautions to ensure that
tokens are not replayed. This is typically done via keeping track of tokens are not replayed. This is typically done via keeping track of
tokens that are redeemed for the period of time in which cached tokens that are redeemed for the period of time in which cached
tokens would be accepted for particular challenges. tokens would be accepted for particular challenges.
Moreover, since tokens are not intrinsically bound to Clients, it is Moreover, since tokens are not intrinsically bound to Clients, it is
possible for malicious Clients to collude and share tokens in a so- possible for malicious Clients to collude and share tokens in a so-
called "hoarding attack." As an example of this attack, many called "hoarding attack". As an example of this attack, many
distributed Clients could obtain cacheable tokens and then share them distributed Clients could obtain cacheable tokens and then share them
with a single Client to redeem in a way that would violate an with a single Client to redeem the tokens in a way that would violate
Origin's attempt to limit tokens to any one particular Client. In an Origin's attempt to limit tokens to any one particular Client. In
general, mechanisms for mitigating hoarding attacks depend on the general, mechanisms for mitigating hoarding attacks depend on the
deployment model and use case. For example, in the Joint Origin and deployment model and use case. For example, in the Joint Origin and
Issuer model, comparing the issuance and redemption contexts can help Issuer model, comparing the issuance and redemption contexts can help
detect hoarding attacks, i.e., if the distribution of redemption detect hoarding attacks, i.e., if the distribution of redemption
contexts is noticeably different from the distribution of issuance contexts is noticeably different from the distribution of issuance
contexts. Rate limiting issuance, either at the Client, Attester, or contexts. Rate-limiting issuance, at either the Client, Attester, or
Issuer, can also help mitigate these attacks. Issuer, can also help mitigate these attacks.
8. IANA Considerations 8. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
9. References 9. References
9.1. Normative References 9.1. Normative References
[AUTHSCHEME] [AUTHSCHEME]
Pauly, T., Valdez, S., and C. A. Wood, "The Privacy Pass Pauly, T., Valdez, S., and C. A. Wood, "The Privacy Pass
HTTP Authentication Scheme", Work in Progress, Internet- HTTP Authentication Scheme", RFC 9577,
Draft, draft-ietf-privacypass-auth-scheme-13, 12 September DOI 10.17487/RFC9577, May 2024,
2023, <https://datatracker.ietf.org/doc/html/draft-ietf- <https://www.rfc-editor.org/info/rfc9577>.
privacypass-auth-scheme-13>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
9.2. Informative References 9.2. Informative References
[CENTRALIZATION] [CENTRALIZATION]
Nottingham, M., "Centralization, Decentralization, and Nottingham, M., "Centralization, Decentralization, and
Internet Standards", Work in Progress, Internet-Draft, Internet Standards", RFC 9518, DOI 10.17487/RFC9518,
draft-nottingham-avoiding-internet-centralization-14, 14 December 2023, <https://www.rfc-editor.org/info/rfc9518>.
September 2023, <https://datatracker.ietf.org/doc/html/
draft-nottingham-avoiding-internet-centralization-14>.
[CONSISTENCY] [CONSISTENCY]
Davidson, A., Finkel, M., Thomson, M., and C. A. Wood, Davidson, A., Finkel, M., Thomson, M., and C. A. Wood,
"Key Consistency and Discovery", Work in Progress, "Key Consistency and Discovery", Work in Progress,
Internet-Draft, draft-ietf-privacypass-key-consistency-01, Internet-Draft, draft-ietf-privacypass-key-consistency-01,
10 July 2023, <https://datatracker.ietf.org/doc/html/ 10 July 2023, <https://datatracker.ietf.org/doc/html/
draft-ietf-privacypass-key-consistency-01>. draft-ietf-privacypass-key-consistency-01>.
[DMS2004] Dingledine, R., Mathewson, N., and P. Syverson, "Tor: The [DMS2004] Dingledine, R., Mathewson, N., and P. Syverson, "Tor: The
Second-Generation Onion Router", August 2004, Second-Generation Onion Router", May 2004,
<https://svn.torproject.org/svn/projects/design-paper/tor- <https://svn.torproject.org/svn/projects/design-paper/tor-
design.html>. design.html>.
[HIJK21] Huang, S., Iyengar, S., Jeyaraman, S., Kushwah, S., Lee, [HIJK21] Huang, S., Iyengar, S., Jeyaraman, S., Kushwah, S., Lee,
C. K., Luo, Z., Mohassel, P., Raghunathan, A., Shaikh, S., C-K., Luo, Z., Mohassel, P., Raghunathan, A., Shaikh, S.,
Sung, Y. C., and A. Zhang, "PrivateStats: De-Identified Sung, Y-C., and A. Zhang, "DIT: De-Identified
Authenticated Logging at Scale", January 2021, Authenticated Telemetry at Scale", January 2021,
<https://research.fb.com/privatestats>. <https://research.fb.com/privatestats>.
[ISSUANCE] Celi, S., Davidson, A., Valdez, S., and C. A. Wood, [ISSUANCE] Celi, S., Davidson, A., Valdez, S., and C. A. Wood,
"Privacy Pass Issuance Protocol", Work in Progress, "Privacy Pass Issuance Protocols", RFC 9578,
Internet-Draft, draft-ietf-privacypass-protocol-14, 14 DOI 10.17487/RFC9578, May 2024,
September 2023, <https://datatracker.ietf.org/doc/html/ <https://www.rfc-editor.org/info/rfc9578>.
draft-ietf-privacypass-protocol-14>.
[KLOR20] Kreuter, B., Lepoint, T., Orrù, M., Raykova, M., and [KLOR20] Kreuter, B., Lepoint, T., Orrù, M., Raykova, M., and
Springer International Publishing, "Anonymous Tokens with Springer International Publishing, "Anonymous Tokens with
Private Metadata Bit", Advances in Cryptology CRYPTO Private Metadata Bit", Advances in Cryptology - CRYPTO
2020, pp. 308-336, DOI 10.1007/978-3-030-56784-2_11, 2020, 2020, pp. 308-336, DOI 10.1007/978-3-030-56784-2_11, 2020,
<https://doi.org/10.1007/978-3-030-56784-2_11>. <https://doi.org/10.1007/978-3-030-56784-2_11>.
[OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", Work in [OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", RFC 9458,
Progress, Internet-Draft, draft-ietf-ohai-ohttp-10, 25 DOI 10.17487/RFC9458, January 2024,
August 2023, <https://datatracker.ietf.org/doc/html/draft- <https://www.rfc-editor.org/info/rfc9458>.
ietf-ohai-ohttp-10>.
[PrivacyPassCloudflare] [PrivacyPassCloudflare]
Sullivan, N., "Cloudflare Supports Privacy Pass", n.d., Sullivan, N., "Cloudflare supports Privacy Pass", November
<https://blog.cloudflare.com/cloudflare-supports-privacy- 2017, <https://blog.cloudflare.com/cloudflare-supports-
pass/>. privacy-pass/>.
[PrivacyPassExtension]
"Privacy Pass Browser Extension", n.d.,
<https://github.com/privacypass/challenge-bypass-
extension>.
[RATE-LIMITED] [RATE-LIMITED]
Hendrickson, S., Iyengar, J., Pauly, T., Valdez, S., and Hendrickson, S., Iyengar, J., Pauly, T., Valdez, S., and
C. A. Wood, "Rate-Limited Token Issuance Protocol", Work C. A. Wood, "Rate-Limited Token Issuance Protocol", Work
in Progress, Internet-Draft, draft-privacypass-rate-limit- in Progress, Internet-Draft, draft-ietf-privacypass-rate-
tokens-03, 6 July 2022, limit-tokens-06, 1 April 2024,
<https://datatracker.ietf.org/doc/html/draft-privacypass- <https://datatracker.ietf.org/doc/html/draft-ietf-
rate-limit-tokens-03>. privacypass-rate-limit-tokens-06>.
[RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N., and [RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N., and
W. Pan, "Remote ATtestation procedureS (RATS) W. Pan, "Remote ATtestation procedureS (RATS)
Architecture", RFC 9334, DOI 10.17487/RFC9334, January Architecture", RFC 9334, DOI 10.17487/RFC9334, January
2023, <https://www.rfc-editor.org/rfc/rfc9334>. 2023, <https://www.rfc-editor.org/info/rfc9334>.
Appendix A. Acknowledgements Acknowledgements
The authors would like to thank Eric Kinnear, Scott Hendrickson, The authors would like to thank Eric Kinnear, Scott Hendrickson,
Tommy Pauly, Christopher Patton, Benjamin Schwartz, Martin Thomson, Tommy Pauly, Christopher Patton, Benjamin Schwartz, Martin Thomson,
Steven Valdez and other contributors of the Privacy Pass Working Steven Valdez, and other contributors of the Privacy Pass Working
Group for many helpful contributions to this document. Group for many helpful contributions to this document.
Authors' Addresses Authors' Addresses
Alex Davidson Alex Davidson
LIP LIP
Lisbon Lisbon
Portugal Portugal
Email: alex.davidson92@gmail.com Email: alex.davidson92@gmail.com
Jana Iyengar Jana Iyengar
Fastly Fastly
Email: jri@fastly.com Email: jri@fastly.com
Christopher A. Wood Christopher A. Wood
Cloudflare Cloudflare
101 Townsend St 101 Townsend St
San Francisco, San Francisco, CA 94107
United States of America United States of America
Email: caw@heapingbits.net Email: caw@heapingbits.net
 End of changes. 142 change blocks. 
358 lines changed or deleted 354 lines changed or added

This html diff was produced by rfcdiff 1.48.