<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-architecture-04" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="Privacy Pass Architecture">Privacy Pass Architectural Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-04"/>
    <author initials="A." surname="Davidson" fullname="Alex Davidson">
      <organization>LIP</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>alex.davidson92@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar">
      <organization>Fastly</organization>
      <address>
        <email>jri@fastly.com</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <street>101 Townsend St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="July" day="01"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies the architectural framework for constructing
secure and anonymity-preserving instantiations of the Privacy Pass
protocol. It provides recommendations on how the protocol ecosystem
should be constructed to ensure the privacy of clients, and the security
of all participating entities.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Privacy Pass is a protocol for authorization based on anonymous-credential
authentication mechanisms. Typical approaches for authorizing clients,
such as through the use of long-term cookies, are not privacy-friendly
since they allow servers to track clients across sessions and interactions.
Privacy Pass takes a different approach: instead of presenting linkable
state carrying information to servers, e.g., whether or not the client
is an authorized user or has completed some prior challenge, clients
present unlinkable proofs that attest to this information.</t>
      <t>The most basic Privacy Pass protocol provides a set of cross-origin
authorization tokens that protect the client's anonymity during interactions
with a server. This allows clients to communicate an attestation of a
previously authenticated server action, without having to reauthenticate
manually. The tokens retain anonymity in the sense that the act of
revealing them cannot be linked back to the session where they were
initially issued.</t>
      <t>At a high level, Privacy Pass is composed of two protocols: issuance
and redemption.</t>
      <t>The issuance protocol runs between a Client and two network functions in the
Privacy Pass architecture: Attestation and Issuance. These two network
functions can be implemented by the same protocol participant, but can also be
implemented separately. The Issuer is responsible for issuing tokens in
response to requests from Clients. The Attester is responsible for attesting
properties about the Client for which tokens are issued. The Issuer needs to be
trusted by the server that later redeems the token. Attestation can be
performed by the Issuer or by an Attester that is trusted by the Issuer.
Clients might prefer to select different Attesters, separate from the Issuer,
to be able to use preferred authentication methods or improve privacy by not
directly communicating with an Issuer. Depending on the attestation,
Attesters can store state about a Client, such as the number of overall tokens
issued thus far. As an example of an Issuance protocol, in the original Privacy
Pass protocol <xref target="PPSRV"/>, tokens were only issued to Clients that solved
CAPTCHAs. In this context, the Attester attested that some client solved a
CAPTCHA and the resulting token produced by the Issuer was proof of this fact.</t>
      <t>The redemption protocol runs between Client and Origin (server). It allows
Origins to challenge Clients to present one or more tokens for authorization.
Depending on the type of token, e.g., whether or not it is cross-origin
or per-origin, and whether or not it can be cached, the Client either presents
a previously obtained token or invokes the issuance protocol to acquire one
for authorization.</t>
      <t>The issuance and redemption protocols operate in concert as shown in
the figure below.</t>
      <figure anchor="fig-overview">
        <name>Privacy Pass Architectural Components</name>
        <artwork><![CDATA[
      Origin          Client        Attester          Issuer
  /--------------------------------------------------------------------
  |                 /-----------------------------------------\
  |   Challenge ----> Attest --->                             |
  |                 | TokenRequest --------------->           |
  |   Redemption    |                              (validate) | Issuance
  |      Flow       |                              (evaluate) |   Flow
  |                 |     <-------------------  TokenResponse |
  |   <--- Response |                                         |
  |                 \-----------------------------------------/
  \--------------------------------------------------------------------
]]></artwork>
      </figure>
      <t>This document describes requirements for both issuance and redemption
protocols. This document also describes ecosystem considerations that
impact the stated privacy and security guarantees of the protocol.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The following terms are used throughout this document.</t>
      <ul spacing="normal">
        <li>Client: An entity that seeks authorization to an Origin.</li>
        <li>Origin: An entity that challenges Clients for tokens.</li>
        <li>Issuer: An entity that issues tokens to Clients for properties
attested to by the Attester.</li>
        <li>Attester: An entity that attests to properties of Client for the
purposes of token issuance.</li>
      </ul>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The Privacy Pass architecture consists of four logical entities --
Client, Origin, Issuer, and Attester -- that work in concert as
shown in <xref target="introduction"/> for token issuance and redemption. This
section describes the purpose of token issuance and redemption
and the requirements therein on the relevant participants.</t>
      <section anchor="redemption-protocol">
        <name>Redemption Protocol</name>
        <t>The redemption protocol is a simple challenge-response based authorization
protocol between Client and Origin. Origins prompt Clients with a token
challenge and, if possible, Clients present a valid token for the challenge
in response. The context in which an Origin challenges a Client for a token
is referred to as the redemption context. This context includes all information
associated with the redemption event, such as the timestamp of the event,
Client visible information (including the IP address), and the Origin name.</t>
        <t>The challenge controls the type of token that the Origin will accept for the
given resource. As described in <xref target="HTTP-Authentication"/>,
there are a number of ways in which the token may vary, including:</t>
        <ul spacing="normal">
          <li>Issuance protocol. The token identifies the type of issuance protocol
required for producing the token. Different issuance protocols have different
security properties, e.g., some issuance protocols may produce tokens that
are publicly verifiable, whereas others may not have this property.</li>
          <li>Issuer identity. Tokens identify which issuers are trusted for a given
issuance protocol.</li>
          <li>Redemption context. Tokens can be bound to a given redemption context, which
influences a client's ability to pre-fetch and cache tokens. For example,
an empty redemption context always allows tokens to be issued and redeemed
non-interactively, whereas a fresh and random redemption context means
that the redeemed token must be issued only after the client receives the challenge.
See Section 2.1.1 of <xref target="HTTP-Authentication"/> for more details.</li>
          <li>Per-origin or cross-origin. Tokens can be constrained to the Origin for
which the challenge originated, or can be used across Origins.</li>
        </ul>
        <t>Depending on the use case, Origins may need to maintain state to track
redeemed tokens. For example, Origins that accept cross-origin
across shared redemption contexts tokens SHOULD track which tokens
have been redeemed already in those redemption contexts, since these
tokens can be issued and then spent multiple times in response to any
such challenge. See Section 2.1.1 of <xref target="HTTP-Authentication"/> for discussion.</t>
        <t>Origins that admit cross-origin tokens bear some risk of allowing tokens
issued for one Origin to be spent in an interaction with another Origin.
If tokens protected with resources are unique to a single Origin, then
said Origin MUST NOT admit cross-origin tokens for authorization.</t>
      </section>
      <section anchor="issuance-protocol">
        <name>Issuance Protocol</name>
        <t>The issuance protocol embodies the core of Privacy Pass. It takes as input
a challenge from the redemption protocol and produces a token, as shown
in the figure below.</t>
        <figure anchor="fig-issuance">
          <name>Issuance Overview</name>
          <artwork><![CDATA[
  Origin          Client        Attester          Issuer

                  +--------------------------------------\
    Challenge ----> TokenRequest --->                    |
                  |             (attest)                 |
                  |                TokenRequest --->     |
                  |                            (evaluate)|
                  |                   <--- TokenResponse |
      Token  <----+ TokenResponse <---                   |
                  |--------------------------------------/
]]></artwork>
        </figure>
        <t>Clients interact with the Attester and Issuer to produce a token in response to
a challenge. The context in which an Attester vouches for a Client during issuance
is referred to as the attestation context. This context includes all information
associated with the issuance event, such as the timestamp of the event and
Client visible information, including the IP address or other information specific
to the type of attestation done.</t>
        <t>Each issuance protocol may be different, e.g., in the number and types of
participants, underlying cryptographic constructions used when issuing tokens,
and even privacy properties.</t>
        <t>Clients initiate the Token issuance protocol using the challenge, a randomly
generated nonce, and public key for the Issuer. The Token issuance protocol
itself can be any interactive protocol between Client, Issuer, or other
parties that produces a valid authenticator over the Client's input, subject
to the following security requirements.</t>
        <ol spacing="normal" type="1"><li>Unconditional input secrecy. The issuance protocol MUST NOT reveal anything
about the Client's private input, including the challenge and nonce, to the
Attester or Issuer. The issuance protocol can reveal the Issuer public key for
the purposes of determining which private key to use in producing the token.
A result of this property is that the redemption flow is unlinkable
from the issuance flow.</li>
          <li>One-more forgery security. The issuance protocol MUST NOT allow malicious
Clients or Attesters (acting as Clients) to forge tokens offline or otherwise
without interacting with the Issuer directly.</li>
          <li>Concurrent security. The issuance protocol MUST be safe to run concurrently
with arbitrarily many Clients.</li>
        </ol>
        <t>Each Issuance protocol MUST come with a detailed analysis of the privacy impacts
of the protocol, why these impacts are justified, and guidelines on how to deploy
the protocol to minimize any privacy impacts.</t>
        <t>Clients obtain the Issuer public key directly from the Origin using the process
described in <xref target="HTTP-Authentication"/>. Clients MAY apply some form of key consistency
check to determine if this public key is consistency and correct for the specified
Issuer. See <xref target="CONSISTENCY"/> for example mechanisms.
Depending on the deployment, the Attester may be able to assist the Client in applying
these consistency checks across clients.</t>
        <t>Depending on the use case, issuance may require some form of Client
anonymization service similar to an IP-hiding proxy so that Issuers cannot
learn information about Clients. This can be provided by an explicit
participant in the issuance protocol, or it can be provided via external means,
e.g., through the use of an IP-hiding proxy service like Tor. In general,
Clients SHOULD minimize or remove identifying information where possible when
invoking the issuance protocol.</t>
        <t>Issuers MUST NOT issue tokens for Clients through untrusted Attesters. This is
important because the Attester's role is to vouch for trust in
privacy-sensitive Client information, such as account identifiers or IP address
information, to the Issuer. Tokens produced by an Issuer that admits issuance
for any type of attestation cannot be relied on for any specific property.
See <xref target="attester-role"/> for more details.</t>
        <section anchor="attester-role">
          <name>Attester Role</name>
          <t>Attestation is an important part of the issuance protocol. Attestation is the
process by which an Attester bears witness to, confirms, or authenticates a
Client so as to verify a property about the Client that is required for
Issuance. Examples of attestation properties include, though are not limited
to:</t>
          <ul spacing="normal">
            <li>Capable of solving a CAPTCHA. Clients that solve CAPTCHA challenges can attest
to this capability for the purposes of being ruled out as a bot or otherwise
automated Client.</li>
            <li>Client state. Clients can be associated with state and the attester can
attest to this state. Examples of state include the number of issuance
protocol invocations, the client's geographic region, and whether the
client has a valid application-layer account.</li>
            <li>Trusted device. Some Clients run on trusted hardware that are capable of
producing device-level attestation statements.</li>
          </ul>
          <t>Each of these attestation types have different security properties. For
example, attesting to having a valid account is different from attesting to be
running on trusted hardware. In general, Attesters should accept a limited form
of attestation formats.</t>
          <t>Each attestation format also has an impact on the overall system privacy. For
example, the number of users in possession of a single class of trusted device
might be lesser than the number of users that can solve CAPTCHAs. Similarly,
requiring a conjunction of attestation types could decrease the overall
anonymity set size. For example, the number of Clients that have solved a
CAPTCHA in the past day, have a valid account, and are running on a trusted
device is lesser than the number of Clients that have solved a CAPTCHA in the
past day. Attesters should not admit attestation types that result in small
anonymity sets.</t>
        </section>
        <section anchor="issuer-role">
          <name>Issuer Role</name>
          <t>Issuers MUST be uniquely identifiable by all Clients with a consistent
identifier. In a web context, this identifier might be the Issuer host name.
As discussed later in <xref target="privacy"/>, ecosystems that admit a large number of
Issuers can lead to privacy concerns for the Clients in the ecosystem.
Therefore, in practice, the number of Issuers should be bounded. The actual
Issuers can be replaced with different Issuers as long as the total never
exceeds these bounds. Moreover, Issuer replacements also have an effect on
client anonymity that is similar to when a key rotation occurs. See <xref target="privacy"/>
for more details about maintaining privacy with multiple Issuers.</t>
          <section anchor="key-management">
            <name>Key Management</name>
            <t>To facilitate issuance, the Issuer MUST hold an Issuance key pair at any
given time. The Issuer public key MUST be made available to all Clients in
such a way that key rotations and other updates are publicly visible.
The key material and protocol configuration that an Issuer uses to produce
tokens corresponds to a number of different pieces of information.</t>
            <ul spacing="normal">
              <li>The issuance protocol in use; and</li>
              <li>The public keys that are active for the Issuer.</li>
            </ul>
            <t>The way that the Issuer publishes and maintains this information impacts
the effective privacy of the clients; see <xref target="privacy"/> for more details.
The fundamental requirement for key management and discovery is that Issuers
must be unable to target specific clients with unique keys without detection.
There are a number of ways in which this might be implemented:</t>
            <ul spacing="normal">
              <li>Servers use a verifiable, tamper-free registry from which clients discover
keys. Similar to related mechanisms and protocols such as Certificate
Transparency <xref target="RFC6962"/>, this may require external auditors or additional
client behavior to ensure the registry state is consistent for all clients.</li>
              <li>Clients use an anonymity-preserving tool such as Tor to discover keys
from multiple network vantage points. This is done to ensure consistent
keys to seemingly different clients.</li>
              <li>Clients embed Issuer keys into software.</li>
            </ul>
            <t>As above, specific mechanisms for key management and discovery are out of scope
for this document.</t>
          </section>
          <section anchor="key-rotation">
            <name>Key Rotation</name>
            <t>Token issuance associates all issued tokens with a particular choice of
key. If an Issuer issues tokens with many keys, then this may harm the
anonymity of the Client. For example, they would be able to map the
Client's access patterns by inspecting which key each token they possess
has been issued under.</t>
            <t>To prevent against this, Issuers MUST only use one private key for
issuing tokens at any given time. Servers MAY use one or more keys for
redemption to allow Issuers for seamless key rotation.</t>
            <t>Servers may rotate keys as a means of revoking tokens issued under old
or otherwise expired keys. Alternatively, Issuers may include expiration
information as metadata alongside the token; See <xref target="metadata"/> for more
discussion about metadata constraints. Both techniques are equivalent
since they cryptographically bind expiration to individual tokens.
Key rotations should be limited in frequency for similar reasons.</t>
          </section>
        </section>
        <section anchor="metadata">
          <name>Metadata</name>
          <t>Certain instantiations of the issuance protocol may permit public or private
metadata to be cryptographically bound to a token. As an example, one
trivial way to include public metadata is to assign a unique issuer
public key for each value of metadata, such that N keys yields log2(N)
bits of metadata. The total amount of metadata bits included in a token
is the sum of public and private metadata bits.</t>
          <t>Public metadata is that which clients can observe as part of the token
issuance flow. Public metadata can either be transparent or opaque. For
example, transparent public metadata is a value that the client either
generates itself, or the Issuer provides during the issuance flow and
the client can check for correctness. Opaque public metadata is metadata
the client can see but cannot check for correctness. As an example, the
opaque public metadata might be a "fraud detection signal", computed on
behalf of the Issuer, during token issuance. In normal circumstances,
clients cannot determine if this value is correct or otherwise a tracking
vector.</t>
          <t>Private metadata is that which clients cannot observe as part of the token
issuance flow. Such instantiations may be built on the Private Metadata Bit
construction from Kreuter et al. <xref target="KLOR20"/>
or the attribute-based VOPRF from Huang et al. <xref target="HIJK21"/>.</t>
          <t>Metadata may also be arbitrarily long or bounded in length. The amount of
permitted metadata may be determined by application or by the underlying
cryptographic protocol.</t>
        </section>
        <section anchor="extensions">
          <name>Issuance Protocol Extensibility</name>
          <t>The Privacy Pass protocol and ecosystem are both intended to be receptive to
extensions that expand the current set of functionalities through new issuance
protocols. Each issuance protocol SHOULD come with a detailed analysis of the
privacy impacts of the extension, why these impacts are justified, and
guidelines on how to deploy the protocol to minimize any privacy impacts.
Any extension to the Privacy Pass protocol MUST adhere to the guidelines
specified in <xref target="issuer-role"/> for managing Issuer public key data.</t>
        </section>
      </section>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <t>Client uses Privacy Pass to separate attestation context and redemption
context. Linking or combining these contexts can reveal sensitive information
about the Client, including their identity or browsing history. Depending on the
deployment model, separating these contexts can take different forms.
The Origin, Attester, and Issuer portrayed in <xref target="fig-overview"/> can be instantiated
and deployed in a number of different ways. This section covers some expected
deployment models and their corresponding security and privacy considerations.
The discussion below assumes non-collusion between entities when operated by
separate parties. Mechanisms for enforcing non-collusion are out of scope
for this architecture.</t>
      <section anchor="deploy-shared">
        <name>Shared Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by the same entity,
as shown in the figure below.</t>
        <figure anchor="fig-deploy-shared">
          <name>Shared Deployment Model</name>
          <artwork><![CDATA[
                   +------------------------------------------+
      Client       |  Attester         Issuer         Origin  |
        |          |                                          |
        |          |          Challenge                       |
        <----------------------------------------------+      |
        |          | Attest                                   |
        +----------------->                                   |
        |          |     TokenRequest                         |
        +-------------------------------->                    |
        |          |     TokenResponse                        |
        <--------------------------------+                    |
        |          |          Redeem                          |
        +---------------------------------------------->      |
                   +------------------------------------------+
]]></artwork>
        </figure>
        <t>This model represents the initial deployment of Privacy Pass, as described in <xref target="PPSRV"/>.
In this model, the Attester, Issuer, and Origin share the attestation and redemption contexts.
As a result, attestation mechanisms that can uniquely identify a Client, e.g., requiring
that Clients authenticate with some type of application-layer account, are not appropriate,
as they could be used to learn or reconstruct a Client's browsing history.</t>
        <t>Attestation and redemption context unlinkability requires that these events be separated
over time, e.g., through the use of tokens with an empty redemption context,
or over space, e.g., through the use of an anonymizing proxy when connecting to the Origin.</t>
      </section>
      <section anchor="deploy-joint-issuer">
        <name>Joint Attester and Issuer</name>
        <t>In this model, the Attester and Issuer are operated by the same entity
that is separate from the Origin, as shown in the figure below.</t>
        <figure anchor="fig-deploy-joint-issuer">
          <name>Joint Attester and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +---------------------------+   |           |
        |          |  Attester         Issuer  |   |           |
        |          |                           |   |           |
        |          | Attest                    |   |           |
        +----------------->                    |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          +---------------------------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This model is useful if an Origin wants to offload attestation and issuance
to a trusted entity. In this model, the Attester and Issuer share attestation
context for the Client, which can be separate from the Origin's redemption context.</t>
        <t>For certain types of issuance protocols, this model separates attestation and redemption
contexts. However, Issuance protocols that require the Issuer to learn information about
the Origin, such as that which is described in <xref target="RATE-LIMITED"/>,
are not appropriate since they could link attestation and redemption contexts through the Origin name.</t>
      </section>
      <section anchor="deploy-joint-origin">
        <name>Joint Origin and Issuer</name>
        <t>In this model, the Origin and Issuer are operated by the same entity, separate from
the Attester, as shown in the figure below.</t>
        <figure anchor="fig-deploy-joint-origin">
          <name>Joint Origin and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                    +--------------------------+
      Client                        |   Issuer         Origin  |
        |                Challenge  |                          |
        <-----------------------------------------------+      |
        |                           |                          |
        |          +-----------+    |                          |
        |          |  Attester |    |                          |
        |          |           |    |                          |
        |          | Attest    |    |                          |
        +----------------->    |    |                          |
        |          |           |    |                          |
        |          |     TokenRequest                          |
        +-------------------------------->                     |
        |          |           |    |                          |
        |          |     TokenResponse                         |
        <--------------------------------+                     |
        |          |           |    |                          |
        |          +-----------+    |                          |
        |                           |                          |
        |                 Redeem    |                          |
        +----------------------------------------------->      |
                                    +--------------------------+
]]></artwork>
        </figure>
        <t>This model is useful for Origins that require Client-identifying attestation,
e.g., through the use of application-layer account information, but do not
otherwise want to learn information about individual Clients beyond what is
observed during the token redemption, such as Client IP addresses.</t>
        <t>In this model, attestation and redemption contexts are separate. As a result,
any type of attestation is suitable in this model. Moreover, any type of token
challenge is suitable assuming there is more than one Origin involved, since no
single party will have access to the identifying Client information and unique
Origin information. If there is only a single Origin, then per-Origin tokens
are not appropriate in this model, since the Attester can learn the redemption
context. (Note, however, that the Attester does not learn whether a token is
per-Origin or cross-Origin.)</t>
      </section>
      <section anchor="deploy-split">
        <name>Split Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by different entities,
as shown in the figure below.</t>
        <figure anchor="fig-deploy-split">
          <name>Split Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +-----------+                   |           |
        |          |  Attester |                   |           |
        |          |           |                   |           |
        |          | Attest    |    +----------+   |           |
        +----------------->    |    |  Issuer  |   |           |
        |          |           |    |          |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |           |    |          |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          |           |    |          |   |           |
        |          +-----------+    +----------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This is the most general deployment model, and is necessary for some
types of issuance protocols where the Attester plays a role in token
issuance; see <xref target="RATE-LIMITED"/> for one such type of issuance protocol.
In this model, the Attester, Issuer, and Origin have a separate view
of the Client: the Attester sees potentially sensitive Client identifying
information, such as account identifiers or IP addresses, the Issuer
sees only the information necessary for Issuance, and the Origin sees
token challenges, corresponding tokens, and Client source information,
such as their IP address. As a result, attestation and redemption contexts
are separate, and therefore any type of token challenge is suitable in
this model assuming there is more than a single Origin. As in the
Joint Origin and Issuer model in <xref target="deploy-joint-origin"/>, if there is
only a single Origin, then per-Origin tokens are not appropriate.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Client uses Private Pass to separate attestation context and redemption
context. Depending on the deployment model, this can take different forms.
For example, any Client can only remain private relative to the entire
space of other Clients using the protocol. Moreover, by owning tokens for
a given set of keys, the Client's anonymity set shrinks to the total number
of clients controlling tokens for the same keys.</t>
      <t>In the following, we consider the possible ways that Issuers can leverage
their position to try and reduce the anonymity sets that Clients belong
to (or, user segregation). For each case, we provide mitigations that
the Privacy Pass ecosystem must implement to prevent these actions.</t>
      <section anchor="metadata-privacy-implications">
        <name>Metadata Privacy Implications</name>
        <t>Any metadata bits of information can be used to further segment the
size of the Client's anonymity set. Any Issuer that wanted to
track a single Client could add a single metadata bit to Client tokens. For
the tracked Client it would set the bit to <tt>1</tt>, and <tt>0</tt> otherwise. Adding
additional bits provides an exponential increase in tracking granularity
similarly to introducing more Issuers (though with more potential
targeting).</t>
        <t>For this reason, the amount of metadata used by an Issuer in creating
redemption tokens must be taken into account -- together with the bits
of information that Issuer's may learn about Clients otherwise. Since this
metadata may be useful for practical deployments of Privacy Pass, Issuers
must balance this against the reduction in Client privacy. In general,
Issuers should bound the metadata permitted so as to not allow it to uniquely
identify each possible user.</t>
      </section>
      <section anchor="issuer-key-rotation">
        <name>Issuer Key Rotation</name>
        <t>Techniques to introduce Client "segregation" can be used to reduce
Client anonymity. Such techniques are closely linked to the type of key
schedule that is used by the Issuer. When an Issuer rotates their key,
any Client that invokes the issuance protocol in this key cycle will be
part of a group of possible clients owning valid tokens for this key. To
mechanize this attack strategy, an Issuer could introduce a key rotation
policy that forces Clients into small key cycles. Thus, reducing the
size of the anonymity set for these Clients.</t>
        <t>Issuers SHOULD invoke key rotation for a period of time between 1 and 12 weeks.
Key rotations represent a trade-off between Client privacy and continued Issuer
security. Therefore, it is still important that key rotations occur on a
regular cycle to reduce the harmfulness of an Issuer key compromise.</t>
        <t>With a large number of Clients, a minimum of one week gives a large enough
window for Clients to participate in the issuance protocol and thus enjoy the
anonymity guarantees of being part of a larger group. A maximum of
12 weeks limits the damage caused by a key compromise. If an Issuer
realizes that a key compromise has occurred then the Issuer should
generate a new key and make it available to Clients. If possible, it should
invoke any revocation procedures that may apply for the old key.</t>
      </section>
      <section anchor="servers">
        <name>Large Number of Issuers</name>
        <t>Similarly to the Issuer rotation dynamic that is raised above, if there
are a large number of Issuers, and Origins accept all of them, segregation
can occur. For example, if Clients obtain tokens from many Issuers, and
Origins later challenge a Client for a token from each Issuer, Origins
can learn information about the Client. Each per-Issuer token that a
Client holds essentially corresponds to a bit of information about the
Client that Origin learn. Therefore, there is an exponential loss in
anonymity relative to the number of Issuers that there are.</t>
        <t>For example, if there are 32 Issuers, then Origins learn 32 bits of
information about the Client if a valid token is presented for each one.
If the distribution of Issuer trust is anything close to a uniform
distribution, then this is likely to uniquely identify any Client amongst
all other Internet users. Assuming a uniform distribution is clearly the
worst-case scenario, and unlikely to be accurate, but it provides a stark
warning against allowing too many Issuers at any one time.</t>
        <t>In cases where clients can hold tokens for all Issuers at any given
time, a strict bound SHOULD be applied to the active number of Issuers
in the ecosystem. We propose that allowing no more than 4 Issuers at any
one time is highly preferable (leading to a maximum of 64 possible user
segregations). However, having a very large user base could potentially
allow for larger values. Issuer replacements should only occur with the same
frequency as config rotations as they can lead to similar losses in
anonymity if clients still hold redemption tokens for previously active
Issuers.</t>
        <t>In addition, we RECOMMEND that trusted registries indicate at all times
which Issuers are deemed to be active. If a Client is asked to invoke
any Privacy Pass exchange for an Issuer that is not declared active,
then the client SHOULD refuse to retrieve the Issuer public key
during the protocol.</t>
        <section anchor="more-servers">
          <name>Allowing More Issuers</name>
          <t>The bounds on the numbers of Issuers that this document proposes above are
very restrictive. This is because this document considers a situation where
a Client could be challenged (and asked to redeem) tokens for any Issuer.</t>
          <t>An alternative system is to ensure a robust strategy for ensuring that
Clients only possess redemption tokens for a similarly small number of
Issuers at any one time. This prevents a malicious verifier from being
able to invoke redemptions for many Issuers since the Client would only
be holding redemption tokens for a small set of Issuers. When a Client
is issued tokens from a new Issuer and already has tokens from the
maximum number of Issuers, it simply deletes the oldest set of
redemption tokens in storage and then stores the newly acquired tokens.</t>
          <t>For example, if Clients ensure that they only hold redemption tokens for
4 Issuers, then this increases the potential size of the anonymity sets
that the Client belongs to. However, this doesn't protect Clients
completely as it would if only 4 Issuers were permitted across the whole
system. For example, these 4 Issuers could be different for each Client.
Therefore, the selection of Issuers they possess tokens for is still
revealing. Understanding this trade-off is important in deciding the
effective anonymity of each Client in the system.</t>
          <section anchor="redemption-partitions">
            <name>Redemption Partitions</name>
            <t>Another option to allow a large number of Issuers in the ecosystem,
while preventing the joining of a number of different tokens is for the
Client to maintain sharded "redemption partitions". This would allow the
Client to redeem the tokens it wishes to use in a particular context,
while still allowing the Client to maintain a large variety of tokens
from many Issuers. Within a redemption partition, the Client limits the
number of different Issuers used to a small number to maintain the
privacy properties the Client requires. As long as each redemption
partition maintains a strong privacy boundary with each other, the
verifier will only be able to learn a number of bits of information up
to the limits within that "redemption partitions".</t>
            <t>To support this strategy, the client keeps track of a <tt>partition</tt> which
contains the set of Issuers that redemptions have been attempted
against. An empty redemption is returned when the limit has been
hit:</t>
            <artwork><![CDATA[
  Client(partition, issuer)                     Issuer(skS, pkS)
  ------------------------------------------------------------
  if issuer not in partition {
    if partition.length > REDEEM_LIMIT {
      Output {}
      return
    }
    partition.push(issuer)
  }
  token = store[issuer.id].pop()
  req = Redeem(token, info)

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

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

                                resp
                        <------------------
  Output resp
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="centralization">
        <name>Centralization</name>
        <t>A consequence of limiting the number of participants (Attesters or Issuers)
in Privacy Pass deployments for meaningful privacy is that it forces
concentrated centralization amongst those participants.
<xref target="CENTRALIZATION"/> discusses
several ways in which this might be mitigated. For example, a multi-stakeholder
governance model could be established to determine what participants are
fit to operate as participants in a Privacy Pass deployment. This is precisely
the model used to control the Web's trust model.</t>
        <t>Alternatively, Privacy Pass deployments might mitigate this problem through
implementation. For example, rather than centralize the role of attestation
in one or few entities, attestation could be a distributed function performed
by a quorum of many parties, provided that neither Issuers nor Origins learn
which attester implementations were chosen. As a result, clients could have
more opportunities to switch between attestation participants.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>We present a number of security considerations that prevent malicious
Clients from abusing the protocol.</t>
      <section anchor="token-exhaustion">
        <name>Token Exhaustion</name>
        <t>When a Client holds tokens for an Issuer, it is possible for any
verifier to invoke that client to redeem tokens for that Issuer. This
can lead to an attack where a malicious verifier can force a Client to
spend all of their tokens from a given Issuer. To prevent this from
happening, tokens can be scoped to single Origins such that they can only
be redeemed within for a single Origin.</t>
        <t>If tokens are cross-Origin, Clients should use alternate methods to prevent
many tokens from being redeemed at once. For example, if the Origin requests
an excess of tokens, the Client could choose to not present any tokens for
verification if a redemption had already occurred in a given time window.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="PPEXT" target="https://github.com/privacypass/challenge-bypass-extension">
          <front>
            <title>Privacy Pass Browser Extension</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PPSRV" target="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">
          <front>
            <title>Cloudflare Supports Privacy Pass</title>
            <author initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HIJK21" target="https://research.fb.com/wp-content/uploads/2021/01/PrivateStats-De-Identified-Authenticated-Logging-at-Scale_final.pdf">
          <front>
            <title>PrivateStats: De-Identified Authenticated Logging at Scale</title>
            <author initials="S." surname="Huang">
              <organization/>
            </author>
            <author initials="S." surname="Iyengar">
              <organization/>
            </author>
            <author initials="S." surname="Jeyaraman">
              <organization/>
            </author>
            <author initials="S." surname="Kushwah">
              <organization/>
            </author>
            <author initials="C. K." surname="Lee">
              <organization/>
            </author>
            <author initials="Z." surname="Luo">
              <organization/>
            </author>
            <author initials="P." surname="Mohassel">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Shaikh">
              <organization/>
            </author>
            <author initials="Y. C." surname="Sung">
              <organization/>
            </author>
            <author initials="A." surname="Zhang">
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="HTTP-Authentication">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="April" year="2022"/>
            <abstract>
              <t>   This document defines an HTTP authentication scheme that can be used
   by clients to redeem Privacy Pass tokens with an origin.  It can also
   be used by origins to challenge clients to present an acceptable
   Privacy Pass token.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wood-key-consistency-02"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="KLOR20">
          <front>
            <title>Anonymous Tokens with Private Metadata Bit</title>
            <author fullname="Ben Kreuter" initials="B." surname="Kreuter">
              <organization/>
            </author>
            <author fullname="Tancrède Lepoint" initials="T." surname="Lepoint">
              <organization/>
            </author>
            <author fullname="Michele Orrù" initials="M." surname="Orrù">
              <organization/>
            </author>
            <author fullname="Mariana Raykova" initials="M." surname="Raykova">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Advances in Cryptology - CRYPTO 2020" value="pp. 308-336"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-56784-2_11"/>
        </reference>
        <reference anchor="RATE-LIMITED">
          <front>
            <title>Rate-Limited Token Issuance Protocol</title>
            <author fullname="Scott Hendrickson">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="May" year="2022"/>
            <abstract>
              <t>   This document specifies a variant of the Privacy Pass issuance
   protocol that allows for tokens to be rate-limited on a per-origin
   basis.  This enables origins to use tokens for use cases that need to
   restrict access from anonymous clients.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tfpauly/privacy-proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-privacypass-rate-limit-tokens-02"/>
        </reference>
        <reference anchor="CENTRALIZATION">
          <front>
            <title>Centralization, Decentralization, and Internet Standards</title>
            <author fullname="Mark Nottingham">
	 </author>
            <date day="26" month="June" year="2022"/>
            <abstract>
              <t>   Despite being designed and operated as a decentralized network-of-
   networks, the Internet is continuously subjected to forces that
   encourage centralization.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-avoiding-internet-centralization-04"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Scott Hendrickson, Tommy Pauly, Benjamin Schwartz,
Steven Valdez and other members of the Privacy Pass Working Group for many helpful
contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+196XIbR5rg/3yKXOmHqTAAHe11t9nbBy3JY9o6uCLd3u7p
CTtRlQDKLFSh6yANy+pn2WeZJ5vvyquqQJGydyY2YhB9UEBVHl9+95Xz+Vx1
RVfaY33vrCmuTLbXZ6Zt9UmTbYrOZl3fmFJ/0Zitva6by3vKLJeNvTrWh562
Kq+zCh4/1nljVt28sN1qvuOnd/Dw3EQPzx99onLT2WOVwf+u62Z/rItqVStV
7Jpj3TV92z159OizR0/Upd3DCvJjfVp1tqlsN3+G4yvVdqbKvzNlXcGce9uq
XXGs/7Wrs5lu66Zr7KqFv/Zb/OPflDJ9t6mbY6XnSsOnqNpjfbLQz8xVkbd1
RV/y+k9K+2P6fd2sj/WL0zP6R1Z0sNoXRbuUX7O6rzrcwRlM269NSd/arSnK
Y21gsEUug3325M9r/HqR1dtkIV8t9OneVmvTROv4ylQm+ZqW8YVpu3IfT/FD
U/x5Rd+Oxn26wD1+W9d5NO7TTVO0Xb3b2Cb5lYZ/WtZ9vioNHCh+1wIcbXes
Hz96rC/q66q1Va7PuwgQ56ZCPKmyos3qFB7fVHDe+DiccavrlT7Z2qbITLz4
zFz/eWPNrqjWy6JrF3DASlV1szVdcQX4ofWbL54+efz4M/nzd5988ukxoAkg
S/TM2dnz/3NxTOMKWid4+nlTX7ew2+c/drZqCzm3zjRr3Num63bt8cOH66Lb
9EuE4cMIbx9mG1OWcAh2vmREttEoZ2fnb/6STBwAqM/73Q5Qok0WMzn1sqzX
i8y/SWsI/5y3MpCjpzktjEbyaK39ob9awMxlCU9W8vX4ZL88/errJ4+ThTMj
6CweF4zyzM5Pc1t1xaqAMzyBafAfSK65flGv13Bg2nT6PAMMvze5qca2Fol+
sWKgXu/mWQ1EXHUP+11Zm7x9+OTRk8cPHz1+GE89T2aeJzPPZea56eY083er
ojLlYpevaAnEU5BwNI48AaC5/L+A6nyhv+xNtT74a0x+U79/ZfcGmKSH9PiJ
r/t2c202078DfX690C+snf75b/BbX0//drbQL+sN4IEtpx8A0n5j1pu+Mt3m
hvWdb0xxeWB5f13gCs/7QwCCKf62QfCp+XyuzRK4hcmAfi82RatBHvRbODnd
7myGZ9lqOEltEgmzchJGAz0D56hgiD7r4IhVazOQFBqYPPy3rvZbYDdAAIBU
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
JM45SbzPa9ynKzepxF2cdHYyTHT+qvhHz0BBIK9L69VK3LNqTeG9Y86gumGD
U74f0Ni8cEr1tbEryW6Xde7EVIYECTCK1WXyzEmoDs9113fKRGTlvcNTuiAi
iQiW1mlDwT5S4i+ddDF9oHtJ6dHn49tZ/n+nV4cOoaFDZ9It9PPErKk344iN
mwcf8KrWBxZxq1eTRXi3z21fJXfO2NPj1yTOoY8Hz9BrEzNMzXq7w3mY+GU8
GotfxmP7a3HYoA/GKfyOcIOqHPzkEvriYIjTgIzT4RIeFiP9YYPAD31V9yE6
75DXRVyd627aLojDqb+CYeCBdWuzAOFyg2UQKcIDywDlKjPF2JCQ5JJMiaR2
ynC8zxx4L5D+c5NtJpgUytplpOU6fVb4h+jwJJFgbLTlVWzEzoDp5rYpKVcg
a/a7rl43ZgdnFqWzoL+MlAF08AzijTMyoBE23ncWlOtFjGoYJ+444+Qitcj9
ZvrWAS5KJjCitpV7tbYVOeVzVPgyy8YW6+DkdHOmqouMXRyeSxVda8uVk9wg
hXWkQOoDZnfwb7jjZGjakFbgGDqb0FHMD9+4EoXxqdOdSWgg4i1/ALHo0CA4
xLzFErsnAKyPF/qbCk4oL/B4TMkD4eOghErIeAxfLzQ58o+7BoOkWqthZPej
lk+T4h+0whSvE2+COwxevA84IojigxgvB2EvK4niaOl5qsiZQ54oUIrJ30qR
UOItbqX4hgRdi2rSXFQnEszzITpnilGAONb9RVyvMHAAv4UMFuWlut/QioQz
HMnrys5Jc4eFr22z98f33gPh9KEt4EyGgS9PNgDDEMA9MpRbhhxKfn+AG6bJ
nNJTr1awUuvx87oALdUlk3gMd1HkCOwu2EwbeQon2jdkV99qC6gQmhUnHPTs
3+PXgWhZI2yWBejgTQF20xaJzWUiCGMbeQx43AzVU/FjsTVE6rUp920ROeOZ
77A3v1UDHz2agntW190jpG3+ACYdJWkyG1n3YHIj6EJKHQYSdmW9V/FwZNQA
+m2Ln5htDKaPeB7HLg/gtg/ue3wStS4wQZgSeMnAK3/ADFh4L97Lk79ithiM
TMo9ChuEFM4pHl2w4PcKRDBn9ziCsugUZKIIq2TJ6l5iq75ucOWe2boEyVw5
akfz5e3bPz19/er89Pzi+aunfyXf03Vd53MYdB6NKPaLSx+I8vnGhiYfxpbY
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
CnDxDUl2Sxpw/wePCOOwwJ4AAA==

-->

</rfc>
