<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN" "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC4120 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4120.xml">
<!ENTITY RFC1510 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1510.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-yu-kitten-kerberos-kdc-does-aliases-00"
     ipr="trust200902" updates="4120">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="KDC-resolves-aliases flag">
      Kerberos Ticket flag indicating KDC support for resolving
      hostname aliases
    </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Tom Yu" initials="T." surname="Yu">
      <organization>MIT Kerberos Consortium</organization>
      <address>
        <postal>
          <street>77 Massachusetts Ave</street>
          <city>Cambridge</city>
          <region>Massachusetts</region>
          <country>USA</country>
        </postal>
        <email>tlyu@mit.edu</email>
      </address>
    </author>

    <date month="Feb" year="2013" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
         in the current day and month for you. If the year is not the current one, it is 
         necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
         purpose of calculating the expiry date).  With drafts it is normally sufficient to 
         specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>Network Working Group</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
         If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>Kerberos</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>
        This document specifies a Kerberos Ticket flag that indicates
        that the Key Distribution Center (KDC) can resolve hostname
        aliases in service principal names.  This document updates RFC
        4120.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>
        This document specifies a new Kerberos Ticket flag that
        indicates that the Key Distribution Center (KDC) is capable of
        resolving hostname aliases.  A Kerberos client can interpret
        the presence of this Ticket flag as a recommendation to avoid
        using potentially insecure DNS lookups to canonicalize
        hostnames when constructing Kerberos principal names.
      </t>
    </section>

    <section title="Requirements Language">
      <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">RFC 2119</xref>.</t>
    </section>

    <section title="Motivation">
      <t>
        When attempting to authenticate to a Kerberos application
        service, existing Kerberos client implementations typically
        perform hostname canonicalization when constructing the
        Kerberos service principal.  In practice, these clients
        canonicalize using insecure DNS, contrary to the
        recommendations in <xref target="RFC4120">RFC 4120</xref>.
        Implementations are not consistent about whether they use
        forward resolution (looking up an address record for the
        user-provided hostname and returning the accompanying
        canonical hostname) or reverse resolution (taking the IP
        address from a forward resolution and returning the reverse
        pointer (PTR) record) to canonicalize hostname components of
        Kerberos service principal names.
      </t>
    </section>

    <section title="KDC Behavior">
      <t>
        If a KDC has knowledge of all hostname aliases for host-based
        service principal names in its realm, it SHOULD set the
        kdc-resolves-aliases (number TBD) flag in the Ticket and
        EncKDCRepPart for all tickets it issues.
      </t>
    </section>

    <section title="Client Behavior">
      <t>
        If a client receives an EncKDCRepPart that has the flag
        kdc-resolves-aliases set, it SHOULD NOT attempt to
        canonicalize hostnames in service principal names for the
        realm whose KDC set that flag.  Instead, the client SHOULD use
        the unchanged user-provided hostname when constructing the
        service principal name.  The following behaviors in <xref
        target="RFC4120">RFC 4120</xref> are still permitted: clients
        MAY append a statically configured domain name to unqualified
        hostname, and clients SHOULD fold the hostname to lowercase.
      </t>
    </section>

    <section title="Assigned numbers">
      <t>TBD</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
        The new ticket flag described in this document allows Kerberos
        realm administrators to communicate a recommendation to
        clients that they not attempt any hostname canonicalization
        when constructing service principal names.  This avoids the
        use of insecure DNS to resolve hostnames, which can allow
        principal name substitution attacks in some environments.
      </t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        Thanks to Sam Hartman, Love Hornquist Astrand, and many others
        who suggested this idea and contributed to its evolution.
      </t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

      &RFC2119;

      &RFC4120;

      <reference anchor="X.680">
        <front>
          <title>
            Information technology -- Abstract Syntax Notation One
            (ASN.1): Specification of basic notation -- ITU-T
            Recommendation X.680 (ISO/IEC International Standard
            8824-1:2008)
          </title>

          <author surname="ISO">
            <organization>ISO</organization>
          </author>

          <date year="2008" />
        </front>
      </reference>

      <reference anchor="X.690">
        <front>
          <title>
            Information technology -- ASN.1 encoding rules:
            Specification of Basic Encoding Rules (BER), Canonical
            Encoding Rules (CER) and Distinguished Encoding Rules
            (DER) -- ITU-T Recommendation X.690 (ISO/IEC International
            Standard 8825-1:2008)
          </title>

          <author surname="ISO">
            <organization>ISO</organization>
          </author>

          <date year="1997" />
        </front>
      </reference>

    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      &RFC1510;

    </references>

  </back>
</rfc>
