<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC1035 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/>
<!ENTITY RFC1918 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1918.xml">
<!ENTITY RFC2131 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2131.xml">
<!ENTITY RFC2409 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2409.xml">
<!ENTITY RFC3596 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3596.xml">
<!ENTITY RFC4025 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4025.xml">
<!ENTITY RFC4033 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4033.xml">
<!ENTITY RFC4034 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4034.xml">
<!ENTITY RFC4035 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4035.xml">
<!ENTITY RFC4301 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC4322 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4322.xml">
<!ENTITY RFC5246 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY RFC5280 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5996 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5996.xml">
<!ENTITY RFC6071 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6071.xml">
<!ENTITY RFC6698 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6698.xml">
<!ENTITY RFC6960 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6960.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-osterweil-dane-ipsec-02" ipr="trust200902">
  <!-- 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="OE with DANE and IPsec: IPSECA">Opportunistic Encryption with DANE Semantics and IPsec: IPSECA</title>

    <author fullname="Eric Osterweil" initials="E.O." 
            surname="Osterweil">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Reston</city>
          <region>VA</region>
          <country>USA</country>
        </postal>
        <email>eosterweil@verisign.com</email>
      </address>
    </author>

    <author fullname="Glen Wiley" initials="G.W." 
            surname="Wiley">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Reston</city>
          <region>VA</region>
          <country>USA</country>
        </postal>
        <email>gwiley@verisign.com</email>
      </address>
    </author>

    <author fullname="Tomofumi Okubo" initials="T.O." 
            surname="Okubo">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Reston</city>
          <region>VA</region>
          <country>USA</country>
        </postal>
        <email>tomokubo@Verisign.com</email>
      </address>
    </author>

    <author fullname="Ramana Lavu" initials="R.L." 
            surname="Lavu">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Reston</city>
          <region>VA</region>
          <country>USA</country>
        </postal>
        <email>RLavu@verisign.com</email>
      </address>
    </author>

    <author fullname="Aziz Mohaisen" initials="A.M." 
            surname="Mohaisen">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Reston</city>
          <region>VA</region>
          <country>USA</country>
        </postal>
        <email>amohaisen@verisign.com</email>
      </address>
    </author>

    <date year="2015"/>

    <!-- Meta-data Declarations -->
    <area>SEC</area>

    <workgroup>DANE</workgroup>

    <keyword></keyword>

    <abstract>
      <t>
        The query/response transactions of the Domain Name System (DNS) can disclose valuable
        meta-data about the online activities of DNS' users.  The DNS Security Extensions (DNSSEC) provide object-level
        security, but do not attempt to secure the DNS transaction itself.  For example, DNSSEC does not protect 
        against information leakage, and only protects DNS data until the last validating recursive resolver.  
        Stub resolvers are vulnerable to adversaries in the network between themselves and their validating resolver 
        (&quot;the last mile&quot;).  This document details a new DANE-like DNS Resource Record (RR) type called IPSECA,
        and explains how to use it to bootstrap DNS transactions through informing entries in IPsec Security Policy 
        Databases (SPDs) and to subsequently verifying Security Associations (SAs) for OE IPsec tunnels.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>
        <!--
        This document codifies one way to use DANE semantics to remediate some aspects of the security gap that exists between 
        using the DNS Security Extensions (DNSSEC) 
        -->
        
        The query/response transactions of the Domain Name System (DNS) <xref target="RFC1035"/> can disclose valuable meta-data about the
        online activities of DNS' users.  The DNS Security Extensions' (DNSSEC's) <xref target="RFC4033"/>, 
        <xref target="RFC4034"/>, <xref target="RFC4035"/> core services (integrity, source authenticity, and secure denial of 
        existence) are designed to secure data in DNS transactions by providing object-level security, but do not attempt to 
        secure the DNS transaction itself.  
        For example, DNSSEC does not attempt to protect the confidentiality of DNS transactions, does not protect data outside of the
        RRsets (including the DNS header, OPT record, etc.), and its DNS-specific protections expose opportunities for
        adversaries to identify DNS traffic, eavesdrop on DNS messages,
        <!-- Without a form of transaction security, adversaries have the ability to identify DNS
        traffic separately from other traffic in order to target DNS during an attack. -->
        and target DNS and its meta-data for attacks.
        As a result, a clever adversary may target
        just DNS traffic, discover the nature of a user's online browsing (from fully qualified domain names), 
        interfere with the delivery of specific messages (though the 
        DNS objects are not forgeable), or even attack &quot;the last mile,&quot; between a resolver and a remote 
        validating recursive resolver.
      </t>

      <t>
        For example, the information leakage exposed by observing DNSSEC transactions, could enable an adversary to not 
        only learn what Second Level Domains (SLDs) 
        a user is querying (such as their bank, a funding agency, a security contractor, etc.), but could also inspect the 
        fully qualified 
        domain name(s) to learn the specific hosts visited, or in the case of certain DNS-based chat programs, information about 
        ongoing conversations. 
      </t>

      <!--
      <t>
        Another concern could be an adversary who observes outgoing DNS queries near a cache, and spoofs DNS responses. In this case, DNSSEC
        would protect the cache's integrity, but could enable a Denial of Service (DoS) vector. If an adversary spoofs unvalidatable 
        DNS responses to DNSSEC queries, the cache may not be listening for the genuine responses when they come. 
      </t>
      -->

      <t>
        In addition, DNSSEC's design only protects DNS data until the last validating recursive resolver.  If a client issues DNS queries
        from a stub resolver to a remote DNSSEC-aware resolver, then the network between these two (&quot;the last mile&quot;) can be
        leveraged by an adversary to spoof responses, drop traffic, etc.
      </t>
        
      <t>
        Clearly, these limitations do not invalidate the benefits of DNSSEC.  DNSSEC still protects the actual DNS 
        objects, protects against cache poisoning attacks, and more. Rather, these limitations simply illustrate that 
        there is more at stake than just valid DNS data.
      </t>

      <t>
        This document details the motivation for, the synergy from, and a protocol to advertise and verify security credentials
        that can be used to verify Opportunistic Encryption (OE) IPsec <xref target="RFC4301"/>, <xref target="RFC6071"/> tunnels 
        for DNS transactions.  
        Securing DNS transactions in this way is both necessary and sufficient for providing confidentiality of many types of 
        DNS-transaction meta data, which can betray user privacy.
        <!--
        Using a DANE <xref target="RFC6698"/> protocol to verify 
        IPsec <xref target="RFC6071"/> certificates is both necessary and sufficient to providing missing security assurances to secure 
        DNS transactions.
        -->
        This document details a new DANE-like <xref target="RFC6698"/> DNS Resource Record (RR) type called IPSECA, 
        and explains how to use it to bootstrap entries in IPsec Security Policy Databases (SPDs) and to subsequently
        verify Security Associations (SAs) for OE IPsec tunnels.
      </t>

      <section title="What IPSECA Adds to DNSSEC Transactions">
        <t>
          DNSSEC's focus on object level security leaves the types of protections offered by IPsec unaddressed.  Specifically, the
          way (or ways) to associate certificate(s) used by IPsec with a DNSSEC-aware name server need to be codified.  
          This can be especially 
          complicated if different IPsec 
          certificates need to be discovered for different services that are running on the same IP address.  This can become
          complicated if certificates are
          learned solely by the IP addresses of networked-services.  This gap is inherently overcome during certificate discovery
          in DANE protocols by
          the concept of &quot;Service Address Records,&quot; <xref target="I-D.draft-ogud-dane-vocabulary"/>.  These Security 
          Associations are defined by, and discovered by, domain names rather than just IP addresses.
          <!-- DANE streamlines a number of issues and complications with IKE + IPSECKEY logic today -->
          <xref target="RFC6698"/> standardizes a way for security associations of certificates to be
          made with service domains for TLS, rather than just IP
          addresses.  As one of the underlying facilities of DANE's approach to certificate verification, this adds a 
          necessary enhancement to
          IPsec certificate learning over approaches that are based solely on IP addresses in DNS (such as described in 
          <xref target="RFC4025"/> and <xref target="RFC4322"/>).
          <!-- Detecting and initÕing tunnel endpoints to create Security Associations (IPSec tunnels) for services 
            Tunnel Endpoints: Multiple services can run on the same IP
            Not all services on an IP may want IPSec, or use the same IPSec key, etc.
          -->
          <!-- <TROUBLE>
          By creating Security Associations based on domain names instead of IP addresses, hosts 
          MAY run multiple different IPsec tunnels
          for different services on the same IP address, and need not run IPsec for every service on that IP address.
          </TROUBLE> -->
        </t>

        <t>
          <!--
          Allow DANE-like discovery of IPSec endpoints for OE, based on service name/type/etc (using DNS domain names)
            Driving case study: OE by creating SAs between DNS name servers and DNS resolvers
              Lookup by service name (NS name), not by IP
                Service specification can point to service addresses
              No external revocation (OCSP/CRL) needed
                Use DANE semantics of removing RRs to indicate disassociation with keying material
          -->
          <!--
          Using DANE-like discovery to create Security Associations between DNS resolvers and DNS authoritative name servers
          allows endpoints to create tunnels for Opportunistic Encryption (OE), based on DNS domain names of the specific zones being
          queried.
          -->
          The advantages of using DANE for IPsec OE also include other simplifications that the DANE protocol inherently offers all of its
          protocols.  Such as, the automatic deauthorization of certificates that happens when they are removed from a DNS zone, which
          may (under many circumstances) obviate the need for extensive use of revocation mechanisms (OCSP <xref target="RFC6960"/> or 
          CRL <xref target="RFC5280"/>).  Details of these relative trade offs is described in more detail in <xref target="DANE_SATIN12"/>.
        </t>

          <!-- Benefits of this approach: ... -->
        <t>
          It is also noteworthy that DANE offers flexibility that is not available in 
          IP-centric certificate discovery and IP-centric OE <xref target="RFC4322"/>, while still being backwards compatible 
          with them.
          That is, while users can use IPSECA records to map OE IPsec tunnels to service names, they can also use IPSECA records 
          in their reverse DNS zone in a similar fashion to the IPSECKEY <xref target="RFC4025"/> record 
          used in <xref target="RFC4322"/>.
          However, while this document illustrates an example usage of DANE with IPsec OE, any specification 
          for how the IPSECA resource record MUST get used with OE is beyond the scope of this document.
        </t>
      </section>

      <section title="IP-Centric IPsec Tunnel Discovery Using IPSECKEY">
        <t>
          <!-- IPSECKEY RR
            Assumes SA discovery needs to learn usage after finding key, so codifies usage in RR
            Includes precedence, gateway type, algo, gateway[, public key]
            Works with IKE
          -->
          In contrast to a DANE-centric discovery, <xref target="RFC4025"/> specifies a DNS resource record called IPSECKEY.  The IPsec
          certificate learning described therein prescribes that relying parties learn the intended usage of IPsec certificates after they
          locate them in DNS and retrieve them.  The types of information that relying parties learn from IPSECKEY responses include:
          precedence, gateway type, algorithm, gateway, and possibly the public key.  After learning the key and creating the 
          Security Association, the relying party can use techniques like <xref target="RFC4322"/> to initialize an OE IPsec tunnel.
        </t>

        <t>
          <!--
          IPSECKEY queried by IP address, in reverse DNS
            IPSEC keys are then vetted for the service in question and validity status by endpoint
          -->
          The inherent key learning and verification technique in <xref target="RFC4322"/> is based on learning tunnels from IP addresses
          only (IP-centric).  Because of this technique's focus on IP-centric learning, 
          <!-- 
          services that are collocated on a single IP
          address do not have the ability to selectively enable and disable Opportunistic Encryption (OE) with IPsec before key discovery
          <xref target="RFC2409"/>, <xref target="RFC5996"/>.  Moreover, 
          -->
          operational entities running services on a specific IP address may not have access to annotate the reverse DNS zone for their
          services (especially if they are shared environments).  So, this type of OE may often be a non-starter.  One example 
          would be when zones are hosted and/or served by cloud service providers.  In this case, customers are almost certainly
          not allowed to annotate the reverse DNS zone for their providers.
        </t>
      </section>

      <section title="Service-Centric IPsec Tunnel Discovery Using IPSECA and DANE">
        <!--
        Processed w/ IKE
          Disc + example of usage
        -->
        <t>
          The suggested usage of this document is to aid in discovering where OE IPsec tunnels exist, and to act as an out of band
          verification substrate that can validate the certificates received during IPsec key exchange.  For example, if a DNS caching 
          recursive resolver is configured to attempt OE IPsec tunnels to DNS name servers (using a specific key exchange protocol, like 
          <xref target="RFC2409"/>, <xref target="RFC5996"/>, etc.), then when it receives a referral it SHOULD query name servers 
          for corresponding IPSECA resource records.  (we discuss the format of the resource record
          and domain names below in <xref target="sec:rr"/>).  When an IPSECA record is discovered by a resolver, that resolver SHOULD 
          follow its configurations and setup an SPD entry, in order to signal its IPsec layer to attempt to attempt to establish
          an SA.  Note, this document does not specify 
          a new, or any modifications
          to any existing, IPsec key exchange protocols.  Rather, after adding an SPD and after a successful tunnel establishment, 
          the credentials used 
          for the Security Association with the name server SHOULD be cross-checked with the IPSECA resource record(s).  
        </t>
        
        <t>
          When using IPSECA resource records to verify OE tunnels, clients MUST perform full DNSSEC validation of the 
          DNSSEC chain of trust that leads to IPSECA RRs.  
          As specified in <xref target="RFC6698"/>:
          <list style="empty">
            <t>
              &quot;A [IPSECA] RRSet whose DNSSEC validation state is secure MUST be used
              as a certificate association for [IPsec] unless a local policy would
              prohibit the use of the specific certificate association in the
              secure TLSA RRSet.
            </t>

            <t>
              If the DNSSEC validation state on the response to the request for
              the [IPSECA] RRSet is bogus, this MUST cause IPsec not to be started or,
              if the IPsec negotiation is already in progress, MUST cause the
              connection to be aborted.
            </t>

            <t>
              A [IPSECA] RRSet whose DNSSEC validation state is indeterminate or
              insecure cannot be used for [IPsec] and MUST be considered
              unusable.&quot;
            </t>
          </list>
          This is to ensure that the SPD entries and SA(s) used for tunnels are fully verified.
          This verification MAY include local trust anchor processing, such that local 
          DNSKEY resource records can be used to verify
          corresponding RRSIGs.  Trust anchors (which may be distributed during dynamic host configuration) may be useful for
          bootstrapping.  For example, consider the case where private address space <xref target="RFC1918"/> 
          is used for internal recursive resolvers. Here, the locally provisioned DNS names for the private address space
          (in the reverse tree) that are secured using DNSSEC MAY use local trust anchors.  That is, if an 
          <xref target="RFC1918"/>
          address is used internally, the corresponding domain name MUST also resolve and be verifiable through DNS and DNSSEC, but 
          a local trust anchor MAY be used to verify covered RRSIGs.
          This shifts the onus of securing DNS transactions to the initial configuration step.  The intuition behind this reasons that if the first
          (configuration) step was already where the local resolver was
          configured, then the security of the DNS transactions already hinged on learning the valid resolver this way.  
          So, this step is already used to convey trusted configurations (bootstrapping).  Adversaries
          attempting to subvert an end host have only the narrow attack window that is associated with learning configurations.  
          In contrast, an insecure DNS resolver offers an attack window every time it issues or responds 
          to a query.    We discuss this further in <xref target="sec:sa"/>.
        </t>
          
      </section>

    </section>

    <section anchor="sec:rr" title="The IPSECA Resource Record">
      <t>
        The IPSECA resource record is modeled heavily off of 
        the IPSECKEY RR <xref target="RFC4025"/>, but it differs in significant ways.  The format of IPSECA is
        harmonized with the architectural direction set by other DANE work <xref target="RFC6698"/>, 
        <xref target="I-D.draft-ogud-dane-vocabulary"/>.  
      </t>

      <section title="IPSECA RDATA Wire Format">

        <!--
          IPSECA RR
            Same as TLSA(?): Selector + flags + matching + data
        -->
        <figure align="center" anchor="fig:ipseca">
          <artwork align="left"><![CDATA[
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Usage    |   Selector    |   Matching    |                 /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                 /
|                                                               /
/                 Certificate Association Data                  /
/                                                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
              ]]></artwork>
          </figure>

          <section title="The Usage Field">
            <t>
              The meaning, semantics, and interpretation of the Usage field of the IPSECA resource record follow 
              the specification described in Section 2.1 of <xref target="I.D.draft-ietf-dane-registry-acronyms"/>:
            </t>
              <texttable anchor="tab_usage" title="TLSA Certificate Usages">

                <ttcol align="left">Value</ttcol>
                <ttcol align="left">Acronym</ttcol>
                <ttcol align="left">Short Description</ttcol>
                <ttcol align="left">Reference</ttcol>

                <c>0</c>
                <c>PKIX-TA</c>
                <c>CA constraint</c>
                <c><xref target="RFC6698"/></c>

                <c>1</c>
                <c>PKIX-EE</c>
                <c>Service certificate constraint</c>
                <c><xref target="RFC6698"/></c>

                <c>2</c>
                <c>DANE-TA</c>
                <c>Trust anchor assertion</c>
                <c><xref target="RFC6698"/></c>

                <c>3</c>
                <c>DANE-EE</c>
                <c>Domain-issued certificate</c>
                <c><xref target="RFC6698"/></c>

                <c>4-254</c>
                <c></c>
                <c>Unassigned</c>
                <c></c>

                <c>255</c>
                <c>PrivCert</c>
                <c>Reserved for Private Use</c>
                <c><xref target="RFC6698"/></c>

              </texttable>
          </section>

          <section title="The Selector Field">
            <t>
              The meaning, semantics, and interpretation of the Selector field of the IPSECA resource record follow 
              the specification described in Section 2.2 of <xref target="I.D.draft-ietf-dane-registry-acronyms"/>:
              <list hangIndent="4" style="empty">
                <t>
                </t>
              </list>
            </t>
              <texttable anchor="tab_selector" title="TLSA Selectors">

                <ttcol align="left">Value</ttcol>
                <ttcol align="left">Acronym</ttcol>
                <ttcol align="left">Short Description</ttcol>
                <ttcol align="left">Reference</ttcol>

                <c>0</c>
                <c>Cert</c>
                <c>Full certificate</c>
                <c><xref target="RFC6698"/></c>

                <c>1</c>
                <c>SPKI</c>
                <c>SubjectPublicKeyInfo</c>
                <c><xref target="RFC6698"/></c>

                <c>2</c>
                <c>DANE-TA</c>
                <c>Trust anchor assertion</c>
                <c><xref target="RFC6698"/></c>

                <c>3-254</c>
                <c></c>
                <c>Unassigned</c>
                <c></c>

                <c>255</c>
                <c>PrivSel</c>
                <c>Reserved for Private Use</c>
                <c><xref target="RFC6698"/></c>

              </texttable>
          </section>

          <section title="The Matching Field">
            <t>
              The meaning, semantics, and interpretation of the Matching field of the IPSECA resource record follow 
              the specification described in Section 2.3 of <xref target="I.D.draft-ietf-dane-registry-acronyms"/>:
              <list hangIndent="4" style="empty">
                <t>
                </t>
              </list>
            </t>
              <texttable anchor="tab_Matching" title="TLSA Matching Types">

                <ttcol align="left">Value</ttcol>
                <ttcol align="left">Acronym</ttcol>
                <ttcol align="left">Short Description</ttcol>
                <ttcol align="left">Reference</ttcol>

                <c>0</c>
                <c>Full</c>
                <c>No hash used</c>
                <c><xref target="RFC6698"/></c>

                <c>1</c>
                <c>SHA2-256</c>
                <c>256 bit hash by SHA2</c>
                <c><xref target="RFC6698"/></c>

                <c>2</c>
                <c>SHA2-512</c>
                <c>512 bit hash by SHA2</c>
                <c><xref target="RFC6698"/></c>

                <c>3-254</c>
                <c></c>
                <c>Unassigned</c>
                <c></c>

                <c>255</c>
                <c>PrivMatch</c>
                <c>Reserved for Private Use</c>
                <c><xref target="RFC6698"/></c>

              </texttable>
          </section>

          <section title="The Certificate Assocation Data Field">
            <t>
              The meaning, semantics, and interpretation of the Certificate Association Data field of the IPSECA resource record follow 
              the specification of the same field in the TLSA resource record, described in Section 2.1.4 of 
              <xref target="RFC6698"/>:
              <list hangIndent="4" style="empty">
                <t>
                  &quot;This field specifies the 'certificate association data' to be
                  matched.  These bytes are either raw data (that is, the full
                  certificate or its SubjectPublicKeyInfo, depending on the selector)
                  for matching type 0, or the hash of the raw data for matching types 1
                  and 2.  The data refers to the certificate in the association, not to
                  the TLS ASN.1 Certificate object.&quot;
                </t>
              </list>
            </t>
          </section>

      </section>

      <section title="IPSECA RR Presentation Format">

        <t>
          &lt;/STUBBED OUT SECTION&gt;
        </t>

      </section>

      <section title="Domain Names used for IPSEC Records">
        <t>
          The IPSECA resource record SHOULD be mapped to a domain name that is intuitive when discovering OE IPsec tunnels
          for specific services.  
          The expected procedure for constructing the domain names for IPSECA records that enable OE for DNS (port 53) are:
          <list style="numbers">
            <t>
              The left-most label begins with an underscore character (&#95;), followed by the decimal representation of the 
              port number that corresponds to the service that should be conducted over IPsec.  For example, the DNS transactions
              discussed in this document would result in &quot;&#95;53&quot;.
            </t>
            <t>
              Next, the fully qualified domain name <xref target="RFC1035"/> of the service is appended to the right side.  
              In the case of a DNS name server, that is its domain name. In the
              case of a service that is locate using an IP address, the service address records MUST be its full reverse 
              octet name (including the appropriate suffix, such as .in-addr.arpa. for IPv4 addresses and .ip6.arpa for
              IPv6 addresses).
            </t>
          </list>
          Any custom configured tunnels and port mappings may result local policies that use their own domain name format.
          Such custom OE tunnels are non-standard, and may not be discoverable by other relying parties.
        </t>
      </section>

      <section title="IPSECA RR Examples">

        <t>
          <!-- Location of DANE-IPSEC RR(s)
            IPSECA record(s) are associated with Service Address Records [ref]
          -->
          Because the IPSECA record is intended to be associated with a Service Address Records, it (implicitly) can also be 
          associated with an IP
          address (through the reverse DNS).  A few illustrative mappings are presented here as examples.  These domain name / resource 
          record mappings are not necessarily intended to update the processing of protocols like IKEv1 <xref target="RFC2409"/>, 
          IKEv2 <xref target="RFC5996"/>, etc.  or other OE protocols <xref target="RFC4322"/>.  Rather, these mappings 
          are intended to serve as examples of IPsec tunnels, and their proper
          configuration.  They MAY be used in verifying Security Associations, but a protocol to do this is beyond the scope of this
          document.
        </t>

        <section title="OE to a DNS Name Server Example">
          <t>
            Suppose a DNS zone example.com is served by the name servers ns1.example.com and ns2.example.com.  If the zone operators
            want to advertise their willingness to offer OE to their name servers using IKEv2 <xref target="RFC5996"/>, then the 
            following domain names MUST be placed
            under the example.com zone (the contents of the resource records, below, are exemplary only and MAY have whatever values a
            zone operator chooses):
            <!--
            <list hangIndent="4" style="empty">
              <t>
                &#95;500.&#95;ipseccert.&lt;ns1.exmple.com&gt; IN IPSECA (
                <list hangIndent="4" style="empty">
                  <t>
                    0 0 1 edeff39034cd2ee83446633a9fbad815a579134ecd7636e51af92ec7207fd490
                  </t>
-->
                  
          </t>
          <figure>
            <artwork>
      &#95;53.ns1.example.com. IN IPSECA (
          0 1 1 edeff39034cd2ee83446633a9fba
                d815a579134ecd7636e51af92ec7
                207fd490 ) ; Verify IPsec for DNS txns

      &#95;53.ns2.example.com. IN IPSECA (
          0 1 1 edeff39034cd2ee83446633a9fba
                d815a579134ecd7636e51af92ec7
                207fd490 ) ; Verify IPsec for DNS txns

            </artwork>
            <!-- So, each NS can point to its own IPSECA record (regardless of which zone is being queried) -->
            <postamble>This example illustrates how a zone MAY indicate where an SPD entry and SA establishment endpoints exist 
              for its name 
              servers (note, they are not required to be the name servers themselves).  Here, each name server is a tunnel end
              point, and these two name servers are mapped to service ports 
              for DNS (port 53).  The IPSECA records above indicate that they verify the CA who must have issued the IPsec
              certificate used and they represent a SHA256 hash of that certificate's SPKI. </postamble>
          </figure>

          <t>
            Alternately, suppose an enterprise wants to configure OE for DNS transactions between its desktop clients and its recursive
            resolver.  In this case, if the enterprise has configured their desktop clients (perhaps through DHCP) to forward their 
            DNS queries to a caching recursive resolver at the IP address 192.168.1.2, then the following IPSECA mapping should be placed
            in an internally managed DNS reverse zone:
          </t>
          <figure>
            <artwork>
      &#95;53.2.1.168.192.in-addr.arpa. IN IPSECA (
          3 0 2 8f6ea3c50b5c488bef74c7c4a17a
                24e8b0f4777d13c211a29223b69a
                ea7a89184ac4d272a2e3d9760966
                fb3f220b39f7fdfb325998289e50
                311ce0748f13c1ed ) ; Verify data in IKEv2 SA
            </artwork>
            <postamble>This example illustrates how a caching recursive resolver MAY indicate where it will accept IPsec tunnel 
              establishment
              and what the certificate used for a SA should be.  Here the DNS service port and the
              IPSECA records describe the nature of the authentic certificate that SHOULD be used in an SA with this endpoint.  In this
              example, the IPSECA records both specify that a DANE-EE cert should be expected in an SA with this resolver, and the SHA-512
              hash of that full certificate should match the encoded value in the IPSECA resource record.
            </postamble>
          </figure>

          <t>
            <!--  Same IP w/ diff FQDN can point to diff IPSECA RR for diff services -->
            Of note here is that since SAs MAY be identified by domain names (which map to IP addresses), some IP addresses may host
            services that offer IPsec, and some that do not.  The IPSECA record allows hosts to advertise these nuanced configurations in
            the same way that these services are discovered (through the DNS itself).
          </t>
        </section>
      </section>

    </section>

    <section anchor="Ops" title="Operational Considerations">
      <t>
        Scaling IPsec connections to the full capacity that large recursive resolvers or large authoritative name servers operate
        at could be cause for concern.  The additional overhead required to establish and maintain SAs could exceed the
        provisioning capacity of deployed systems.  However, there are several relevant observations:
        <list style="numbers">
          <t>
            If a resolver enables OE, but no (or relatively few) name servers provision IPSECA records, then no IPsec tunnels
            will be established, and the load will remain static (or marginally increase).
          </t>

          <t>
            If an authoritative name server provisions IPSECA record, it will only result in additional load if querying resolvers
            are configured to attempt OE.
          </t>

          <t>
            Using white-listing techniques (such as those used during pilot deployments of AAAA records) would allow authoritative
            name servers to only return IPSECA responses to clients that have been white-listed.  This would allow name servers to
            control the amount of IPsec overhead they incur.  For the same reason, resolvers can be configured to only query for 
            IPSECA records from white-listed name servers.
          </t>
        </list>
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>
        <!-- New RR type -->
        This document uses a new DNS resource record type, called IPSECA.  This resource record will need to have a new value assigned to
        it.  Current implementations are advised to use a type number TYPE65347.
      </t>

      <t>
        <!-- Reuse registries of TLSA attrs -->
        This document uses the same semantics and values as the TLSA resource record <xref target="RFC6698"/> for its Usage, Selector, 
        and Matching fields.  Any future use or modification of an IANA registry for that resource record will have similar effects on 
        this resource record.
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
        This document details some of the benefits of using IPsec OE for DNS transactions.  Such a utility does not reduce the
        benefits of other security protections.  For example, the object-level security assurances that are offered by DNSSEC are
        cooperative with the session-level security of IPsec.  Additional discussions are available in <xref target="IPSEC_APPEAL"/>.
        Moreover, the protections described herein also offer cooperative
        benefits with  higher layer protocol protections, like TLS <xref target="RFC5246"/>.  Any combination of these types of
        protections offer both defense-in-depth (securing transactions at multiple levels) and offer security practitioners a
        larger mosaic of security tools from which to construct and maintain their security postures.
      </t>

      <section anchor="sec:interactions" title="Interactions">
        <t>
          <!-- DNSSEC required, for all FQDNs -->
          This document requires that all fully qualified domain names <xref target="RFC1035"/> must be secured by 
          DNSSEC.  This includes domains in the reverse tree of DNS (which represent IP addresses).  
        </t>

        <t>
          <!-- No critical info leakage -->
          The use of IPSECA resource records does not constitute a source of information leakage.  Rather, it provides a 
          mechanism to help bolster confidentiality, by obfuscating DNS transactions.
        </t>

        <t>
          <!-- 
            No vuln from exposing IPSEC pub cert in DNS 
            Re IPSECKEY
          -->
          Expressing tunnel endpoints 
          through DNS may allow adversaries a vehicle to learn where OE is being offered by name servers.  However, OE tunnels
          to these name servers will only be attempted if querying resolvers are configured to attempt IPsec.  As a result,
          adversaries may be able to learn of potential tunnel endpoints, but if they aim to disrupt active IPsec traffic, they
          must still observe which resolvers are trying to initiate IPsec communications.  Therefore, adversaries
          would have no greater opportunity to disrupt IPsec traffic than they already do.  They would still begin by
          (for example) observing VPN tunnel setup on wireless LANs
          (such as at public WiFi hot-spots).  
        </t>
      </section>

      <section anchor="sec:sa" title="Last Mile Security Analysis">
        <t>
          For the last mile, 
          we define one type of attack as the case where an adversary intercepts messages that can be undetectably spoofed.  For
          example, if a zone (like example.com) has deployed DNSSEC, then if an adversary responds to a DNS query for
          www.exmaple.com, a validating DNS resolver should be able to detect the forgery.  However, if an adversary responds to a
          query that is sent for a non-DNSSEC zone, a resolver cannot distinguish the spoofed response from an authentic
          response.  In addition to this, many bootstrapping protocols (such as DHCP <xref target="RFC2131"/>) represent the first
          opportunity for an adversary to disrupt DNS transactions (by subverting the bootstrapping of the resolver itself
          on stub-resolvers).
          Under this model, a DNS stub-resolver's security posture is enhanced by keeping an 
          adversary's attack window to the smallest value possible.
        </t>

        <t>
          Therefore, the attack window offered by DNS clients in a given time span T is comprised of the set 
          of transactions that bootstrap configurations
          W_cfg(T), plus any DNS transactions that are not verifiable.  Of note, however, is that the DNSSEC 
          transactions between stub-resolvers and recursive resolvers are not protected by DNSSEC's cryptography.  
          The only indication of protections
          is a header bit (the AD bit), which is spoofable.  As a result, the attack window includes all DNS transactions
          W_rDNS(T).
        </t>

        <t>
          From this, 
          the attack window can be expressible as:
          <list style="empty">
            <t>
              W(T) = W_cfg(T) + W_rDNS(T)
            </t>
          </list>
          Of note is that under most circumstances, resolvers issue many more queries than configuration requests.  So, 
          <list style="empty">
            <t>
              W_cfg(T) = 1, and W_rDNS(T) >> W_cfg(T).
            </t>
          </list>
        </t>

        <t>
          However, consider the attack window when using OE: {W(T)}.
          If the initial configuration includes a DNSKEY trust anchor that can be used to verify DNSSEC data that
          corresponds to a resolver's corresponding reverse zone (i.e., the IPSECA RR under in-addr.arpa or ip6.arpa), 
          then {W_cfg(T)} = 1 and
          {W_rDNS(T)} = 0.  Therefore, since  W_rDNS(T) >> W_cfg(T) and {W_rDNS(T)} = 0, then by the transitive property, 
          <list style="empty">
            <t>
              W(T) >> {W(T)}.
            </t>
          </list>
        </t>

      </section>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        The editors would like to express their thanks for the early support and insights given by Danny McPherson.
      </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">
      <!-- Here we use entities that we defined at the beginning. -->
      &RFC1035;
      &RFC1918;
      &RFC4033;
      &RFC4034;
      &RFC4035;
      &RFC4301;
      &RFC6698;
    </references>

    <references title="Informative References">
      &RFC2131;
      &RFC2409;
      &RFC3596;
      &RFC4025;
      &RFC4322;
      &RFC5246;
      &RFC5280;
      &RFC5996;
      &RFC6071;
      &RFC6960;

      <reference anchor='I-D.draft-ogud-dane-vocabulary'>
        <front>
          <title>Harmonizing how applications specify DANE-like usage</title>
          <author initials="O.G." surname="Gudmundsson" fullname="O. Gudmundsson"/>
          <date month="October" year="2013"/>
        </front>
      </reference>

      <reference anchor='I.D.draft-ietf-dane-registry-acronyms'>
        <front>
          <title>Adding acronyms to simplify DANE conversations</title>
          <author initials="O.G." surname="Gudmundsson" fullname="O. Gudmundsson"/>
          <date month="January" year="2014"/>
        </front>
      </reference>

      <reference anchor='DANE_SATIN12'>
        <front>
          <title>Reducing the X.509 Attack Surface with DNSSEC's DANE</title>
          <author initials="E.O." surname="Osterweil" fullname="E. Osterweil"/>
          <author initials="B.K." surname="Kaliski" fullname="B. Kaliski"/>
          <author initials="M.L." surname="Larson" fullname="M. Larson"/>
          <author initials="D.M." surname="McPherson" fullname="D. McPherson"/>
          <date month="March" year="2012"/>
        </front>
        <seriesInfo name="Proceedings of" value="Securing and Trusting Internet Names, SATIN '12"/>
      </reference>

      <reference anchor="IPSEC_APPEAL">
        <front>
          <title>IPsec's Appeal: Protecting DNS Under the Covers</title>
          <author initials="E.O." surname="Osterweil" fullname="E. Osterweil"/>
          <author initials="D.M." surname="McPherson" fullname="D. McPherson"/>
          <date month="January" year="2013"/>
        </front>
        <seriesInfo name="Verisign Labs Technical Report" value="#1130006 Revision 1"/>
      </reference>

    </references>

    <section anchor="sec:ns_oe" title="Name Server OE Configuration Example">
      <t>
        &lt;STUBBED OUT SECTION&gt;
      </t>

      <t>
        NAME SERVER SIDE
        <list style="symbols">
          <t>
            Config SPD to accept connections from any on port 53 only
          </t>

          <t>
            Zones add IPSECA RRs for each NS domain name and configure DNSSEC: &lt;examples&gt;
          </t>
        </list>
      </t>

      <t>
        RESOLVER SIDE
        <list style="symbols">
          <t>
            resolver processing logic to intercept referrals and look for IPSECA RR(s).
          </t>

          <t>
            When an IPSECA RR is found, create SPD for that IP and port 53.
          </t>
        </list>
      </t>

      <t>
        &lt;/STUBBED OUT SECTION&gt;
      </t>
    </section>

    <section anchor="sec:res_oe" title="Recursive Resolver OE Configuration Example">
      <t>
        &lt;STUBBED OUT SECTION&gt;
      </t>

      <t>
        RESOLVER SIDE
        <list style="symbols">
          <t>
            If public resolver, create SPD entry that only allows IPsec from port 53.  If internal resolver, limit to 
            addresses serviced.
          </t>
        </list>
      </t>

      <t>
        REVERSE DNS ZONE
        <list style="symbols">
          <t>
            Add IPSECA RR(s) and configure DNSSEC
          </t>
        </list>
      </t>

      <t>
        STUB SIDE
        <list style="symbols">
          <t>
            Configure reverse zone DNSKEY (if 1918) as a local TA (such as over DHCP).  Then do onetime DNSSEC validation for 
            fetching IPSECA RR.
          </t>

          <t>
            Tools include dnskey-grab and/or NLnet Labs' xxxxx.
          </t>
        </list>
      </t>

      <t>
        &lt;/STUBBED OUT SECTION&gt;
      </t>
    </section>
  </back>
</rfc>
