<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.3 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-davis-mmusic-srtp-assurance-02" category="std" consensus="true" submissionType="IETF" updates="4568" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="SRTP Assurance">Signaling Additional SRTP Context information via SDP</title>
    <seriesInfo name="Internet-Draft" value="draft-davis-mmusic-srtp-assurance-02"/>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="E." surname="Valverde" fullname="Esteban Valverde">
      <organization>Cisco Systems</organization>
      <address>
        <email>jovalver@cisco.com</email>
      </address>
    </author>
    <author initials="G." surname="Salgueiro" fullname="Gonzalo Salgueiro">
      <organization>Cisco Systems</organization>
      <address>
        <email>gsalguei@cisco.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>mmusic</workgroup>
    <abstract>
      <?line 56?>
<t>This document specifies additional cryptographic attributes for signaling additional Secure Real-time Transport Protocol (SRTP) cryptographic context information via the Session Description Protocol (SDP)
in alongside those defined by RFC4568.</t>
      <t>The SDP extension defined in this document address situations where the receiver needs to quickly and robustly synchronize with a given sender.
The mechanism also enhances SRTP operation in cases where there is a risk of losing sender-receiver synchronization.</t>
    </abstract>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="discussion" removeInRFC="true">
        <name>Discussion Venues</name>
        <t>Source for this draft and an issue tracker can be found at https://github.com/kyzer-davis/srtp-assurance-rfc-draft.</t>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>
            <t>Better define that the tags must match #16</t>
          </li>
          <li>
            <t>Revise ANBF #15</t>
          </li>
          <li>
            <t>Handling and Signaling Unknown Values #18</t>
          </li>
          <li>
            <t>Cite default behavior of underlying RFCs if value is unknown/omitted #17</t>
          </li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>
            <t>Change contact name from IESG to IETF in IANA Considerations #2</t>
          </li>
          <li>
            <t>Discuss RFC4568 "Late Joiner" in problem statement: #3</t>
          </li>
          <li>
            <t>Split Serial forking scenario into its own section #4</t>
          </li>
          <li>
            <t>Add MIKEY considerations to Protocol Design section #6</t>
          </li>
          <li>
            <t>Change doc title #7</t>
          </li>
          <li>
            <t>Add SEQ abbreviation earlier #8</t>
          </li>
          <li>
            <t>Discuss why this can't be a RTP Header Extension #11</t>
          </li>
          <li>
            <t>Add Appendix further discussing why SDP Security Session Parameters extension not used #5</t>
          </li>
          <li>
            <t>Method to Convey Multiple SSRCs for a given stream #1</t>
          </li>
          <li>
            <t>Discuss why SEQ is signaled in the SDP #9</t>
          </li>
        </ul>
      </section>
      <section anchor="Problem">
        <name>Problem Statement</name>
        <t>While <xref target="RFC4568"/> provides most of the information required to instantiate an SRTP cryptographic context for RTP Packets, 
the state of a few crucial items in the SRTP cryptographic context are missing.
One such item is the Rollover Counter (ROC) defined by Section 3.2.1 <xref target="RFC3711"/>
which is not signaled in any packet across the wire and shared between applications.</t>
        <t>The ROC is one item that is used to create the SRTP Packet Index along with the the <xref target="RFC3550"/> transmitted sequence numbers (SEQ) for a given synchronization sources (SSRC).
The Packet index is integral to the encryption, decryption and authentication process of SRTP key streams.
Failure to synchronize the value properly at any point in the SRTP media exchange leads to encryption or decryption failures, degraded user experience 
and at cross-vendor interoperability issues with many hours of engineering time spent debugging a value that is never negotiated on the wire 
(and oftentimes not even logged in application logs.)</t>
        <t>The current method of ROC handling is to instantiate a new media stream's cryptographic context at 0 as per Section 3.3.1 of <xref target="RFC3711"/>. 
Then track the state ROC for a given cryptographic context as the time continues on and the stream progresses.</t>
        <t><xref target="RFC4568"/>, states 'there is no concept of a "late joiner" in SRTP security descriptions' as the main reason for not conveying the ROC, SSRC, or SEQ via the key management protocol but as one will see below; this argument is not true in practice.</t>
        <t>When joining ongoing streams, resuming held/transferred streams, or devices without embedded application logic for clustering/high availability where a given cryptographic context is resumed; 
without any explicit signaling about the ROC state, devices must make an educated guess as defined by Section 3.3.1 of <xref target="RFC3711"/>.
The method specially estimates the received ROC by calculating ROC-1, ROC, ROC+1 to see which performs a successful decrypt.
While this may work on paper, this process usually only done at the initial instantiation of a cryptographic context rather than at later points later during the session.
Instead many applications take the easy route and set the value at 0 as if this is a new stream.
While technically true from that receivers perspective, the sender of this stream may be encrypting packets with a ROC greater than 0.
Further this does not cover scenarios where the ROC is greater than +1.</t>
        <t>Where possible the ROC state (and the rest of the cryptographic context) is usually synced across clustered devices or high availability pairs via proprietary methods rather than open standards.</t>
        <t>These problems detailed technically above lead to a few very common scenarios where the ROC may become out of sync. 
These are are briefly detailed below with the focus on the ROC Value.</t>
        <t>Joining an ongoing session:</t>
        <ul spacing="compact">
          <li>
            <t>When a receiver joins an ongoing session, such as a broadcast conference, there is no signaling method which can quickly allow the new participant to know the state of the ROC assuming the state of the stream is shared across all participants.</t>
          </li>
        </ul>
        <t>Hold/Resume, Transfer Scenarios:</t>
        <ul spacing="compact">
          <li>
            <t>A session is created between sender A and receiver B. ROC is instantiated at 0 normally and continues as expected.</t>
          </li>
          <li>
            <t>At some point the receiver is put on hold while the sender is connected to some other location such as music on hold or another party altogether.</t>
          </li>
          <li>
            <t>At some future point the receiver is reconnected to the sender and the original session is resumed.</t>
          </li>
          <li>
            <t>The sender may re-assume the original cryptographic context rather rather than create one net new.</t>
          </li>
          <li>
            <t>Here if the sender starts the stream from the last observed sequence number the receiver observed the ROC will be in sync.</t>
          </li>
          <li>
            <t>However there are scenarios where the sender may have been transmitting packets on the previous cryptographic context and if a ROC increment occurred; the receiver would never know. This can lead to problems when the streams are reconnected as the ROC is now out of sync between both parties.</t>
          </li>
          <li>
            <t>Further, a sender may be transferred to some upstream device transparently to them. If the sender does not reset their cryptographic context that new receiver will now be out of sync with possible ROC values.</t>
          </li>
        </ul>
        <t>Serial Forking Case:</t>
        <ul spacing="compact">
          <li>
            <t><xref target="RFC4568"/> itself cites a problematic scenario in their own Appendix A, Scenario B, Problem 3 where a ROC out of sync scenario could occur.</t>
          </li>
          <li>
            <t>The proposed solution for problem 3 involves a method to convey the ROC however known the problem; the authors still did not include this in the base SDP Security specification.</t>
          </li>
        </ul>
        <t>Application Failover (without stateful syncs):</t>
        <ul spacing="compact">
          <li>
            <t>In this scenario a cryptographic context was was created with Device A and B of a high availability pair.</t>
          </li>
          <li>
            <t>An SRTP stream was created and ROC of 0 was created and media streamed from the source towards Device A.</t>
          </li>
          <li>
            <t>Time continues and the sequence wraps from 65535 to 0 and the ROC is incremented to 1.</t>
          </li>
          <li>
            <t>Both the sender and device A are tracking this locally and the encrypt/decrypt process proceeds normally.</t>
          </li>
          <li>
            <t>Unfortunate network conditions arise and Device B must assume sessions of Device A transparently.</t>
          </li>
          <li>
            <t>Without any proprietary syncing logic between Device A and B which disclose the state of the ROC, Device B will likely instantiate the ROC at 0.</t>
          </li>
          <li>
            <t>Alternatively Device B may try to renegotiate the stream over the desired signaling protocol however this does not ensure the remote sender will change their cryptographic context and reset the ROC to 0.</t>
          </li>
          <li>
            <t>The transparent nature of the upstream failover means the local application will likely proceed using ROC 1 while upstream receiver has no method of knowing ROC 1 is the current value.</t>
          </li>
        </ul>
        <t>Secure SIPREC Recording:</t>
        <ul spacing="compact">
          <li>
            <t>If a SIPREC recorder is brought into recording an ongoing session through some form of transfer or on-demand recording solution the ROC may have incremented.</t>
          </li>
          <li>
            <t>Without an SDP mechanism to share this information the SIPREC will be unaware of the full SRTP context required to ensure proper decrypt of media streams being monitored.</t>
          </li>
        </ul>
        <t>Improper SRTP context resets:</t>
        <ul spacing="compact">
          <li>
            <t>As defined by Section 3.3.1 of <xref target="RFC3711"/> an SRTP re-key <bcp14>MUST NOT</bcp14> reset the ROC within SRTP Cryptographic context.</t>
          </li>
          <li>
            <t>However, some applications may incorrectly use the re-key event as a trigger to reset the ROC leading to out-of-sync encrypt/decrypt operations.</t>
          </li>
        </ul>
        <t>Out of Sync Sliding Windows / Sequence Numbers:</t>
        <ul spacing="compact">
          <li>
            <t>There is corner case situation where two devices communicating via a Back to Back User Agent (B2BUA) which is performing RTP-SRTP inter-working.</t>
          </li>
          <li>
            <t>In this scenario the B2BUA is also a session border controller (SBC) tasked with topology abstraction. That is, the signaling itself is abstracted from both parties.</t>
          </li>
          <li>
            <t>In this scenario a hold/resume where a sequence rolls can not only cause problems with the ROC; but can also cause sliding window issues.</t>
          </li>
          <li>
            <t>To be more specific, assume that both parties did have access to the cryptographic context and resumed the old ROC value after the hold thus ROC is not out of sync.</t>
          </li>
          <li>
            <t>What should the sliding window and sequence be set to in this scenario?</t>
          </li>
          <li>
            <t>The post-hold call could in theory have a problem where the sequence number of received packets is lower than what was originally observed before the hold.</t>
          </li>
          <li>
            <t>Thus the sliding window would drop packets until the sequence number gets back to the last known sequence and the sliding window advances.</t>
          </li>
          <li>
            <t>Advertising the Sequence in some capacity to reinitialize the sliding window (along with advertising the ROC) can ensure a remote application can properly re-instantiate the cryptographic context in this scenario.</t>
          </li>
        </ul>
        <t>This is a problem that other SRTP Key Management protocols (MIKEY, DTLS-SRTP, EKT-SRTP) have solved but SDP Security has lagged behind in solution parity. 
For a quick comparison of all SRTP Key Management negotiations refer to <xref target="RFC7201"/> and <xref target="RFC5479"/>.</t>
      </section>
      <section anchor="prevWork">
        <name>Previous Solutions</name>
        <t>As per RFC3711, "Receivers joining an on-going session <bcp14>MUST</bcp14> be given the current ROC value using out-of-band signaling such as key-management signaling."
<xref target="RFC4771"/> aimed to solve the problem however this solution has a few technical shortcomings detailed below.</t>
        <t>First, this specifies the use of Multimedia Internet KEYing (MIKEY) defined by <xref target="RFC3830"/> as the out-of-band signaling method. 
A proper MIKEY implementation requires more overhead than is needed to convey and solve this problem.
By selecting MIKEY as the out-of-band signaling method the authors may have inadvertently inhibited significant adoption by the industry.</t>
        <t>Second, <xref target="RFC4771"/> also transforms the SRTP Packet to include the four byte value after the encrypted payload and before an optional authentication tag. 
This data about the SRTP context is unencrypted on the wire and not covered by newer SRTP encryption protocols such as <xref target="RFC6904"/> and <xref target="RFC9335"/>.
Furthermore this makes the approach incompatible with AEAD SRTP Cipher Suites which state that trimming/truncating the authentication tag weakens the security of the protocol in Section 13.2 of <xref target="RFC7714"/>.</t>
        <t>Third, this is not in line with the standard method of RTP Packet modifications. 
The proposal would have benefited greatly from being an RTP Header Extension rather than a value appended after payload. 
But even an RTP header extension proves problematic in where modern SRTP encryption such as Cryptex defined by <xref target="RFC9335"/> are applied. 
That is, the ROC is a required input to decrypt the RTP packet contents. It does not make sense to convey this data as an RTP Header Extension 
obfuscated by the very encryption it is required to decrypt.</t>
        <t>Lastly, there is no defined method for applications defined for applications to advertise the usage of this protocol via any signaling methods.</t>
        <t><xref target="RFC5159"/> also defined some SDP attributes namely the "a=SRTPROCTxRate" attribute however this does not cover other important values in the SRTP Cryptographic context and has not seen widespread implementation.</t>
        <t><xref target="RFC8870"/> solves the problem for DTLS-SRTP <xref target="RFC5763"/>/<xref target="RFC5764"/> implementations.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="design">
      <name>Protocol Design</name>
      <t>A few points of note are below about this specifications relationship to other SRTP Key Management protocols or SRTP protocols as to leave no ambiguity.</t>
      <dl newline="true">
        <dt>Session Description Protocol (SDP) Security Descriptions for Media Streams:</dt>
        <dd>
          <t>The authors have chosen to avoid modifying RFC4568 a=crypto offers as to avoid backwards compatibility issues with a non-versioned protocol. 
Instead this specification adds to what is defined in SDP Security Framework <xref target="RFC4568"/> by allowing applications
to explicitly negotiate additional items from the cryptographic context such as the packet index ingredients: ROC, SSRC and Sequence Number via a new SDP Attribute.
By coupling this information with the applicable "a=crypto" offers; a receiving application can properly instantiate 
an SRTP cryptographic context at the start of a session, later in a session, after session modification or when joining an ongoing session.</t>
        </dd>
        <dt>Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP):</dt>
        <dd>
          <t>This specifications makes no attempt to be compatible with the Key Management Extension for SDP "a=key-mgmt" defined by <xref target="RFC4567"/></t>
        </dd>
        <dt>ZRTP: Media Path Key Agreement for Unicast Secure RTP:</dt>
        <dd>
          <t>This specifications makes no attempt to be compatible with the Key Management via SDP for ZRTP "a=zrtp-hash" defined by <xref target="RFC6189"/>.</t>
        </dd>
        <dt>MIKEY:</dt>
        <dd>
          <t>This specifications makes no attempt to be compatible with the SRTP Key Management via MIKEY <xref target="RFC3830"/>.</t>
        </dd>
        <dt>DTLS-SRTP, EKT-SRTP, Privacy Enhanced Conferencing items (PERC):</dt>
        <dd>
          <t>All DTLS-SRTP items including Privacy Enhanced Conferencing items (PERC) [ <xref target="RFC8723"/> and <xref target="RFC8871"/> ] are out of scope for the purposes of this specification.</t>
        </dd>
        <dt>Secure Real Time Control Protocol (SRTCP):</dt>
        <dd>
          <t>This specification is  not required by SRTCP since the packet index is carried within the SRTCP packet and does not need an out-of-band equivalent.</t>
        </dd>
        <dt>Source-Specific Media Attributes in the Session Description Protocol (SDP):</dt>
        <dd>
          <t>The authors of this specification vetted <xref target="RFC5576"/> SSRC Attribute "a=ssrc" but felt that it would require too much modification and additions to the SSRC Attribute
specification to allow unknown SSRC values and the other information which needs to be conveyed.
Further, requiring implementation of the core SSRC Attribute RFC could pose as a barrier entry and separating the two into different SDP Attributes is the better option.
An implementation <bcp14>SHOULD NOT</bcp14> send RFC5576 SSRC Attributes alongside SRTP Context SSRC Attributes. 
If both are present in SDP, a receiver <bcp14>SHOULD</bcp14> utilize prioritize the SRTP Context Attributes over SSRC Attributes since these attributes will provide better SRTP cryptographic context initialization.</t>
        </dd>
        <dt>Completely Encrypting RTP Header Extensions and Contributing Sources:</dt>
        <dd>
          <t>SRTP Context is compatible with <xref target="RFC9335"/> "a=cryptex" media and session level attribute.</t>
        </dd>
      </dl>
      <section anchor="syntax">
        <name>Generic SRTP Context Syntax</name>
        <t>This specification introduces a new SRTP Context Attribute defined as "a=srtpctx".</t>
        <t>The SRTP Context syntax utilizes standard attribute key-value pairs to convey data.
The implementation's goal is extendable allowing for additional vendor specific key-value pairs alongside the ones defined in this document or room for future specifications to add additional key-value pairs.</t>
        <t>The SRTP context can convey one or more key-value pair lists as per the following rules:</t>
        <ul spacing="compact">
          <li>
            <t>Multiple key-value pairs are separated by semicolons to create a single list.</t>
          </li>
          <li>
            <t>Individual key names <bcp14>MUST</bcp14> be unique within a given list.</t>
          </li>
          <li>
            <t>Two or more lists of separate key-value pair groupings can be conveyed by wrapping a list in parenthesis and separating them with a comma.</t>
          </li>
          <li>
            <t>This method of parenthesis grouping <bcp14>MUST NOT</bcp14> be used when there is a single list of key-value pairs (with unique key names.)</t>
          </li>
          <li>
            <t>Multiple of the same key name <bcp14>MAY</bcp14> exist within different key-value list groupings.</t>
          </li>
          <li>
            <t>Further key-value list groupings may contain more or less keys-value pairs than other groupings.</t>
          </li>
          <li>
            <t>A given Key's value does not need to be unique within a given list or across list groupings.</t>
          </li>
          <li>
            <t>The final list member of a given single key-value list or key-value list grouping <bcp14>MUST NOT</bcp14> feature a trailing semicolon or comma.</t>
          </li>
        </ul>
        <t>The first line of <xref target="sampleBase"/> details a single list, without parenthesis, which conveys two unique key-value pairs.
The second line of <xref target="sampleBase"/> details a list of multiple key-value pair groupings where the key named "key1" exists in two lists, keys name "key2" and "key3" are unique to their list grouping and finally a grouping only contains a single key-value pair named "key4".</t>
        <t>Note that long lines in this document have been broken into multiple lines using the "The Single Backslash Strategy" defined by <xref target="RFC8792"/>.</t>
        <figure anchor="sampleBase">
          <name>Base SRTP Context Syntax</name>
          <artwork><![CDATA[
a=srtpctx:1 key1=value1;key2=value2
a=srtpctx:1 (key1=value1;key2=value2),\
  (key1=value1;key3=value3),(key4=value4)
]]></artwork>
        </figure>
        <t>The formal definition of the SRTP Context Attribute, including generic key-value pairs is provided by the following ABNF <xref target="RFC5234"/> found in <xref target="genericABNF"/>.</t>
        <figure anchor="genericABNF">
          <name>ABNF of Generic of the SRTP Context Attribute</name>
          <sourcecode type="abnf"><![CDATA[
srtp-context    = srtp-attr
                  srtp-tag
                  srtp-fmt-param
                  CRLF

srtp-fmt-param  = srtp-param / srtp-param-list

srtp-param      = 1srtp-ext [*(";" srtp-ext)]
                  ; One or more key=value pairs
                  ; key=value pairs separated by semicolon
                  ; e.g: key=value;key2=value2

srtp-param-list = 1"("srtp-param")" 1*("," "("srtp-param")")
                  ; Two or more lists of key=value pairs
                  ; Lists wrapped in parenthesis and separated by commas
                  ; (key=value;key2=value2), (key=value;key3=value3)

srtp-attr       = "a=srtpctx:"

srtp-tag        = 1*9DIGIT SP
                  ; Matches tag length ABNF from RFC 4568

srtp-ext        = param-key "=" param-value
                  ; key=value

param-key       = 1*(ALPHA / DIGIT / "_" / "-")
                  ; Alphanumeric key name
                  ; May include underscore or hyphen

param-value     = 1*BYTESTRING
                  ; Byte String key value

ALPHA           = %x41-5A / %x61-7A 
                  ; A-Z / a-z

DIGIT           = %x30-39
                  ; 0-9

BYTESTRING      = %x01-09 / %x0B-0C / %x0E-27 / 
                  %x2A-2B / %x2D-3A / %x3C-FF
                  ; Excluding
                  ; %x00 (NULL)
                  ; %x0A (LF)
                  ; %x0D (CR)
                  ; %x28-29 (Left and Right Parenthesis)
                  ; %x2C (Comma)
                  ; %x3B (Semicolon)
]]></sourcecode>
        </figure>
        <t>Note that <xref target="genericABNF"/> does not allow raw left or right parenthesis, comma or semicolons within a parameter value as to avoid parsing errors with those specific delimiters.
If these specific values need to be conveyed, the value <bcp14>MAY</bcp14> be "percent encoded" as described by the logic in <xref target="RFC3986"/>, Section 2.1.</t>
      </section>
      <section anchor="specificSyntax">
        <name>SSRC, ROC, SEQ Syntax</name>
        <t>This specification specifically defines SRTP Context Attribute key-value pairs of "ssrc", "roc", and "seq".
The formal definition of the "ssrc", "roc", and "seq" key-value pairs which align to "srtp-ext" of <xref target="genericABNF"/> are detailed in this specification are defined by the ABNF of <xref target="definedABNF"/>.</t>
        <figure anchor="definedABNF">
          <name>ABNF of Generic of the SRTP Context Attribute</name>
          <sourcecode type="abnf"><![CDATA[
srtp-ext  = srtp-ssrc / srtp-roc / srtp-seq
srtp-ssrc = "ssrc=" "0x"1*8HEXDIG
            ; 32 bit SSRC
srtp-roc  = "roc=" "0x"1*8HEXDIG
            ; 32 bit ROC
srtp-seq  = "seq=" "0x"1*4HEXDIG
            ; 16 bit ROC
HEXDIG    = %x30-39 / %x41-46
            ; 0-9 / A-F
]]></sourcecode>
        </figure>
        <t>For "ssrc", "roc", and "seq", leading 0s may be omitted and the alphanumeric hex may be upper or lowercase but at least one 0 must be present. 
Additionally the "0x" provides additional context that these values are hex and not integers.
Thus as per <xref target="sampleCompare"/> these two lines are functionally identical.</t>
        <figure anchor="sampleCompare">
          <name>Comparison with and without Leading 0s</name>
          <artwork><![CDATA[
a=srtpctx:1 ssrc=0x00845FED;roc=0x00000000;seq=0x005D
a=srtpctx:1 ssrc=0x845fed;roc=0x0;seq=0x05d
]]></artwork>
        </figure>
        <t>In <xref target="sampleAttribute"/> the sender has shares the usual cryptographic information as per a=crypto but has included 
other information such as the 32 bit SSRC, 32 bit ROC, and 16 bit Last Known Sequence number as hex values within the a=srtpctx attribute.
Together these attributes provide better insights as to the state of the SRTP cryptographic context from the senders perspective.</t>
        <figure anchor="sampleAttribute">
          <name>Example SRTP Context Attribute</name>
          <artwork><![CDATA[
a=crypto:1 AEAD_AES_256_GCM \
  inline:3/sxOxrbg3CVDrxeaNs91Vle+wW1RvT/zJWTCUNP1i6L45S9qcstjBv+eo0=\
  |2^20|1:32
a=srtpctx:1 ssrc=0x00845FED;roc=0x0000;seq=0x0150
]]></artwork>
        </figure>
      </section>
      <section anchor="tags">
        <name>Pairing SRTP Context Attributes to SDP Security Attributes</name>
        <t>When SRTP context information needs to be conveyed about a given stream, the SRTP Context attribute (a=srtpctx) is coupled with the relevant SDP Security attribute (a=crypto) in the SDP.
This coupling is done via the "tag" found in both SDP attributes.
The tag used by SRTP Context Attributes is functionally the same as detailed in <xref target="RFC4568"/>, Section 4.1.
The tag advertised in the SRTP Context Attribute is used to identify the SDP Security parameter a given SRTP Context Attribute is meant to pair with.
As such, within given media stream (m=), the tag of the SRTP Context Attribute <bcp14>MUST</bcp14> exactly match the SDP Security parameters tag as to create a pair of cryptographic attributes.</t>
        <t>The example in shown in <xref target="sampleTag"/>, within the audio stream, the sender is advertising an explicit packet index mapping for a=crypto tag 2 (a=srtpctx:2) which matches the SDP security parameter with the same tag (a=crypto:2)
Within the audio and video media stream tag 1 (a=crypto:1) does not feature any paired SRTP Context Attributes.</t>
        <figure anchor="sampleTag">
          <name>Example crypto and SRTP Context tag mapping</name>
          <artwork><![CDATA[
c=IN IP4 192.0.0.1
m=audio 49170 RTP/SAVP 0
a=crypto:1 AES_CM_128_HMAC_SHA1_80 \
  inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32
a=crypto:2 AEAD_AES_256_GCM \
  inline:HGAPy4Cedy/qumbZvpuCZSVT7rNDk8vG4TdUXp5hkyWqJCqiLRGab0KJy1g=
a=srtpctx:2 ssrc=0xBFBDD;roc=0x0001;seq=0x3039
m=video 49172 RTP/SAVP 126
a=crypto:1 AEAD_AES_128_GCM \
  inline:bQJXGzEPXJPClrd78xwALdaZDs/dLttBLfLE5Q==
a=srtpctx:1 ssrc=0xDD147C14;roc=0x0001;seq=0x3039
]]></artwork>
        </figure>
        <t>It is unlikely a sender will send SRTP Context Attributes for every crypto attribute since many will be fully unknown (such as the start of a session.)
However it is theoretically possible for every a=crypto tag to have a similar a=srtpctx attribute for additional details.</t>
      </section>
      <section anchor="unknowns">
        <name>Handling Unknowns</name>
        <t>Applications <bcp14>MUST NOT</bcp14> include SRTP Context Attributes if all the values are unknown; such as the start of a session or later in a session where full SRTP context is lost by an application. These unknown SRTP Context Attributes <bcp14>MAY</bcp14> be signaled at any later time but applications <bcp14>SHOULD</bcp14> ensure any offer/answer has the appropriate SRTP Context Attributes.</t>
        <t>Further, if an SRTP Context Attribute key-value pair is advertised at one point during a session and then later removed during a session modification; the peer receiving application <bcp14>SHOULD</bcp14> fallback to default application logic, or locally derived/stored cryptographic context information, rather than failing/rejecting the session.</t>
        <t>For "ssrc", "roc", and "seq" the following are quick pointers to the default application logic that can be used when locally derived/stored cryptographic context information is not available and an SRTP Context Attribute was omitted or removed during session modification.</t>
        <dl newline="true">
          <dt>Rollover Counter (ROC):</dt>
          <dd>
            <t>If at the start of a session set the ROC to zero. If later in a session, solve for "v" as per <xref target="RFC3711"/>, Section 3.3.1</t>
          </dd>
          <dt>Synchronization Source (SSRC)</dt>
          <dd>
            <t>Via "Late Binding" defined by <xref target="RFC4568"/>, Section 6.4.1</t>
          </dd>
          <dt>Sequence (SEQ):</dt>
          <dd>
            <t>Via "Late Binding" defined by <xref target="RFC4568"/>, Section 6.4.1</t>
          </dd>
        </dl>
      </section>
      <section anchor="multiplexing">
        <name>SRTP Multiplexing</name>
        <t>For scenarios where SRTP Multiplexing are concerned, EKT-SRTP (<xref target="RFC8870"/>) <bcp14>SHOULD</bcp14> be used in lieu of SDP Security as per <xref target="RFC8872"/> Section 4.3.2.
If SRTP Context Attributes are to be used, multiple SRTP Context Attribute key-value pairs can be grouped in a different lists using parenthesis as a delimiter with a comma to separate multiple key-value list groupings. The default syntax for key-value list groupings detailed further in {#syntax}.</t>
        <t>The key-value list groupings for "ssrc, "roc" and "seq" can be observed in <xref target="ExampleMultiSSRC"/> where three SSRC and the respective ROC/SEQ are provided as a key-value list groupings within the a=srtpctx attribute:</t>
        <figure anchor="ExampleMultiSSRC">
          <name>Example SRTP Context with Multiple SSRC</name>
          <artwork><![CDATA[
a=crypto:1 AES_CM_128_HMAC_SHA1_80 \
inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSo
a=srtpctx:1 (ssrc=0x01;roc=0x0;seq=0x1234),\
  (ssrc=0x02;roc=0x1;seq=0xABCD),\
  (ssrc=0x845fed;roc=0x0000)
]]></artwork>
        </figure>
      </section>
      <section anchor="bundling">
        <name>SDP Bundling</name>
        <t>For scenarios where SDP Bundling are concerned, SRTP Context Attributes follow the same bundling guidelines defined by <xref target="RFC8859"/>, section 5.7 for SDP Securities a=crypto attribute.</t>
      </section>
      <section anchor="sdpConsiderations">
        <name>SDP Considerations</name>
        <t>The presence of the "a=srtpctx" attribute in the SDP (in either an offer or an answer) indicates that the endpoint is 
signaling explicit cryptographic context information and this data <bcp14>SHOULD</bcp14> be used in place of derived values such as those obtained from late binding or some other mechanism.</t>
        <section anchor="sender">
          <name>Sender Behavior</name>
          <t>Senders utilizing SDP Security via "a=crypto" <bcp14>MUST</bcp14> make an attempt to signal any known packet index values to the peer receiver.
The exception being when all values are unknown, such as at the very start of media stream negotiation.</t>
          <t>For best results all sending parties of a given session stream <bcp14>SHOULD</bcp14> advertise known packet index values for all media streams.
This should continue throughout the life of the session to ensure any errors or out of sync errors can be quickly corrected via new signaling methods. 
See <xref target="frequency"/> for update frequency recommendations.</t>
        </section>
        <section anchor="receiver">
          <name>Receiver Behavior</name>
          <t>Receivers <bcp14>SHOULD</bcp14> utilize the signaled information in application logic to instantiate the SRTP cryptographic context.</t>
          <t>In the even there is no SRTP Context Attributes present in SDP receivers <bcp14>MUST</bcp14> fallback to <xref target="RFC3711"/> for guesting 
the ROC and <xref target="RFC4568"/> logic for late binding to gleam the SSRC and sequence numbers (SEQ).</t>
          <t>See <xref target="unknowns"/> for handling scenarios where a value was advertised and has been removed during session modification.</t>
        </section>
        <section anchor="frequency">
          <name>Update Frequency</name>
          <t>Senders <bcp14>SHOULD</bcp14> provide SRTP Context SDP when SDP Crypto attributes are negotiated.
There is no explicit time or total number of packets in which a new update is required from sender to receiver.
This specification will not cause overcrowding on the session establishment protocol's signaling channel if natural session updates, session changes, and session liveliness checks are followed.</t>
        </section>
      </section>
      <section anchor="extendability">
        <name>Future Extendability</name>
        <t>As stated in <xref target="syntax"/>, the SRTP Context SDP implementation's goal is extendability allowing for additional vendor specific key-value pairs alongside the ones defined in this document.
This ensures that a=crypto SDP security may remain compatible with future algorithms that need to signal cryptographic context information outside of what is currently specified in <xref target="RFC4568"/>.</t>
        <t>A complying specification needs only to follow the general rules defined by <xref target="syntax"/> and the generic ABNF outlined in <xref target="genericABNF"/>.</t>
        <t>To illustrate, imagine a new example SRTP algorithm and crypto suite is created named "FOO_CHACHA20_POLY1305_SHA256" and the application needs to signal "Foo, "Bar", and "Nonce" values to properly instantiate the SRTP context.
Rather than modify a=crypto SDP security or create a new unique SDP attribute, one can simply utilize SRTP Context SDP's key-value pairs to convey the information. Implementations <bcp14>MUST</bcp14> define how to handle default scenarios where the value is not present, unknown, or is removed later in a session.</t>
        <artwork><![CDATA[
a=crypto:1 FOO_CHACHA20_POLY1305_SHA256 \
 inline:1ef9a49f1f68f75f95feca6898921db8c73bfa53e71e33726c4c983069dd7d44
a=srtpctx:1 foo=1;bar=abc123;nonce=8675309
]]></artwork>
        <t>With this extendable method, all that is now required in the fictional RFC defining "FOO_CHACHA20_POLY1305_SHA256" is to include a section which details the expected SRTP Context Attribute key-value pair syntax, offer/answer usage (including unknown values and later session modifications). Don't forget to detail other aspects of importance such as usage with SDP bundling, SRTP multiplexing and comparability with SRTP extensions defined in <xref target="design"/>.</t>
        <t>This approach is similar to how Media Format Parameter Capability ("a=fmtp") is utilized in modern SDP. An example is <xref target="RFC6184"/>, Section 8.2.1 for H.264 video Media Format Parameters.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>When SDP carries SRTP Context Attributes additional insights are present about the SRTP cryptographic context.
Due to this an intermediary <bcp14>MAY</bcp14> be able to analyze how long a session has been active by the ROC value.</t>
      <t>Since the SRTP Context Attribute is carried in plain-text (alongside existing values like the SRTP Master Key for a given session)
care <bcp14>MUST</bcp14> be taken as per the <xref target="RFC8866"/> that keying material must not be sent over unsecure channels unless the SDP can be both private (encrypted) and authenticated.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document updates the "attribute-name (formerly "att-field")" sub-registry of the "Session Description Protocol (SDP) Parameters" registry (see Section 8.2.4 of <xref target="RFC8866"/>). 
Specifically, it adds the SDP "a=srtpctx" attribute for use at the media level.</t>
      <table anchor="ianaForm">
        <name>IANA SDP Registration Form</name>
        <thead>
          <tr>
            <th align="left">Form</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Contact name</td>
            <td align="left">IETF</td>
          </tr>
          <tr>
            <td align="left">Contact email address</td>
            <td align="left">kydavis@cisco.com</td>
          </tr>
          <tr>
            <td align="left">Attribute name</td>
            <td align="left">srtpctx</td>
          </tr>
          <tr>
            <td align="left">Attribute value</td>
            <td align="left">srtpctx</td>
          </tr>
          <tr>
            <td align="left">Attribute syntax</td>
            <td align="left">Provided by ABNF found in <xref target="syntax"/></td>
          </tr>
          <tr>
            <td align="left">Attribute semantics</td>
            <td align="left">Provided by sub-sections of <xref target="design"/></td>
          </tr>
          <tr>
            <td align="left">Usage level</td>
            <td align="left">media</td>
          </tr>
          <tr>
            <td align="left">Charset dependent</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">Purpose</td>
            <td align="left">Provide additional insights about SRTP context information not conveyed required by a receiver to properly decrypt SRTP.</td>
          </tr>
          <tr>
            <td align="left">O/A procedures</td>
            <td align="left">SDP O/A procedures are described in <xref target="syntax"/>, specifically sections <xref target="sender"/> and <xref target="receiver"/> of this document.</td>
          </tr>
          <tr>
            <td align="left">Mux Category</td>
            <td align="left">TRANSPORT</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Paul Jones for reviewing early draft material and providing valuable feedback.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3711">
          <front>
            <title>The Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="M. Baugher" initials="M." surname="Baugher"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <date month="March" year="2004"/>
            <abstract>
              <t>This document describes the Secure Real-time Transport Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which can provide confidentiality, message authentication, and replay protection to the RTP traffic and to the control traffic for RTP, the Real-time Transport Control Protocol (RTCP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3711"/>
          <seriesInfo name="DOI" value="10.17487/RFC3711"/>
        </reference>
        <reference anchor="RFC4568">
          <front>
            <title>Session Description Protocol (SDP) Security Descriptions for Media Streams</title>
            <author fullname="F. Andreasen" initials="F." surname="Andreasen"/>
            <author fullname="M. Baugher" initials="M." surname="Baugher"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <date month="July" year="2006"/>
            <abstract>
              <t>This document defines a Session Description Protocol (SDP) cryptographic attribute for unicast media streams. The attribute describes a cryptographic key and other parameters that serve to configure security for a unicast media stream in either a single message or a roundtrip exchange. The attribute can be used with a variety of SDP media transports, and this document defines how to use it for the Secure Real-time Transport Protocol (SRTP) unicast media streams. The SDP crypto attribute requires the services of a data security protocol to secure the SDP message. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4568"/>
          <seriesInfo name="DOI" value="10.17487/RFC4568"/>
        </reference>
        <reference anchor="RFC8859">
          <front>
            <title>A Framework for Session Description Protocol (SDP) Attributes When Multiplexing</title>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>The purpose of this specification is to provide a framework for analyzing the multiplexing characteristics of Session Description Protocol (SDP) attributes when SDP is used to negotiate the usage of a single 5-tuple for sending and receiving media associated with multiple media descriptions.</t>
              <t>This specification also categorizes the existing SDP attributes based on the framework described herein.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8859"/>
          <seriesInfo name="DOI" value="10.17487/RFC8859"/>
        </reference>
        <reference anchor="RFC8866">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author fullname="A. Begen" initials="A." surname="Begen"/>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation. This document obsoletes RFC 4566.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8866"/>
          <seriesInfo name="DOI" value="10.17487/RFC8866"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3550">
          <front>
            <title>RTP: A Transport Protocol for Real-Time Applications</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="S. Casner" initials="S." surname="Casner"/>
            <author fullname="R. Frederick" initials="R." surname="Frederick"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This memorandum describes RTP, the real-time transport protocol. RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of- service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers. The protocol supports the use of RTP-level translators and mixers. Most of the text in this memorandum is identical to RFC 1889 which it obsoletes. There are no changes in the packet formats on the wire, only changes to the rules and algorithms governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session simultaneously. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="64"/>
          <seriesInfo name="RFC" value="3550"/>
          <seriesInfo name="DOI" value="10.17487/RFC3550"/>
        </reference>
        <reference anchor="RFC3830">
          <front>
            <title>MIKEY: Multimedia Internet KEYing</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <author fullname="F. Lindholm" initials="F." surname="Lindholm"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <date month="August" year="2004"/>
            <abstract>
              <t>This document describes a key management scheme that can be used for real-time applications (both for peer-to-peer communication and group communication). In particular, its use to support the Secure Real-time Transport Protocol is described in detail. Security protocols for real-time multimedia applications have started to appear. This has brought forward the need for a key management solution to support these protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3830"/>
          <seriesInfo name="DOI" value="10.17487/RFC3830"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4567">
          <front>
            <title>Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP)</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="F. Lindholm" initials="F." surname="Lindholm"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <date month="July" year="2006"/>
            <abstract>
              <t>This document defines general extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP) to carry messages, as specified by a key management protocol, in order to secure the media. These extensions are presented as a framework, to be used by one or more key management protocols. As such, their use is meaningful only when complemented by an appropriate key management protocol.</t>
              <t>General guidelines are also given on how the framework should be used together with SIP and RTSP. The usage with the Multimedia Internet KEYing (MIKEY) key management protocol is also defined. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4567"/>
          <seriesInfo name="DOI" value="10.17487/RFC4567"/>
        </reference>
        <reference anchor="RFC4771">
          <front>
            <title>Integrity Transform Carrying Roll-Over Counter for the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="V. Lehtovirta" initials="V." surname="Lehtovirta"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines an integrity transform for Secure Real-time Transport Protocol (SRTP; see RFC 3711), which allows the roll-over counter (ROC) to be transmitted in SRTP packets as part of the authentication tag. The need for sending the ROC in SRTP packets arises in situations where the receiver joins an ongoing SRTP session and needs to quickly and robustly synchronize. The mechanism also enhances SRTP operation in cases where there is a risk of losing sender-receiver synchronization. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4771"/>
          <seriesInfo name="DOI" value="10.17487/RFC4771"/>
        </reference>
        <reference anchor="RFC5159">
          <front>
            <title>Session Description Protocol (SDP) Attributes for Open Mobile Alliance (OMA) Broadcast (BCAST) Service and Content Protection</title>
            <author fullname="L. Dondeti" initials="L." role="editor" surname="Dondeti"/>
            <author fullname="A. Jerichow" initials="A." surname="Jerichow"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>This document provides descriptions of Session Description Protocol (SDP) attributes used by the Open Mobile Alliance's Broadcast Service and Content Protection specification. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5159"/>
          <seriesInfo name="DOI" value="10.17487/RFC5159"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5479">
          <front>
            <title>Requirements and Analysis of Media Security Management Protocols</title>
            <author fullname="D. Wing" initials="D." role="editor" surname="Wing"/>
            <author fullname="S. Fries" initials="S." surname="Fries"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="F. Audet" initials="F." surname="Audet"/>
            <date month="April" year="2009"/>
            <abstract>
              <t>This document describes requirements for a protocol to negotiate a security context for SIP-signaled Secure RTP (SRTP) media. In addition to the natural security requirements, this negotiation protocol must interoperate well with SIP in certain ways. A number of proposals have been published and a summary of these proposals is in the appendix of this document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5479"/>
          <seriesInfo name="DOI" value="10.17487/RFC5479"/>
        </reference>
        <reference anchor="RFC5576">
          <front>
            <title>Source-Specific Media Attributes in the Session Description Protocol (SDP)</title>
            <author fullname="J. Lennox" initials="J." surname="Lennox"/>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="T. Schierl" initials="T." surname="Schierl"/>
            <date month="June" year="2009"/>
            <abstract>
              <t>The Session Description Protocol (SDP) provides mechanisms to describe attributes of multimedia sessions and of individual media streams (e.g., Real-time Transport Protocol (RTP) sessions) within a multimedia session, but does not provide any mechanism to describe individual media sources within a media stream. This document defines a mechanism to describe RTP media sources, which are identified by their synchronization source (SSRC) identifiers, in SDP, to associate attributes with these sources, and to express relationships among sources. It also defines several source-level attributes that can be used to describe properties of media sources. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5576"/>
          <seriesInfo name="DOI" value="10.17487/RFC5576"/>
        </reference>
        <reference anchor="RFC5763">
          <front>
            <title>Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</title>
            <author fullname="J. Fischl" initials="J." surname="Fischl"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies how to use the Session Initiation Protocol (SIP) to establish a Secure Real-time Transport Protocol (SRTP) security context using the Datagram Transport Layer Security (DTLS) protocol. It describes a mechanism of transporting a fingerprint attribute in the Session Description Protocol (SDP) that identifies the key that will be presented during the DTLS handshake. The key exchange travels along the media path as opposed to the signaling path. The SIP Identity mechanism can be used to protect the integrity of the fingerprint attribute from modification by intermediate proxies. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5763"/>
          <seriesInfo name="DOI" value="10.17487/RFC5763"/>
        </reference>
        <reference anchor="RFC5764">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document describes a Datagram Transport Layer Security (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) flows. DTLS keying happens on the media path, independent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5764"/>
          <seriesInfo name="DOI" value="10.17487/RFC5764"/>
        </reference>
        <reference anchor="RFC6184">
          <front>
            <title>RTP Payload Format for H.264 Video</title>
            <author fullname="Y.-K. Wang" initials="Y.-K." surname="Wang"/>
            <author fullname="R. Even" initials="R." surname="Even"/>
            <author fullname="T. Kristensen" initials="T." surname="Kristensen"/>
            <author fullname="R. Jesup" initials="R." surname="Jesup"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>This memo describes an RTP Payload format for the ITU-T Recommendation H.264 video codec and the technically identical ISO/IEC International Standard 14496-10 video codec, excluding the Scalable Video Coding (SVC) extension and the Multiview Video Coding extension, for which the RTP payload formats are defined elsewhere. The RTP payload format allows for packetization of one or more Network Abstraction Layer Units (NALUs), produced by an H.264 video encoder, in each RTP payload. The payload format has wide applicability, as it supports applications from simple low bitrate conversational usage, to Internet video streaming with interleaved transmission, to high bitrate video-on-demand.</t>
              <t>This memo obsoletes RFC 3984. Changes from RFC 3984 are summarized in Section 14. Issues on backward compatibility to RFC 3984 are discussed in Section 15. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6184"/>
          <seriesInfo name="DOI" value="10.17487/RFC6184"/>
        </reference>
        <reference anchor="RFC6189">
          <front>
            <title>ZRTP: Media Path Key Agreement for Unicast Secure RTP</title>
            <author fullname="P. Zimmermann" initials="P." surname="Zimmermann"/>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston"/>
            <author fullname="J. Callas" initials="J." surname="Callas"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines ZRTP, a protocol for media path Diffie-Hellman exchange to agree on a session key and parameters for establishing unicast Secure Real-time Transport Protocol (SRTP) sessions for Voice over IP (VoIP) applications. The ZRTP protocol is media path keying because it is multiplexed on the same port as RTP and does not require support in the signaling protocol. ZRTP does not assume a Public Key Infrastructure (PKI) or require the complexity of certificates in end devices. For the media session, ZRTP provides confidentiality, protection against man-in-the-middle (MiTM) attacks, and, in cases where the signaling protocol provides end-to-end integrity protection, authentication. ZRTP can utilize a Session Description Protocol (SDP) attribute to provide discovery and authentication through the signaling channel. To provide best effort SRTP, ZRTP utilizes normal RTP/AVP (Audio-Visual Profile) profiles. ZRTP secures media sessions that include a voice media stream and can also secure media sessions that do not include voice by using an optional digital signature. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6189"/>
          <seriesInfo name="DOI" value="10.17487/RFC6189"/>
        </reference>
        <reference anchor="RFC6904">
          <front>
            <title>Encryption of Header Extensions in the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="J. Lennox" initials="J." surname="Lennox"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Secure Real-time Transport Protocol (SRTP) provides authentication, but not encryption, of the headers of Real-time Transport Protocol (RTP) packets. However, RTP header extensions may carry sensitive information for which participants in multimedia sessions want confidentiality. This document provides a mechanism, extending the mechanisms of SRTP, to selectively encrypt RTP header extensions in SRTP.</t>
              <t>This document updates RFC 3711, the Secure Real-time Transport Protocol specification, to require that all future SRTP encryption transforms specify how RTP header extensions are to be encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6904"/>
          <seriesInfo name="DOI" value="10.17487/RFC6904"/>
        </reference>
        <reference anchor="RFC7201">
          <front>
            <title>Options for Securing RTP Sessions</title>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>The Real-time Transport Protocol (RTP) is used in a large number of different application domains and environments. This heterogeneity implies that different security mechanisms are needed to provide services such as confidentiality, integrity, and source authentication of RTP and RTP Control Protocol (RTCP) packets suitable for the various environments. The range of solutions makes it difficult for RTP-based application developers to pick the most suitable mechanism. This document provides an overview of a number of security solutions for RTP and gives guidance for developers on how to choose the appropriate security mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7201"/>
          <seriesInfo name="DOI" value="10.17487/RFC7201"/>
        </reference>
        <reference anchor="RFC7714">
          <front>
            <title>AES-GCM Authenticated Encryption in the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="K. Igoe" initials="K." surname="Igoe"/>
            <date month="December" year="2015"/>
            <abstract>
              <t>This document defines how the AES-GCM Authenticated Encryption with Associated Data family of algorithms can be used to provide confidentiality and data authentication in the Secure Real-time Transport Protocol (SRTP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7714"/>
          <seriesInfo name="DOI" value="10.17487/RFC7714"/>
        </reference>
        <reference anchor="RFC8723">
          <front>
            <title>Double Encryption Procedures for the Secure Real-Time Transport Protocol (SRTP)</title>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="P. Jones" initials="P." surname="Jones"/>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="A.B. Roach" initials="A.B." surname="Roach"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>In some conferencing scenarios, it is desirable for an intermediary to be able to manipulate some parameters in Real-time Transport Protocol (RTP) packets, while still providing strong end-to-end security guarantees. This document defines a cryptographic transform for the Secure Real-time Transport Protocol (SRTP) that uses two separate but related cryptographic operations to provide hop-by-hop and end-to-end security guarantees. Both the end-to-end and hop-by-hop cryptographic algorithms can utilize an authenticated encryption with associated data (AEAD) algorithm or take advantage of future SRTP transforms with different properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8723"/>
          <seriesInfo name="DOI" value="10.17487/RFC8723"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC8870">
          <front>
            <title>Encrypted Key Transport for DTLS and Secure RTP</title>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="F. Andreasen" initials="F." surname="Andreasen"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Encrypted Key Transport (EKT) is an extension to DTLS (Datagram Transport Layer Security) and the Secure Real-time Transport Protocol (SRTP) that provides for the secure transport of SRTP master keys, rollover counters, and other information within SRTP. This facility enables SRTP for decentralized conferences by distributing a common key to all of the conference endpoints.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8870"/>
          <seriesInfo name="DOI" value="10.17487/RFC8870"/>
        </reference>
        <reference anchor="RFC8871">
          <front>
            <title>A Solution Framework for Private Media in Privacy-Enhanced RTP Conferencing (PERC)</title>
            <author fullname="P. Jones" initials="P." surname="Jones"/>
            <author fullname="D. Benham" initials="D." surname="Benham"/>
            <author fullname="C. Groves" initials="C." surname="Groves"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document describes a solution framework for ensuring that media confidentiality and integrity are maintained end to end within the context of a switched conferencing environment where Media Distributors are not trusted with the end-to-end media encryption keys. The solution builds upon existing security mechanisms defined for the Real-time Transport Protocol (RTP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8871"/>
          <seriesInfo name="DOI" value="10.17487/RFC8871"/>
        </reference>
        <reference anchor="RFC8872">
          <front>
            <title>Guidelines for Using the Multiplexing Features of RTP to Support Multiple Media Streams</title>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="B. Burman" initials="B." surname="Burman"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <author fullname="R. Even" initials="R." surname="Even"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>The Real-time Transport Protocol (RTP) is a flexible protocol that can be used in a wide range of applications, networks, and system topologies. That flexibility makes for wide applicability but can complicate the application design process. One particular design question that has received much attention is how to support multiple media streams in RTP. This memo discusses the available options and design trade-offs, and provides guidelines on how to use the multiplexing features of RTP to support multiple media streams.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8872"/>
          <seriesInfo name="DOI" value="10.17487/RFC8872"/>
        </reference>
        <reference anchor="RFC9335">
          <front>
            <title>Completely Encrypting RTP Header Extensions and Contributing Sources</title>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="S. Murillo" initials="S." surname="Murillo"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>While the Secure Real-time Transport Protocol (SRTP) provides confidentiality for the contents of a media packet, a significant amount of metadata is left unprotected, including RTP header extensions and contributing sources (CSRCs). However, this data can be moderately sensitive in many applications. While there have been previous attempts to protect this data, they have had limited deployment, due to complexity as well as technical limitations.</t>
              <t>This document updates RFC 3711, the SRTP specification, and defines Cryptex as a new mechanism that completely encrypts header extensions and CSRCs and uses simpler Session Description Protocol (SDP) signaling with the goal of facilitating deployment.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9335"/>
          <seriesInfo name="DOI" value="10.17487/RFC9335"/>
        </reference>
      </references>
    </references>
    <?line 538?>

<section anchor="protocol-design-overview">
      <name>Protocol Design Overview</name>
      <t>This appendix section is included to details some important itmes integral to the decision process of creating this specification.
This section may be removed by the editors or left for future generations to understand why specific things were done as they are.</t>
      <t>In general, the overall design for this protocol tends to follow the phrase found in RFC6709, Section 1.
"Experience with many protocols has shown that protocols with few
options tend towards ubiquity, whereas protocols with many options
tend towards obscurity.</t>
      <t>Each and every extension, regardless of its benefits, must be
carefully scrutinized with respect to its implementation,
deployment, and interoperability costs."</t>
      <section anchor="why-not-an-rtp-header-extension">
        <name>Why not an RTP Header Extension?</name>
        <t>In order to be compatible with "a=cryptex", a protocol which extends the SRTP encryption over the RTP Extension Headers, the designed specification must ensure that information about the SRTP context is not within these RTP extension headers.
Thus one has to provide this information in an out of band mechanism.</t>
      </section>
      <section anchor="why-not-an-sdp-security-session-parameter">
        <name>Why not an SDP Security Session Parameter?</name>
        <t>While analyzing SDP Security's Session Parameter feature number of interesting details were found.
That is sections 6.3.7, 7.1.1, 9.2, and 10.3.2.2 of <xref target="RFC4568"/> specifically.</t>
        <t>A few illustrative examples below detail what this could look like are provided below, though these <bcp14>MUST NOT</bcp14> be used.</t>
        <artwork><![CDATA[
a=crypto:1 [..omitted..] SSRC=0x00845FED ROC=0x00000000 SEQ=0x005D

a=crypto:1 ..omitted.. -SSRC=0x00845FED -ROC=0x00000000 -SEQ=0x005D

a=crypto:1 AEAD_AES_256_GCM \
 inline:3/sxOxrbg3CVDrxeaNs91Vle+wW1RvT/zJWTCUNP1i6L45S9qcstjBv+eo0=\
 |2^20|1:32 SSRC=0x00845FED ROC=0x0000 SEQ=0x0150

a=crypto:1 AES_CM_128_HMAC_SHA1_80 \
  inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2:18\
  ;inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|21|3:4 \
  KDR=23 FEC_ORDER=SRTP_FEC UNENCRYPTED_SRTP \
  SSRC=0xDD148F16 ROC=0x0 SEQ=0x5A53
a=crypto:2 AES_CM_128_HMAC_SHA1_32 \
  inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2^20 \
  FEC_KEY=inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2^20|2:4 \
  WSH=60 SSRC=0xD903 ROC=0x0002 SEQ=0xB043
a=crypto:3 AEAD_AES_256_GCM \
  inline:HGAPy4Cedy/qumbZvpuCZSVT7rNDk8vG4TdUXp5hkyWqJCqiLRGab0KJy1g= \
  UNAUTHENTICATED_SRTP SSRC=0x05 ROC=0x02 SEQ=unknown
a=crypto:4 AEAD_AES_128_GCM \
  inline:bQJXGzEPXJPClrd78xwALdaZDs/dLttBLfLE5Q== \
  UNENCRYPTED_SRTCP SSRC=0x6500
]]></artwork>
        <t>To analyze the faults of this method:
First, a unknown and/or unsupported SDP Security Session Parameter is destructive.
If one side where to advertise the ROC value as an SDP Security Session Parameter and the remote party does not understand that specific SDP Security Session Parameter, that entire crypto line is to be considered invalid. If this is the only a=crypto entry then the entire session may fail.
The solution in this document allows for a graceful fallback to known methods to determine these value.
Implementations could get around this by duplicating the a=crypto SDP attribute into two values: one with the postfix and one without to create to potential offers; but at this point we have a second SDP attribute. Instead this specification decided to cut to the chase and format the second attribute in a standardized way and avoid endless duplication (and potentially other harmful issues, see the final item in this document.)</t>
        <t>Second, there is a method to advertise "optional" SDP Security Session Parameters. However, upon further scrutiny, the document contradicts itself in many sections.
To be specific, Section 6.3.7 states that an SDP Security Session Parameter prefixed with a dash character "-" <bcp14>MAY</bcp14> be ignored.
Subsequent sections (9.2 and 10.3.2.2) state that a dash character is illegal and <bcp14>MUST NOT</bcp14> be used.
It is not very well defined as such pursuit of this method has been dropped.</t>
        <t>Further, we know how applications will handle unknown SDP attributes; we do not know how applications will handle new mandatory (or optional) SDP Security Session Parameter values as none have ever been created. See IANA registry which only details those from the original RFC. (https://www.iana.org/assignments/sdp-security-descriptions/sdp-security-descriptions.xhtml#sdp-security-descriptions-4)
Including these could cause larger application issues and are the reason modern protocols use logic like Generate Random Extensions And Sustain Extensibility (GREASE) to catch bad implementation behavior and correct it before it leads to problems like those described in this section.</t>
        <t>In closing, this method has too many challenges but a lot has been learned. These items have influenced the protocol design and sections like <xref target="extendability"/> which aim to avoid making the same mistakes.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
/w3bDyWWqo8AAA==

-->

</rfc>
