<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
<rfc ipr="trust200902" category="std" docName="draft-jones-perc-dtls-id-00">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="yes"?>
<?rfc private=""?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<front>
<title abbrev="dtls-id in TLS and DTLS">Transporting the SDP attribute 'dtls-id' in TLS and DTLS</title>

<author initials="P." surname="Jones" fullname="Paul E. Jones">
<organization abbrev="Cisco Systems">Cisco Systems, Inc.</organization>
<address>
<postal>
<street>7025 Kit Creek Rd.</street>
<city>Research Triangle Park</city>
<code>27709</code>
<country>USA</country>
<region>North Carolina</region>
</postal>
<phone>+1 919 476 2048</phone>
<email>paulej@packetizer.com</email>
<uri></uri>
</address>
</author>
<author initials="N." surname="Ohlmeier" fullname="Nils H. Ohlmeier">
<organization>Mozilla</organization>
<address>
<postal>
<street></street>
<city></city>
<code></code>
<country></country>
<region></region>
</postal>
<phone>+1 408 659 6457</phone>
<email>nils@ohlmeier.org</email>
<uri></uri>
</address>
</author>
<date year="2017" month="March" day="13"/>

<area>Internet</area>
<workgroup></workgroup>
<keyword>PERC</keyword>
<keyword>SRTP</keyword>
<keyword>RTP</keyword>
<keyword>DTLS</keyword>
<keyword>DTLS-SRTP</keyword>
<keyword>DTLS tunnel</keyword>
<keyword>conferencing</keyword>
<keyword>security</keyword>


<abstract>
<t>This draft defines a new extension to carry the <spanx style="verb">dtls-id</spanx> value defined
for use in the Session Description Protocol within TLS and DTLS.
</t>
</abstract>


</front>

<middle>

<section anchor="introduction" title="Introduction">
<t>The Privacy-Enhanced RTP Conferencing (PERC) working group specified a
DTLS <xref target="RFC6347"/> tunneling mechanism <xref target="I-D.ietf-perc-dtls-tunnel"/> that enables
a media distributor to forward DTLS messages between an endpoint
and a key distributor.  In the process, the media distributor
is able to securely receive only the hop-by-hop keying material,
while the endpoints are able to securely receive both end-to-end and
hob-by-hop keying material.
</t>
<t>An open issue with the current design is how the key distributor
can determine which one of several conferences an endpoint is attempting to
join.  The only information that the key distributor receives via
the DTLS tunnel is the endpoint's certificate.  However, the same certificate
might be used to join several conferences in parallel, thus creating a
need for additional information.
</t>
<t><xref target="I-D.ietf-mmusic-dtls-sdp"/> defines an attribute in SDP <xref target="RFC4566"/> called
the <spanx style="verb">dlts-id</spanx>.  The <spanx style="verb">dtls-id</spanx> presented by the endpoint's in SDP will be
unique for each DTLS association established using the same certificate.
By signaling the certificate fingerprint and <spanx style="verb">dtls-id</spanx> in SDP, along with
including the same in the DTLS signaling sent to the key distributor, it would
be possible for the key distributor to unambiguously determine which
conference key the endpoint should receive.
</t>
</section>

<section anchor="conventions-used-in-this-document" title="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 <xref target="RFC2119"/> when they appear in ALL CAPS.  These words may
also appear in this document in lower case as plain English words,
absent their normative meanings.
</t>
<t>The terms key distributor, media distributor, endpoint,
conference, hop-by-hop keying material, and end-to-end keying material
used in this document are introduced in
<xref target="I-D.ietf-perc-private-media-framework"/>.
</t>
</section>

<section anchor="endpoint-procedures" title="Endpoint procedures">
<t>The endpoint MUST include the <spanx style="verb">dtls_id</spanx> DTLS extension in the <spanx style="verb">ClientHello</spanx>
message when establishing a DTLS tunnel in a PERC conference.  Likewise,
the <spanx style="verb">dtls-id</spanx> SDP attribute MUST be included in SDP sent by the endpoint
in both the offer and answer <xref target="RFC3264"/> messages as per
<xref target="I-D.ietf-mmusic-dtls-sdp"/>.
</t>
<t>When receiving a <spanx style="verb">dtls_id</spanx> value from the key distributor, the
client MUST check to ensure that value matches the <spanx style="verb">dtls-id</spanx> value
received in SDP.  If the values do not match, the endpoint MUST
consider any received keying material to be invalid and terminate the
DTLS association.
</t>
</section>

<section anchor="media-distributor-procedures" title="Media distributor procedures">
<t>The media distributor is not required to inspect the <spanx style="verb">dtls_id</spanx>
extension, as it merely forwards DTLS messages between the endpoint
and the key distributor.
</t>
</section>

<section anchor="key-distributor-procedures" title="Key distributor procedures">
<t>This draft assumes that when the endpoint inserts the <spanx style="verb">dtls-id</spanx> into
SDP, the information will be conveyed in some way to the key distributor.
The process through which the <spanx style="verb">dtls-id</spanx> in SDP is conveyed to
the key distributor is outside the scope of this document.
</t>
<t>The key distributor MUST extract the <spanx style="verb">dtls_id</spanx> value transmitted
in the <spanx style="verb">ClientHello</spanx> message and match that against <spanx style="verb">dtls-id</spanx> value the
endpoint transmitted via SDP.  If the values in SDP and the <spanx style="verb">ClientHello</spanx>
do not match, the DTLS association MUST be rejected.
</t>
<t>The key distributor MUST correlate the certificate fingerprint and
<spanx style="verb">dtls_id</spanx> received from endpoint's <spanx style="verb">ClientHello</spanx> message with the
corresponding values received from the SDP transmitted by the endpoint.  It
is through this correlation that the key distributor can be sure to
deliver the correct conference key to the endpoint.
</t>
<t>When sending the <spanx style="verb">ServerHello</spanx> message, the key distributor MUST
insert its own <spanx style="verb">dtls-id</spanx> value.  This value MUST also be conveyed back
to the client via SDP.
</t>
</section>

<section anchor="the-dtlsid-tls-extension" title="The dtls_id TLS extension">
<t>The <spanx style="verb">dtls_id</spanx> TLS extension may be used either with TLS <xref target="RFC5246"/> or
DTLS.  It carries only <spanx style="verb">dtls-id</spanx> value defined in
<xref target="I-D.ietf-mmusic-dtls-sdp"/> in the field called <spanx style="verb">dtls_id</spanx>.  The syntax
for the <spanx style="verb">dtls_id</spanx> extension is shown below.
</t>

<figure align="center"><artwork align="center">
    struct {
        opaque dtls_id&lt;20..255&gt;;
    } SdpDtlsIdData;
</artwork></figure>
</section>

<section anchor="iana-considerations" title="IANA Considerations">
<t>This document registers an extension in the TLS &quot;ExtensionType
Values&quot; registry established in <xref target="RFC5246"/>.  The extension
is called <spanx style="verb">dtls_id</spanx> and is assigned the code point TBD.  The
following addition is made to the registry.
</t>
<texttable>
<ttcol align="center">Extension</ttcol>
<ttcol align="center">Recommended</ttcol>
<ttcol align="center">TLS 1.3</ttcol>
<ttcol align="center">HelloRetryRequested</ttcol>

<c>dlts_id</c><c>Yes</c><c>Encrypted</c><c>Yes</c>
</texttable>
</section>

<section anchor="security-considerations" title="Security Considerations">
<t>The <spanx style="verb">dtls-id</spanx> value is a random value that has no personal identifiable
information associated with it.  Thus, the value does not expose such
information.  It also has no particular security properties in and
of itself, so being in plaintext in the <spanx style="verb">ClientHello</spanx> or <spanx style="verb">ServerHello</spanx> is
not viewed as a security concern.
</t>
<t>However, the value does have significance to the receiver, thus changes to
the <spanx style="verb">dtls-id</spanx> may result in unexpected behavior.  For example, if Alice
attempts to join a PERC-enabled conference and the <spanx style="verb">dtls_id</spanx> field is
modified in route to the key distributor, Alice may either fail
to receive the conference key or receive the wrong conference key.
However, since Alice will only be provided keys for conferences for which
she is authorized to join based on her client certificate, receiving the
wrong key will not compromise the security of the conference.  However,
receipt of the wrong key will deny Alice access to the plaintext of
media transmitted by other participants.  Additionally, if Alice transmits
media using the wrong conference key, the media will be undecipherable
by other conference participants.
</t>
<t>As prescribed in these procedures, if the <spanx style="verb">dtls_id</spanx> field transmitted from
the key distributor to Alice is modified, Alice will tear down the DTLS
association and fail to join the conference.  The result is a denial of
service for Alice, but not worse than when any other part of the DTLS
message is modified.
</t>
</section>

<section anchor="acknowledgments" title="Acknowledgments">
<t>The authors would like to thank Martin Thomson for discussing the idea and
providing some initial feedback before the draft was written.  We also
want to express our appreciation to Cullen Jennings for reviewing the
text and providing constructive input.
</t>
</section>

</middle>
<back>
<references title="Normative References">
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-dtls-sdp.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-perc-dtls-tunnel.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-perc-private-media-framework.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3264.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4566.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml"?>
</references>

</back>
</rfc>
