<?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.4 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-davis-mmusic-srtp-assurance-03" category="std" consensus="true" submissionType="IETF" updates="4568" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="SRTP Assurance">Signaling Additional SRTP Context information via SDP</title>
    <seriesInfo name="Internet-Draft" value="draft-davis-mmusic-srtp-assurance-03"/>
    <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="2024"/>
    <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-03</t>
        <ul spacing="compact">
          <li>
            <t>Consolidate references to late binding, fix nits #20</t>
          </li>
        </ul>
        <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 Specific Syntax</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 Sequence
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.
Thus as per <xref target="sampleCompare"/> these three 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
a=srtpctx:1 ssrc=0x845feD;roc=0x0;seq=0x5D
]]></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 Unknown Cryptographic Attributes</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 <xref target="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 (see <xref target="unknowns"/>).</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>SHOULD</bcp14> fall back to application defaults as outlined in <xref target="unknowns"/>.</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 545?>

<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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
QnICTsQOSwo0761LJMap4URwe0yDDGR+NIW9jZRFG9PTrsI1OGO09id23/q/
ym7AfcE4VngHOvKb58VeX3ubgsq4JTldZ5/UEHW/WcCXqdY1ZMHuGPI63Cy7
tMteH0PY06bZQh5ECVlgkLM2Fj+RAwZBTlBuAM81qVfQHMhCDB1LHieUochY
CUC3mMgtG1EGg8NMk4TaIulNrEj7IU5FBZoFJp+5bQpBTcJPIhVx4WDnarxR
GtRwVsyyVWODa793b2BGOqRZBHgyiH3Cihalbu7dK7iZMk1+n4kuv/yiLvD3
v5gpqGESEODAgtTLW2LhoT9AWKusyH0OE1ENcgC3QNoHyP2waLGUaWCfMnxM
kKhPgEdEAfSezgk9805CgbBMnnhUGAcPiKkYj7Lp5It/ERRT9DGks5XQF1Yg
GoqaiECJMI5LB4S3w9fliczTGTAFo3zcpU11L94JKxatCJ0TUraEy2lKPisI
+pR9gXvek452P/WB+3gHEx5uKFFddQQcjhh9rXwEaJh8NpVlY83Bz0BrMEfU
vcSMk6a6LC261YfAgqzfo2wF+UhnowhzJMKlxcn0S9KexbjVkjhpwgwskMQt
dSFuqV6Q65dFkO/8iIpcx0MF0BKlhlkA2NUD378l00D/lvUQdetW5KnTuvW7
dCzQxWH6k7DtDYgRiEvsBkWtm6IjIE/jGZuoID6mttEoeUjjBxrjxLqS2M6w
jDCWTcAeS+Zfep8ZkeN4iH2QymEU0jIB28azUECm2NR9IGHZ1SURjYFzeHc9
CwAteEI/mwazk3pBLIszz7deXo9LCRVYAq1CpnPgevyfURvEFmfMnKwzThnY
Lsc3LHSNVces7TeHDdCiDUGxVH/wbWG4ZSUZu05gNeYIh+xoeGHL1qo1VY24
m8P8cm5qf2+vs4drumMfszpP5ArvzBa1fJoKrvF0QWgJkUlYgJU9tIGKyihJ
z3WzLZaGNSLovxiAMWqVOvuIvsBilqDYB5FPVgjMiuNUKJrQl45Ny+RP2fwS
LSNaiXwidq1KooQ6+dmz9nwIigyE82Ar0wi2yqIzRkJfbYzBqmXwp+5GR1Im
jj5roIjv9LBAqSCYD7wSA3JOKFYLj7rZBWh5kASECRh/ja/nUtFF6DIgz6lD
ddbIH1uV5VsRGJi3MbFJWtgVpkGLf+slocrIyZhWOB1kKitnPMIrmBn2JTSy
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
s/qzoQnibGqbNXe3tlVTLZhVvaaq97eW97dU43/XLK/oadLzDMoq+n35WyVa
kCxf0fzmUiJs1Ss/2F1oyYMcqMxiOyx8XLNPYEzWPtH609HZ5ZvLe3V3s3wg
77FwCQZ24C2w2UcYJMZNQ15RNBG5ApW0LbuB2+aVQnleO6nJXzTcb/ANtube
dSPd7F7dvO0Co/OIt1XtUw3/3Vi1ut14ChABxK/IBRLdq6b5ZHMFqIpKPhDs
MX6aAqZyY2LOMGM6/eX+/O7+9vL6zfJ2TzHdAKQ2ChscgZ0gz8X9c6L+43G3
1djD+f3H436rcdBdManGr/BI0PhCji6iRLmVzk6jc7T83Z0G1elwg3Zv7bQa
O0fU985pY6fHV+eN9oHaXtbWfzy2u432KT3WPmt0eNidXuPiYnnX548iqJf/
DJ3tqM3rj1dXK9YSHuiqzauL1T+fqc3e7cqf24eN9hE0oKWC0W2EKdg3btOu
frMHDeNWXflE51Rt3hnBxipQdKCnQ4wSpGuQMsYoflHBsWZ0AKOilRyqZedR
Fsxhkw7ZJqQJllAeCRz8zbOlLPidmjIyJnPBi/DAbwRMdJahX028sugVshZs
qONoEmEVGjyMPRSHh/1ZPFke+DbmEicecJ9oVMBPNTAlB4iZdDJIQW/X+NC8
CZqKFucjGaSqpSgdVlkwWSTtZsu4H7j4AUdgzn/0HA8yuLsXHBD2r5hO9w4J
pa1wQlSRB6xsjfyIdVXL0oGJGOf691rzG3Bn1XsLfTBwD2IMbgJda0YK1xiX
l7kFgbHNZ7P5kOV4W1YqtoZjMQz79av88AIiIvkvsASnYFAJTMNcwjTkYXrg
hOcKCqK281hr/enw7flfQaqVt9pr1WmrfsQuPXkbm8S34b/f+TJwgOlZ/07v
wn/tu7vL323tc8cSsVtf48fwRytsSfaB8N7dr74NAhd+7DYufKHgkbEqFKwX
3AfGnAq6iiXq9iTATm6OU5oaX8ZxHPiKcKwfzXOz6ZTPkVCqMubvE2POrD/H
WHY9yj9F4473dTHOtLFZkGWGs2TAriUMJIacARZbFilbGrTeOyDwD3f3Ls7P
XuMK4p/8z2tcFPxz72zpa/DSUIfmJfP0Xrj64bPKw9jwPypmikzQrEfP5duy
XyYJreF8ZcnNy3OZWDJZWcCEMoenxoEcbTdZorOFE8++U19ob0PuGIXAJgSf
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
mniFr4PPNu8dnbUT4EksUgvz+T+MyN6kipEAAA==

-->

</rfc>
