AVT Working Group                                                D. Wing
Internet-Draft                                             Cisco Systems
Intended status:  Standards Track                      February 15, 2008
Expires:  August 18, 2008


           Datagram TLS Secure RTP (DTLS-SRTP) Key Transport
               draft-wing-avt-dtls-srtp-key-transport-01

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 18, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2008).

Abstract

   The existing DTLS-SRTP specification allows SRTP keys to be
   established between a pair of SRTP endpoints.  However, when there
   are more than two participants in an RTP session, DTLS-SRTP is unable
   to provide a single key for all of the participants.  This existing
   limitation of DTLS-SRTP prevents deploying DTLS-SRTP in certain
   scenarios.

   This document describes an extension to DTLS-SRTP which transports



Wing                     Expires August 18, 2008                [Page 1]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   SRTP keying material from one DTLS-SRTP peer to another, so the same
   SRTP keying material can be used by multiple DTLS-SRTP peers.  This
   extension reduces (and often eliminates) the need to key each SRTP
   session individually, allowing deployment of several DTLS-SRTP
   scenarios.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Notational Conventions . . . . . . . . . . . . . . . . . . . .  3
   3.  Scenarios  . . . . . . . . . . . . . . . . . . . . . . . . . .  3
     3.1.  Point to Multipoint using the RFC 3550 mixer model . . . .  3
     3.2.  Point to Multipoint using Multicast  . . . . . . . . . . .  5
     3.3.  Point to Multipoint Using Video Switching MCUs . . . . . .  5
     3.4.  Voicemail Storage and Retrieval  . . . . . . . . . . . . .  7
   4.  Protocol Description . . . . . . . . . . . . . . . . . . . . .  8
     4.1.  key_transport extension  . . . . . . . . . . . . . . . . .  9
     4.2.  SRTP Key Transport Protocol  . . . . . . . . . . . . . . . 10
     4.3.  Key Transport SSRC and RTP SSRC Collisions . . . . . . . . 13
     4.4.  Fragmentation, Reassembly, and Retransmission  . . . . . . 13
   5.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 15
     6.1.  Group Policy when Joining/Leaving  . . . . . . . . . . . . 15
   7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 16
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 16
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 16
     9.2.  Informational References . . . . . . . . . . . . . . . . . 17
   Appendix A.  Changes . . . . . . . . . . . . . . . . . . . . . . . 17
     A.1.  Changes from -00 to -01  . . . . . . . . . . . . . . . . . 17
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 18
   Intellectual Property and Copyright Statements . . . . . . . . . . 19


















Wing                     Expires August 18, 2008                [Page 2]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


1.  Introduction

   Unique SRTP master keys can be established, in each direction, using
   DTLS-SRTP [I-D.ietf-avt-dtls-srtp].  Using DTLS, each peer
   contributes part of the keying material to generate the eventual SRTP
   master key.

   In some scenarios after the DTLS handshake has completed, it is
   desirable for one peer to change its SRTP key and to transmit SRTP
   packets using an SRTP key that was not derived from the DTLS key
   exchange.  These scenarios are described in Section 3.

   The extensions described in this document allow transporting an SRTP
   master key from one DTLS peer to the other.  Thus, DTLS Key Transport
   differs from normal DTLS-SRTP in that the SRTP master key is not
   derived from the TLS handshake.


2.  Notational Conventions

   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 [RFC2119].


3.  Scenarios

   DTLS Key Transport allows mixers and video switchers to avoid having
   to encrypt each packet multiple times under multiple SRTP keys.  DTLS
   Key Transport causes sharing of SRTP keys.

   Several SRTP scenarios that benefit from DTLS-SRTP Key Transport are
   described in the following sections, using terminology from RTP
   Topologies [RFC5117].

3.1.  Point to Multipoint using the RFC 3550 mixer model

   This RTP scenario is described in Section 3.4 of RTP Topologies
   [RFC5117].

   With DTLS-SRTP, this topology is computationally expensive for the
   video switcher because it has to encrypt the payload uniquely for
   each SRTP listener.  Additionally, the architecture of a typical
   mixer requires each listener's SRTP to be encrypted serially,
   incurring additional delay for each successive listener.  This is
   depicted below in Figure 1.





Wing                     Expires August 18, 2008                [Page 3]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


                +-------key=F-------+
                |                   |
                V               +-------+         +------------+
           +----+----+          |       +--key=C->+ listener 1 |
           | speaker +--key=A-->+       |         +------------+
           +---------+          |       |         +------------+
                                | mixer +--key=D->+ listener 2 |
           +---------+          |       |         +------------+
           | speaker +--key=B-->+       |         +------------+
           +----+----+          |       +--key=E->+ listener 3 |
                ^               +---+---+         +------------+
                |                   |
                +-------key=G-------+

      Figure 1: Point to Multipoint Mixer, without DTLS Key Transport

   With DTLS Key Transport, the mixer can maintain one outbound SRTP
   cryptographic context, and encrypt the SRTP once for all listeners.
   This is depicted below in Figure 2.

   In the following figure, "=" indicates sessions where DTLS-SRTP Key
   Transport is used, and "-" indicates where only DTLS-SRTP is
   necessary.  In this topology, only the listeners need support DTLS-
   SRTP Key Transport so that the switcher and the listeners can benefit
   from DTLS-SRTP Key Transport.  In this scenario with DTLS-SRTP Key
   Transport, the mixer assumes an additional role -- group's key server
   -- and provides a common group SRTP key ("C") to all of the
   listeners.  This group SRTP key is shared between all of the
   listeners.

                +=======key=C=======+
                |                   |
                V               +---+---+         +------------+
           +---------+          |       +==key=C=>+ listener 1 |
           | speaker +--key=A-->+       |         +------------+
           +---------+          |       |         +------------+
                                | mixer +==key=C=>+ listener 2 |
           +---------+          |       |         +------------+
           | speaker +--key=B-->+       |         +------------+
           +----+----+          |       +==key=C=>+ listener 3 |
                ^               +---+---+         +------------+
                |                   |
                +=======key=C=======+

       Figure 2: Point to Multipoint Mixer, with DTLS Key Transport

   The mixer is aware of listeners leaving or joining, and the mixer can
   rekey the remaining active listeners.



Wing                     Expires August 18, 2008                [Page 4]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


3.2.  Point to Multipoint using Multicast

   This RTP topology is described in Section 3.2 of RTP Topologies
   [RFC5117].

   With DTLS-SRTP, this scenario is not attainable because each listener
   has a unique SRTP key.  For this reason, [I-D.ietf-msec-gdoi-srtp]
   was developed by the MSEC working group.

   With DTLS-SRTP Key Transport, this scenario is attainable because the
   same key can be provided to multiple listeners, as depicted below in
   Figure 3.  This compares favorably with [I-D.ietf-msec-gdoi-srtp]
   when the group size is small enough that the speaker can perform key
   server functions (i.e., perform DTLS-SRTP Key Transport) for all of
   the listeners.

                                +-------+            +------------+
                               /         \==key=A===>+ listener 1 |
                              /           \          +------------+
        +---------+           | multicast |          +------------+
        | speaker +==key=A===>+  network  +==key=A==>+ listener 2 |
        +---------+           |           |          +------------+
                              \           /          +------------+
                               \         /===key=A==>+ listener 3 |
                                +-------+            +------------+

     Figure 3: Point to Multipoint using Multicast with Key Transport

      [[For future study:  could we express, in SDP, alternate DTLS-SRTP
      key servers to support large groups for this scenario, so that the
      speaker can be offloaded from DTLS-SRTP Key Transport duties?
      That alternate key server would need authorize new participants.
      This seems to begin stepping into GDOI territory, but how does a
      DTLS-SRTP endpoint know when it will join a large group and need
      GDOI code inside the DTLS-SRTP endpoint?  Ideally we would want to
      split the effort and protocols so that endpoint needs *no*
      additional code with really large groups.]]

3.3.  Point to Multipoint Using Video Switching MCUs

   This RTP topology is described in Section 3.5 of RTP Topologies
   [RFC5117].

   With DTLS-SRTP, this topology is computationally expensive for the
   video switcher because it has to encrypt the payload uniquely for
   each SRTP listener.  Additionally, the architecture of a typical
   video switcher requires each listener's SRTP to be encrypted
   serially, incurring additional delay for each successive listener.



Wing                     Expires August 18, 2008                [Page 5]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   This is depicted below in Figure 4.

   In the following figure, DTLS-SRTP Key Transport is used on all
   sessions and depicted by "=".  In this scenario, both the speakers
   and listeners must support DTLS-SRTP Key Transport so that the
   switcher and the listeners can benefit from DTLS-SRTP Key Transport.

               +-------key=F-------+
               |                   |
               V               +---+------+         +------------+
          +---------+          |          +==key=C=>+ listener 1 |
          | speaker +==key=A==>+selected  |         +------------+
          +---------+          |          |         +------------+
                               | switcher +==key=D=>+ listener 2 |
          +---------+          |          |         +------------+
          | speaker +==key=B==>+dropped   |         +------------+
          +----+----+          |          +==key=E=>+ listener 3 |
               ^               +---+------+         +------------+
               |                   |
               +-------key=G-------+

      Figure 4: Point to Multipoint Video Switching, without DTLS Key
                                 Transport

   With DTLS key transport, this becomes easier; in fact, the video
   switcher doesn't need to decrypt the SRTP at all, but just make its
   decision (select the stream or drop the stream) and transmit the SRTP
   packets to the listeners.  This is depicted below in Figure 5.























Wing                     Expires August 18, 2008                [Page 6]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


               +-------key=B-------+
               |                   |
               V               +---+------+         +------------+
          +----+----+          |          +==key=A=>+ listener 1 |
          | speaker +==key=A==>+selected  |         +------------+
          +---------+          |          |         +------------+
                               | switcher +==key=A=>+ listener 2 |
          +---------+          |          |         +------------+
          | speaker +==key=B==>+prev.spkr |         +------------+
          +---------+          |          +==key=A=>+ listener 3 |
               ^               +----------+         +------------+
               |                   |
               +-------key=A-------+

       Figure 5: Point to Multipoint Video Switching, with DTLS Key
                                 Transport

   The video switcher is aware of listeners leaving or joining.  The
   protocol described in this document allows the switcher to dictate,
   to the speaker, that the speaker use a new encryption key.  This
   allows the switcher to enforce security, based on the switcher's
   policy (Section 6.1).  This is done by the video switcher sending a
   DTLS "your_new_srtp_key" message.  The speaker will respond with a
   DTLS "new_srtp_key" message which echos the same key.  The
   "new_srtp_key" message is relayed, by the switcher, to each of the
   active listeners.

   When there are multiple speakers, as shown in Figure 5 above, each
   speaker transmits with his own SRTP key.  That SRTP key is derived
   from the DTLS handshake with the switcher.  Each speaker uses DTLS-
   SRTP Key Transport to signal the SSRC that it will use.

3.4.  Voicemail Storage and Retrieval

   With DTLS-SRTP, voicemail storage servers have to decrypt the SRTP
   when the message is recorded.  In some voicemail server
   architectures, the recorded message is re-encrypted, using a new key
   to protect the content while it is on disk.  Then, later, the
   voicemail is retrieved, which involves encrypting the message using
   SRTP again.  This is depicted below in Figure 6.  This SRTP
   decryption and encryption can create a significant computational load
   on a voicemail storage server.









Wing                     Expires August 18, 2008                [Page 7]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


                              +-----------+
         +---------+          |           |
         | speaker +--key=A-->| voicemail |
         +---------+          |  storage  |
                              |  server   |          +-----------+
                              |           +--key=B-->+ voicemail |
                              | (store    |          | retrieval |
                              | decrypted |          +-----------+
                              |  content) |
                              +-----------+

      Figure 6: Voicemail Storage and Retrieval without Key Transport

   DTLS-SRTP Key Transport removes the need for the voicemail storage
   server to decrypt the incoming SRTP and to re-encrypt upon message
   retrieval.  With DTLS-SRTP Key Transport, the voicemail storage
   server can store the speaker's DTLS-SRTP key along with the encrypted
   message (including RTP headers), and then use DTLS-SRTP Key Transport
   to communicate that key during voicemail retrieval.  This is depicted
   below in Figure 7.

   In the following figure, DTLS-SRTP Key Transport is used on all
   sessions and depicted by "=".  In this scenario, only the device
   performing the voicemail retrieval needs to implement DTLS-SRTP Key
   Transport to help offload SRTP processing from the voicemail storage
   server.

                              +-----------+
         +---------+          |           |
         | speaker +--key=A-->| voicemail |
         +---------+          |  storage  |
                              |  server   |          +-----------+
                              |           +==key=A==>+ voicemail |
                              | (store    |          | retrieval |
                              | encrypted |          +-----------+
                              | content & |
                              | SRTP key  |
                              +-----------+

       Figure 7: Voicemail Storage and Retrieval with Key Transport


4.  Protocol Description

   This section describes the extension to the DTLS protocol for DTLS-
   SRTP key transport, which allows securely communicating the SRTP key
   to the DTLS peer.




Wing                     Expires August 18, 2008                [Page 8]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


4.1.  key_transport extension

   This document adds a new negotiated extension called "key_transport",
   which MUST only be requested in conjunction with the "use_srtp"
   extension (Section 3.2 of [I-D.ietf-avt-dtls-srtp]).  The DTLS server
   indicates its support for key_transport by including key_transport in
   its ServerHello message.  If a DTLS client includes key_transport in
   its ClientHello, but does not receive key_transport in the
   ServerHello, the DTLS client MUST NOT send DTLS packets with the
   srtp_key_transport content-type.

   Support for the DTLS Key Transport extension is indicated in SDP with
   the "srtp-kt" attribute.  Advertising support for the extension is
   necessary in SDP because in some cases it is required to establish an
   SRTP call.  For example, a mixer may be able to only support SRTP
   listeners if those listeners implement DTLS Key Transport (because it
   lacks the CPU cycles necessary to encrypt SRTP uniquely for each
   listener).

   A message flow showing a DTLS client and DTLS server using the
   key_transport extension

        Client                                               Server

        ClientHello + use_srtp + key_transport
                                     -------->
                             ServerHello + use_srtp + key_transport
                                                       Certificate*
                                                 ServerKeyExchange*
                                                CertificateRequest*
                                     <--------      ServerHelloDone
        Certificate*
        ClientKeyExchange
        CertificateVerify*
        [ChangeCipherSpec]
        Finished                     -------->
                                                 [ChangeCipherSpec]
                                     <--------             Finished
        SRTP packets                 <------->      SRTP packets

                     Figure 8: Handshake Message Flow

   After successful negotiation of the key_transport extension, the DTLS
   client and server MAY exchange SRTP packets, encrypted using the KDF
   described in [I-D.ietf-avt-dtls-srtp].  This is normal and expected,
   even if Key Transport was negotiated by both sides, as neither side
   may (yet) have a need to alter the SRTP key.  However, it is also
   possible that one (or both) peers will immediately send a



Wing                     Expires August 18, 2008                [Page 9]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   new_srtp_key message before sending any SRTP.

4.2.  SRTP Key Transport Protocol

   A new protocol is defined, called the srtp_key_transport protocol
   which uses srtp_key_transport content-type which consists of the
   following message types:

   new_srtp_key_request:  request that the DTLS peer choose a new key.
      Valid responses are new_srtp_key and new_srtp_key_error.

   your_new_srtp_key:  Dictates a new SRTP key for the peer to use when
      the peer transmits its SRTP packets.

   new_srtp_key:  contains the new SRTP keying material.  This message
      is sent by a DTLS endpoint that wants to change its SRTP key.
      This does not change any cryptographic parameters (a new DTLS
      handshake is necessary for that), but only the DTLS key for the
      associated SRTP session.  This message includes the SSRC that will
      be used for this key, which allows listeners to establish one SRTP
      crypto-context per speaker (necessary for the video switching
      scenario).  The key chosen MUST be cryptographically random
      [RFC4086].

   new_key_activate:  indicates receiver is prepared to receive SRTP
      packets encrypted with the new key.

   delete_srtp_key:  indicates the security association related to this
      key can be deleted.

   new_srtp_key_failure:  indicates a failure.

   At any time, the DTLS client or DTLS server MAY send a key_transport
   message, as shown in Figure 9.  The sender of the new_srtp_key
   message MAY immediately start transmitting SRTP packets with this new
   key.  However, to account for loss of the new_srtp_key message it is
   RECOMMENDED that the sender wait before changing to the new SRTP key
   until it receives the new_key_activate message or it times out
   waiting for the new_key_activate_message.  The duration of this
   timeout may vary depending on the sensitivity of the content (e.g., 1
   second or 10 seconds).  In any case, the new_srtp_key message is
   retransmitted until acknowledged by receipt of a new_key_activate
   message.








Wing                     Expires August 18, 2008               [Page 10]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


        Client / Server                             Server / Client

        [new_srtp_key_request]        -------->
                                     <--------         new_srtp_key
        new_srtp_key_activiate        -------->

                      Figure 9: New Key Message Flow

   The following figure shows the state machine for the protocol.

                   receive new_srtp_key_request from peer
                      or decide to choose new SRTP key
                                  |
                                  |
             send                 V
             new_srtp_key  +---------------+    timeout
                 +---------| Communicate   |--------+
                 |         |     Key       |        |
                 +-------->|               |        |
                           +---------------+        |
                             |           ^          |
                  receive    |           |   +----------------+
             new_key_activate|           +---| send SRTP using|
                             |               |  new SRTP key  |
                     +----------------+      +----------------+
                     | send SRTP using|
                     |  new SRTP key  |
                     +----------------+
                             |
                             V
                            done

              Figure 10: Key Transport protocol state machine

   Using the syntax described in TLS [RFC4346], the following structures
   are used:

       enum {
          new_srtp_key_request(0),
          your_new_srtp_key(1),
          new_srtp_key(2),
          new_srtp_key_activate(3),
          delete_srtp_key(4),
          new_srtp_key_failure(128),
          (255)
       } SRTPKeyTransportType;

       struct {



Wing                     Expires August 18, 2008               [Page 11]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


          SRTPKeyTransportType keytrans_type;
          uint24 length;
          uint16 message_seq;
          uint24 fragment_offset;
          uint24 fragment_length;
          select (SRTPKeyTransportType) {
             case new_srtp_key_request:         NewSRTPKeyRequest;
             case your_new_srtp_key:            YourNewSRTPKey;
             case new_srtp_key:                 NewSRTPKey;
             case new_srtp_key_activate:        NewSRTPKeyActivate;
             case delete_srtp_key:              DeleteSRTPKey;
             case new_srtp_key_failure:         NewSRTPKeyFailure;
           };
       } KeyTransport;

       struct {
           uint  random<64>;           // additional entropy for peer
       } NewSRTPKeyRequest;

       struct {
           uint32 ssrc;                // SSRC used for this key
           uint   key<16..32>;         // The last change_cipher_spec
           uint   auth_tag<4..10>      // decides the length of key
                                       // and auth_tag
           uint  random<64>;           // additional entropy for peer
       } NewSRTPKey;

       struct {
           uint   key<16..32>;         // The last change_cipher_spec
           uint   auth_tag<4..10>      // decides the length of key
                                       // and auth_tag
       } YourNewSRTPKey;

       struct {
           uint  random<64>;           // additional entropy for peer
       } NewSRTPKeyActivate;

       struct {
           uint32 ssrc;                // SSRC used for this key
       } DeleteSRTPKey;

       struct { } NewSRTPKeyFailure;

                        Figure 11: Data Structures







Wing                     Expires August 18, 2008               [Page 12]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


4.3.  Key Transport SSRC and RTP SSRC Collisions

   Per [RFC3550], if an RTP source notices an RTP SSRC collision, it is
   required to change its SSRC.  If it has negotiated support for DTLS-
   SRTP Key Transport, it then MUST also send a new_srtp_key message
   indicating the new SSRC.  As part of this procedure, it does not need
   to also change its SRTP key.

   The communication of the SSRC used for each key is necessary if there
   are multiple speakers in the video switching scenario.  However,
   because a speaker is not able to determine if their audio or their
   video is being switched, a speaker MUST always adhere indicate a
   change in SSRC by following the procedure in this section for any
   SRTP stream (audio, video, or other).

4.4.  Fragmentation, Reassembly, and Retransmission

   Much like the DTLS handshake itself, this extension also needs to
   handle fragmentation and reassembly (to send a large key) and
   retransmission (to account for packet loss).  Using the same
   technique as DTLS's handshake, the message_seq, fragment_offset,
   fragment_length are used.

   When transmitting the key transport message, the sender divides the
   message into a series of N contiguous data ranges.  These ranges MUST
   NOT be larger than the maximum handshake fragment size and MUST
   jointly contain the entire key transport message.  The ranges SHOULD
   NOT overlap.  The sender then creates N key transport messages, all
   with the same message_seq value as the original key transport
   message.  Each new message is labelled with the fragment_offset (the
   number of bytes contained in previous fragments) and the
   fragment_length (the length of this fragment).  The length field in
   all messages is the same as the length field of the original message.
   An unfragmented message is a degenerate case with fragment_offset=0
   and fragment_length=length.

   When a DTLS implementation receives a key transport message fragment,
   it MUST buffer it until it has the entire key transport message.
   DTLS implementations MUST be able to handle overlapping fragment
   ranges.  This allows senders to retransmit key transport messages
   with smaller fragment sizes during path MTU discovery.










Wing                     Expires August 18, 2008               [Page 13]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


5.  Examples

   The following example shows how Key Transport would be requested in
   an offer, using "a=dtls-srtp-kt".

         v=0
         o=- 25678 753849 IN IP4 192.0.2.1
         s=
         c=IN IP4 192.0.2.1
         t=0 0
         m=audio 53456 UDP/TLS/RTP/SAVP 0
         a=fingerprint:SHA-1 \
           4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB
         a=dtls-srtp-kt

       Figure 12: Simple SDP offer showing Key Transport is required

   Using the SDP syntax described in
   [I-D.ietf-mmusic-sdp-capability-negotiation], the following figure
   shows an offerer that requires DTLS Key Transport in order to set up
   this call as an SRTP call, otherwise it can set up this call as an
   RTP call.  This is indicated by the ",2" on the "a=pcfg" line.  If
   the answerer does not understand "a=dtls-srtp-kt" but does understand
   DTLS-SRTP and [I-D.ietf-mmusic-sdp-capability-negotiation], this can
   cannot be established using DTLS-SRTP; however, it can be established
   using RTP.

         v=0
         o=- 25678 753849 IN IP4 192.0.2.1
         s=
         c=IN IP4 192.0.2.1
         t=0 0
         m=audio 53456 RTP/AVP 0
         a=tcap:1 UDP/TLS/RTP/SAVP
         a=acap:1 fingerprint:SHA-1 \
           4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB
         a=acap:2 dtls-srtp-kt
         a=pcfg:1 t=1 a=1,2

      Figure 13: Example SDP offer showing Key Transport is required











Wing                     Expires August 18, 2008               [Page 14]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   Using the SDP syntax described in
   [I-D.ietf-mmusic-sdp-capability-negotiation], the following figure
   shows an offerer that indicates support for DTLS Key Transport but
   does not require DTLS Key Transport in order to set up this call as
   an SRTP call.  This is indicated by the ",[2]" on the "a=pcfg" line.
   If the answerer does not understand "a=dtls-srtp-kt" but does
   understand DTLS-SRTP and
   [I-D.ietf-mmusic-sdp-capability-negotiation], this call can still be
   established using DTLS-SRTP.

         v=0
         o=- 25678 753849 IN IP4 192.0.2.1
         s=
         c=IN IP4 192.0.2.1
         t=0 0
         m=audio 53456 RTP/AVP 0
         a=tcap:1 UDP/TLS/RTP/SAVP
         a=acap:1 fingerprint:SHA-1 \
             4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB
         a=acap:2 dtls-srtp-kt
         a=pcfg:1 t=1 a=1,[2]

      Figure 14: Example SDP offer showing Key Transport is optional


6.  Security Considerations

   In the point-to-multipoint scenario, Section 3.1, all of the
   listeners know the key being used by the mixer.  Any of those
   listeners could create SRTP packets that are encrypted with this same
   key, and send those SRTP packets to other listeners.  In order to
   reduce the vulnerability to this threat, it is RECOMMENDED that the
   source transport address of received SRTP packets be discarded if
   they do not match the source transport address of the associated
   DTLS-SRTP session.  Additionally, the network SHOULD prevent IP
   address spoofing [RFC2827].

6.1.  Group Policy when Joining/Leaving

   When sharing SRTP keys with several listeners, it is imperative that
   the SRTP is changed when a new listener is added or a listener is
   removed.  This is because a legitimate listener should only be able
   to decrypt the SRTP stream while he is listening; he should not be
   able to decrypt the SRTP stream prior to joining the conference or
   after leaving the conference.  Failing to change the key when a
   listener joins (or leaves) allows a listener to decrypt SRTP traffic
   prior to (or after) they are authorized participants in the
   conference.



Wing                     Expires August 18, 2008               [Page 15]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   Policies for a specific user's access to a conference may be
   different from conference to conference.  For example, a company-
   internal event announcing promotions might be accessible to all
   employees and have no need for re-keying when listeners join or leave
   the conference.  As another example, a conference where a job
   candidate is interviewed should be rekeyed when the job candidate
   joins the conference and again when the job candidate leaves the
   conference.

   The protocol described in this document allows whichever policy is
   needed for a particular situation.  The protocol itself does not
   enforce a certain policy; that is, the protocol itself does not
   ensure the SRTP key is changed when a listener leaves (or joins) the
   conference.


7.  Acknowledgements

   Thanks to David McGrew for his improvements to this document and to
   the underlying protocol.  Thanks to Brian Weis, Sheela Rowles, and
   Mark Baugher for suggesting how GDOI-SRTP's key management could be
   used by DTLS-SRTP; these suggestions have been incorporated into
   DTLS-SRTP Key Transport.


8.  IANA Considerations

   [[This section will be completed in a future version of this
   document.]]

   To do:

   o  Register new SDP attribute "dtls-srtp-kt"

   o  new TLS content-type "key_transport" (26?)


9.  References

9.1.  Normative References

   [I-D.ietf-avt-dtls-srtp]
              McGrew, D. and E. Rescorla, "Datagram Transport Layer
              Security (DTLS) Extension to Establish Keys for  Secure
              Real-time Transport Protocol (SRTP)",
              draft-ietf-avt-dtls-srtp-01 (work in progress),
              November 2007.




Wing                     Expires August 18, 2008               [Page 16]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4346]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.1", RFC 4346, April 2006.

   [RFC2827]  Ferguson, P. and D. Senie, "Network Ingress Filtering:
              Defeating Denial of Service Attacks which employ IP Source
              Address Spoofing", BCP 38, RFC 2827, May 2000.

   [I-D.ietf-mmusic-sdp-capability-negotiation]
              Andreasen, F., "SDP Capability Negotiation",
              draft-ietf-mmusic-sdp-capability-negotiation-08 (work in
              progress), December 2007.

9.2.  Informational References

   [RFC5117]  Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117,
              January 2008.

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, July 2003.

   [RFC4086]  Eastlake, D., Schiller, J., and S. Crocker, "Randomness
              Requirements for Security", BCP 106, RFC 4086, June 2005.

   [I-D.ietf-msec-gdoi-srtp]
              Baugher, M., Rueegsegger, A., and S. Rowles, "GDOI Key
              Establishment for the SRTP Data Security Protocol",
              draft-ietf-msec-gdoi-srtp-01 (work in progress),
              December 2007.


Appendix A.  Changes

   [[Note to RFC Editor:  Please remove this section prior to
   publication]]

A.1.  Changes from -00 to -01

   o  more closely aligned with RTP Topologies [RFC5117]

   o  added multicast scenario

   o  added voicemail storage/retrieval scenario





Wing                     Expires August 18, 2008               [Page 17]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


   o  added delete_srtp_key

   o  added your_new_srtp_key

   o  aligned SDP for DTLS-SRTP with draft-ietf-mmusic-sdp-dtls-00

   o  key change rules are now discussed in Security Considerations


Author's Address

   Dan Wing
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA  95134
   USA

   Email:  dwing@cisco.com

































Wing                     Expires August 18, 2008               [Page 18]


Internet-Draft           DTLS-SRTP Key Transport           February 2008


Full Copyright Statement

   Copyright (C) The IETF Trust (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgments

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).  This document was produced
   using xml2rfc v1.33pre6 (of http://xml.resource.org/) from a source
   in RFC-2629 XML format.



Wing                     Expires August 18, 2008               [Page 19]