<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.30 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC0768 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5405 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5405.xml">
<!ENTITY RFC6520 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6520.xml">
<!ENTITY RFC7030 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7030.xml">
<!ENTITY RFC7540 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
<!ENTITY I-D.ietf-dots-architecture SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dots-architecture.xml">
<!ENTITY I-D.ietf-dots-requirements SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dots-requirements.xml">
<!ENTITY I-D.ietf-tls-tls13 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-tls13.xml">
<!ENTITY I-D.rescorla-tls-dtls13 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.rescorla-tls-dtls13.xml">
<!ENTITY RFC7252 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY I-D.hamilton-quic-transport-protocol SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.hamilton-quic-transport-protocol.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="no"?>
<?rfc symrefs="yes"?>

<rfc docName="draft-mortensen-dots-over-udp-00" category="std">

  <front>
    <title abbrev="DOTS over UDP">DDoS Open Threat Signaling over UDP</title>

    <author initials="A." surname="Mortensen" fullname="Andrew Mortensen">
      <organization>Arbor Networks, Inc.</organization>
      <address>
        <postal>
          <street>2727 S. State St</street>
          <city>Ann Arbor, MI</city>
          <code>48104</code>
          <country>United States</country>
        </postal>
        <email>amortensen@arbor.net</email>
      </address>
    </author>

    <date year="2016" month="October" day="31"/>

    <area>Security</area>
    <workgroup>DOTS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes the use of the Distributed-Denial-of-Service (DDoS) Open
Threat Signaling (DOTS) protocol over UDP <xref target="RFC0768"></xref>.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The DOTS protocol described in [I-D.teague-dots-protocol] defines the protocol
message format and message exchanges, but purposely divides the protocol from
the transport in order to make DOTS adaptable to arbitrary transports.</t>

<t>This division is meant to simplify the process of bringing DOTS to modern secure
transports like QUIC <xref target="I-D.hamilton-quic-transport-protocol"></xref> and the experimental
CurveCP <xref target="CURVECP"></xref>, as well as application-layer protocols like CoAP <xref target="RFC7252"></xref>
and HTTP/2 <xref target="RFC7540"></xref>.</t>

<t>This document defines the most basic option for a DOTS protocol transport,
implementing the protocol over UDP, using DTLS1.3 <xref target="I-D.rescorla-tls-dtls13"></xref> to
secure the signaling session.</t>

<section anchor="terminology" title="Terminology">

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

<t>Terms used to define entity relationships, transmitted data, and methods of
communication are drawn from the terminology defined in
<xref target="I-D.ietf-dots-requirements"></xref>.</t>

</section>
</section>
<section anchor="architecture" title="Architecture">

<t>The architecture in which the DOTS protocol operates is assumed to be derived
from the architectural components and concepts described in
<xref target="I-D.ietf-dots-architecture"></xref>.</t>

</section>
<section anchor="protocol" title="Protocol">

<t>This document uses the signal channel message exchanges and message
serialization defined in [I-D.teague-dots-protocol], except as specified below.</t>

<section anchor="protocol-provisioning" title="Provisioning">

<section anchor="dots-server-discovery" title="DOTS Server Discovery">

<t>DOTS server address discovery is implementation-specific, but anticipates
methods such as direct configuration (i.e., DOTS server address is manually
provided to the DOTS client) and DNS SRV records will be the most common.</t>

</section>
<section anchor="keying-material" title="Keying Material">

<t>A key challenge to deploying DOTS unsurprisingly is provisioning DOTS clients,
including the distribution of keying material to DOTS clients to make possible
the required mutual authentication of DOTS agents. DOTS over UDP relies on
Enrollment over Secure Transport (EST) <xref target="RFC7030"></xref> to overcome this. EST defines a
method of certificate enrollment by which domains operating DOTS servers may
provision DOTS clients with all necessary cryptographic keying material,
including a private key and certificate with which to authenticate itself.</t>

<t>This document does not specify which EST mechanism the DOTS client uses to
achieve initial enrollment. Each mechanism has certain advantages balanced by
obvious drawbacks. For example, HTTP-based client authentication for initial
enrollment is by far the simplest, allowing DOTS clients to enroll with just a
username and one-time-use password, but is also by far the most easily abused.
Client authentication using a previously installed certificate improves on
HTTP-based client authentication, but requires either a manufacturer-installed
certificate, or yet another mechanism to install the client certificate.
The EST mechanism for initial enrollment is therefore left to the operators of
the DOTS deployment.</t>

</section>
</section>
<section anchor="signal-channel" title="Signal Channel">

<section anchor="signal-channel-initialization" title="Initialization">

<t>[I-D.teague-dots-protocol] defines a DOTS signal channel initialization message
exchange in which the DOTS client initiates contact with the DOTS server by
connecting to the DOTS server on port 4646, but leaves instantiation of the
signal channel&rsquo;s security context up to DOTS transport documents.</t>

<t>DOTS over UDP uses DTLS1.3 <xref target="I-D.rescorla-tls-dtls13"></xref> to secure the signal
channel and provide the requisite confidentiality, integrity, and authenticity
for messages exchanged between DOTS agents <xref target="I-D.ietf-dots-requirements"></xref>. Signal
channel initialization assumes the presence of a DOTS client certificate
and DOTS server certificate obtained through EST as described in
<xref target="protocol-provisioning"/> above.</t>

<t>As described in [I-D.teague-dots-protocol], the DOTS client begins creation of
the security context for the the signaling session after successfully connecting
to the DOTS server on port 4646. The DOTS over UDP client makes that connection
over UDP.</t>

<t>Once connected, DOTS over UDP clients SHOULD attempt session resumption through
use of pre-shared keys (PSKs) created during previous signaling sessions with
the DOTS server.  Session resumption using PSKs from a previous DTLS session is
described in <xref target="I-D.ietf-tls-tls13"></xref>.</t>

<t>If a DOTS client does not have a PSK from a previous signaling session, or if
the PSK is expired or otherwise invalid, the DOTS client will fallback to a full
DTLS1.3 handshake, using the private key and certificates obtained through EST
at the time of client provisioning. After performing a full DTLS handshake, the
DOTS server SHOULD send a NewSessionTicket message to the client after receiving
the client&rsquo;s Finished message, as described in <xref target="I-D.ietf-tls-tls13"></xref>. The DOTS
client SHOULD cache the PSK identity and use it for future session resumption.</t>

<t>Once the DTLS handshake is complete, the DOTS signal channel security context is
established, the DOTS over UDP client proceeds to establish the signaling
session by sending a channel initiatlization method, as described in
[I-D.teague-dots-protocol].</t>

</section>
<section anchor="messaging" title="Messaging">

<t>Once the signal channel security context is established through DTLS and the
signaling session is active, all messaging proceeds as defined in
[I-D.teague-dots-protocol], relying on DTLS to provide the requisite channel
security.</t>

<section anchor="heartbeats" title="Heartbeats">

<t>DOTS over UDP purposely avoids using DTLS heartbeats <xref target="RFC6520"></xref> to maintain the
signaling session, depending instead on DOTS protocol heartbeats to track signal
session health.</t>

</section>
<section anchor="dtls-alerts" title="DTLS Alerts">

<t>DOTS over UDP is subject to any condition triggering DTLS Alert messages as
described in <xref target="I-D.rescorla-tls-dtls13"></xref>. Should the alert lead to connection
termination, the DOTS over UDP MAY attempt to reestablish the</t>

</section>
</section>
</section>
<section anchor="data-channel" title="Data Channel">

<t>DOTS over UDP adopts the data channel as specified in [I-D.teague-dots-protocol]
with modification or extension.</t>

</section>
</section>
<section anchor="congestion-control-considerations" title="Congestion Control Considerations">

<t>DOTS over UDP is subject to the congestion control discussion in <xref target="RFC5405"></xref>.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>[I-D.teague-dots-protocol] describes general DOTS protocol security
considerations. Additionally, all security considerations in
<xref target="I-D.rescorla-tls-dtls13"></xref> apply to DOTS over UDP.</t>

<t>When provisioning DOTS clients using EST, all considerations in <xref target="RFC7030"></xref> also
apply to DOTS over UDP.</t>

</section>
<section anchor="contributors" title="Contributors">

<t>Nik Teague
Verisign, Inc.
nteague@verisign.com</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC0768;
&RFC2119;
&RFC5405;
&RFC6520;
&RFC7030;
&RFC7540;
&I-D.ietf-dots-architecture;
&I-D.ietf-dots-requirements;
&I-D.ietf-tls-tls13;
&I-D.rescorla-tls-dtls13;


    </references>

    <references title='Informative References'>

&RFC7252;
&I-D.hamilton-quic-transport-protocol;
<reference anchor="CURVECP" target="https://curvecp.org/">
  <front>
    <title>CurveCP: Usable security for the Internet</title>
    <author initials="D." surname="Bernstein" fullname="Daniel J. Bernstein">
      <organization>University of Illinois at Chicago</organization>
    </author>
    <date year="2014"/>
  </front>
  <format type="HTML" target=""/>
</reference>


    </references>



  </back>
</rfc>

