<?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.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pw-privacypass-in-band-consistency-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="In-Band Key Consistency Checks">Privacy Pass In-Band Key Consistency Checks</title>
    <seriesInfo name="Internet-Draft" value="draft-pw-privacypass-in-band-consistency-00"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Security</area>
    <workgroup>Privacy Pass</workgroup>
    <keyword>token</keyword>
    <keyword>extensions</keyword>
    <abstract>
      <?line 46?>

<t>This document describes an in-band key consistency enforcement mechanism
for Privacy Pass deployments wherein the Attester is split from the Issuer and Origin.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-pw-privacypass-in-band-consistency/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Privacy Pass Working Group mailing list (<eref target="mailto:privacy-pass@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/privacy-pass/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/privacy-pass/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Key and configuration consistency is an important preqrequisite for guaranteeing
security properties of Privacy Pass. In particular, privacy informally depends
on Clients using an Issuer key that many, if not all, other Clients use.
If a Client were to receive an Issuer key that was specific to them, or restricted
to a small set of Clients, then use of that Issuer key could be used to learn
targeted information about the Client. Clients that share the same Issuer key
are said to have a consisten key.</t>
      <t><xref target="CONSISTENCY"/> describes general patterns for implementing consistency in
protocols such as Privacy Pass, and <xref target="K-CHECK"/> describes a protocol-agnostic
mechanism for implementing consistency checks that can apply to Privacy Pass.
K-Check is an orthogonal protocol for checking consistency of a given key that
runs out-of-band of Privacy Pass.</t>
      <t>This document specifies an in-band consistency check for Privacy Pass. It is only
applicable to deployments where the Attester is split from the Origin and Issuer.
This is because the Attester is responsible for enforcing consistency on behalf
of many Clients.</t>
    </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="attester-consistency-check">
      <name>Attester Consistency Check</name>
      <t>In Privacy Pass deployment models where the Attester is split from the Origin
and Issuer, Clients interact with the Attester to run the issuance protocol for
obtaining tokens. In particular, Clients obtain tokens from the Issuer by sending
token requests to the Attester, which forwards token requests to the Issuer.
As an active, on-path participant in the issuance protocol, the Attester is capable
of applying enforcement checks for these token requests. This section describes
a simple key consistency enforcement check to ensure that all Clients behind the
Attester share a consistent view of the Issuer key.</t>
      <t>Upon receipt of a token request, which contains a key ID as described in
<xref target="PRIVACYPASS-ISSUANCE"/>, an Attester does the following:</t>
      <ol spacing="normal" type="1"><li>The Attester checks that it has a cached copy of the private token directory
from the Issuer corresponding to the token request. If the Attester does not,
it first obtains a copy of the directory. If this fails, the Attester aborts
the token request with a failure.</li>
        <li>The Attester compares the key ID corresponding in the token request to the
the valid keys in the directory. If no match is found, the Attester aborts token
request with a failure.</li>
        <li>If the above steps succeed, the Attester allows the token request to proceed.</li>
      </ol>
      <t>Attesters can update their cached copy of Issuer token directories independently
of token requests. Attesters <bcp14>SHOULD</bcp14> refresh their cached copy of the Issuer directory
when it becomes invalid (according to cache control headers).</t>
      <t>Attesters <bcp14>SHOULD</bcp14> enforce that Issuer directories contain few keys suitable for use
at any given point in time, and penalize or reject Issuers that advertise too many keys.
This is because Clients and Origins may choose different
keys from this directory based on their local state, e.g., their clock, and too many
keys could be misused for the purposes of partitioning Client anonymity sets.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Unlike K-Check, in which Clients can check key consistency against the first valid
key in an Issuer private token directory, the Attester consistency check in this document
needs to allow for greater flexibility, in particular because Client diversity and differences
may lead to different key selections. Attesters need to balance this flexibility against
the overall privacy goals of this consistency check. Admitting an unbounded number of keys
in the Issuer's directory effectively renders the consistency check meaningless, as each Client
could be given a unique key that belongs to the directory set.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="PRIVACYPASS">
          <front>
            <title>The Privacy Pass Architecture</title>
            <author fullname="Alex Davidson" initials="A." surname="Davidson">
              <organization>LIP</organization>
            </author>
            <author fullname="Jana Iyengar" initials="J." surname="Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="15" month="June" year="2023"/>
            <abstract>
              <t>   This document specifies the Privacy Pass architecture and
   requirements for its constituent protocols used for constructing
   privacy-preserving 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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-13"/>
        </reference>
        <reference anchor="PRIVACYPASS-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="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="26" month="June" year="2023"/>
            <abstract>
              <t>   This document specifies two variants of the two-message issuance
   protocol for Privacy Pass tokens: one that produces tokens that are
   privately verifiable using the issuance private key, and another that
   produces tokens that are publicly verifiable using the issuance
   public key.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protocol-11"/>
        </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="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>
        <reference anchor="OHTTP">
          <front>
            <title>Oblivious HTTP</title>
            <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="15" month="March" year="2023"/>
            <abstract>
              <t>   This document describes a system for forwarding encrypted HTTP
   messages.  This allows a client to make multiple requests to an
   origin server without that server being able to link those requests
   to the client or to identify the requests as having come from the
   same client, while placing only limited trust in the nodes used to
   forward the messages.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ohai-ohttp-08"/>
        </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>
        <name>Informative References</name>
        <reference anchor="K-CHECK">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 143?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was the product of the consistency design team in the Privacy Pass working group.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
