<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<!-- WK: Set category, IPR, docName -->
<rfc category="info" docName="draft-ietf-dnsop-alt-tld-15" ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>

  <?rfc symrefs="yes" ?>

  <?rfc sortrefs="yes"?>

  <?rfc iprnotified="no" ?>

  <?rfc strict="yes"?>

  <?rfc compact="yes" ?>

  <front>
    <!-- WK: Set long title. -->

    <title abbrev="Reserve ALT TLD">The ALT Special Use Top Level
    Domain</title>

    <author fullname="Warren Kumari" initials="W." surname="Kumari">
      <organization>Google</organization>

      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>

          <city>Mountain View, CA</city>

          <code>94043</code>

          <country>US</country>
        </postal>

        <email>warren@kumari.net</email>
      </address>
    </author>

    <date day="14" month="June" year="2022"/>

    <area>template</area>

    <workgroup>dnsop</workgroup>

    <abstract>
      <t>This document reserves a string (ALT) to be used as a TLD label in
      non-DNS contexts. It also provides advice and guidance to developers
      developing alternative namespaces.</t>

      <t>[Ed note: Text inside square brackets ([]) is additional background
      information, answers to frequently asked questions, general musings,
      etc. They will be removed before publication. This document is being
      collaborated on in Github at: https://github.com/wkumari/draft-
      wkumari-dnsop-alt-tld. The most recent version of the document, open
      issues, etc should all be available here. The authors (gratefully)
      accept pull requests. ]</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Many protocols and systems need to name entities. Names that look
      like DNS names (a series of labels separated with dots) have become
      common, even in systems that are not part of the global DNS administered
      by IANA. This document reserves the label "ALT" (short for
      "Alternative") as a Special Use Domain (<xref target="RFC6761"/>). This
      label is intended to be used as the final (rightmost) label to signify
      that the name is not rooted in the DNS, and that it should not be
      resolved using the DNS protocol.</t>

      <section title="Requirements Notation">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref
        target="RFC2119"/>.</t>
      </section>

      <section title="Terminology">
        <t>This document assumes familiarity with DNS terms and concepts.
        Please see <xref target="RFC1034"/> for background and concepts, and
        <xref target="RFC7719"/> for terminology. Readers are also expected to
        be familiar with the discussions in <xref target="RFC8244"/></t>

        <t><list style="symbols">
            <t>DNS name: Domain names that are intended to be used with DNS
            resolution, either in the global DNS or in some other context</t>

            <t>DNS context: The namespace anchored at the globally-unique DNS
            root. This is the namespace or context that "normal" DNS uses.</t>

            <t>non-DNS context: Any other (alternative) namespace.</t>

            <t>pseudo-TLD: A label that appears in a fully-qualified domain
            name in the position of a TLD, but which is not registered in the
            global DNS. This term is not intended to be pejorative.</t>

            <t>TLD: The last visible label in either a fully-qualified domain
            name or a name that is qualified relative to the root. See the
            discussion in <xref target="background"/>.</t>
          </list></t>
      </section>
    </section>

    <section anchor="background" title="Background">
      <t>The success of the DNS makes it a natural starting point for systems
      that need to name entities in a non-DNS context.</t>

      <t>In many cases, these systems build a DNS-style tree parallel to, but
      separate from, the global DNS. They often use a pseudo-TLD to cause
      resolution in the alternative namespace, using browser plugins, shims in
      the name resolution process, or simply applications that perform special
      handling of this particular alternative namespace. An example of such a
      system is the Tor network's <xref target="Dingledine2004"/> use of the
      ".onion" Special-Use Top-Level Domain Name (see <xref
      target="RFC7686"/>).</t>

      <t>In many cases, the creators of these alternative namespaces have
      chosen a convenient or descriptive string and started using it. These
      strings are not registered anywhere nor are they part of the DNS.
      However, to users and to some applications, they appear to be TLDs; and
      issues may arise if they are looked up in the DNS. This document
      suggests that name resolution libraries (stub resolvers) recognize names
      ending in ".alt" as special, and not attempt to look them up using the
      DNS protocol in order to limit the effects of queries accidentally
      leaking into the DNS.</t>

      <t>The techniques in this document are primarily intended to address the
      "Experimental Squatting Problem", the "Land Rush Problem", and "Name
      Collisions" issues discussed in <xref target="RFC8244"/> (which contains
      much additional background, etc).</t>
    </section>

    <section title="The ALT Namespace">
      <t>This document reserves the ALT label, using the <xref
      target="RFC6761"/> process, for use as an unmanaged pseudo-TLD
      namespace. The ALT label MAY be used in any domain name as a pseudo-TLD
      to signify that this is an alternative (non-DNS) namespace, and should
      not be looked up in a DNS context.</t>

      <t>Alternative namespaces should differentiate themselves from other
      alternative namespaces by choosing a name and using it in the label
      position just before the pseudo-TLD (ALT). For example, a group wishing
      to create a namespace for Friends Of Olaf might choose the string "foo"
      and use any set of labels under foo.alt.</t>

      <t>As names beneath ALT are in an alternative namespace, they have no
      significance in the regular DNS context and so should not be looked up
      in the DNS context.</t>

      <t>Groups wishing to create new alternative namespaces may create their
      alternative namespace under a label that names their namespace under the
      ALT label. They should attempt to choose a label that they expect to be
      unique and, ideally, descriptive. There is no IANA registry for names
      under the ALT TLD - it is an unmanaged namespace, and developers are
      responsible for dealing with any collisions that may occur under .alt.
      Informal lists of namespaces under .alt may be created to assist the
      developer community.</t>

      <t>Currently deployed projects and protocols that are using pseudo-TLDs
      may choose to move under the ALT TLD, but this is not a requirement.
      Rather, the ALT TLD is being reserved so that current and future
      projects of a similar nature have a designated place to create
      alternative resolution namespaces that will not conflict with the
      regular DNS context.</t>

      <section title="Choice of the ALT Name">
        <t>A number of names other than "ALT" were considered and discarded.
        While these are not DNS names, in order for this technique to be
        effective the names need to continue to follow both the DNS format and
        conventions (a prime consideration for alternative name formats is
        that they can be entered in places that normally take DNS context
        names); this rules out using suffixes that do not follow the usual
        letter, digit, and hyphen label convention.</t>

        <t>A short label was deemed desirable for a number of reasons,
        including:</t>

        <t><list style="symbols">
            <t>this is a switch to other resolution contexts, some of which may
            have long labels (for example derived from public keys).</t>

            <t>some queries will undoubtedly leak into the DNS. As many of
            these alternate resolution systems are specifically designed for
            privacy, limiting how far they leak is desirable.</t>

            <t>to encourage voluntary usage of the label, it needs to be
            attractive to implementors of alternate resolution contexts so
            that they are willing to use it.</t>
          </list></t>
      </section>
    </section>

    <section title="IANA Considerations">
      <t>The IANA is requested to add the ALT string to the "Special-Use
      Domain Name" registry (<xref target="RFC6761"/>, and reference this
      document.</t>

      <section title="Domain Name Reservation Considerations">
        <t>This section is to satisfy the requirement in Section 5 of
        RFC6761.</t>

        <t>The string ".alt." (and names ending with the string .alt) are
        special in the following ways:<list style="numbers">
            <t>Users are expected to know that strings that end in .alt behave
            differently to normal DNS names. Users are expected to have
            applications running on their machines that intercept strings of
            the form &lt;namespace&gt;.alt and perform special handling of
            them, or that applications themselves will recognize the strings
            as special, and perform special handling. If the user tries to
            resolve a name of the form &lt;namespace&gt;.alt without the
            &lt;namespace&gt; plugin installed (or in the wrong application),
            the request will leak into the DNS, receive a negative response,
            and the resolution will fail.</t>

            <t>Writers of application software that implement a non-DNS
            namespace are expected to intercept names of the form
            &lt;namespace&gt;.alt and perform application specific handling
            with them. Other applications are not required to perform any
            special handling (but may choose to provide helpful informational
            messages if able).</t>

            <t>Writers of name resolution APIs and libraries which operate in
            the DNS context should not attempt to look these names up in the
            DNS. If developers of other namespaces implement their namespace
            through a "shim" or library, they will need to intercept and
            perform their own handling.</t>

            <t>Caching DNS servers SHOULD NOT recognize these names as special
            and should not perform any special handling with them.</t>

            <t>Authoritative DNS servers SHOULD NOT recognize these names as
            special and should not perform any special handling with them.</t>

            <t>DNS server operators SHOULD be aware that queries for names
            ending in .alt are not DNS names, and were leaked into the DNS
            context (for example, by a missing browser plugin). This
            information may be useful for support or debugging purposes.</t>

            <t>DNS Registries/Registrars MUST NOT grant requests to register
            ".alt" names in the normal way to any person or entity. These
            ".alt" names are defined by protocol specification to be
            nonexistent, and they fall outside the set of names available for
            allocation by registries/registrars.</t>
          </list></t>

        <t>Earlier versions of this document requested that .ALT be added to
        the "Locally Served Zones" registry, and that a DNSSEC insecure
        delegation (a delegation with no DS record) be created at the root.
        Significant discussion on the DNSOP list (and an interim meeting)
        generated the consensus that these names are specifically not DNS
        names, and that them leaking into the DNS is an error. This means that
        the current (non-delegated) response of NXDOMAIN is correct as there
        is no DNS domain .alt, and so the document was updated to remove these
        requests.</t>
      </section>
    </section>

    <section title="Privacy Considerations">
      <t>This document reserves ALT to be used to indicate that a name is not
      a DNS name, and so should not attempt to be resolved using the DNS.
      Unfortunately, these queries will undoubtedly leak into the DNS - for
      example, a user may receive an email containing a hostname which should
      be resolved using a specific resolution context (implemented by a
      specific application or resolution mechanism). If the user does not have
      that particular application installed (and their stub resolver library
      has not been updated to ignore queries for names ending in .alt), it is
      likely that this will instead be resolved using the DNS. This DNS query
      will likely be sent to the configured iterative resolver. If this
      resolver does not have a cache entry for this name (or, if the resolver
      implements <xref target="RFC8198"/>, an entry for .alt) this query will
      likely be sent to the DNS root servers. This exposes the (leaked) query
      name to the operator of the resolver, the operator of the queried DNS
      root server, and anyone watching queries along the path. This is a
      general problem with alternative name spaces and not confined to names
      ending in .alt.</t>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>One of the motivations for the creation of the .alt pseudo-TLD is
      that unmanaged labels in the managed root name space are subject to
      unexpected takeover. This could occur if the manager of the root name
      space decides to delegate the unmanaged label.</t>

      <t>The unmanaged and "registration not required" nature of labels
      beneath .alt provides the opportunity for an attacker to re-use the
      chosen label and thereby possibly compromise applications dependent on
      the special host name.</t>
    </section>

    <section title="Acknowledgements">
      <t>We would like to thank Joe Abley, Mark Andrews, Erik Auerswald,
      Marc Blanchet, John Bond, Stephane Bortzmeyer, David Cake, David Conrad,
      Steve Crocker, Brian Dickson, Ralph Droms, Robert Edmonds,
      Patrik Faltstrom, Olafur Gudmundsson, Bob Harold, Paul Hoffman,
      Joel Jaeggli, Ted Lemon, Edward Lewis, John Levine, George Michaelson,
      Ed Pascoe, Jim Reid, Arturo Servin, Paul Vixie
      and Suzanne Woolf for feedback.</t>

      <t>Christian Grothoff was also very helpful and deserves special
      recognition.</t>
      <t>In addition, Andrew Sullivan was an author from adoption (2015)
      through version 14 (2021).</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml'?>

      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6761.xml'?>

      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml'?>

      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7719.xml'?>

      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7686.xml'?>
    </references>

    <references title="Informative References">
      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8244.xml'?>

      <?rfc include='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8198.xml'?>

      <reference anchor="Dingledine2004"
                 target="https://svn.torproject.org/svn/projects/design-paper/tor-design.html">
        <front>
          <title>Tor: The Second-Generation Onion Router</title>

          <author fullname="R" initials="R" surname="Dingledine">
            <organization/>
          </author>

          <author fullname="N" initials="N" surname="Mathewson">
            <organization/>
          </author>

          <author fullname="P" initials="P" surname="Syverson">
            <organization/>
          </author>

          <date month="8" year="2004"/>
        </front>
        <!-- <seriesInfo name="" value=""/> -->
      </reference>
    </references>

    <section title="Changes / Author Notes.">
      <t>[RFC Editor: Please remove this section before publication ]</t>

        <t>From -14 to -15:<list style="symbols">
          <t>[Pinky]: Gee, Brain. What are we going to do tonight?</t>
          <t>[The Brain]: The same thing we do every 6 months, Pinky. Post a
          new version of this document, with only the version number changed.</t>
        </list></t>

        <t>From -13 to -14:<list style="symbols">
          <t>Andrew asked to be removed as co-author, due to potential perception of CoI.</t>
          <t>Erik Auerswald provided Github issues and comments re: references and grammar.</t>
        </list></t>

        <t>From -12 to -13:<list style="symbols">
          <t>Just bumping versions to prevent expiration. </t>
        </list></t>

      <t>From -08 to -12:<list style="symbols">
          <t>Just bumping versions to prevent expiration. </t>

          <t>Updated references (aggressive-nsec is now RFC 8198,
          draft-ietf-dnsop-sutld-ps is now 8244).</t>
        </list></t>

      <t>From -07 to -08:<list style="symbols">
          <t>Made it clear that this is only for non-DNS.</t>

          <t>As per Interim consensus, removed the "add this to local zones"
          text.</t>

          <t>Added a Privacy Considerations section</t>

          <t>Grammar fix -- "alternative" is more correct than "alternate",
          replaced.</t>
        </list></t>

      <t>From -06 to -07:<list style="symbols">
          <t>Rolled up the GItHub releases in to a full release.</t>
        </list></t>

      <t>From -07.2 to -07.3 (GitHub point release):<list>
          <t>Removed 'sandbox' at Stephane's suggestion -
          https://www.ietf.org/mail-archive/web/dnsop/current/msg18495.html</t>

          <t>Suggested (in 4.1 bullet 3) that DNS libraries ignore these --
          Bob Harold -
          https://mailarchive.ietf.org/arch/msg/dnsop/a_ruPf8osSzi_hCzCqOxYLXhYoA</t>

          <t>Added some pointers to the SUTLD document.</t>
        </list></t>

      <t>From -07.1 to -07.2 (Github point release):<list style="symbols">
          <t>Reverted the &lt;TBD&gt; string (at request of chairs).</t>

          <t>Added an editors note explaining the above.</t>

          <t>Removed some more background, editorializing, etc.</t>
        </list></t>

      <t>From -06 to -07.1
      (https://github.com/wkumari/draft-wkumari-dnsop-alt-tld/tree/7988fcf06100f7a17f21e6993b781690b5774472):<list
          style="symbols">
          <t>Replaced ALT with &lt;TBD&gt; at the suggestions of George.</t>
        </list></t>

      <t>From -05 to -06:<list style="symbols">
          <t>Removed a large amount of background - we now have the (adopted)
          tldr document for that.</t>

          <t>Made it clear that pseudo-TLD is not intended to be
          pejorative.</t>

          <t>Tried to make it cleat that this is something people can choose
          to use - or not.</t>
        </list></t>

      <t>From -04 to -05:<list style="symbols">
          <t>Version bump - we are waiting in the queue for progress on SUN,
          bumping this to keep it alive.</t>
        </list></t>

      <t>From -03 to -04:<list style="symbols">
          <t>3 changes - the day, the month and the year (a bump to keep
          alive).</t>
        </list></t>

      <t>From -02 to -03:<list style="symbols">
          <t>Incorporate suggestions from Stephane and Paul Hoffman.</t>
        </list></t>

      <t>From -01 to -02:<list style="symbols">
          <t>Merged a bunch of changes from Paul Hoffman. Thanks for sending a
          git pull.</t>
        </list></t>

      <t>From -00 to 01:<list style="symbols">
          <t>Removed the "delegated to new style AS112 servers" text -this was
          legacy from the omnicient AS112 days. (Joe Abley)</t>

          <t>Removed the "Advice to implemntors" section. This used to
          recommend that people used a subdomain of a domain in the DNS. It
          was pointed out that this breaks things badly if the domain
          expires.</t>

          <t>Added text about why we don't want to adminster a registry for
          ALT.</t>
        </list></t>

      <t>From Individual-06 to DNSOP-00<list style="symbols">
          <t>Nothing changed, simply renamed draft-wkumari-dnsop-alt-tld to
          draft-ietf-dnsop-alt-tld</t>
        </list></t>

      <t>From -05 to -06<list style="symbols">
          <t>Incorporated comments from a number of people, including a number
          of suggestion heard at the IETF meeting in Dallas, and the DNSOP
          Interim meeting in May, 2015.</t>

          <t>Removed the "Let's have an (optional) IANA registry for people to
          (opportinistically) register their string, if they want that option"
          stuff. It was, um, optional....</t>
        </list></t>

      <t>From -04 to -05</t>

      <t><list style="symbols">
          <t>Went through and made sure that I'd captured the feedback
          received.</t>

          <t>Comments from Ed Lewis.</t>

          <t>Filled in the "Domain Name Reservation Considerations" section of
          RFC6761.</t>

          <t>Removed examples from .Onion.</t>
        </list></t>

      <t>From -03 to -04</t>

      <t><list style="symbols">
          <t>Incorporated some comments from Paul Hoffman</t>
        </list></t>

      <t>From -02 to -03</t>

      <t><list style="symbols">
          <t>After discussions with chairs, made this much more generic (not
          purely non-DNS), and some cleanup.</t>
        </list></t>

      <t>From -01 to -02</t>

      <t><list style="symbols">
          <t>Removed some fluffy wording, tightened up the language some.</t>
        </list></t>

      <t>From -00 to -01.</t>

      <t><list style="symbols">
          <t>Fixed the abstract.</t>

          <t>Recommended that folk root their non-DNS namespace under a DNS
          namespace that they control (Joe Abley)</t>
        </list></t>
    </section>
  </back>
</rfc>
