<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC1928 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1928.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC4648 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC6761 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6761.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc strict="yes" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="info"
     docName="draft-grothoff-iesg-special-use-p2p-names-02"
     ipr="trust200902">

    <front>
        <title abbrev="Special-Use P2P Names">
            Special-Use Domain Names of Peer-to-Peer Systems
        </title>

        <author fullname="Christian Grothoff" initials="C.G." surname="Grothoff">
            <organization>TU Munich</organization>
            <address>
                <postal>
                    <street>Free Secure Network Systems Group</street>
                    <street>Lehrstuhl fuer Netzarchitekturen und Netzdienste</street>
                    <street>Boltzmannstrasse 3</street>
                    <street>Technische Universitaet Muenchen</street>
                    <code>D-85748</code>
                    <city>Garching bei Muenchen</city>
                    <region>Bayern</region>
                    <country>DE</country>
                </postal>
                <email>christian@grothoff.org</email>
            </address>
        </author>

        <author fullname="Matthias Wachs" initials="M.W." surname="Wachs">
            <organization>TU Munich</organization>
            <address>
                <postal>
                    <street>Free Secure Network Systems Group</street>
                    <street>Lehrstuhl fuer Netzarchitekturen und Netzdienste</street>
                    <street>Boltzmannstrasse 3</street>
                    <street>Technische Universitaet Muenchen</street>
                    <code>D-85748</code>
                    <city>Garching bei Muenchen</city>
                    <region>Bayern</region>
                    <country>DE</country>
                </postal>
                <email>wachs@net.in.tum.de</email>
            </address>
        </author>

        <author fullname="Hellekin O. Wolf" initials="H.O.W." role="editor"
                surname="Wolf">
            <organization>GNU consensus</organization>
            <address>
                <email>hellekin@gnu.org</email>
            </address>
        </author>

        <author fullname="Jacob Appelbaum" initials="J.A." surname="Appelbaum">
            <organization>Tor Project Inc.</organization>
            <address>
                <email>jacob@appelbaum.net</email>
            </address>
        </author>

        <date day="03" month="March" year="2014" />

        <!-- Meta-data Declarations -->
        <area>General</area>
        <workgroup>Internet Engineering Task Force</workgroup>

        <keyword>special-use</keyword>
        <keyword>peer-to-peer</keyword>
        <keyword>domain names</keyword>
        <keyword>DNS</keyword>
        <keyword>GNS</keyword>
        <keyword>Tor</keyword>
        <keyword>I2P</keyword>
        <keyword>Namecoin</keyword>

        <abstract>

            <t>This is an IESG Approval document requesting the
            reservation of six Top-Level Domains for special use, in
            conformance with the registration procedure defined in RFC
            6761, section 4.</t>

            <t>Peer-to-Peer systems use specific decentralized
            mechanisms to allocate, register, manage, and resolve
            names.  Those mechanisms operate entirely outside of DNS,
            independently from the DNS root and delegation tree.  In
            order to avoid interoperability issues with DNS as well as
            to address security and privacy concerns, this document
            describes six pseudo Top-Level Domain names (pTLDs),
            reserved for special use.</t>

            <t>The following six domains relate to security-focused
            peer-to-peer systems.  They are: &quot;.gnu&quot;,
            &quot;.zkey&quot;, &quot;.onion&quot;, &quot;.exit&quot;,
            &quot;.i2p&quot;, and &quot;.bit&quot;.</t>

        </abstract>

    </front>

    <middle>

        <section title="Introduction">

            <t>Today, the Domain Name System (DNS) is a key service
            for the Internet.  DNS is primarily used to map
            human-memorable names to IP addresses, which are used for
            routing but generally not meaningful for humans.  However,
            the hierarchical nature of DNS makes it unsuitable for
            various Peer-to-Peer (P2P) Name Systems.  As compatibility
            with applications using domain names is desired, these
            overlay networks often define exclusive alternative pseudo
            Top-Level Domains (pTLDs) to avoid conflict between the
            P2P namespace and the DNS hierarchy.</t>

            <t>The purpose of this document is to inform the Internet
            community about current practice of such pseudo-TLDs
            within peer-to-peer systems, and to normalize their usage
            according to the rules of RFC 6761.  Given their
            decentralized design, such P2P systems do not require a
            central authority to register names nor do they belong to
            the DNS resolution tree.</t>

            <t>RFC 6761 defines a mechanism for reserving domain names
            for special use.  This document is an IESG Approval
            document requesting the reservation of six pTLDs for
            special use: &quot;.gnu&quot;, &quot;.zkey&quot;,
            &quot;.onion&quot;, &quot;.exit&quot;, &quot;.i2p&quot;,
            and &quot;.bit&quot;.</t>

            <t>The GNU Name System (GNS) (&quot;.gnu&quot;,
            &quot;.zkey&quot;), the Tor network (&quot;.onion&quot;,
            &quot;.exit&quot;), the Invisible Internet Project
            (&quot;.i2p&quot;), and the Dot-Bit Project
            (&quot;.bit&quot;) use these pseudo-Top-Level Domains
            (pTLDs) to realize fully-decentralized and
            censorship-resistant secure alternatives for DNS or, in
            the case of the &quot;.exit&quot; pTLD, to control overlay
            routing and to securely specify path selection choices
            <xref target="TOR-PATH"/>.</t>

            <t>To facilitate integration with legacy applications, the
            overlay's namespaces can be accessed from applications to
            resolve these special TLDs, for example via specialized
            SOCKS proxies <xref target="RFC1928"/>, specialized DNS
            servers, or transparent name resolution and ephemeral
            address mapping.</t>
        </section>

        <section title="Terminology and Conventions Used in This Document">

            <t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
            &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
            NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;,
            &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and
            &quot;OPTIONAL&quot; in this document are to be
            interpreted as described in RFC 2119.</t>

            <t>The word &quot;peer&quot; is used in the meaning of a
            individual system on the network.  Thus, &quot;local
            peer&quot; means the localhost.</t>

            <t>The acronym &quot;pTLD&quot; is used as a shortcut to
            mean a pseudo Top-Level Domain, i.e., a name or label for
            a network not allocated using common DNS procedures, and
            reserved with IANA for special use.</t>

            <t>In this document, &quot;.tld&quot; (with quotes) means:
            any domain or hostname within the scope of a given pTLD,
            while .tld (without quotes), or dot-tld, both refer to an
            adjective form.  For example, a collection of
            &quot;.gnu&quot; peers, but an .onion URL.  The pTLD
            itself is mentioned with dot, and within double quotes,
            and usually followed by the word pTLD.</t>

            <t>The Tor-related names such as 'circuit', 'exit',
            'node', 'relay', 'stream', and related Tor terms are
            described in <xref target="Dingledine2004"/> and the <xref
            target="TOR-PROTOCOL">Tor protocol
            specification</xref>.</t>

        </section>

        <section title="Description of Special-Use Domains in P2P Networks">

            <section anchor="dot-gnu"
                     title="The &quot;.gnu&quot; Relative pTLD">

                <t>The &quot;.gnu&quot; pTLD is used to specify that a
                domain name should be resolved using GNS instead of
                DNS.  The GNS resolution process is documented in
                <xref target="Schanzenbach2012"/>.  As GNS users need
                to install a GNS resolver on their individual system
                and as GNS resolution does not depend on DNS, there
                are no considerations for DNS with respect to the
                internals of the GNS resolution process itself.</t>

            </section>

            <section anchor="dot-zkey"
                     title="The &quot;.zkey&quot; Compressed Public Key pTLD">

                <t>The &quot;.zkey&quot; pTLD is used to signify that
                resolution of the given name MUST be performed using a
                record signed by an authority that is in possession of
                a particular public key.  Names in &quot;.zkey&quot;
                MUST end with a domain which is the compressed point
                representation from <xref target="EdDSA"/> on <xref
                target="Curve25519"/> of the public key of the
                authority, encoded using base32hex <xref
                target="RFC4648"/>.  A GNS resolver uses the key to
                locate a record signed by the respective
                authority.</t>

                <t>The &quot;.zkey&quot; pTLD provides a (reverse)
                mapping from globally unique hashes to public key,
                therefore names in &quot;.zkey&quot; are
                non-memorable, and are expected to be hidden from the
                user <xref target="Schanzenbach2012"/>.</t>

            </section>

            <section title="Geographically Anonymous pTLDs">

                <t>The Tor anonymization network makes use of several
                special pTLD labels, three of which have seen
                widespread usage to date <xref
                target="TOR-ADDRESS"/>.</t>

                <section anchor="dot-onion"
                         title="The &quot;.onion&quot; Hidden Service pTLD">

                    <t>The widely deployed &quot;.onion&quot; pTLD
                    designates an anonymous Tor Hidden Service
                    reachable via the Tor network <xref
                    target="Dingledine2004"/>.  These .onion URLs are
                    self-authenticating addresses for use with any TCP
                    service.  Such addresses are typically resolved,
                    reached and authenticated through transparent
                    proxying or through a local SOCKS proxy running on
                    TCP port 9050, TCP port 9150 or another user
                    selected TCP port.  The purpose of the Tor Hidden
                    Services system is to provide geographic anonymity
                    for the .onion host and for all clients visiting
                    the hidden service as well as other purposes such
                    as NAT traversal, strong authentication, anonymity
                    and censorship resistance.</t>

                    <t>Addresses in &quot;.onion&quot; are opaque,
                    non-mnemonic, alpha-semi-numeric hashes
                    corresponding to an 80-bit truncated SHA1 hash
                    over a given Tor hidden service's public key.
                    This hash can be made up of any letter of the
                    alphabet and decimal digits beginning with 2 and
                    ending with 7, thus representing a number in
                    base32 <xref target="RFC4648"/>.  Tor generates
                    this "Onion key" automatically when the hidden
                    service is configured.  Tor clients use it
                    following the <xref target="TOR-RENDEZVOUS">Tor
                    Rendezvous specifications</xref>.</t>

                </section>

                <section anchor="dot-exit"
                         title="The &quot;.exit&quot; Client Source Routing pTLD">

                    <t>The dot-exit suffix is used as an in-band
                    source routing control channel, usually for
                    selection of a specific Tor relay during path
                    creation as the last node in the Tor circuit.</t>

                    <t>It may be used to access a DNS host via
                    specific Torservers, in the form
                    &quot;hostname.nickname-or-fingerprint.exit&quot;,
                    where the &quot;hostname&quot; is a valid
                    hostname, and the
                    &quot;nickname-or-fingerprint&quot; is either the
                    nickname of a Tor relay in the Tor network
                    consensus, or the hex-encoded SHA1 digest of the
                    given node's public key (fingerprint).</t>

                    <t>For example, &quot;gnu.org.noisetor.exit&quot;
                    will route the client to &quot;gnu.org&quot; via
                    the Tor node nicknamed &quot;noisetor&quot;.
                    Using the fingerprint instead of the nickname
                    ensures that the path selection uses a specific
                    Tor exit node, and is harder to remember: e.g.,
                    &quot;gnu.org.f97f3b153fed6604230cd497a3d1e9815b007637.exit&quot;.</t>

                    <t>When Tor sees an address in this format, it
                    uses the specified
                    &quot;nickname-or-fingerprint&quot; as the exit
                    node.  If no &quot;hostname&quot; component is
                    given, Tor defaults to the published IPv4 address
                    of the Tor exit node <xref
                    target="TOR-EXTSOCKS"/>.</t>

                    <t>Because &quot;hostname&quot; is allegedly
                    valid, the total length of a dot-exit construct
                    may exceed the maximum length allowed for domain
                    names.  Moreover, the resolution of
                    &quot;hostname&quot; happens at the exit node.
                    Trying to resolve such invalid domain names,
                    including chaining dot-exit names will likely
                    return a DNS lookup failure at the first exit
                    node.</t>

                </section>

            </section>

            <section anchor="dot-i2p"
                     title="The &quot;.i2p&quot; Addressbook pTLD">

                <t>The &quot;.i2p&quot; pTLD provides accessibility to
                anonymous services (&quot;eepsites&quot;) within the
                I2P network.  I2P is a scalable, self-organizing,
                resilient packet switched anonymous network layer,
                upon which any number of different anonymity or
                security-conscious applications can operate.</t>

                <t>The local I2P proxy resolves such names either by
                looking up a local table called the addressbook, or by
                decoding Base32-encoded <xref target="RFC4648"/>
                public keys and establishing a tunnel to the
                respective authority, similar to contacting .onion
                hidden services. The details of I2P's operation <xref
                target="I2P-NAMING"/> are outside of the scope of this
                document.</t>

                <t>As the system is decentralized,
                &quot;example.i2p&quot; may also resolve differently
                for different peers, depending on the state of their
                respective addressbooks.</t>

            </section>

            <section anchor="dot-bit"
                     title="The &quot;.bit&quot; Timeline System pTLD">

                <t>The &quot;.bit&quot; pTLD provides a name space
                where names are registered via transactions in the
                <xref target="Namecoin">Namecoin currency</xref>.
                Like Bitcoins, Namecoins are created using a
                proof-of-work calculation, which is also used to
                establish a decentralized, multi-party consensus on
                the valid transaction history, and thus the set of
                registered names and their values <xref
                target="SquareZooko"/>.</t>

                <t>The Namecoin used in a transaction to register a
                name in &quot;.bit&quot; is lost.  This is not a
                fundamental problem as more coins can be generated via
                mining (proof-of-work calculations).  The registration
                cost is set to decrease over time, to prevent early
                adopters from registering too many names.</t>

                <t>The owner of a name can update the associated value
                by issuing an update, which is a transaction that
                uses a special coin which is generated as change
                during the registration operation.  If a name is not
                updated for a long time, the registration expires.</t>

            </section>

        </section>

        <section title="Security Considerations">

            <t>Specific software performs the resolution of the six
            requested Special-Use Domain Names presented in this
            document; this resolution process happens outside of the
            scope of DNS.  Leakage of requests to such domains to the
            global operational DNS can cause interception of traffic
            that might be misused to monitor, censor, or abuse the
            user's trust, and lead to privacy issues with potentially
            dramatic consequences for the user.</t>

            <t>This RFC addresses another possible security concern,
            as the reservation of several Top-Level Domain names for
            these purposes will minimize the possibility of
            confusion and conflict, and especially privacy risks for
            users.</t>

        </section>

        <section title="IANA Considerations">

            <t>The P2P Name Systems domains listed below, and any
            domains falling within those domains are Special-Use
            Domain Names <xref target="RFC6761"/>:</t>

            <t><list>
                <t>gnu.</t>
                <t>zkey.</t>
                <t>onion.</t>
                <t>exit.</t>
                <t>i2p.</t>
                <t>bit.</t>
            </list></t>

            <section title="Domain Name Reservation Considerations for &quot;.gnu.&quot;">

                <t>The &quot;.gnu.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.
                    <vspace blankLines="1" />
                    Since there is no central authority responsible
                    for assigning dot-gnu names, and that
                    specific domain is local to the local peer, users
                    SHOULD be aware of that specificity.
                    <vspace blankLines="1" />
                    In any case, resolution in the dot-gnu pTLD
                    returns DNS compatible results, and thus
                    SHOULD NOT affect normal usage of most Internet
                    applications.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 2. Application Software Considerations -->
                    <t>Application Software MAY pass requests for
                    dot-gnu domains for normal DNS resolution.  If
                    available, the local resolver MUST intercept such
                    requests within the respective operating system
                    hooks and return DNS compatible results.  However,
                    GNS-aware applications MAY choose to talk directly
                    to the respective GNS resolver, and use this to
                    access additional record types (with numbers above
                    65535) that are not defined in DNS.
                    <vspace blankLines="1" />
                    As mentioned in points 4. and 5. below, regular
                    DNS resolution is expected to respond with
                    NXDOMAIN.  Therefore, if it can differentiate
                    between DNS and P2P name resolution, application
                    software MAY expect such a response, and MAY
                    choose to treat other responses from the DNS as
                    errors.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications and legacy name
                    resolution APIs expecting DNS resolution, no
                    changes are required.
                    <vspace blankLines="1" />
                    However, Name Resolution APIs and Libraries MAY
                    choose to support additional record types over
                    time for the dot-gnu names.  They MAY choose to
                    directly resolve those domains via appropriate
                    APIs or mechanisms such as the GNS-specific
                    resolution protocol.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-gnu
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-gnu names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-gnu domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-gnu is not available via global DNS
                    resolution, and not doing so MAY put users'
                    privacy at risk, e.g., as suggested in the next
                    point.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>
                    DNS Server Operators SHOULD treat requests to the
                    dot-gnu domain as errors, for correct
                    installations MUST NOT allow such requests to
                    escape to DNS.  DNS operators MUST NOT choose to
                    redirect such requests to a site, not even to
                    explain to the user that their P2P resolver is
                    missing or mis-configured as this MAY violate
                    privacy expectations of the user.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 7. DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.gnu.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

            <section title="Domain Name Reservation Considerations for &quot;.zkey.&quot;">
                <t>The &quot;.zkey.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.
                    <vspace blankLines="1" />
                    Since there is no central authority necessary or
                    possible for assigning dot-zkey names, and those
                    names match cryptographic keys, users SHOULD be
                    aware that they do not belong to regular DNS, but
                    are still global in their scope.
                    <vspace blankLines="1" />
                    In any case, resolution in the dot-zkey pTLD
                    returns DNS compatible results, and thus SHOULD
                    NOT affect normal usage of most Internet
                    applications.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 2. Application Software Considerations -->
                    <t>Application Software MAY pass requests for
                    dot-zkey domains for normal DNS resolution.  If
                    available, the local resolver MUST intercept such
                    requests within the respective operating system
                    hooks and return DNS compatible results.  However,
                    GNS-aware applications MAY choose to talk directly
                    to the respective GNS resolver, and use this to
                    access additional record types (with numbers above
                    65535) that are not defined in DNS.
                    <vspace blankLines="1" />
                    As mentioned in points 4. and 5. below, regular
                    DNS resolution is expected to respond with
                    NXDOMAIN.  Therefore, if it can differentiate
                    between DNS and P2P name resolution, application
                    software MAY expect such a response, and MAY
                    choose to treat other responses from the DNS as
                    errors.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications and legacy name
                    resolution APIs expecting DNS resolution, no
                    changes are required.
                    <vspace blankLines="1" />
                    However, Name Resolution APIs and Libraries MAY
                    choose to support additional record types over
                    time for the dot-zkey names.  They MAY choose to
                    directly resolve those domains via appropriate
                    APIs or mechanisms such as the GNS-specific
                    resolution protocol.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-zkey
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-zkey names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-zkey domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-zkey is not available via global DNS
                    resolution, and not doing so MAY put users'
                    privacy at risk, e.g., as suggested in the next
                    point.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>DNS Server Operators SHOULD treat requests to
                    the dot-zkey domain as errors, for correct
                    installations MUST NOT allow such requests to
                    escape to DNS.  DNS operators MUST NOT choose to
                    redirect such requests to a site, not even to
                    explain to the user that their P2P resolver is
                    missing or mis-configured as this MAY violate
                    privacy expectations of the user.
                    <vspace blankLines="1" />
                    </t>

                    <!-- DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.zkey.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

            <section title="Domain Name Reservation Considerations for &quot;.onion.&quot;">

                <t>The &quot;.onion.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.

                    <vspace blankLines="1" />
                    Since there is no central authority necessary or
                    possible for assigning dot-onion names, and those
                    names correspond to cryptographic keys, users
                    SHOULD be aware that they do not belong to regular
                    DNS, but are still global in their scope.
                    </t>

                    <!-- 2. Application Software Considerations -->
                    <t>Application Software SHOULD NOT pass requests
                    for dot-onion domains for normal DNS resolution.
                    <vspace blankLines="1" />
                    As mentioned in points 4. and 5. below, regular
                    DNS resolution is expected to respond with
                    NXDOMAIN.  Therefore, if it can differentiate
                    between DNS and P2P name resolution, application
                    software MAY expect such a response, and MAY
                    choose to treat other responses from the DNS as
                    errors.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications, the only way to
                    resolve dot-onion domains properly is via a SOCKS
                    proxy.  Using tools like TorSocks, SOCKS support
                    can be added to legacy applications without
                    changes to the application itself.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-onion
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-onion names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-onion domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-onion is not available via global DNS
                    resolution, and not doing so MAY put users'
                    privacy at risk, e.g., as suggested in the next
                    point.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>DNS Server Operators SHOULD treat requests to
                    the dot-onion domain as errors, for correct
                    installations MUST NOT allow such requests to
                    escape to DNS.  DNS operators MUST NOT choose to
                    redirect such requests to a site, not even to
                    explain to the user that their P2P resolver is
                    missing or mis-configured as this MAY violate
                    privacy expectations of the user.
                    <vspace blankLines="1" />
                    </t>

                    <!-- DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.onion.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

            <section title="Domain Name Reservation Considerations for &quot;.exit.&quot;">

                <t>The &quot;.exit.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.
                    <vspace blankLines="1" />
                    Since dot-exit names correspond to a Tor-specific
                    routing construct to reach target hosts via chosen
                    Tor exit nodes, users SHOULD be aware that they do
                    not belong to regular DNS and that the actual
                    target precedes the second-level domain name.
                    </t>

                    <!-- 2. Application Software Considerations -->
                    <t>Application Software SHOULD NOT pass requests
                    for dot-exit domains for normal DNS resolution.
                    <vspace blankLines="1" />
                    As mentioned in points 4. and 5. below, regular
                    DNS resolution is expected to respond with
                    NXDOMAIN.  Therefore, if it can differentiate
                    between DNS and P2P name resolution, application
                    software MAY expect such a response, and MAY
                    choose to treat other responses from the DNS as
                    errors.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications, the only way to
                    resolve dot-exit domains properly is via a SOCKS
                    proxy.  Using tools like TorSocks, SOCKS support
                    can be added to legacy applications without
                    changes to the application itself.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-exit
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-exit names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-exit domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-exit is not available via global DNS
                    resolution, and not doing so MAY put users'
                    privacy at risk, e.g., as suggested in the next
                    point.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>DNS Server Operators SHOULD treat requests to
                    the dot-exit domain as errors, for correct
                    installations MUST NOT allow such requests to
                    escape to DNS.  DNS operators MUST NOT choose to
                    redirect such requests to a site, not even to
                    explain to the user that their P2P resolver is
                    missing or mis-configured as this MAY violate
                    privacy expectations of the user.
                    <vspace blankLines="1" />
                    </t>

                    <!-- DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.exit.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

            <section title="Domain Name Reservation Considerations for &quot;.bit.&quot;">

                <t>The &quot;.bit.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.
                    <vspace blankLines="1" />
                    From the user's perspective, the resolution of
                    dot-bit pTLD is similar to the normal DNS
                    resolution, and thus SHOULD NOT affect normal
                    usage of most Internet applications.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 2. Application Software Considerations -->
                    <t>Application Software MAY pass requests to the
                    dot-bit pTLD for normal DNS resolution if A/AAAA
                    records are desired.  If available, the local
                    resolver MUST intercept such requests within the
                    respective operating system hooks and return DNS
                    compatible results.  However, NameCoin-aware
                    applications MAY choose to talk directly to the
                    respective P2P resolver, and use this to access
                    additional record types that are not defined in
                    DNS.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications and legacy name
                    resolution APIs expecting DNS resolution, no
                    changes are required.
                    <vspace blankLines="1" />
                    However, Name Resolution APIs and Libraries MAY
                    choose to support additional record types over
                    time for the dot-bit domain.  They MAY choose to
                    directly resolve those domains via
                    blockchain-based resolution.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-bit
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-bit names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    <vspace blankLines="1" />
                    Given that dot-bit users typically have no special
                    privacy expectations, and those names are globally
                    unique, local caching DNS servers MAY choose to
                    treat them as regular domain names, and cache the
                    responses obtained from the Namecoin blockchain.
                    In that case however, NXDOMAIN results SHOULD NOT
                    be cached, as new dot-bit domains may become
                    active at any time.
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-bit domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-bit is not available via global DNS
                    resolution.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>DNS Server Operators SHOULD treat requests to
                    the dot-bit domain as errors, for correct
                    installations SHOULD NOT allow such requests to
                    escape to DNS.
                    <vspace blankLines="1" />
                    </t>

                    <!-- DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.bit.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

            <section title="Domain Name Reservation Considerations for &quot;.i2p.&quot;">

                <t>The &quot;.i2p.&quot; domain is special
                according to <xref target="RFC6761">RFC 6761, section
                5</xref>, in the following ways:</t>

                <t><list style="numbers">
                    <!-- 1. User Considerations -->
                    <t>Users MAY use these names as they would other
                    domain names, entering them anywhere that they
                    would otherwise enter a conventional DNS domain
                    name.
                    <vspace blankLines="1" />
                    Since there is no central authority responsible
                    for assigning dot-i2p names, and that the ultimate
                    mapping is decided by the local peer, users
                    SHOULD be aware of that specificity.
                    </t>


                    <!-- 2. Application Software Considerations -->
                    <t>Application Software SHOULD NOT pass requests for
                    dot-i2p domains for normal DNS
                    resolution.
                    <vspace blankLines="1" />
                    As mentioned in points 4. and 5. below, regular
                    DNS resolution is expected to respond with
                    NXDOMAIN.  Therefore, if it can differentiate
                    between DNS and P2P name resolution, application
                    software MAY expect such a response, and MAY
                    choose to treat other responses from the DNS as
                    errors.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 3. Name Resolution APIs and Libraries Considerations -->
                    <t>For legacy applications, the only way to
                    resolve dot-i2p domains properly is via a
                    SOCKS proxy.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 4. Caching DNS Server Considerations -->
                    <t>Caching DNS servers SHOULD recognize dot-i2p
                    names as special and SHOULD NOT, by default,
                    attempt to look up NS records for them, or
                    otherwise query authoritative DNS servers in an
                    attempt to resolve dot-i2p names.  Instead,
                    caching DNS servers SHOULD, by default, generate
                    immediate negative responses for all such queries.
                    </t>

                    <!-- 5. Authoritative DNS Server Considerations -->
                    <t>Authoritative DNS Servers are not expected to
                    treat dot-i2p domain requests specially.  In
                    practice, they MUST answer with NXDOMAIN, as
                    dot-i2p is not available via global DNS
                    resolution, and not doing so MAY put users'
                    privacy at risk, e.g., as suggested in the next
                    point.
                    <vspace blankLines="1" />
                    </t>

                    <!-- 6. DNS Server Operators -->
                    <t>DNS Server Operators SHOULD treat requests to
                    the dot-i2p domain as errors, for correct
                    installations MUST NOT allow such requests to
                    escape to DNS.  DNS operators MUST NOT choose to
                    redirect such requests to a site, not even to
                    explain to the user that their P2P resolver is
                    missing or mis-configured as this MAY violate
                    privacy expectations of the user.
                    <vspace blankLines="1" />
                    </t>

                    <!-- DNS Registries/Registars Considerations -->
                    <t>DNS Registries/Registrars
                    <vspace blankLines="1" />
                    In order to avoid conflicts with the P2P
                    namespaces <xref target="SAC45"/>, IANA reserves
                    &quot;.i2p.&quot; and thereby ensures that this
                    label cannot be registered within the DNS tree,
                    nor their management delegated to any particular
                    organization.
                    <vspace blankLines="1" />
                    </t>
                </list></t>

            </section>

        </section>

        <section title="Acknowledgements">

            <t>The authors thank the I2P developers for their
            constructive feedback, and Leif Ryge for his proof-reading
            and valuable feedback.</t>

        </section>

    </middle>

    <back>

        <references title="Normative References">

            &RFC2119;

            &RFC5226;

            &RFC6761;

        </references>

        <references title="Informative References">

            <reference anchor="Curve25519"
                       target="http://cr.yp.to/ecdh/curve25519-20060209.pdf">
                <front>
                    <title>Curve25519: new Diffie-Hellman speed record</title>
                    <author initials="D.J.B." fullname="Daniel J. Bernstein" surname="Bernstein">
                        <organization></organization>
                    </author>
                    <date year="2006" month="February" />
                </front>
            </reference>

            <reference anchor="Dingledine2004"
                       target="https://www.onion-router.net/Publications/tor-design.pdf">
                <front>
                    <title>Tor: the second-generation onion router</title>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>The Free Haven Project</organization>
                    </author>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>The Free Haven Project</organization>
                    </author>
                    <author initials="P.S." fullname="Paul Syverson" surname="Syverson">
                        <organization>Naval Research Lab</organization>
                    </author>
                    <date year="2004" />
                </front>
            </reference>

            <reference anchor="EdDSA"
                       target="http://ed25519.cr.yp.to/ed25519-20110926.pdf">
                <front>
                    <title>High-speed, high-security signatures</title>
                    <author initials="D.J.B." fullname="Daniel J. Bernstein" surname="Bernstein" />
                    <author initials="N.D." fullname="Niels Duif" surname="Duif" />
                    <author initials="T.L." fullname="Tanja Lange" surname="Lange" />
                    <author initials="P.S." fullname="Peter Schwabe" surname="Schwabe" />
                    <author initials="Y.B." fullname="Bo-Yin Yang" surname="Yang" />
                    <date year="2011" month="September" />
                </front>
            </reference>

            <reference anchor="I2P-NAMING"
                       target="http://www.i2p2.de/naming.html">
                <front>
                    <title>Naming in I2P and Addressbook</title>
                    <author initials="J.R." fullname="J. Random Hacker" surname="Random" />
                    <date year="2003" />
                </front>
            </reference>

            <reference anchor="Namecoin"
                       target="http://dot-bit.org/">
                <front>
                    <title>Namecoin DNS - DotBIT Project</title>
                    <author>
                        <organization>The .bit Project</organization>
                    </author>
                    <date year="2013" />
                </front>
            </reference>

            &RFC1928;

            &RFC4648;

            <reference anchor="SAC45"
                       target="http://www.icann.org/en/groups/ssac/documents/sac-045-en.pdf">
                <front>
                    <title>Invalid Top Level Domain Queries at the
                    Root Level of the Domain Name System</title>
                    <author>
                        <organization>ICANN Security and Stability Advisory Committee</organization>
                    </author>
                    <date month="November" year="2010"/>
                </front>
            </reference>

            <reference anchor="Schanzenbach2012">
                <front>
                    <title>Design and Implementation of a Censorship
                    Resistant and Fully Decentralized Name
                    System</title>
                    <author initials="M.S." fullname="Martin Schanzenbach" surname="Schanzenbach">
                        <organization>TU Munich</organization>
                    </author>
                    <date year="2012" month="September" />
                </front>
            </reference>

           <reference anchor="SquareZooko"
                      target="http://www.aaronsw.com/weblog/squarezooko">
                <front>
                    <title>Squaring the Triangle: Secure,
                    Decentralized, Human-Readable Names</title>
                    <author initials="A.S." fullname="Aaron Swartz" surname="Swartz" />
                    <date year="2011" />
                </front>
            </reference>

            <reference anchor="TOR-ADDRESS"
                       target="https://gitweb.torproject.org/torspec.git/blob/HEAD:/address-spec.txt">
                <front>
                    <title>Special Hostnames in Tor</title>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <date year="2011" month="September" />
                </front>
            </reference>

            <reference anchor="TOR-EXTSOCKS"
                       target="https://gitweb.torproject.org/torspec.git/blob/HEAD:/socks-extensions.txt">
                <front>
                    <title>Tor's extensions to the SOCKS protocol</title>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <date year="2011" month="September" />
                </front>
            </reference>

            <reference anchor="TOR-PATH"
                       target="https://gitweb.torproject.org/torspec.git/blob/HEAD:/path-spec.txt">
                <front>
                    <title>Tor Path Specification</title>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <date year="2013" month="April" />
                </front>
            </reference>

            <reference anchor="TOR-PROTOCOL"
                       target="https://gitweb.torproject.org/torspec.git/blob/HEAD:/tor-spec.txt">
                <front>
                    <title>Tor Protocol Specification</title>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <date year="2013" month="November" />
                </front>
            </reference>

            <reference anchor="TOR-RENDEZVOUS"
                       target="https://gitweb.torproject.org/torspec.git/blob/HEAD:/rend-spec.txt">
                <front>
                    <title>Tor Rendezvous Specification</title>
                    <author initials="N.M." fullname="Nick Mathewson" surname="Mathewson">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <author initials="R.D." fullname="Roger Dingledine" surname="Dingledine">
                        <organization>Tor Project Inc.</organization>
                    </author>
                    <date year="2013" month="September" />
                </front>
            </reference>
        </references>

        <!-- Change Log

v00 2013-11-13  HOW   Initial version

v01 2013-12-05  HOW   First XML version
                      - Fix conformance issues
                      - Shorten abstract
                      - Remove appendix on Tor reference
                      - Add .bit
                      - Reorder references
                      - Integrate community feedback

v02 2014-02-15  HOW   Second XML version
                      - Split Reservation Considerations for each pTLD
                      - Revise abstract
                      - Explain .exit exceeded length unpredictability
                      - Integrate community feedback
        -->
    </back>
</rfc>
