<?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-hendrickson-privacypass-geo-extension-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Privacy Pass Geolocation Hint Extension">Privacy Pass Geolocation Hint Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-hendrickson-privacypass-geo-extension-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>
    <keyword>extensions</keyword>
    <abstract>
      <?line 42?>

<t>This document describes an extension for Privacy Pass that allows tokens
to encode geolocation hints.</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-hendrickson-privacypass-geolocation-extension/draft-hendrickson-privacypass-expiration-extension.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-hendrickson-privacypass-geo-extension/"/>.
      </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-hendrickson-privacypass-geolocation-extension"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Some Privacy Pass token types support binding additional information to
the tokens, often referred to as public metadata. <xref target="AUTH-EXTENSIONS"/> describes
an extension parameter to the basic PrivateToken HTTP authentication scheme <xref target="AUTH-SCHEME"/>
for supplying this metadata alongside a token. <xref target="EXTENDED-ISSUANCE"/> describes
variants of the basic Privacy Pass issuance protocols <xref target="BASIC-ISSUANCE"/> that
support issuing tokens with public metadata. However, there are no existing
extensions defined to make use of these protocol extensions.</t>
      <t>This document describes an extension for Privacy Pass that allows tokens
to encode geolocation hints. These hints can be used by origins that redeem
tokens to influence its behavior in various ways, such as determining the
content of HTTP responses.</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="geohint-extension">
      <name>Geolocation Hint Extension</name>
      <t>The geolocation hint extension is an extension used to convey rough geolocation hints
to origins that do not already have accurate or authoritative mappings for the IP
addresses of clients. This can be particularly useful for cases where IP geolocation
mappings have changed recently, or a client is using a VPN or proxy that may not be
commonly recognized by servers.</t>
      <t>The value of this extension is an GeoHintTimestamp, defined as follows.</t>
      <artwork><![CDATA[
struct {
   opaque geo_hint<1..2^16-1>;
} GeoHint;
]]></artwork>
      <t>The GeoHintTimestamp fields are defined as follows:</t>
      <ul spacing="normal">
        <li>"geo_hint" is a string formatted as defined in <xref section="2.1.1" sectionFormat="of" target="GEOFEED"/>. It
contains a comma-separated list of Alpha2code, Region, and City. The value <bcp14>SHOULD NOT</bcp14>
contain a Postal Code.</li>
      </ul>
      <t>As an example, a GeoHint structure corresponding to the "192.0.2.5,US,US-AL,Alabaster" entry
would be:</t>
      <artwork><![CDATA[
struct {
   opaque geo_hint<1..2^16-1>; // "US,US-AL,Alabaster"
} GeoHint;
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Geolocation information can contribute to a client's fingerprint. Exposing precise geolocation
information can therefore lead to anonymity set partitioning, as described in <xref target="ARCHITECTURE"/>.
More general information regarding the use of extensions and their possible impact on client
privacy can be found in <xref target="ARCHITECTURE"/>.</t>
      <t>Servers <bcp14>MUST NOT</bcp14> use IP Geolocation Client Hints for making security or access-control decisions,
as the value can be spoofed by a client. The hint is intended only for use in optimizing behavior.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the following entry into the "Privacy Pass PrivateToken Extensions" registry.</t>
      <ul spacing="normal">
        <li>
          <t>Expiration extension
          </t>
          <ul spacing="normal">
            <li>Type: 0x0002</li>
            <li>Name: Geolocation hint</li>
            <li>Value: GeoHint value as defined in <xref target="geohint-extension"/></li>
            <li>Reference: This document</li>
            <li>Notes: None</li>
          </ul>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="AUTH-EXTENSIONS">
        <front>
          <title>The PrivateToken HTTP Authentication Scheme Extensions Parameter</title>
          <author fullname="Scott Hendrickson" initials="S." surname="Hendrickson">
            <organization>Google</organization>
          </author>
          <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
            <organization>Cloudflare, Inc.</organization>
          </author>
          <date day="10" month="July" year="2023"/>
          <abstract>
            <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>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-wood-privacypass-auth-scheme-extensions-00"/>
      </reference>
      <reference anchor="AUTH-SCHEME">
        <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="EXTENDED-ISSUANCE">
        <front>
          <title>*** BROKEN REFERENCE ***</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="BASIC-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="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>
      <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="GEOFEED">
        <front>
          <title>A Format for Self-Published IP Geolocation Feeds</title>
          <author fullname="E. Kline" initials="E." surname="Kline"/>
          <author fullname="K. Duleba" initials="K." surname="Duleba"/>
          <author fullname="Z. Szamonek" initials="Z." surname="Szamonek"/>
          <author fullname="S. Moser" initials="S." surname="Moser"/>
          <author fullname="W. Kumari" initials="W." surname="Kumari"/>
          <date month="August" year="2020"/>
          <abstract>
            <t>This document records a format whereby a network operator can publish a mapping of IP address prefixes to simplified geolocation information, colloquially termed a "geolocation feed". Interested parties can poll and parse these feeds to update or merge with other geolocation data sources and procedures. This format intentionally only allows specifying coarse-level location.</t>
            <t>Some technical organizations operating networks that move from one conference location to the next have already experimentally published small geolocation feeds.</t>
            <t>This document describes a currently deployed format. At least one consumer (Google) has incorporated these feeds into a geolocation data pipeline, and a significant number of ISPs are using it to inform them where their prefixes should be geolocated.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8805"/>
        <seriesInfo name="DOI" value="10.17487/RFC8805"/>
      </reference>
    </references>
    <?line 138?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document received input and feedback from Jim Laskey.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
YN5DFv4RAAA=

-->

</rfc>
