<?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.7.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rescorla-anonymous-webbotauth-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Anonymous Bot Authentication">Anonymous Bot Authentication: Authorization and Rate Limiting for Web Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-rescorla-anonymous-webbotauth-00"/>
    <author fullname="Eric Rescorla">
      <organization>Independent</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <author fullname="Richard L. Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <date year="2026" month="April" day="08"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 66?>

<t>Automated agents ("bots") represent a large fraction of the traffic to
many Web sites. In some cases, this traffic is desired, in others
undesired, and in yet others, desired as long as it remains within
certain rate limits. This memo describes Anonymous Bot Authentication (ABA), a
system that allows Web site operators to distinguish wanted from
unwanted traffic, while not tying a given request to a specific
sender.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ekr.github.io/draft-rescorla-anonymous-webbotauth/draft-rescorla-anonymous-webbotauth.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rescorla-anonymous-webbotauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ekr/draft-rescorla-anonymous-webbotauth"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DISCLAIMER: This is a work-in-progress draft and has not yet
seen significant security analysis. It is being published
at an early stage for discussion purposes.</t>
      <t>Automated agents ("bots") represent a large fraction of the traffic
to many Web sites. For example, Wikimedia reports that about 35% of
its traffic is from bots <xref target="PCMag-Wikipedia"/> and Cloudflare reports
that over 50% of traffic is automated <xref target="Cloudflare-2025"/>. High
traffic loads--even when from otherwise desired bots--can have
negative impacts on sites in terms of performance, stability,
and operational costs.</t>
      <t>In addition, there may be certain types of bot traffic that sites wish
to heavily restrict or block entirely. For example:</t>
      <ul spacing="normal">
        <li>
          <t>Volumetric traffic intended to create a DoS
attack on the site.</t>
        </li>
        <li>
          <t>Non-volumetric traffic intended to attack the site.</t>
        </li>
        <li>
          <t>Scraping for specific purposes such as training AI agents.</t>
        </li>
      </ul>
      <t><xref target="I-D.nottingham-webbotauth-use-cases"/> provides a more complete
list of potential use cases.</t>
      <t>In response to this approach, there have been proposals to authenticate
automated clients. Sites can use behavioral analysis to determine when traffic
from a given endpoint appears bot-like (e.g., is high volume, has low latency
between requests, appears to be retrieving the entire site, etc.) and restrict
access by those endpoints unless they authenticate and the resulting identity is
acceptable to the site. <xref target="I-D.meunier-webbotauth-registry"/> describes one such
architecture, where identities are rooted in the DNS and bots use digital
signatures to tie their activity to a given identity.</t>
      <t>While directly identifying each bot allows the site to precisely
monitor bots' behavior and restrict or block bots that it believes
are misbehaving, it also has potential negative effects on the
open Web, including:</t>
      <ul spacing="normal">
        <li>
          <t>Allowing sites to precisely discriminate against specific
bots, even when those bots are acting in the public interest.
For example:
          </t>
          <ul spacing="normal">
            <li>
              <t>Government sites might block bots which are tracking
law enforcement activity.</t>
            </li>
            <li>
              <t>Employment or housing sites might block bots which are
monitoring for discriminatory behavior.</t>
            </li>
            <li>
              <t>Shopping sites might block bots used for price comparison.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Preventing users and groups from being able to anonymously
retrieve Web content using automated tools.</t>
        </li>
      </ul>
      <t>In many use cases, it is possible to resolve this tension using anonymous
credentials.  When a bot presents an anonymous credential, the Web site learns
that the bot is part of some set of authorized bots -- say those whose operators
have agreed to good behavior -- and not the specific identity of the bot or the
bot operator.</t>
      <t>This document describes an approach for using anonymous credentials to
authenticate bots to websites.  In addition to laying out how the system works,
we describe the trade-offs between anonymity and fine-grained abuse mitigation.</t>
    </section>
    <section anchor="architectural-overview">
      <name>Architectural Overview</name>
      <t>The overall structure of ABA is shown in <xref target="fig-architecture-overview"/>.</t>
      <figure anchor="fig-architecture-overview">
        <name>Architectural Overview</name>
        <artwork><![CDATA[
Alice         Bob           Attester             Site

Register --------------------->
<----------- Attestation[Alice]
              Register ------->
         <---- Attestation[Bob]

Request + Attestation ---------------------------->
                           Site only knows Attester
                                   not Alice or Bob
<------------------------------------------Response
]]></artwork>
      </figure>
      <t>Prior to contacting the site, Alice and Bob both register with a
credential Attester, which is responsible for evaluating
whether they comply with the Attester's policies.
They each are issued an anonymous credential, which
they can use to authenticate to the server.  What makes the credential
anonymous is that the site only learns that someone with a credential
from the Attester is authenticating, not whether it's Alice or Bob. This
prevents the site from discriminating <em>between</em> customers of the
same attester, although it can discriminate between attesters.</t>
      <t>As a result, while it is possible to distinguish authenticated from
unauthenticated bots, it is not possible to use the authentication
method to either (1) selectively block individual bots(2)
determine which bots are accessing which resources or (3) link
multiple visits by the same bot. It may still be
possible to identify bots via other mechanisms such as IP address or
fingerprinting.</t>
      <t>In some cases it may be sufficient merely to identify the attester, for
instance if the attester performs some vetting to ensure policy
compliance. However, in some cases this may be insufficient, as
discussed below.</t>
      <section anchor="trade-offs">
        <name>Trade-offs</name>
        <t>Assuring the anonymity of bot requests means imposes some limits on how this
authentication mechanism can be used to counter abuse.  These trade-offs are
discussed in detail in <xref target="use-case-analysis"/>, and the below bullets provide a
summary:</t>
        <ul spacing="normal">
          <li>
            <t>ABA supports:
            </t>
            <ul spacing="normal">
              <li>
                <t>Rate-limiting of requests by a a single bot</t>
              </li>
              <li>
                <t>Providing separate content to bots vs. humans</t>
              </li>
              <li>
                <t>Conditioning access based on a bot meeting certain criteria</t>
              </li>
              <li>
                <t>Conditioning access based on participation in some scheme or protocol</t>
              </li>
              <li>
                <t>Classifying human vs. bot traffic</t>
              </li>
              <li>
                <t>IP address mobility and sharing of IP addresses</t>
              </li>
              <li>
                <t>Unlinkability between authenticated requests by the same client</t>
              </li>
            </ul>
          </li>
          <li>
            <t>ABA does not support:
            </t>
            <ul spacing="normal">
              <li>
                <t>Allow lists / deny lists</t>
              </li>
              <li>
                <t>Auditing bot behavior</t>
              </li>
              <li>
                <t>Authenticating site services</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Essentially, abuse controls that rely on knowing the identity of the abusive
party are incompatible with anonymous authentication.</t>
      </section>
      <section anchor="rate-limiting">
        <name>Rate Limiting</name>
        <t>In some cases it may be desirable to limit any individual agent to a
specific number of requests. For example, a given Attester may have a
large number of subscribers but only a few may access a given site. In
this case, overall rate limits for an attester will not be effective,
but individual rate limits are.</t>
      </section>
    </section>
    <section anchor="concrete-implementation-with-privacy-pass-and-arc">
      <name>Concrete Implementation With Privacy Pass and ARC</name>
      <t>This section describes how to implement ABA using Privacy Pass <xref target="RFC9576"/>, and
Anonymous Rate-Limited Credentials
<xref target="I-D.ietf-privacypass-arc-protocol"/> <xref target="I-D.ietf-privacypass-arc-crypto"/>. While this
is not the only possible implementation approach, it leverages existing
deployed and proposed IETF technologies and thus avoids duplicated
functionality and fits well into existing deployments.</t>
      <t>We make use of the "Joint Origin and Issuer Deployment Model" from
<xref section="4.3" sectionFormat="of" target="RFC9576"/>, reproduced below in
<xref target="fig-privacy-pass-model"/>:</t>
      <figure anchor="fig-privacy-pass-model">
        <name>Privacy Pass Model (Joint Origin and Issuer)</name>
        <artwork><![CDATA[
                                     +----------------------------.
   +--------+          +----------+  |  +--------+     +--------+  |
   | Client |          | Attester |  |  | Issuer |     | Origin |  |
   +---+----+          +-----+----+  |  +----+---+     +---+----+  |
       |                     |        `------|-------------|------'
       |<-------------------------------- TokenChallenge --+
       |                     |               |             |
       |<=== Attestation ===>|               |             |
       |                     |               |             |
       +------------ TokenRequest ---------->|             |
       |<---------- TokenResponse -----------+             |
       |                                                   |
       +--------------------- Token ----------------------->
       |                                                   |
]]></artwork>
      </figure>
      <t>In this model, the Client interacts with an Attester, which is
responsible for determining whether the client conforms to the
required policy. The Attester provides an Attestation which can then
be presented to the site (the Issuer in the diagram above), which
provides a Token.  The bot can then use the Token to get services from
the site (the Origin in the diagram above). The Issuer and the Origin
are operated by the same entity (this is a technical constraint of
ARC).</t>
      <t>ABA extends this scheme with a zero-knowledge proof (ZKP) system (e.g.,
<xref target="I-D.google-cfrg-libzk"/>) in order to assure that the Attester's attestation
does not leak information to the Issuer that could deanonymize the Client.  This
property is especially important in the "server as attester" case
<xref target="server-as-attester"/>, and is not assured by ARC itself.  In effect, ABA uses
an expensive attestion and ZKP operation to authorize the issuance of ARC tokens
that can be used cheaply on every request.</t>
      <figure anchor="fig-aba-with-privacy-pass">
        <name>ABA with Privacy Pass</name>
        <artwork><![CDATA[
                                     +----------------------------.
   +--------+          +----------+  |  +--------+     +--------+  |
   | Client |          | Attester |  |  | Issuer |     | Origin |  |
   +---+----+          +-----+----+  |  +----+---+     +---+----+  |
       |                     |        `------|-------------|------'
       |                     |               |             |
       +---- Cred-Request--->|               |             |
       |<----Attestation------+               |             |
       |                     |               |             |

                             [Later]

       |<-------------------------------- TokenChallenge --+
       |                     |               |             |
       +----TokenRequest + ZKP(Attestation)-->|             |
       |<--TokenResponse[ARC Credential]-----+             |
       |                                                   |
       +---------------- Request + ARC Credential -------->|
]]></artwork>
      </figure>
      <t>When a new Client is deployed, it first must register with some set
of Attesters. These Attesters will require the bot to demonstrate
that it complies with their policies, for instance that it is a
registered corporation, holds a domain name or an IP address block,
etc. Once the Attester is satisfied, it issues a Attestation to
the Client in the form of a CWT <xref target="RFC8392"/> signed by the Attester. This
Attestation can be used to authenticate to an arbitrary number of Issuers.</t>
      <t>When a client contacts a new site for which it does not yet
have an ARC Credential, client uses the Attestation to authenticate
to the Issuer and request an ARC Credential. This authentication is
performed anonymously using a zero-knowledge proof that it has
a valid Attestation (shown as "ZKP(Attestation)" above), as described
in <xref target="auth-issuer"/>, so that the Issuer only learns the following
information:</t>
      <ol spacing="normal" type="1"><li>
          <t>This Client has been authenticated by the Attester.</t>
        </li>
        <li>
          <t>This Client has not authenticated to the Issuer previously
using this Attestation (potentially within a given time window).</t>
        </li>
      </ol>
      <t>Assuming that the Client's proof verifies correctly and the
Attester is acceptable, the Issuer issues an ARC credential.</t>
      <t>Each credential is associated with a rate limit, which may
be Attester-dependent. For instance, if the Attester has a policy designed for high
traffic bots, the Issuer might use one rate limit, whereas if the
policy is designed for low traffic bots, the Issuer might use a lower
rate limit. Note that the choice of rate limit is entirely up to the
Issuer, but because all Clients authenticated by a given Attester are
within the same anonymity set, it cannot use different per-Client
rate limits to multiple Clients attested to by the same Attester. Similarly,
because all clients whose credentials are associated with the Issuer's
key pair, all authorizations by Clients using the</t>
      <t>Once the Client has an ARC credential it can use it to authenticate
to the Origin repeatedly up to the number of authentications
in the rate limit associated with the Credential. These authentications
are unlinkable provided that the Client does not exceed the rate
limit; authentications beyond the rate limit are linkable.
Because any Credential can only be used once for a given
Issuer within a given time window, the total rate limit for a given Client/Issuer pair
is bounded by the limit associated with the ARC credential.</t>
      <section anchor="auth-issuer">
        <name>Providing Attestation to the Issuer</name>
        <t>The protocol for Attestation to the Issuer is designed to meet
the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>A Attestation can be used with an arbitrary number of Issuers.</t>
          </li>
          <li>
            <t>A Attestation can only be used once with a single Issuer within
a given time window</t>
          </li>
          <li>
            <t>Attestation presentations are unlinkable, both between
Issuer and Attester and between Issuers.</t>
          </li>
        </ul>
        <t>These requirements can be met by using a signed credential (in this
case, a CWT <xref target="RFC8392"/>), along with a generic circuit-based
zero-knowledge proof system (in this case Longfellow-ZK
<xref target="I-D.google-cfrg-libzk"/>).  The interaction between the Attester and
the Client just yields an ordinary CWT and then the Client proves in
zero-knowledge that they have a valid Attestation from a given Attester.</t>
        <t>In order to prevent replay, the proof also includes an Issuer-specific
nullifier tied to the Issuer's domain name and the current time
window. While the proof itself varies between presentations, the
nullifier remains the same and therefore can be used to detect replay.</t>
        <t>Because we are using a generic ZK system it should also be
possible to use it to conceal the  Attester if desired: for
example if there are multiple Attesters who follow equivalent
vetting procedures, then the Issuer does not need to know which
Attester the Client used; the ZKP can be designed to prove
that the Client has a Attestation from one of a set of Attesters
within the same equivalence class; of course, the Issuer will
need to use the same rate limit for all such Attesters.</t>
      </section>
      <section anchor="alternate-cryptographic-approaches">
        <name>Alternate Cryptographic Approaches</name>
        <t>This section considers a number of alternate cryptographic
approaches and explains the choice of primitives in this
section.</t>
        <section anchor="only-generic-zero-knowledge-proofs">
          <name>Only Generic Zero-Knowledge Proofs</name>
          <t>In principle, it is possible to omit the use of ARC
and instead have the Client authenticate each transaction
directly to the Origin. However, even efficient generic ZKP systems
like Longfellow-ZK have far higher computational and bandwidth
costs than more limited systems such as the one used in ARC.
Using a generic ZKP system to demonstrate ownership of
an attested Attestation to the Issuer and then using that
single interaction to obtain an ARC credential makes it possible
to amortize the generic proof over a large number of subsequent
interactions.</t>
        </section>
        <section anchor="other-attestation-structures">
          <name>Other Attestation Structures</name>
          <t>There are a number of other potential ways to convey attestations
to the Issuer, but each fails to fulfill one of the requirements
in <xref target="auth-issuer"/>.</t>
          <ul spacing="normal">
            <li>
              <t><em>Non-anonymous credentials</em> allow for linkage of bots at redemption
time.</t>
            </li>
            <li>
              <t><em>Single-show credentials</em> like those in Privacy Pass either allow or
require the bot to interact with the Attester for each site it
wants to interact with (otherwise linkage is possible).</t>
            </li>
            <li>
              <t><em>Camenisch-Lysanskaya credentials</em> do not prevent multiple shows
to the same server, thus precluding rate limiting.</t>
            </li>
            <li>
              <t><em>BBS+</em> credentials require the use of pairings and have no obvious
transition to post-quantum algorithms.</t>
            </li>
          </ul>
          <t>Note that in cases where the Attester and the Issuer are one and
the same (see <xref target="server-as-attester"/>), it is not necessary to
convey the attestation to the Issuer and so the generic ZKP
system can be omitted.</t>
        </section>
      </section>
    </section>
    <section anchor="issuance-models">
      <name>Issuance Models</name>
      <t>Anonymous credentials are compatible with a variety of issuance
models, as discussed in this section.</t>
      <section anchor="independent-attesters">
        <name>Independent Attesters</name>
        <t>Much like millions of websites rely on a much smaller number of independent
WebPKI certificate authorities, it is possible to have a system of independent
Attesters that are broadly relied upon by many websites.  Each attester could
publish the policy that it uses to issue credentials (e.g., verifying corporate
existence, subject pays $100, etc.). Sites can then select which attesters have
policies they are willing to accept. It is also possible to have multiple
Attesters who conform to a common set of policies, as in the WebPKI, where each
CA has to meet the same requirements, but site operators have the choice of
which CA to use.</t>
      </section>
      <section anchor="server-as-attester">
        <name>Server as Attester</name>
        <t>It is also possible for a server to act as their own Attester. This is
not likely to be practical for small sites, as bots will simply opt
not to authenticate to those sites at all. However, a large CDN which
hosts many sites might opt to operate its own Attester, and it could
be practical for bots to register with such an Attester. Note that
this approach makes it possible for the Attester to refuse
service to individual Clients, but not to selectively do so for
individual customers unless it uses separate Issuers for each
of those customers.</t>
        <t>The ZKP element of ABA ensures that clients remain anonymous even in this case,
since the client's redemption of an Attestation is not linkable to its issuance.</t>
      </section>
      <section anchor="number-of-attesters">
        <name>Number of Attesters</name>
        <t>In general, it is desirable for bots to be able to acquire
a relatively small number of credentials and have high confidence that
those credentials will be compatible with most if not all of the
sites that the bot wishes to contact. This can be most straightforwardly
accomplished if there is only a small number of attesters, but it can
also work if there are a larger number of attesters but sites converge
on a relatively small number of policies (expressed as which attesters
they support) such that a bot can acquire a set of credentials that
covers all of those policies. The least desirable outcome is if
bots routinely are prompted to provide credentials for a new attester.</t>
      </section>
    </section>
    <section anchor="relationship-to-browser-authentication">
      <name>Relationship to Browser Authentication</name>
      <t>There is significant overlap with existing work on anonymous
authentication happening in the PrivacyPass WG and in the W3C
AntiFraud Community Group. While that work is directed towards
access control for users, the same cryptographic techniques
can be used to authenticate bots. A good description of
the vision and requirements can be found at <xref target="PACT-Issue"/>.
The ideal scenario would be to be able to use compatible tokens
for users and bots, differing only in the issuance policies,
the attesters, and the rate limits.</t>
    </section>
    <section anchor="use-case-analysis">
      <name>Use Case Analysis</name>
      <t><xref target="I-D.nottingham-webbotauth-use-cases"/> describes a set of
use cases for web bot authentication. The architecture described
in this document address some but not all of these use cases.
This is intentional rather than a deficiency; the objective is
to address use cases which are compatible with limiting the
negative impact of bots while avoiding making it trivial for
sites to discriminate against individual bots. The remainder
of this section addresses each use case individually.</t>
      <section anchor="site-use-cases">
        <name>Site Use Cases</name>
        <section anchor="mitigating-volumetric-abuse-by-bots">
          <name>Mitigating Volumetric Abuse by Bots</name>
          <t>This document directly addresses the topic of volumetric abuse,
because bots can be authenticated and authenticated bots can be
restricted to specific bandwidth limits. Once a bot has exceeded
its limit, it can be blocked.</t>
        </section>
        <section anchor="controlling-access-by-bots">
          <name>Controlling Access by Bots</name>
          <t><xref target="I-D.nottingham-webbotauth-use-cases"/>
provides the following example applications of controlling
access:</t>
          <ul empty="true">
            <li>
              <ul spacing="normal">
                <li>
                  <t>Only allow access by bots on an allow list;</t>
                </li>
                <li>
                  <t>Disallow access to bots on an explicit deny list;</t>
                </li>
                <li>
                  <t>Condition access upon meeting some criteria (e.g., non-profit,
certification by a third party);</t>
                </li>
                <li>
                  <t>Condition access upon participation in some scheme or protocol
(e.g., payment for access);</t>
                </li>
              </ul>
              <t>Note that the first two imply some notion of bots being tied to a
  real-world identity, whereas the remaining do not necessarily require
  it.</t>
            </li>
          </ul>
          <t>ABA can be used for the second two use cases and can be used for some
versions of the first two use cases. However, the more fine-grained
controls are used (e.g., by having many Attesters with different
policies) the worse the privacy and scalability properties of the
system become.n</t>
        </section>
        <section anchor="providing-different-content-to-bots">
          <name>Providing Different Content to Bots</name>
          <t>The architecture in this document may be usable to provide different
content to bots generally than humans depending on the structure of attesters
(e.g., does a given attester issue to both bots and to humans) and
whether techniques are used to conceal which attester is in use.
However, they are not generally useful to provide different content
to specific bots.</t>
        </section>
        <section anchor="auditing-bot-behavior">
          <name>Auditing Bot Behavior</name>
          <t>This use case is not addressed by this document.</t>
        </section>
        <section anchor="classifying-traffic">
          <name>Classifying Traffic</name>
          <t>Because this use case does not depend on determining which bot is which,
but only which traffic is human versus bot, the architecture in this
document may be able to address this use case, depending on the
ultimate deployment model.</t>
        </section>
        <section anchor="authenticating-site-services">
          <name>Authenticating Site Services</name>
          <t>This use case is not addressed by this document.</t>
        </section>
      </section>
      <section anchor="bot-use-cases">
        <name>Bot Use Cases</name>
        <section anchor="ip-address-mobility">
          <name>IP Address Mobility</name>
          <t>ABA provides authentication for bots independent of IP address.
Because ABA authentication is at the Attester rather than the Client
level, it is not possible to use ABA to build bot-specific reputations
based on observed bot activity; instead the Attester is responsible
for assessing bots and then providing that information to sites.</t>
        </section>
        <section anchor="sharing-ip-addresses">
          <name>Sharing IP Addresses</name>
          <t>Because ABA provides authentication independent of IP address, it
allows sites to discriminate between unauthenticated users of
an IP address and those which are ABA-authenticated, thus reducing
the negative reputational side effects of misuse by unauthenticated
users sharing the same IP address.</t>
        </section>
        <section anchor="robotstxt-alignment">
          <name>Robots.txt Alignment</name>
          <t>This use case is not addressed by this document.</t>
        </section>
        <section anchor="conveying-contextual-information">
          <name>Conveying Contextual Information</name>
          <t>Because different Attesters can have different policies and Attesters
can have multiple policies, ABA allows for limited conveyance of
contextual information. While in principle this information can
be arbitrarily fine-grained, coarse-grained information ensures
a larger anonymity set (see <xref target="number-of-attesters"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The precise security and privacy details of a system of this type
depend on the detailed cryptographic mechanism being deployed. However, it
is possible to make some general observations.</t>
      <section anchor="anonymity-set">
        <name>Anonymity Set</name>
        <t>The anonymity set for a given transaction is the set of credentials
associated with a given Attester, or, if Attester hiding is used, the set
of credentials associated with the set of attesters. However, it is
still possible to learn information about the client by manipulating
the Attester set. For example, a site acting as an Attester could use
different keys for each user or a site could use different Attester
subsets to identify which of a set of Attesters was in use.
Transparency/consistency mechanisms like
<xref target="I-D.ietf-privacypass-key-consistency"/> may be useful in detecting
this form of attack.</t>
      </section>
      <section anchor="credential-misuse">
        <name>Credential Misuse</name>
        <t>Because clients are anonymous, some forms of misuse are harder to
manage. For example:</t>
        <ul spacing="normal">
          <li>
            <t>Two clients can collude to exceed rate limits if they are
interacting with disjoint sites.</t>
          </li>
          <li>
            <t>If registration standards are low and registration is cheap
a bot can obtain multiple credentials.</t>
          </li>
          <li>
            <t>Patterns of misuse (e.g., credential stuffing) become harder
to detect.</t>
          </li>
        </ul>
        <t>Note that existing mechanisms, such as IP address, will continue
to be usable, but the techniques described in this document
may not add to the server's ability to address these issues.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9576">
          <front>
            <title>The Privacy Pass Architecture</title>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="J. Iyengar" initials="J." surname="Iyengar"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document specifies the Privacy Pass architecture and requirements for its constituent protocols used for authorization based on privacy-preserving authentication mechanisms. It describes the conceptual model of Privacy Pass and its protocols, its security and privacy goals, practical deployment models, and recommendations for each deployment model, to help ensure that the desired security and privacy goals are fulfilled.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9576"/>
          <seriesInfo name="DOI" value="10.17487/RFC9576"/>
        </reference>
        <reference anchor="I-D.ietf-privacypass-arc-protocol">
          <front>
            <title>Privacy Pass Issuance Protocol for Anonymous Rate-Limited Credentials</title>
            <author fullname="Cathie Yun" initials="C." surname="Yun">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Armando Faz-Hernandez" initials="A. F." surname="Faz-Hernandez">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies the issuance and redemption protocols for
   tokens based on the Anonymous Rate-Limited Credential (ARC)
   cryptographic protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-arc-protocol-01"/>
        </reference>
        <reference anchor="I-D.ietf-privacypass-arc-crypto">
          <front>
            <title>Anonymous Rate-Limited Credentials Cryptography</title>
            <author fullname="Cathie Yun" initials="C." surname="Yun">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Armando Faz-Hernandez" initials="A. F." surname="Faz-Hernandez">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies the Anonymous Rate-Limited Credential (ARC)
   protocol, a specialization of keyed-verification anonymous
   credentials with support for rate limiting.  ARC credentials can be
   presented from client to server up to some fixed number of times,
   where each presentation is cryptographically bound to client secrets
   and application-specific public information, such that each
   presentation is unlinkable from the others as well as the original
   credential creation.  ARC is useful in applications where a server
   needs to throttle or rate-limit access from anonymous clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-arc-crypto-01"/>
        </reference>
        <reference anchor="I-D.google-cfrg-libzk">
          <front>
            <title>The Longfellow Zero-knowledge Scheme</title>
            <author fullname="Matteo Frigo" initials="M." surname="Frigo">
              <organization>Google</organization>
            </author>
            <author fullname="abhi shelat" initials="A." surname="shelat">
              <organization>Google</organization>
            </author>
            <date day="2" month="September" year="2025"/>
            <abstract>
              <t>   This document defines an algorithm for generating and verifying a
   succinct non-interactive zero-knowledge argument that for a given
   input x and a circuit C, there exists a witness w, such that C(x,w)
   evaluates to 0.  The technique here combines the MPC-in-the-head
   approach for constructing ZK arguments described in Ligero [ligero]
   with a verifiable computation protocol based on sumcheck for proving
   that C(x,w)=0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-google-cfrg-libzk-01"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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"/>
            <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="PCMag-Wikipedia" target="https://www.pcmag.com/news/wikipedia-faces-flood-of-ai-bots-that-are-eating-bandwidth-raising-costs">
          <front>
            <title>Wikipedia Faces Flood of AI Bots That Are 'Eating Bandwidth,' Raising Costs</title>
            <author initials="L." surname="Kan" fullname="Lawrence Kan">
              <organization>PCMag</organization>
            </author>
            <date year="2024" month="February" day="14"/>
          </front>
        </reference>
        <reference anchor="Cloudflare-2025" target="https://radar.cloudflare.com/year-in-review/2025">
          <front>
            <title>Cloudflare 2025 Year in Review</title>
            <author>
              <organization>Cloudflare</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="PACT-Issue" target="https://github.com/antifraudcg/proposals/issues/22">
          <front>
            <title>Private Access Control Tokens</title>
            <author initials="D." surname="Jackson" fullname="Dennis Jackson">
              <organization/>
            </author>
            <date year="2025" month="December" day="02"/>
          </front>
        </reference>
        <reference anchor="I-D.nottingham-webbotauth-use-cases">
          <front>
            <title>Use Cases for Authentication of Web Bots</title>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
         </author>
            <date day="1" month="April" year="2026"/>
            <abstract>
              <t>   This draft outlines use cases for authentication for bot clients on
   the Web, to help inform discussions regarding the scope and intent of
   the WebBotAuth Working Group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-webbotauth-use-cases-02"/>
        </reference>
        <reference anchor="I-D.meunier-webbotauth-registry">
          <front>
            <title>Registry and Signature Agent card for Web bot auth</title>
            <author fullname="Maxime Guerreiro" initials="M." surname="Guerreiro">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Ulas Kirazci" initials="U." surname="Kirazci">
              <organization>Amazon</organization>
            </author>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   This document describes a JSON based format for clients using
   [DIRECTORY] to advertise information about themselves.

   This document describes a JSON-based "Signature Agent Card" format
   for signature agent using [DIRECTORY] to advertise metadata about
   themselve.  This includes identity, purpose, rate expectations, and
   cryptographic keys.  It also establishes an IANA registry for
   Signature Agent Card parameters, enabling extensible and
   interoperable discovery of agent information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-meunier-webbotauth-registry-01"/>
        </reference>
        <reference anchor="I-D.ietf-privacypass-key-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="10" month="July" year="2023"/>
            <abstract>
              <t>   This document describes the consistency requirements of protocols
   such as Privacy Pass, Oblivious DoH, and Oblivious HTTP for user
   privacy.  It presents definitions for consistency and then surveys
   mechanisms for providing consistency in varying threat models.  In
   concludes with discussion of open problems in this area.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-key-consistency-01"/>
        </reference>
      </references>
    </references>
    <?line 652?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963IbR5bm/3yKXGonLFoAZcn2zDRtq5ui5DbHkqUV5VV0
dzi8iUICqFahClMXUmhK/Sz7LPtkc75zTl4KgGhFz07sn2U4WiRQlZeT5/Kd
W/Z0OjV92Vf+1B6d1U29XTdDZx83vT0b+pWv+7JwfdnUp/x305Z/4z+tq+f2
leu9fVauy76sl3bRtPaNn9mzJb3VHRk3m7X+6jeGPTL0r1827fbUlvWiMWbe
FLVb03LmrVv009Z3RdNWburCKNNrP5s1vaNxpl98Ybphti67jsbqtxt67eLp
6++tvWNd1TU0eVnP/cbT/9T90cQe+XnZ0yZchT8uzh7TP7Tso4tXr78/MvWw
nvn21MxpSaemaOrO193Qndq+HbyhrXxpaNzWOyLGq6dn9Md1075dts2wObVv
/mjf0F+gxB/xiXnrt/T1/NTYqa39u94SXXzLu8ZHQ13SxvjXbuPatxXenJdd
35azofdzW/n50rfmytcDreaOtXEi/CGbHc9IH69dWeGRP/h3br2p/EnRrPG5
a4vVqV31/aY7vX8/+/I+DUdDl/1qmBG5/Nv2/icQ/ojeqYhKXU/vxFHfticy
0EnZfMoon/LMyapfV0fGOOY+EJOmtnYxVJWwydHTtizsKx3jiL9t2qWrlVOJ
IxIL8LdeiIS9/qHtF2uQ4ejAwK/KYuXauX12Yh+7tvbdocHPS5p4NGxbzf5Q
bq5Oune07Lpp1/TkFZ2gAX/Hv6x9ef7cLadvyrflhrjSnfIgQRTjx/Z7V/jO
fl81zdw2C3t2ASnq7OuVI1lqvf3sqWPxe0wSeV3O+9XkMxLMssNn503X66oj
/fhnqv9aEjri7yPa4o+uPoqfKgWeuevW14Uff0kEoO94+fIhy4t9+MXDr6Zf
PJw++Ep24tqlz9nj+vr6ZFOs3ZLZrvbX3f3rsMvpArucLrDLabOYunJK599N
e9rllCRu6nmT01nY5LSVLU6LsMXzqhnmiwoP00q+HpMzfYllfm3/5F1LWye2
uSr99e0Uku2mEXb2/PXh3bZu7tqTIr7Fm97StNOyJo7HtPfxNkZ7eXb+enrR
dYMfr/plW15BxZ4VRJyOTrPu26ayr5u3pJc+5VifnNh/c8Xbrtk/2ie+rstu
/HXa0/TBQzrKwztTEcd+HOnxReuGebG8v2mbTdOR1r1fYifd/YcPif9PTk6M
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
wacz8AiCmY8IK4MwJ5YtP94mL9enowA7IVVuOMlUbF+SzCKHrfMu61ucLrCr
ql6ZElHYRK6Of1cxCNhLz3njWPXmPimpkeJtZw6+k8fqWZXwfnaszyQxrjmE
QVj6EUzm2RL8BS/ku2dnjsSZ9IPGZdS6Jgov2JWFm5wTBII4L4l7WvqEVsjc
aDQUwtG8TrB4/pK4tiFUwXo9KqXag7lJC1ZbU6v7Db2gpx/2gtf3EjrEll5i
HtNpyl0ZCd6WamQTQys8UICaM/1oscB/EkKJcRgR2K5wYr5i1Gg6LWtdKNg5
O5wRQwPCeDdnT1bzJrIhROScJb+jnI9OC0v4VWDjr2PQE0ipgYbxFxKWKoGX
e4NduiqCRRbk+1GQyVM/D4JyATHBx2L03kC1KrPYyC1nr841jtF5ySClMAZv
qwG2kXHY7EgsYzTOzc1/e/X9+e++/pd/VrxhUq6Q0QNra6L5eToPQy8hFlz6
fjHdyGiQLHiV02CNP3ywtz1WtNtN3yBHJPFZRlqK5EFE1rdRnMoxOVJSgE63
Anwke9CRdhEPgk4aMUP29uaaJ6A/uDSH3NpV3VTNkoPPDK9gq66ack4SMBAs
ZRtuFkNdSMooBVpwkr4CXgOi1cmsTLbWHMkbzx4hS7+azaN/44TBi7ZcllK5
xMn21j6Jb9rnzdxXR8JlNzeXepxfnXyJQbIDgkZCJjQoH1qLkRiMEnjKFF5j
uA8fTiUA8wkBBmvv3RZDQIw0PXHv4Fv06fu9h/I/32OQ94TP2NF4nwZ5n6zT
eyv/KYXe6/dKu/c6CEa9d3Al93ZWcm+0knv5SmTkQz/x0/8la38/ooX+9Vkc
4zdjMVIycb4iNODJI7O0hk9cwMG/0+q//e6770bBKfr70ae+/J+Z+d7+9kK0
LH3+6KPL3n9Xs37ZqPc+8vLBZd/+c3jZO2v4WGDv0X9u5jzoti+iIeI2Usms
C+zdj2iNY47DXdTqIeNZgVMqV5yj4Ty54vEDcTazG2cL4Q0xTTHQpk4L8Ju4
9RIBMzD2nKoXfx5RpixIlbK/9Yg5g1HmlFJN9jxkGgRhxNjUXQaHogA0/zQv
3bJ1a9Q2XPnjEKzL0sx8hOJzMxoIs0QUJmeMPILvo18k+nY8sRL84MSyUV1a
8M3lBU7xSXoBujlz/NSHutvHUhW2QWRnUI1Qd5xqBxQ1ZM+PESwjS+3fIYuv
YRB1dTVA+DffNlPAMa7QBLXJRNz9848vj0MqQTLRwUovm4Zc/GmxaJfTqpz9
7e2HD8dchtTOPYdyXcexmRimzIKpLh2fifCw8u6tjdWEktfIjkzweTNUc2Ir
jb38zWcsysfEUUnQi7PO1rMXB/eUwzFt75iVxX5KwBXxrQCtjhjb0Q7lK0Ka
0/BVCJsolpDN8YkQeQkvkMezkLyMOFwTRUbI0tJn7zZIl10FFBdqjYm8qYwk
BIY5lSWeMs3CATE4RDRNzzVyJndVGLjSQbqNONpALdsAm0/+v6Ge/tcb6tvH
OPj32HQwCJ6qpZvuWbhbDDXeznTh3vHc+vY/tO7bmekvz0hPtb+Y//cghgk7
QhD3IG13M2od344lRhDiLxC/5Kv8coDQ/0VYwmb5wtEaIrJ4NIYDbuam0Okj
XBBzcKSUrne9Pjb9mqmv/XU0+Z0NHg97RIuypWWsh67fSb+FuMcobnOigeoU
ZuColNr4mEXn+qi12Kvem1DiIqF838VcXNnGFBwnC2xMFoRXYANNWBiUYtOS
xndSirdqqjls5LxBpSuXC1sJmmXxWk7TTAzKoewLGXqcJOtotG5RKj2kIpgG
zdFI35gRauIxYNMkunX+5rX6xv/65e8ekjOLoFSy7GEyTbDlA+9kBXYziAj/
tbOSqEjqP8UbRY+yBynnm6BXz2hOTlySd0QQhXJ9itqgulWCmfUOA07CYEOn
qcoxIcbVc2NrLlVOwth7A2ux8U6CBKZd8kDsgcdSl1BKcRjBBO5YOTLEGn/J
l3lXag4IBBztqoejiAtdF0Mgc8NpFa5QYwZgZNA1CefoDscJWVBXq6pMhnHI
k36gu1WOQZxoth/73+WPQ68xLhm9NaY5omFlqA5SqjEQHNEjlo1pIhxeggbj
+pLhYj1vrhlQ0rDrPLKpi/msU9oTFCkXEGISRS2TU3RrRqnnWBo4yZcbxEu4
Iwv+GvMU2fcsioZBuq4hpIddK6BN0cDgoawd6iQjEaexgUYC+kGjTHYjpBq8
E69EA8kaLlzllciSOs62IOVeHLOp/c6CSEeh+F4S4Tp0DFOHYCSibb89uMOD
vjVpghP7U9Nn2LtYNaXAyPQM42MtJbbDJjhhMvqEsxMzXziegBS3nG23z5d7
6Q/kI5VzoreSkqVkJyaa4AfDSiWmRpmR6J3KRCbPTqBkPaS64zpkOmby3C9K
KvSSXq5QVz8x+Ua0eFcLw3Yj3rt8lAj+WYfmN7txJZcqVBGrs+BwVi6sLciW
NybakUxQ91g6FDwMElj+iOpUENwS12J9+allGn+sNZGBkKrcdO6HtjhWvrDb
u+OAOINmKSsfvPH5rvAnw+HfFRzk18kNT/7N7rjEY9umnu+tsfU2zHViHofj
q7c5AALJWM0Gu4hskiTDhCeVmW/RYyJRfdOP8mH5GLqv+0GJ0vEjoDxrBi6H
V9b7OGX3lNedO1k2fMdiZuJ9cye3MVI7F4LgvL6Pv5qrEYiOJxM+MkEBhXF0
WbL89mNYI4R7bkUXhwbYPxlVzFocMDobtCPsnw7GzUbVuI4yzpghJ5KL0sw5
DZcBjaSZkJPS3HpCRsLvOUkCAda+xwEHgKEkzeT2bikBMyO52X18B/DAySrd
O3fLkjYvyrYYyn7K1QjmIHIJURedQtJOz2ishccxTv/8422hGA1ahbAdyBd2
PjJtSM1k0vtXoPtt6RktczCnrHHm2Jfa7jqXdqgBbpnZ3cNOhvQQ9Bo1QCRk
gyBkDCKFDB4pvcptRVqFPFznLnXrghLkQKexFr0eqgrwo0VN/w4W+qwbeQIh
5lYMLZshsKARFkyJpDCxxHpoPy2gTSDqiDd5ndkCQn9dZg55wtYvuI9lDO0R
NS3ClokeQftde+F55cbASn/+MbAKaSBCs4iQMXEOJI7FuISsO5aT+TeL0Cp1
ygljTaorRGll8miGM7du1ahmsRAhOmeY71CkRTQr/BzdFZPEPCqbWWZ4Nxuc
AGLGbCDQN/wB4mZKtVzTMTeaXYsk6G2P8wDJQsWBzT3XPfASt4UKfZQBfcM5
92ZouzFkhYcbU9ujRP2ubUEBNIrrkrss5RQV/c7ljuecyFy2bkPksGeamUTN
zSgzi0gvmeGWHbmEAeIwRT6McXEY5kD/jjgs8GWCiJuWU+hX2goH9abT8SLv
kG9Mmv2Pgf0g9z9GuX8JGelYiFEhWJRcl7FfldmAFJhXM5pIOku/qiTQWWtk
hzjyd7n6loxR3YlqM7ENZwSVsipALnzwsRwxyc5LFZ7OcLfVSL/KIhZOYD6R
FlGJoQ89f2xNQuu24Q5AqL1amtMqTXDr8KkFbiXewKDFerTxE/PznkyHde0E
SCw5q3Taq3KDyH6q+ZnfAgei3g6w1PVGbXBuHnAoM66i28enUo1cpmpYYFK3
RkWQhqrDykVHcltnaEQdVz/B6Sf9kM3cBbbi/FC+j8vQI8BsH3RQzulSsppa
na7dtlMVd4UGtTRYN45AiIPDjLRwpXT7LYZqgRiVagaGpBkqOOD5nwA7/YqW
yYNFRb9KB5j4cgAqS6/FovBfLB5cb+TqDLY5AFK/XvLRTLmCZDQWM6jU6dBK
Rrk9rTuW2bh270CcLZB8v75diuJBCw4ElajaRMt1t//a3dRYG3aUSfYx7+Cc
NF5ddsVq+mzbkZC+dVs33sq8kdpqte7RqmDTqEoMeTu3DnXxE6moQCOadKqN
q3143sePL+/9OvLociqoogGApxc6beG+Qhs5MT5HRjAztErsq6F99dN/H4gU
A0GVaknuXr9ag2GTf42yUy40lCbEXXQ1ksRWZD+ALt7f3c57ezjldJwXoofy
KSg5o/yd6oI+JvhdMxJPUiyhH1/tJxQx6Y8TbogP+SbOFaPg+WCpnNPe21GB
pgAiqeoMeSvDeeROAmh5hXKf2TCxfNl1JpklNs+hNZnxyZevGPfT+KERKpaX
OmIhcO8aaYQ20w/ZRTnmjZ+9/PGCa4W5S7/3wYXvy8MNbwpdlWA7wyUEJHVe
RJQZWdc592xXgJzDBqh7K511WfMWh69iORfnNI1eCCA4U6JBIXQp4dVGAmKj
g9DeYI6zcWFyiHl7w3VEXtrWh9lfASg30I3//cEXX2jHb96+zPZBWhZCt2Pc
HrfLh+C7YHpsFmBH6+wkghduOGDwuUfGIONmjBy1BkCabFGzhjZ8r93cId7v
uhBJlzMMDb9QWeb8jBGeOroZ5MpUt2j7nRsnIsSI0EerG2lEwW/CmpcxTxx7
q8yhnUrQQLPKTJVeDX7Zwm7vRPcR0Oa8N3G3IBcuXYBNLLSOk/lZWkeZCFr1
x59xp1Kz6XmMgy1FMBQiJnLxRgaHgmk+f/KT4u0Vwxfm1LxVlSZgYCAVCJZ7
GK7z2g/GbJqYN3sbCJ2LO/kihkI5PaI2NaPu/H3cobWqmYrl0Rd0WEbLL+yo
bDfE5IQDlFZ5bw6Zoq7R9pNUJRo7lbTdPYhh7F7Q8EG0nIYBA0cUw7sSWmAs
57VaUlsdpW0l1Bxr0FCcxKw6WYp1M+9/Atim4cQihNoTiGDkP66NUdMRo3Yg
Td9F/Sz8/VPUlpniJfwuN3tV+4Xb+cnOfGo/LljgDFqyKqfkFRZOCnlkR4IF
5psNoAnQGlBETtiNz15LF9Oe7VkT78JNraXlPnaXSfd63kCMyzV8AIhIgKko
hngPBuLKGeJ92uW1a0md4+4CTkfivpbkDpddqN7f3WNUncJ0Etw1rCzQjjv2
qFUU20PvR63VCaCl5wxbu1sIHBX1XXLvuMeEb/vZUerSkahtIscikVquHOqc
9DiTg7xbLU8g5Io9z0BynFfsk+TwU+Vd12ec0ww9KrlBu3JhmIda+qyssRNQ
g+SemDl58+hH2q0vl5SlSwGjO/YV04PQARwjevVxSzgSzsS4UU+dCGCP7Koe
7KJyG+GlWH/LJ9Vk8rjbsLXCBRt1dpvBTs+B3r7EVuvLc4JSffk9bpWy52Tl
hhq5EL7gLkWYiPzCH53eK8F0ABN24UIO7a5JdfaTZPBGvr5WgyHDam5LHeMM
UNzPffCS5AzKhCEqOgu1WOlQhHSBMDjsy81Nuu8LftFrafQhXdoVviZoCN5H
aGrmd9SGNA1FidYap/1GgonmibiJCoKnxI1FUhEvmASLmUJuL7/ALqf9mWY+
R1T1THvjcBfNp11FkzX2q3iYeHWCJNL9TPoHxu1KLBV5l/Q4sdyPbg8IdQlc
XxHMV1Jwnc+vuQlXVvFFPRqhoA1LySXEmWaS8EexlSBaw7CQr0Bi5zhMlzaS
btbYVbmpy2K1d5VSdHGlI5eL4PEoGXOWFnTMkaEViGDiHSMHbxbZ6ZkV+oml
nBMOY0Jk4bDYVifebNhJNky1VVAHLBgYoJMAxHO94IAWmd2kdMZtbQTjcUPh
3gUPIfCUZpaE0obeRAo8jcPtcSkVyRRSKRrnVMGu+z3J+qwJd8OILMcutRiI
ihe2ceZR1DnwsaTjwGY0lmahy1hGyKUv4gXeuRPu5GN4fxZvApL9f6KEpCra
ceYpRJVJeVYxB8jR1Dil6rpTYx5ZtCBKvFFiG+leIqYJayb9Ch2N35hH4aUn
ZTd6JbSZyisIfZIw9KkZMns1to2Gd9mRC72m0tKmjabBBSMjgRaVBVGVR6Gf
5GeW4gY68Go758bT7fFvzvfJ/ak6n66EvDzmTLaUPFycalwTIOVc/bV082xl
eDpXRZJMLGmOCvkTx6O0pNSnZKdIl4dOzlTP0Efx5B6WZrfxKxgRHqnstSw5
N1AB4JNIc174uskUEkRj92Gs2wCIBFYaby6pyOT+4AkO0ua3nJjYuSpZFhpe
STrjJJaoMOKWvKKN5C1WL0Qf+ZgnIBJ1IW8koTqOx5BrFNp8tVK59OlCBIk0
kI6gTZ3UIo0pW/wkFkqcp+bpoJZ27MqeNdEm2KELhjfgq7SB3ZZs9QCqrZgQ
6c62EgIRMyxHlV/lkiCmUo+zPCHNF6MeEsyQicK9BzVzmczC95Gl2zkimEmH
s9c+mo2N3bP/nh+5IEwwZNoXPbQYqoPUCA3qZqRmG8YOfC6xbRqXXz4ObdNi
IJLl0bosNQ9aMJCdS1C5WXv5a20oj5m/fjRkTJvJQVhu0MsbLfQmCczNf0jn
L2MmbbVMNy1qKzud18DxBRGOQ5xkdjkp+n2KG0arnOyxiUEACLdOZa1t0mhy
EujZ563mbKEvY6v5P0JWPpkdI3/x0p7pgp9rf74oodT2Mcb50dvNgn/jLv5U
oIJx9soW7U4DxAiWpRSXQcdhddvVIxgdEjOUFWOCmOtGrngIaY54wUEz41jU
fNTH+k3MsI2WNL4kh9E3eprlCpIknSu5IFHVkYa/Rx0bEuMUUl/qlQeJ5DiE
nFYfo/lHSQ3yGL1W7zByDAn53XtdxJmQpFlW8yvbkovCAtillU1HL2vygfzQ
oQBAAeki6E20h7MDFRKv2Vvgdj5FjzvrMbKecCtEdOJyrmIivmpY5/Tv+Kqm
Jd+E9w8rGc4ayB3apNve9cDVF+kA0+EkLZisXbg6Na/XC8GGvMxGHM5R0DeL
5bKIyAFKWkzSpJLQ0GYXMUSyvIy/gqdcZrll2WfOhIi1QDtpvRJAR27mJzSV
I8scLzfL39XAnIlBmVHdYkjVSLCFb/QOW0bFjXZaX4n7JTR5Qj5XXYpgso1G
CSEu0O/s0fOfL1/jwn78a396wb+/evo/fr549fQJfr/84ezZs/iL0Scuf3jx
87Mn6bf05vmL58+f/vREXqZP7egjc/T87E9H4gwfvXj5+uLFT2fPjvZhAt+j
2Mj9OD2u+fHsk3QmOqp45/H5y//zvx98pbVODx88+J00ZqPw6cG/fEV/4PZH
mU0Nj5cbcbdGLibFKFyO6Ta4hlMC3FKMDSyJzOpfQJlfTu23s2Lz4KtH+gE2
PPow0Gz0IdNs/5O9l4WIBz46ME2k5ujzHUqP13v2p9Hfge7Zh9/+vsL9T9MH
//r7R3ypBtk8vTr6XIs7XMY/ehNnfr/0PAJMufin07KWmLWS+xq3G9xVEBAD
FI48zhVteeQo3UQk8D80geSXKvVmJ1XG3ensQii4UvPjUoZfrwvHoi99r5B1
JF952WVW3iG3nfkDcUizX/Y9LifD/xEG13OnWm6xXaI+55MwsNmNTR8o5QzX
TaYWl4wgCKLIPVs5WbgBYKRi5B7tFMLXBGG5GSq5kW5kl2nKvdtmOI2ll+S5
Lk+kaH8kkiFJR5PGSWmKeKOEDhNfOKDxDZdraBFAuLVrfFPLKGlgr10C3q9x
fOTCItx0n6uUOB25za8XQ+Yr3P68d5sDLXuavUcaJTowDNnlnitfKM3KLnXZ
8PXUgtLzcuHnbIuTjQuJF47ChyjvRJhY+pKTAXd8R7RWJeKWfrf0u/dvf25f
k78ZRoUNJO8c5Yl8U5lUQ+dV7ZIG2Oq9srEgJhSLEqr5K/dqB0j1ub1YaCZN
G0bRrzBHeFjqpRHs4Dht9giSG+gO5QLbENrXOp9onfM7WzHPS7B4W+cEUGcu
qwnqetyeVi+P1V1V+kj1hhzNqE4iRtYTB0wO3DA3kTQPEEBZD1xoFL1Wyadw
gC05hCO7NLJlBhyjwGh8yyJ6kNUJHzkwvtPLf8TJsxdnP50dUMO5vZTOG3ky
1TPx/9PAjNiQL0otQl2s1BHdnAqC8PPvjhZEc3/0QW5VogFiBe2J+Q8o3i/Q
xWgAAA==

-->

</rfc>
