<?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-wood-privacypass-auth-scheme-extensions-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="PrivateToken Authentication Extensions">The PrivateToken HTTP Authentication Scheme Extensions Parameter</title>
    <seriesInfo name="Internet-Draft" value="draft-wood-privacypass-auth-scheme-extensions-00"/>
    <author fullname="Scott Hendrickson">
      <organization>Google</organization>
      <address>
        <email>scott@shendrickson.com</email>
      </address>
    </author>
    <author fullname="Christopher A. Wood">
      <organization>Cloudflare, Inc.</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>
    <abstract>
      <?line 38?>

<t>This document specifies a new parameter for the "PrivateToken" HTTP authentication
scheme. This purpose of this parameter is to carry extensions for Privacy Pass
protocols that support public metadata.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://chris-wood.github.io/draft-wood-privacypass-extensible-token/draft-wood-privacypass-extensible-token.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wood-privacypass-auth-scheme-extensions/"/>.
      </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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/chris-wood/draft-wood-privacypass-extensible-token"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The primary Token structure in the "PrivateToken" HTTP authentication scheme
<xref target="AUTHSCHEME"/> is composed as follows:</t>
      <artwork><![CDATA[
struct {
    uint16_t token_type;
    uint8_t nonce[32];
    uint8_t challenge_digest[32];
    uint8_t token_key_id[Nid];
    uint8_t authenticator[Nk];
} Token;
]]></artwork>
      <t>Functionally, this structure conveys a single bit of information from the
issuance protocol: whether or not the token is valid (as indicated by a valid
authenticator value). This structure does not admit any additional information
to flow from the issuance protocol, including, for example, public metadata
that is incorporated into the issuance protocol.</t>
      <t>This document specifies a new parameter for the "PrivateToken" HTTP authentication
scheme for carrying extensions. This extensions parameter, otherwise referred to as
public metadata, is cryptographically bound to the Token structure via the Privacy
Pass issuance protocol.</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="privatetoken-extensions-parameter">
      <name>PrivateToken Extensions Parameter</name>
      <t>As defined in <xref section="2.2" sectionFormat="of" target="AUTHSCHEME"/>, the "PrivateToken" authentication
scheme defines one parameter, "token", which contains the base64url-encoded
Token struct. This document defines a new parameter, "extensions," which contains
the base64url-encoded representation of the following Extensions structure.</t>
      <artwork><![CDATA[
struct {
    ExtensionType extension_type;
    opaque extension_data<0..2^16-1>;
} Extension;

enum {
    reserved(0),
    (65535)
} ExtensionType;

struct {
    Extension extensions<0..2^16-1>;
} Extensions;
]]></artwork>
      <t>The contents of Extensions are a list of Extension values, each of which is a type-length-value
structure whose semantics are determined by the type. The type and length of each
extension are 2-octet integers, in network byte order. The length of the extensions
list is also a is a 2-octet integer, in network byte order.</t>
      <t>Clients, Issuers, and Origins all agree on the content and encoding of this Extensions
structure, i.e., they agree on the same type-length-value list. The list <bcp14>MUST</bcp14> be ordered
by ExtensionType value, from 1 to 65535. The value of the Extensions structure is used
as-is when verifying the value of the corresponding "token" parameter in the "PrivateToken"
authentication header.</t>
      <t>Future documents may specify extensions to be included in this structure.
Registration details for these extensions are in <xref target="iana"/>.</t>
      <t>Each Privacy Pass issuance protocol, identified by a token type, specifices the structure
of the PrivateToken value to be used. Issuance protocols that support public metadata
would define a way to convey this metadata as a set of extensions in an Extensions
structure.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Privacy considerations for tokens that include additional information are discussed
in <xref section="6.1" sectionFormat="of" target="ARCHITECTURE"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to create a new "Privacy Pass PrivateToken Extensions" registry
in the "Privacy Pass Parameters" page to list possible extension values and their meaning.
Each extension has a two-byte type, so the maximum possible value is 0xFFFF = 65535.</t>
      <t>Template:</t>
      <ul spacing="normal">
        <li>Type: The two-byte extension type</li>
        <li>Name: Name of the extension</li>
        <li>Value: Syntax and semantics of the extension</li>
        <li>Reference: Where this extension and its value are defined</li>
        <li>Notes: Any notes associated with the entry</li>
      </ul>
      <t>New entries in this registry are subject to the Specification Required
registration policy (<xref section="4.6" sectionFormat="comma" target="RFC8126"/>). Designated experts need to
ensure that the extension is sufficiently clearly defined and, importantly,
has a clear description about the privacy implications of using the extension
framed in the context of partitioning the client anonymity set as described
in <xref section="6.1" sectionFormat="of" target="ARCHITECTURE"/>.</t>
      <t>Values 0xF000-0xFFFF are reserved for private use, to enable proprietary uses
and limited experimentation.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="AUTHSCHEME">
          <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="23" month="June" year="2023"/>
            <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-11"/>
        </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>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="ARCHITECTURE">
          <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>
      </references>
    </references>
    <?line 165?>



  </back>
  <!-- ##markdown-source:
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
A9c1jeOPFQAA

-->

</rfc>
