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

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

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

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

                                resp
                        <------------------
  Output resp
]]></artwork>
      </section>
      <section anchor="side-channel-attacks">
        <name>Side-Channel Attacks</name>
        <t>Side-channel attacks, such as those based on timing correlation, could be
used to link attestation and redemption contexts together. In particular,
for interactive tokens that are bound to a Client-specific redemption
context, the anonymity set of Clients during the issuance protocol consists
of those Clients that started issuance between the time of the Origin's
challenge and the corresponding token redemption. Depending on the number
of Clients using a particular Issuer during that time window, the set can
be small. Appliations should take such side channels into consideration before
choosing a particular deployment model and type of token challenge and redemption
context.</t>
      </section>
    </section>
    <section anchor="centralization">
      <name>Centralization</name>
      <t>A consequence of limiting the number of participants (Attesters or Issuers) in
Privacy Pass deployments for meaningful privacy is that it forces concentrated
centralization amongst those participants.
<xref target="CENTRALIZATION"/> discusses
several ways in which this might be mitigated. For example, a multi-stakeholder
governance model could be established to determine what candidate participants
are fit to operate as participants in a Privacy Pass deployment. This is
precisely the system used to control the Web's trust model.</t>
      <t>Alternatively, Privacy Pass deployments might mitigate this problem through
implementation. For example, rather than centralize the role of attestation
in one or few entities, attestation could be a distributed function performed
by a quorum of many parties, provided that neither Issuers nor Origins learn
which attester implementations were chosen. As a result, clients could have
more opportunities to switch between attestation participants.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Beyond the aforementioned security goals for the issuance protocol
(<xref target="issuance-protocol"/>), it is important for Privacy Pass deployments to
mitigate the risk of abuse by malicious Origins.</t>
      <t>For example, when a Client holds cross-Origin tokens for an Origin, it
is possible for any Origin in the cross-Origin set to deplete that Client
set of tokens. To prevent this from happening, tokens can be scoped to single
Origins such that they can only be redeemed for a single Origin.
Alternatively, if tokens are cross-Origin, Clients can use alternate methods
to prevent many tokens from being redeemed at once. For example,
if the Origin requests an excess of tokens, the Client could choose to
not present any tokens for verification if a redemption had already
occurred in a given time window.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="PPEXT" target="https://github.com/privacypass/challenge-bypass-extension">
          <front>
            <title>Privacy Pass Browser Extension</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PPSRV" target="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">
          <front>
            <title>Cloudflare Supports Privacy Pass</title>
            <author initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HIJK21" target="https://research.fb.com/privatestats">
          <front>
            <title>PrivateStats: De-Identified Authenticated Logging at Scale</title>
            <author initials="S." surname="Huang">
              <organization/>
            </author>
            <author initials="S." surname="Iyengar">
              <organization/>
            </author>
            <author initials="S." surname="Jeyaraman">
              <organization/>
            </author>
            <author initials="S." surname="Kushwah">
              <organization/>
            </author>
            <author initials="C. K." surname="Lee">
              <organization/>
            </author>
            <author initials="Z." surname="Luo">
              <organization/>
            </author>
            <author initials="P." surname="Mohassel">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Shaikh">
              <organization/>
            </author>
            <author initials="Y. C." surname="Sung">
              <organization/>
            </author>
            <author initials="A." surname="Zhang">
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="HTTP-Authentication">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez" initials="S." surname="Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="5" month="August" year="2022"/>
            <abstract>
              <t>   This document defines an HTTP authentication scheme that can be used
   by clients to redeem Privacy Pass tokens with an origin.  It can also
   be used by origins to challenge clients to present an acceptable
   Privacy Pass token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-auth-scheme-05"/>
        </reference>
        <reference anchor="ISSUANCE">
          <front>
            <title>Privacy Pass Issuance Protocol</title>
            <author fullname="Sofia Celi" initials="S." surname="Celi">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Alex Davidson" initials="A." surname="Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Armando Faz-Hernández" initials="A." surname="Faz-Hernández">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Steven Valdez" initials="S." surname="Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="6" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies two variants of the the two-message issuance
   protocol for Privacy Pass tokens: one that produces tokens that are
   privately verifiable, and another that produces tokens that are
   publicly verifiable.  The privately verifiable issuance protocol
   optionally supports public metadata during the issuance flow.

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

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

Discussion Venues

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-avoiding-internet-centralization-05"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Eric Kinnear, Scott Hendrickson, Tommy Pauly, Christopher Patton, Benjamin Schwartz,
Steven Valdez and other members of the Privacy Pass Working Group for many helpful contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
882VDklRFfGtXxiLeN+lKW1w4NNkuRovd9N6uezHp7XKwoZuBUkjUd9Eg3MG
O0R6dIqGbRWI6rGuBdXwFRKD7BeVlntVYW2bDTAs3wHIU0p6kIL3mRT1XtMJ
LYX204dLroiCh407o6aVoUEm6NVRf02w8+Jqc05B3eulGomKlenNO2E/XhVX
Dpl1uNuA8npbl9xmG3dU4GapkXgBu4LuzVJqS7pHxKzwgi56Zj4od9QD67uI
5WeUwOLJM99XdgOzh14tUjnurQhuTkCdWcygWUpsubZ6aYO0t4bXN5OgyQkn
IZIg1tVv5ionkcrqrVd4elPw5dpRB2PtDBrf7UVjuPgSohj/hwJSQQGbcdsx
tJB8wo+/I8s3hV/XWNeNxrEa3r3WG6xr1Utz21w8qBhifNNOcta81WgrE6tO
JTZXLaL+BQPzZbBZogDFXZ/CFv/0RUA4ySiPcUIX/Cz67e2rwWy05Cq5Ir6Z
0RfOa4cQstDJfrHchy4Gzjc86B8/Mt4Q/Uo0lFSXc7bQz3rrkJ4irGjKPYOq
Hd5ipBhfcH6i7SdQK8CNTYJO1BXBtdVPqI841kJ5QUNtsRy1abdtUKVhZbQA
DyjfCB60I+mci3PfrLHBk/Yx6reZA0YSBvHp+YkdzOhWsk7pSi6HlyZ4Ok58
yY3KhRo9QG24LlO5v+HKSNg4qf0LoiVRsAq86XFReJUwtHIJLYsAhAhWDXfJ
0k2/l620fRht4EQ0gjQdXScmQS6NRkr3Q9I72CbH2gFOHwMMwybyBGkLuoEL
giTloLEeEO/MzSZRG0bsqsG9rZSYLFX24Y5FnjvDDcVxB+jphgvrUaEa6QUl
2h7REgtab1+gTII14pqxAwvVIGInobjjkVZ1MEdkrU4av5S03+jJCmeiCNcM
s+Cn8zc0hdjo8Dekc2cgEzjQ2N2R4dakiY86SluXQlqloiHA9SzxtXSkB/g7
hahCnuZj/dyTEq72ih8R3Xg0JClNeRNLu+AwMlBvSdVIPH7c3y74lOBo7Vrf
Tr1bRxe/U38plnOht+WxXLpUe2HP+3+4D1q/tRneBVpgxJ89GHq80CMoNaRx
jW50Y514VgvvKTLeHxCac2GaL1bbP4qv+UG1nijokRx5ZmoMeTqQXkqnaRvM
A7nvU2jLb6ObpnzZrKyLKS3cchVJzQhOxRf2j3fdPhT6mIEyMcv+WGCvyd7l
07qo2BvHTX/ZBBnDoe6JmkRWVHl5Ngawi9oARN2Go7m0zIk8wOowJnYYXyuu
YEYdsyzaJHXUj434FvrfPTPg6yAnvYWMeasiB32kKLW+xQSn6kaDHKIMYy6D
5irNgdVyig7NlXPbVq7pIlr9xg/yjdzvhwQhrcF8p9nA5+UWaL2Bwt/uRY5m
+BaL1tmkn9HtzP27/cgThLc66vUxOAvtOxntdFHYuuiONFeBd+tJRC+czv90
NCTGcD5pry4m2fbq4ikM8MCIXvLBuw6XMiExpSJCevaegnZ4x69+NeN2INlv
s3enL09PX/+VYlfyYJa95dti3n+QfzMi6B/8VRhou2vXT2Slhn9m5e43GRb2
uf/g32ZF/p+zbb198pSvUIWfOdz5RC4BQ1p7OnZdV/KBNw8+MhL0vHM8wMmT
vD3Lv5vp9UtPYIoZuqSePvXouA0gi16c03fv/vry7defvTr968X56ZuXd733
4e51tltA0R+osfmTLVIJkQoA9/Qea8LXZ+2Oc7vusQpGAW2lX/7da7hzXATj
4EMjaQDGUx69ieeK0q0K0BtPOP0dQ5vAElo0X+FbSYoXH0wbl1Vgm1XuqVOT
BkctYdEIK8UDsPC9ZbVm9d5VEeK0Jcdm5MwiJSG+dCi6nFc61fiGZJJ36Zuw
jVWaDh07UWTnttbF/qp3Dg7XwRHEsMACG1Sk/Ivq7CF5XGy83aMVOCa9F4j4
9DAem9zlPojRDYNTHCZLhLzoV35xaGchPCDj8/pm4lm9XLBIYhX4NyqJoryK
6kthP6IGjGFp9YQ41pJWIbB4NHsMteYdADSm1h+M9R6IV2Kg9MShIVvK9SQY
FUUgWAunsUi06I4GMRrfeZY9Se7YFVn3FJXxJKAVu/Op146zqPOh3993/AkO
dvE8Us/cquMOIYsEWgyDgHnbCSnFIM0MXjpz+uby3fGrsz8fX569fUN1SiCD
cDFru5na65qsO77wtnLdNB39wwfvYWpNS3HE8tY2lxLRw+a7aRiX3X7TFvce
TRDsAYch14rvj6Ht86ZwVDaTXshzI0X2OV2rmKyWbIolh7kkOVP7jvk9IgXy
wHaEC0xAK1+A5JAsCQk/KiOSoC399Ec3/0mrBT+UNjywkw7uPWNM0ZXpPd9g
S6HmTRndxkc7JYk3wSgskG9QwMZ3umnSWrMu+6nOWH0kzsuluwl5qr3QvuAf
L3drpflZ7htvaZd27lJjs7/t6obbGJKqLt1qJuGeHKJiuajaa39VlO1OmqoR
r4XmxaSrFi/LAqm76qWG+OaHBDdqkYY8szUpsLtKuv6ASgtKNUyhnDS5RSQ5
MMAMLrR/0SBtQn3qIF0/44x3EgLIoBBceIpagcvrq9qWIaA/NFqfcOct/HKq
X1JLcvbSBycMDnGQjLraRDQU3TA8RzNtvg8d6xXpfW/iTXKTOTtHx24xFiNb
c1GKDltZ+iCN3nPjc89ZDvXuTNbeZ64Tt6A4gUV8alD7Mo7tF+JbXtstCC3K
fwgX+VJtKvY2Ej8Ihsz9tcyhpaf3mJDTZR7dyM3u5zSbp3+GC9+Agjr8R2tK
QxXUmVZepfDpus4xW8ovho5J7C+X+2D8lcbY5HDRa/Jviljch6xvCskv9HI/
cQxEpikfCt/T3qDl4WNJERwwFXcflngjeYIjzWpt/V3LxkdDiZEGB5yoANiQ
ejoFzW5xhSfpeHFV1TclRmiJWLnrF1ZOYrfgG6l2vRLHtwUF77QBbeurArQB
DD9eLEBQZV+ApgJfX1Hc/7LebPAU7HBfTtYNNijZInc5hzOND3zmqm8tiAp4
eX0DR/v7ibno6CLRP1gQOt9HHcM32JC38Y39kiP2x7qhnIZ/p2ik9MTb070o
KKlJCCB35MyVWv3J2mX3/wHnVY6ZWKEAAA==

-->

</rfc>
