<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-perc-private-media-framework-12" indexInclude="true" ipr="trust200902" number="8871" prepTime="2021-01-18T14:29:19" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-perc-private-media-framework-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8871" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Private Media Framework">A Solution Framework for Private Media in Privacy-Enhanced RTP Conferencing (PERC)</title>
    <seriesInfo name="RFC" value="8871" stream="IETF"/>
    <author initials="P." surname="Jones" fullname="Paul E. Jones">
      <organization showOnFrontPage="true">Cisco</organization>
      <address>
        <postal>
          <street>7025 Kit Creek Rd.</street>
          <city>Research Triangle Park</city>
          <region>North Carolina</region>
          <code>27709</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 919 476 2048</phone>
        <email>paulej@packetizer.com</email>
      </address>
    </author>
    <author initials="D." surname="Benham" fullname="David Benham">
      <organization showOnFrontPage="true">Independent</organization>
      <address>
        <postal>
          <region>California</region>
          <country>United States of America</country>
        </postal>
        <email>dabenham@gmail.com</email>
      </address>
    </author>
    <author initials="C." surname="Groves" fullname="Christian Groves">
      <organization showOnFrontPage="true">Independent</organization>
      <address>
        <postal>
          <street/>
          <city>Melbourne</city>
          <country>Australia</country>
        </postal>
        <email>cngroves.std@gmail.com</email>
      </address>
    </author>
    <date month="01" year="2021"/>
    <keyword>PERC</keyword>
    <keyword>Private Media Framework</keyword>
    <keyword>conferencing</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">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>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8871" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2021 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-perc-entities-and-trust-mod">PERC Entities and Trust Model</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-untrusted-entities">Untrusted Entities</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.1.2">
                  <li pn="section-toc.1-1.3.2.1.2.1">
                    <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.2.1.1"><xref derivedContent="3.1.1" format="counter" sectionFormat="of" target="section-3.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-distributor">Media Distributor</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.2.1"><xref derivedContent="3.1.2" format="counter" sectionFormat="of" target="section-3.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-call-processing">Call Processing</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-trusted-entities">Trusted Entities</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.2.2">
                  <li pn="section-toc.1-1.3.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derivedContent="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-endpoint">Endpoint</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.2.1"><xref derivedContent="3.2.2" format="counter" sectionFormat="of" target="section-3.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-distributor">Key Distributor</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-framework-for-perc">Framework for PERC</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-e2e-authenticated-and-hbh-a">E2E-Authenticated and HBH-Authenticated Encryption</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-e2e-key-confidentiality">E2E Key Confidentiality</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-e2e-keys-and-endpoint-opera">E2E Keys and Endpoint Operations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-hbh-keys-and-per-hop-operat">HBH Keys and Per-Hop Operations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-exchange">Key Exchange</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.5.2">
                  <li pn="section-toc.1-1.4.2.5.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.5.2.1.1"><xref derivedContent="4.5.1" format="counter" sectionFormat="of" target="section-4.5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-initial-key-exchange-and-ke">Initial Key Exchange and Key Distributor</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.5.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.5.2.2.1"><xref derivedContent="4.5.2" format="counter" sectionFormat="of" target="section-4.5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-exchange-during-a-confe">Key Exchange during a Conference</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-authentication">Authentication</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-identity-assertions">Identity Assertions</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-certificate-fingerprints-in">Certificate Fingerprints in Session Signaling</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conference-identification">Conference Identification</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-perc-keys">PERC Keys</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-inventory-and-managemen">Key Inventory and Management Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dtls-srtp-exchange-yields-h">DTLS-SRTP Exchange Yields HBH Keys</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-key-distributor-transmi">The Key Distributor Transmits the KEK (EKT Key)</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-endpoints-fabricate-an-srtp">Endpoints Fabricate an SRTP Master Key</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-summary-of-key-types-and-en">Summary of Key Types and Entity Possession</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-encrypted-media-packet-form">Encrypted Media Packet Format</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-third-party-attacks">Third-Party Attacks</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-distributor-attacks">Media Distributor Attacks</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2.2.2">
                  <li pn="section-toc.1-1.8.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.8.2.2.2.1.1"><xref derivedContent="8.2.1" format="counter" sectionFormat="of" target="section-8.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-denial-of-service">Denial of Service</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.8.2.2.2.2.1"><xref derivedContent="8.2.2" format="counter" sectionFormat="of" target="section-8.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-replay-attacks">Replay Attacks</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.8.2.2.2.3.1"><xref derivedContent="8.2.3" format="counter" sectionFormat="of" target="section-8.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-delayed-playout-attacks">Delayed Playout Attacks</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.2.2.4">
                    <t indent="0" pn="section-toc.1-1.8.2.2.2.4.1"><xref derivedContent="8.2.4" format="counter" sectionFormat="of" target="section-8.2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-splicing-attacks">Splicing Attacks</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.2.2.5">
                    <t indent="0" pn="section-toc.1-1.8.2.2.2.5.1"><xref derivedContent="8.2.5" format="counter" sectionFormat="of" target="section-8.2.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rtcp-attacks">RTCP Attacks</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-distributor-attacks">Key Distributor Attacks</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-endpoint-attacks">Endpoint Attacks</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Switched conferencing is an increasingly popular model for multimedia
conferences with multiple participants using a combination of audio,
video, text, and other media types.  With this model, real-time media
flows from conference participants are not mixed, transcoded,
translated, recomposed, or otherwise manipulated by a Media
Distributor, as might be the case with a traditional media server or
Multipoint Control Unit (MCU).  Instead, media flows transmitted by
conference participants are simply forwarded by Media Distributors
to each of the other participants.  Media Distributors often forward only a subset of
flows based on voice activity detection or other criteria.  In some
instances, Media Distributors may make limited modifications to
RTP headers <xref target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/>, for example, but the actual media content
(e.g., voice or video data) is unaltered.</t>
      <t indent="0" pn="section-1-2">An advantage of switched conferencing is that Media Distributors can
be more easily deployed on general-purpose computing hardware,
including virtualized environments in private and public clouds.
Virtualized public cloud environments have been viewed as less
secure, since resources are not always physically controlled by
those who use them.  This document defines improved security so as to
lower the barrier to taking advantage of those environments.</t>
      <t indent="0" pn="section-1-3">This document defines a solution framework wherein media privacy is
ensured by making it impossible for a Media Distributor to
gain access to keys needed to decrypt or authenticate the actual media
content sent between conference participants.  At the same time, the
framework allows for the Media Distributors to modify certain RTP
headers; add, remove, encrypt, or decrypt RTP header extensions; and
encrypt and decrypt RTP Control Protocol (RTCP) packets <xref target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/>.
The framework also prevents replay
attacks by authenticating each packet transmitted between a given
participant and the Media Distributor using a unique key per
endpoint that is independent from the key for media encryption and
authentication.</t>
      <t indent="0" pn="section-1-4">This solution framework provides for enhanced privacy
in RTP-based conferencing environments while utilizing existing
security procedures defined for RTP with minimal enhancements.</t>
    </section>
    <section anchor="conventions-used-in-this-document" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
      <t indent="0" pn="section-2-1">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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only
       when, they appear in all capitals, as shown here.</t>
      <t indent="0" pn="section-2-2">Additionally, this solution framework uses the following
terms and abbreviations:</t>
      <dl newline="false" spacing="normal" indent="3" pn="section-2-3">
        <dt pn="section-2-3.1">End-to-End (E2E):</dt>
        <dd pn="section-2-3.2">Communications from one endpoint through one or more
Media Distributors to the endpoint at the other end.</dd>
        <dt pn="section-2-3.3">Hop-by-Hop (HBH):</dt>
        <dd pn="section-2-3.4">Communications between an endpoint and a Media
Distributor or between Media Distributors.</dd>
        <dt pn="section-2-3.5">Trusted Endpoint (or simply endpoint):</dt>
        <dd pn="section-2-3.6">An RTP flow-terminating entity that has possession
of E2E media encryption keys and terminates E2E encryption.  This may
include embedded user conferencing equipment or browsers on computers,
media gateways, MCUs, media recording devices, and more, that are in the
trusted domain for a given deployment. In the context of WebRTC
<xref target="W3C.CR-webrtc" format="default" sectionFormat="of" derivedContent="W3C.CR-webrtc"/>, where
control of a session is divided between a JavaScript application and a
browser, the browser acts as the Trusted Endpoint for purposes of this
framework (just as it acts as the endpoint for DTLS-SRTP <xref target="RFC5764" format="default" sectionFormat="of" derivedContent="RFC5764"/> in
one-to-one calls).</dd>
        <dt pn="section-2-3.7">Media Distributor (MD):</dt>
        <dd pn="section-2-3.8">An RTP middlebox that forwards endpoint media
content (e.g., voice or video data) unaltered -- either a subset or all
of the flows at any given time -- and is never allowed to have access
to E2E encryption keys.  It operates according to the
Selective Forwarding Middlebox RTP topologies <xref target="RFC7667" format="default" sectionFormat="of" derivedContent="RFC7667"/> per the
constraints defined by the Private Media in Privacy-Enhanced RTP
Conferencing (PERC) system, which includes, but is not limited
to, having no access to RTP media plaintext and having limits on what
RTP header fields it can alter.  The header fields that may be
modified by a Media Distributor are enumerated in <xref target="RFC8723" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8723#section-4" derivedContent="RFC8723">the double cryptographic transform
specification</xref> and chosen
with respect to utility and the security considerations outlined in this
document.</dd>
        <dt pn="section-2-3.9">Key Distributor:</dt>
        <dd pn="section-2-3.10">An entity that is a logical function that
distributes keying material and related information to Trusted
Endpoints and Media Distributor(s) -- only what is appropriate for
each.  The Key Distributor might be co-resident with another entity
trusted with E2E keying material.</dd>
        <dt pn="section-2-3.11">Conference:</dt>
        <dd pn="section-2-3.12">Two or more participants communicating via Trusted
Endpoints to exchange RTP flows through one or more Media Distributors.</dd>
        <dt pn="section-2-3.13">Call Processing:</dt>
        <dd pn="section-2-3.14">All Trusted Endpoints connect to a 
conference via a call processing dialog, e.g., with the "focus" as defined in 
<xref target="RFC4353" format="default" sectionFormat="of" derivedContent="RFC4353">"A Framework for Conferencing with the
Session Initiation Protocol (SIP)"</xref>.</dd>
        <dt pn="section-2-3.15">Third Party:</dt>
        <dd pn="section-2-3.16">Any entity that is not an endpoint, Media Distributor,
Key Distributor, or call processing entity as described in this
document.</dd>
      </dl>
    </section>
    <section anchor="perc-entities-and-trust-model" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-perc-entities-and-trust-mod">PERC Entities and Trust Model</name>
      <t indent="0" pn="section-3-1"><xref target="fig-trust-model" format="default" sectionFormat="of" derivedContent="Figure 1"/> depicts the trust relationships, direct or
indirect, between entities described in the subsequent subsections.
Note that these entities may be co-located or further divided into
multiple, separate physical devices.</t>
      <t indent="0" pn="section-3-2">Please note that some entities classified as untrusted in the simple,
general deployment scenario used most commonly in this document might
be considered trusted in other deployments.  This document does not
preclude such scenarios, but it keeps the definitions and examples
focused by only using the simple, most general deployment
scenario.</t>
      <figure anchor="fig-trust-model" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-trusted-and-untrusted-entit">Trusted and Untrusted Entities in PERC</name>
        <artwork align="center" name="" type="" alt="" pn="section-3-3.1">
                       |
   +----------+        |        +-----------------+
   | Endpoint |        |        | Call Processing |
   +----------+        |        +-----------------+
                       |
                       |
+----------------+     |       +--------------------+
| Key Distributor|     |       | Media Distributor  |
+----------------+     |       +--------------------+
                       |
     Trusted           |             Untrusted
     Entities          |             Entities
                       |</artwork>
      </figure>
      <section anchor="untrusted-entities" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-untrusted-entities">Untrusted Entities</name>
        <t indent="0" pn="section-3.1-1">The architecture described in this framework document enables
conferencing infrastructure to be hosted in domains, such as in a
cloud conferencing provider's facilities, where the trustworthiness is
below the level needed to assume that the privacy of the participant's media
is not compromised.  The conferencing infrastructure in such a
domain is still trusted with reliably connecting the participants
together in a conference but is not trusted with keying material needed
to decrypt any of the participant's media.  Entities in such
less-trustworthy domains are referred to as untrusted
entities from this point forward.</t>
        <t indent="0" pn="section-3.1-2">It is important to understand that "untrusted" in this document does not
mean that an entity is not expected to function properly.  Rather, it means
only that the entity does not have access to the E2E media encryption
keys.</t>
        <section anchor="media-distributor" numbered="true" toc="include" removeInRFC="false" pn="section-3.1.1">
          <name slugifiedName="name-media-distributor">Media Distributor</name>
          <t indent="0" pn="section-3.1.1-1">A Media Distributor forwards RTP flows between endpoints in the
conference while performing per-hop authentication of each RTP packet.
The Media Distributor may need access to one or more RTP headers or
header extensions, potentially adding or modifying a certain subset.
The Media Distributor also relays secured messaging between the
endpoints and the Key Distributor and acquires per-hop key
information from the Key Distributor.  The actual media content
must not be decryptable by a Media Distributor, as it is not trusted to
have access to the E2E media encryption keys.  The key exchange
mechanisms specified in this framework prevent the Media Distributor
from gaining access to the E2E media encryption keys.</t>
          <t indent="0" pn="section-3.1.1-2">An endpoint's ability to connect to a conference serviced by a Media
Distributor implies that the endpoint is authorized to
have access to the E2E media encryption keys, although the Media Distributor
does not have the ability to determine whether an endpoint is
authorized.  Instead, the Key Distributor is responsible for
authenticating the endpoint (e.g., using WebRTC identity assertions
<xref target="RFC8827" format="default" sectionFormat="of" derivedContent="RFC8827"/>) and determining its
authorization to receive E2E and HBH media encryption keys.
</t>
          <t indent="0" pn="section-3.1.1-3">A Media Distributor must perform its role in properly forwarding
media packets while taking measures to mitigate the adverse effects of
denial-of-service attacks (refer to <xref target="attacks" format="default" sectionFormat="of" derivedContent="Section 8"/>) to a level equal
to or better than traditional conferencing (non-PERC)
deployments.</t>
          <t indent="0" pn="section-3.1.1-4">A Media Distributor or associated conferencing infrastructure may also
initiate or terminate various messaging techniques related to conference
control. This topic is outside the scope of this framework document.</t>
        </section>
        <section anchor="call-processing" numbered="true" toc="include" removeInRFC="false" pn="section-3.1.2">
          <name slugifiedName="name-call-processing">Call Processing</name>
          <t indent="0" pn="section-3.1.2-1">Call processing is untrusted in the simple, general
deployment scenario.  When a physical subset of call processing
resides in facilities outside the trusted domain, it should
not be trusted to have access to E2E key information.</t>
          <t indent="0" pn="section-3.1.2-2">Call processing may include the processing of call
signaling messages, as well as the signing of those messages.  It may
also authenticate the endpoints for the purpose of call signaling and of
subsequently joining a conference hosted through one or more Media
Distributors.  Call processing may optionally ensure the privacy of
call signaling messages between itself (call processing), the endpoint, and other
entities.</t>
        </section>
      </section>
      <section anchor="trusted-entities" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-trusted-entities">Trusted Entities</name>
        <t indent="0" pn="section-3.2-1">From the PERC model system's perspective, entities considered trusted
(refer to <xref target="fig-trust-model" format="default" sectionFormat="of" derivedContent="Figure 1"/>) can be in possession of the E2E media
encryption keys for one or more conferences.</t>
        <section anchor="endpoint" numbered="true" toc="include" removeInRFC="false" pn="section-3.2.1">
          <name slugifiedName="name-endpoint">Endpoint</name>
          <t indent="0" pn="section-3.2.1-1">An endpoint is considered trusted and has access to E2E key
information.  While it is possible for an endpoint to be compromised,
subsequently performing in undesired ways, defining endpoint
resistance to compromise is outside the scope of this document.
Endpoints take measures to mitigate the adverse effects of denial-of-service attacks (refer to <xref target="attacks" format="default" sectionFormat="of" derivedContent="Section 8"/>) from other entities,
including from other endpoints, to a level equal to or better than
traditional conference (non-PERC) deployments.</t>
        </section>
        <section anchor="key_distributor" numbered="true" toc="include" removeInRFC="false" pn="section-3.2.2">
          <name slugifiedName="name-key-distributor">Key Distributor</name>
          <t indent="0" pn="section-3.2.2-1">The Key Distributor, which may be co-located with an endpoint or exist
standalone, is responsible for providing key information to endpoints
for both E2E and HBH security and for providing key
information to Media Distributors for HBH security.</t>
          <t indent="0" pn="section-3.2.2-2">Interaction between the Key Distributor and call processing
is necessary for proper conference-to-endpoint
mappings. This is described in <xref target="conf-id" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.</t>
          <t indent="0" pn="section-3.2.2-3">The Key Distributor needs to be secured and managed in a way that
prevents exploitation by an adversary, as any kind of compromise of the
Key Distributor puts the security of the conference at risk.</t>
          <t indent="0" pn="section-3.2.2-4">The Key Distributor needs to know which endpoints and which Media
Distributors are authorized to participate in the conference.  How the
Key Distributor obtains this information is outside the scope of this
document.  However, Key Distributors <bcp14>MUST</bcp14> reject DTLS associations
with any unauthorized endpoint or Media Distributor.</t>
        </section>
      </section>
    </section>
    <section anchor="framework-for-perc" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-framework-for-perc">Framework for PERC</name>
      <t indent="0" pn="section-4-1">The purpose of this framework is to define a means through which
media privacy is ensured when communicating within a conferencing
environment consisting of one or more Media Distributors that only
switch, and hence do not terminate, media.  It does not otherwise attempt to
hide the fact that a conference between endpoints is taking place.</t>
      <t indent="0" pn="section-4-2">This framework reuses several specified RTP security technologies,
including the Secure Real-time Transport Protocol (SRTP) <xref target="RFC3711" format="default" sectionFormat="of" derivedContent="RFC3711"/>,
Encrypted Key Transport (EKT) <xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>,
and DTLS-SRTP.</t>
      <section anchor="end-to-end-and-hop-by-hop-authenticated-encryption" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-e2e-authenticated-and-hbh-a">E2E-Authenticated and HBH-Authenticated Encryption</name>
        <t indent="0" pn="section-4.1-1">This solution framework focuses on the E2E privacy and
integrity of the participant's media by limiting access to only trusted
entities to the E2E key used for authenticated E2E encryption.
However, this framework does give a Media Distributor access to RTP header
fields and header extensions, as well as the ability to modify a certain
subset of the header fields and to add or change header extensions.  Packets
received by a Media Distributor or an endpoint are authenticated
hop by hop.</t>
        <t indent="0" pn="section-4.1-2">To enable all of the above, this framework defines the use of two
security contexts and two associated encryption keys: an "inner" key
(a distinct E2E key for each transmitted media flow) for authenticated
encryption of RTP media between endpoints and an "outer" key (a HBH key)
known only to a Media Distributor or the adjacent endpoint
for the hop between an endpoint and a Media Distributor or peer endpoint.
An endpoint will receive one or more E2E keys from
every other endpoint in the conference that correspond to the media flows
transmitted by those other endpoints, while HBH keys are derived from
the DTLS-SRTP association with the Key Distributor.  Two communicating
Media Distributors use DTLS-SRTP associations directly with each other to
obtain the HBH keys they will use.  See <xref target="key_exchange" format="default" sectionFormat="of" derivedContent="Section 4.5"/> for more details
on key exchange.</t>
        <figure anchor="fig-e2e-and-hbh-keys-used" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-e2e-and-hbh-keys-used-for-a">E2E and HBH Keys Used for Authenticated Encryption of SRTP Packets</name>
          <artwork align="center" name="" type="" alt="" pn="section-4.1-3.1">+-------------+                                +-------------+
|             |################################|             |
|    Media    |------------------------ *-----&gt;|    Media    |
| Distributor |&lt;----------------------*-|------| Distributor |
|      X      |#####################*#|#|######|      Y      |
|             |                     | | |      |             |
+-------------+                     | | |      +-------------+
   #  ^ |  #          HBH Key (XY) -+ | |         #  ^ |  #
   #  | |  #           E2E Key (B) ---+ |         #  | |  #
   #  | |  #           E2E Key (A) -----+         #  | |  #
   #  | |  #                                      #  | |  #
   #  | |  #                                      #  | |  #
   #  | |  *---- HBH Key (AX)    HBH Key (YB) ----*  | |  #
   #  | |  #                                      #  | |  #
   #  *--------- E2E Key (A)      E2E Key (A) ---------*  #
   #  | *------- E2E Key (B)      E2E Key (B) -------* |  #
   #  | |  #                                      #  | |  #
   #  | v  #                                      #  | v  #
+-------------+                                +-------------+
| Endpoint A  |                                | Endpoint B  |
+-------------+                                +-------------+</artwork>
        </figure>
        <t indent="0" pn="section-4.1-4">The double transform <xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/> enables endpoints
to perform encryption using both the E2E and HBH contexts while
still preserving the same overall interface as other SRTP
transforms.  The Media Distributor simply uses the corresponding
normal (single) AES-GCM transform, keyed with the appropriate HBH
keys.  See <xref target="keyinventory" format="default" sectionFormat="of" derivedContent="Section 6.1"/> for a description of the keys used in PERC
and <xref target="packetformat" format="default" sectionFormat="of" derivedContent="Section 7"/> for a diagram of how encrypted RTP packets appear on the
wire.</t>
        <t indent="0" pn="section-4.1-5">RTCP is only encrypted hop by hop -- not end to end. This framework
does not provide an additional step for RTCP-authenticated
encryption.  Rather, implementations utilize the existing procedures
specified in <xref target="RFC3711" format="default" sectionFormat="of" derivedContent="RFC3711"/>; those procedures use
the same outer, HBH cryptographic context chosen in the double transform operation
described above. For this reason, endpoints <bcp14>MUST NOT</bcp14> send
confidential information via RTCP.</t>
      </section>
      <section anchor="e2e-key-confidentiality" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-e2e-key-confidentiality">E2E Key Confidentiality</name>
        <t indent="0" pn="section-4.2-1">To ensure the confidentiality of E2E keys shared between endpoints,
endpoints use a common Key Encryption Key (KEK) that is
known only by the trusted entities in a conference.  That KEK, defined
in the EKT specification <xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/> as the EKT Key, is
used to subsequently encrypt the SRTP master key used for E2E-authenticated encryption of media sent by a given endpoint.
Each endpoint in the conference creates an SRTP master
key for E2E-authenticated encryption and
keeps track of the E2E keys received via the Full EKT Tag for
each distinct synchronization source (SSRC) in the conference so that it
can properly decrypt received media.  An endpoint may change its E2E key at any
time and advertise that new key to the conference as specified in
<xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>.</t>
      </section>
      <section anchor="e2e_keys_ops" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-e2e-keys-and-endpoint-opera">E2E Keys and Endpoint Operations</name>
        <t indent="0" pn="section-4.3-1">Any given RTP media flow is identified by its SSRC, and an endpoint
might send more than one at a time and change the mix of media flows
transmitted during the lifetime of a conference.</t>
        <t indent="0" pn="section-4.3-2">Thus, an endpoint <bcp14>MUST</bcp14> maintain a list of SSRCs from received RTP
flows and each SSRC's associated E2E key information.  An endpoint <bcp14>MUST</bcp14>
discard old E2E keys no later than when it leaves the conference.</t>
        <t indent="0" pn="section-4.3-3">If the packet is to contain RTP header extensions, it should be noted
that those extensions are only encrypted hop by hop per <xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/>.  For
this reason, endpoints <bcp14>MUST NOT</bcp14> transmit confidential information
via RTP header extensions.</t>
      </section>
      <section anchor="hbh-keys-and-per-hop-operations" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-hbh-keys-and-per-hop-operat">HBH Keys and Per-Hop Operations</name>
        <t indent="0" pn="section-4.4-1">To ensure the integrity of transmitted media packets, it is
<bcp14>REQUIRED</bcp14> that every packet be authenticated hop by hop between
an endpoint and a Media Distributor, as well as between Media
Distributors.  The authentication key used for HBH
authentication is derived from an SRTP master key shared only on the
respective hop.  Each HBH key is distinct per hop, and no two hops ever
use the same SRTP master key.</t>
        <t indent="0" pn="section-4.4-2">While endpoints also perform HBH authentication, the ability of the endpoints
to reconstruct the original RTP header also enables the endpoints to
authenticate RTP packets end to end.  This design yields flexibility to the Media
Distributor to change certain RTP header values as packets are
forwarded.  Values that the Media Distributor can change in the RTP header
are defined in
<xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/>.  RTCP can only be encrypted hop by
hop, giving the Media Distributor the flexibility to (1) forward RTCP
content unchanged, (2) transmit compound RTCP packets, (3) initiate
RTCP packets for reporting statistics, or (4) convey other information.
Performing HBH authentication for all RTP and RTCP packets also helps
provide replay protection (see <xref target="attacks" format="default" sectionFormat="of" derivedContent="Section 8"/>).  The use of the replay
protection mechanism specified in <xref target="RFC3711" sectionFormat="of" section="3.3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3711#section-3.3.2" derivedContent="RFC3711"/> is <bcp14>REQUIRED</bcp14> at each hop.</t>
        <t indent="0" pn="section-4.4-3">If there is a need to encrypt one or more RTP header extensions
hop by hop, the endpoint derives an encryption key from the HBH SRTP
master key to encrypt header extensions as per <xref target="RFC6904" format="default" sectionFormat="of" derivedContent="RFC6904"/>.  This
still gives the Media Distributor visibility into header extensions,
such as the one used to determine the audio level <xref target="RFC6464" format="default" sectionFormat="of" derivedContent="RFC6464"/> of conference
participants.  Note that when RTP header extensions are encrypted, all
hops need to decrypt and
re-encrypt these encrypted header extensions.  Please refer to
Sections <xref target="RFC8723" section="5.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8723#section-5.1" derivedContent="RFC8723"/>, <xref target="RFC8723" section="5.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8723#section-5.2" derivedContent="RFC8723"/>, and <xref target="RFC8723" section="5.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8723#section-5.3" derivedContent="RFC8723"/> of <xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/> for procedures
to perform RTP header extension encryption and decryption.</t>
      </section>
      <section anchor="key_exchange" numbered="true" toc="include" removeInRFC="false" pn="section-4.5">
        <name slugifiedName="name-key-exchange">Key Exchange</name>
        <t indent="0" pn="section-4.5-1">In brief, the keys used by any given endpoints are determined as
follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5-2">
          <li pn="section-4.5-2.1">The HBH keys that the endpoint uses to send and receive SRTP media
are derived from a DTLS handshake that the endpoint performs with
the Key Distributor (following normal DTLS-SRTP procedures).</li>
          <li pn="section-4.5-2.2">The E2E key that an endpoint uses to send SRTP media can be
either set from the DTLS-SRTP association with the Key Distributor or chosen
by the endpoint.  It is then distributed to other endpoints in a
Full EKT Tag, encrypted under an EKT Key provided to the client by the
Key Distributor within the DTLS channel they negotiated.  Note that
an endpoint <bcp14>MAY</bcp14> create a different E2E key per media flow, where a
media flow is identified by its SSRC value.</li>
          <li pn="section-4.5-2.3">Each E2E key that an endpoint uses to receive SRTP media is set
by receiving a Full EKT Tag from another endpoint.</li>
          <li pn="section-4.5-2.4">The HBH keys used between two Media Distributors are derived via
DTLS-SRTP procedures employed directly between them.</li>
        </ul>
        <section anchor="initial-key-exchange-and-key-distributor" numbered="true" toc="include" removeInRFC="false" pn="section-4.5.1">
          <name slugifiedName="name-initial-key-exchange-and-ke">Initial Key Exchange and Key Distributor</name>
          <t indent="0" pn="section-4.5.1-1">The Media Distributor maintains a tunnel with the Key Distributor
(e.g., using the tunnel protocol defined in <xref target="I-D.ietf-perc-dtls-tunnel" format="default" sectionFormat="of" derivedContent="PERC-DTLS"/>), making it
possible for the Media Distributor to facilitate the establishment of
a secure DTLS association between each endpoint and the Key
Distributor as shown in <xref target="fig-initial-key-exchange" format="default" sectionFormat="of" derivedContent="Figure 3"/>.  The DTLS association
between endpoints and the Key Distributor enables each endpoint to
generate E2E and HBH keys and receive the KEK.
At the same time, the Key Distributor securely
provides the HBH key information to the Media Distributor.  The key
information summarized here may include the SRTP master key, the SRTP
master salt, and the negotiated cryptographic transform.</t>
          <figure anchor="fig-initial-key-exchange" align="left" suppress-title="false" pn="figure-3">
            <name slugifiedName="name-exchanging-key-information-">Exchanging Key Information between Entities</name>
            <artwork align="center" name="" type="" alt="" pn="section-4.5.1-2.1">
                          +-----------+
                 KEK info |    Key    | HBH Key info to
             to Endpoints |Distributor| Endpoints &amp; Media Distributor
                          +-----------+
                             # ^ ^ #
                             # | | #--- Tunnel
                             # | | #
+-----------+             +-----------+             +-----------+
| Endpoint  |   DTLS      |   Media   |   DTLS      | Endpoint  |
|    KEK    |&lt;------------|Distributor|------------&gt;|    KEK    |
|  HBH Key  | to Key Dist | HBH Keys  | to Key Dist |  HBH Key  |
+-----------+             +-----------+             +-----------+</artwork>
          </figure>
          <t indent="0" pn="section-4.5.1-3">In addition to the secure tunnel between the Media Distributor and the
Key Distributor, there are two additional types of security associations
utilized as a part of the key exchange, as discussed in the following
paragraphs.  One is a DTLS-SRTP association between an endpoint and the Key
Distributor (with packets passing through the Media Distributor), and the
other is a DTLS-SRTP association between peer Media Distributors.</t>
          <t indent="0" pn="section-4.5.1-4">Endpoints establish a DTLS-SRTP association over the RTP session with the
Media Distributor and its media ports for the purposes of key information
exchange with the Key Distributor.  The Media Distributor does not terminate
the DTLS signaling but instead forwards DTLS packets received
from an endpoint on to the Key Distributor (and vice versa) via a
tunnel established between the Media Distributor and the Key Distributor.</t>
          <t indent="0" pn="section-4.5.1-5">When establishing the DTLS association between endpoints and the
Key Distributor, the endpoint <bcp14>MUST</bcp14> act as the DTLS client, and the
Key Distributor <bcp14>MUST</bcp14> act as the DTLS server.  The KEK
is conveyed by the Key Distributor over the DTLS
association to endpoints via procedures defined in EKT
<xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/> via the EKTKey message.</t>
          <t indent="0" pn="section-4.5.1-6">The Key Distributor <bcp14>MUST NOT</bcp14> establish DTLS-SRTP associations with
endpoints without first authenticating the Media Distributor tunneling the
DTLS-SRTP packets from the endpoint.</t>
          <t indent="0" pn="section-4.5.1-7">Note that following DTLS-SRTP procedures for the cipher defined
in <xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/>, the endpoint generates both E2E and HBH encryption keys
and salt values.  Endpoints <bcp14>MUST</bcp14> either use the DTLS-SRTP-generated E2E key
for transmission or generate a fresh E2E key.  In either case, the generated
SRTP master salt for E2E encryption <bcp14>MUST</bcp14> be replaced with the salt value
provided by the Key Distributor via the EKTKey message.  That is because
every endpoint in the conference uses the same SRTP master salt.  The
endpoint only transmits the SRTP master key (not the salt) used for E2E
encryption to other endpoints in RTP/RTCP packets per
<xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>.</t>
          <t indent="0" pn="section-4.5.1-8">Media Distributors use DTLS-SRTP directly with a peer
Media Distributor to establish the HBH key for transmitting RTP and RTCP
packets to that peer Media Distributor.  The Key Distributor does not
facilitate establishing a HBH key for use between Media Distributors.</t>
        </section>
        <section anchor="keyexchange" numbered="true" toc="include" removeInRFC="false" pn="section-4.5.2">
          <name slugifiedName="name-key-exchange-during-a-confe">Key Exchange during a Conference</name>
          <t indent="0" pn="section-4.5.2-1">Following the initial key information exchange with the Key
Distributor, an endpoint is able to encrypt media end to end with
an E2E key, sending that E2E key to other endpoints encrypted with the
KEK, and is able to encrypt and authenticate RTP packets
using a HBH key.  This framework does not allow the Media Distributor
to gain access to the KEK information, preventing it from
gaining access to any endpoint's E2E key and subsequently decrypting
media.</t>
          <t indent="0" pn="section-4.5.2-2">The KEK may need to change from time to time during the
lifetime of a conference, such as when a new participant joins or leaves a
conference.  Dictating if, when, or how often a conference is to be
rekeyed is outside the scope of this document, but this framework
does accommodate rekeying during the lifetime of a conference.</t>
          <t indent="0" pn="section-4.5.2-3">When a Key Distributor decides to rekey a conference, it transmits a
new EKTKey message containing the new EKT Key
to each of the conference participants.
Upon receipt of the new EKT Key, the endpoint <bcp14>MUST</bcp14> create a
new SRTP master key and prepare to send that key inside a FullEKTField using
the new EKT Key as per <xref target="RFC8870" sectionFormat="of" section="4.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8870#section-4.5" derivedContent="RFC8870"/>. In order to allow time for all endpoints in the conference to receive the new
keys, the sender should follow the recommendations in <xref target="RFC8870" sectionFormat="of" section="4.6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8870#section-4.6" derivedContent="RFC8870"/>. On receiving a new EKT Key, endpoints <bcp14>MUST</bcp14>
be prepared to decrypt EKT Tags using the new key.  The EKT Security Parameter
Index (SPI) field is
used to differentiate between EKT Tags encrypted with the old and new keys.</t>
          <t indent="0" pn="section-4.5.2-4">After rekeying, an endpoint <bcp14>SHOULD</bcp14> retain prior SRTP master keys and
EKT Keys for a period of time sufficient for the purpose of ensuring that it can
decrypt late-arriving or out-of-order packets or packets sent by other
endpoints that used the prior keys for a period of time after rekeying began.
An endpoint <bcp14>MAY</bcp14> retain old keys until the end of the conference.</t>
          <t indent="0" pn="section-4.5.2-5">Endpoints <bcp14>MAY</bcp14> follow the procedures in <xref target="RFC5764" sectionFormat="of" section="5.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5764#section-5.2" derivedContent="RFC5764"/>
to renegotiate HBH keys as desired.  If new HBH keys are generated,
the new keys are also delivered to the Media Distributor following
the procedures defined in <xref target="I-D.ietf-perc-dtls-tunnel" format="default" sectionFormat="of" derivedContent="PERC-DTLS"/> as one possible method.</t>
          <t indent="0" pn="section-4.5.2-6">At any time, endpoints <bcp14>MAY</bcp14> change the E2E
encryption key being used.  An endpoint <bcp14>MUST</bcp14> generate a new E2E encryption key
whenever it receives a new EKT Key.  After switching to a new key,
the new key is conveyed to other endpoints in the conference
in RTP/RTCP packets per <xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="authentication" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-authentication">Authentication</name>
      <t indent="0" pn="section-5-1">It is important that entities can
validate the authenticity of other entities, especially the Key
Distributor and endpoints. Details on this topic are outside the scope
of this specification, but a few possibilities are discussed in the
following sections.  The critical requirements are that (1) an endpoint
can verify that it is connected to the correct Key Distributor for the
conference and (2) the Key Distributor can verify that the endpoint is
the correct endpoint for the conference.</t>
      <t indent="0" pn="section-5-2">Two possible approaches to resolve this situation are identity assertions and
certificate fingerprints.</t>
      <section anchor="identity-assertions" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-identity-assertions">Identity Assertions</name>
        <t indent="0" pn="section-5.1-1">A WebRTC identity assertion <xref target="RFC8827" format="default" sectionFormat="of" derivedContent="RFC8827"/> is used
to bind the identity of the user of the endpoint to the fingerprint of
the DTLS-SRTP certificate used for the call.  This certificate is
unique for a given call and a conference.  
This certificate is unique for a given call and a conference, allowing the
Key Distributor to ensure that only authorized users participate in the
conference. Similarly, the Key Distributor can create a WebRTC identity
assertion to bind the fingerprint of the unique certificate used by
the Key Distributor for this conference so that the endpoint can
verify that it is talking to the correct Key Distributor. Such a setup
requires an Identity Provider (IdP) trusted by the endpoints and the
Key Distributor.</t>
      </section>
      <section anchor="certificate-fingerprints-in-session-signaling" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-certificate-fingerprints-in">Certificate Fingerprints in Session Signaling</name>
        <t indent="0" pn="section-5.2-1">Entities managing session signaling are generally assumed to be
untrusted in the PERC framework.  However, there are some deployment
scenarios where parts of the session signaling may be assumed
trustworthy for the purposes of exchanging, in a manner that can be
authenticated, the fingerprint of an entity's certificate.</t>
        <t indent="0" pn="section-5.2-2">As a concrete example, SIP <xref target="RFC3261" format="default" sectionFormat="of" derivedContent="RFC3261"/> and
the Session Description Protocol (SDP) <xref target="RFC4566" format="default" sectionFormat="of" derivedContent="RFC4566"/> can be used
to convey the fingerprint information per <xref target="RFC5763" format="default" sectionFormat="of" derivedContent="RFC5763"/>.  An endpoint's
SIP User Agent would send an INVITE message containing SDP for the
media session along with the endpoint's certificate fingerprint, which
can be signed using the procedures described in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> for the
benefit of forwarding the message to other entities by the focus
<xref target="RFC4353" format="default" sectionFormat="of" derivedContent="RFC4353"/>.  Other entities can verify that the fingerprints match the
certificates found in the DTLS-SRTP connections to find the identity
of the far end of the DTLS-SRTP connection and verify that it is the
authorized entity.</t>
        <t indent="0" pn="section-5.2-3">Ultimately, if using session signaling, an endpoint's certificate
fingerprint would need to be securely mapped to a user and conveyed to
the Key Distributor so that it can check that the user in question is authorized.
Similarly, the Key Distributor's certificate fingerprint can be
conveyed to an endpoint in a manner that can be authenticated as being an
authorized Key Distributor for this conference.</t>
      </section>
      <section anchor="conf-id" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-conference-identification">Conference Identification</name>
        <t indent="0" pn="section-5.3-1">The Key Distributor needs to know what endpoints are being added to a
given conference. Thus, the Key Distributor and the Media Distributor
need to know endpoint-to-conference mappings, which are enabled by
exchanging a conference-specific unique identifier as described in
<xref target="I-D.ietf-perc-dtls-tunnel" format="default" sectionFormat="of" derivedContent="PERC-DTLS"/>.  How this unique
identifier is assigned is outside the scope of this document.</t>
      </section>
    </section>
    <section anchor="perc-keys" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-perc-keys">PERC Keys</name>
      <t indent="0" pn="section-6-1">This section describes the various keys employed by PERC.</t>
      <section anchor="keyinventory" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-key-inventory-and-managemen">Key Inventory and Management Considerations</name>
        <t indent="0" pn="section-6.1-1">This section summarizes the several different keys used in the PERC framework,
how they are generated, and what purpose they serve.</t>
        <t indent="0" pn="section-6.1-2">The keys are described in the order in which they would typically be
acquired.</t>
        <t indent="0" pn="section-6.1-3">The various keys used in PERC are shown in
<xref target="key-inventory-table" format="default" sectionFormat="of" derivedContent="Table 1"/> below.</t>
        <table anchor="key-inventory-table" align="center" pn="table-1">
          <name slugifiedName="name-key-inventory">Key Inventory</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Key</th>
              <th align="center" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">HBH Key</td>
              <td align="left" colspan="1" rowspan="1">SRTP master key used to encrypt media hop by hop.</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">KEK (EKT Key)</td>
              <td align="left" colspan="1" rowspan="1">Key shared by all endpoints and used to encrypt each endpoint's E2E
      SRTP master key so receiving endpoints can decrypt media.</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">E2E Key</td>
              <td align="left" colspan="1" rowspan="1">SRTP master key used to encrypt media end to end.</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-6.1-5">While the number of key types is very small, it should be understood that
the actual number of distinct keys can be large as the conference
grows in size.</t>
        <t indent="0" pn="section-6.1-6">As an example, with 1,000 participants in a conference, there would be at
least 1,000 distinct SRTP master keys, all of which share the same master salt.
Each of those keys is passed through the Key Derivation Function (KDF) as defined in <xref target="RFC3711" format="default" sectionFormat="of" derivedContent="RFC3711"/> to produce
the actual encryption and authentication keys.</t>
        <t indent="0" pn="section-6.1-7">Complicating key management is the fact that the KEK can change and, when
it does, the endpoints generate new SRTP master keys that are associated with
a new EKT SPI.  Endpoints might retain old keys for a period of time to
ensure that they can properly decrypt late-arriving or out-of-order packets, which
means that the number of keys held during that period of time might be
substantially higher.</t>
        <t indent="0" pn="section-6.1-8">A more detailed explanation of each of the keys follows.</t>
      </section>
      <section anchor="dtls-srtp-exchange-yields-hbh-keys" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-dtls-srtp-exchange-yields-h">DTLS-SRTP Exchange Yields HBH Keys</name>
        <t indent="0" pn="section-6.2-1">The first set of keys acquired are for HBH encryption and
decryption.  Per the double transform procedures <xref target="RFC8723" format="default" sectionFormat="of" derivedContent="RFC8723"/>, the
endpoint performs a DTLS-SRTP exchange with the Key Distributor
and receives a key that is, in fact, "double" the size that is needed.
The E2E part is the first half of the key, so the endpoint discards
that information when generating its own key.  The second half of the keying
material is for HBH operations, so that half of the key
(corresponding to the least significant bits) is assigned internally as
the HBH key.</t>
        <t indent="0" pn="section-6.2-2">The Key Distributor informs the Media Distributor of the HBH key.  Specifically,
the Key Distributor sends the least significant bits corresponding to the
half of the keying material determined through DTLS-SRTP with the endpoint
to the Media Distributor.  A salt value is
generated along with the HBH key.  The salt is also longer than needed
for HBH operations; thus, only the least significant bits of the
required length (half of the generated salt material) are sent to the
Media Distributor.  One way to transmit this key and salt information
is via the tunnel protocol defined in <xref target="I-D.ietf-perc-dtls-tunnel" format="default" sectionFormat="of" derivedContent="PERC-DTLS"/>.</t>
        <t indent="0" pn="section-6.2-3">No two endpoints have the same HBH key; thus, the Media Distributor
<bcp14>MUST</bcp14> keep track of each distinct HBH key (and the corresponding salt) and
use it only for the specified hop.</t>
        <t indent="0" pn="section-6.2-4">The HBH key is also used for HBH encryption of RTCP.  RTCP is not
E2E-encrypted in PERC.</t>
      </section>
      <section anchor="the-key-distributor-transmits-the-kek-ekt-key" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-the-key-distributor-transmi">The Key Distributor Transmits the KEK (EKT Key)</name>
        <t indent="0" pn="section-6.3-1">The Key Distributor sends the KEK (the EKT Key per      
<xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>) to the endpoint via the aforementioned DTLS-SRTP association.  This key is known only to
the Key Distributor and endpoints; it is the most important entity to
protect, since having knowledge of this key (and the SRTP master salt
transmitted as a part of the same message) allows an entity to
decrypt any media packet in the conference.</t>
        <t indent="0" pn="section-6.3-2">Note that the Key Distributor can send any number of EKT Keys to
endpoints.  This information is used to rekey the entire conference.  Each
key is identified by an SPI value.
Endpoints <bcp14>MUST</bcp14> expect that a conference might be rekeyed
when a new participant joins a conference or when a participant
leaves a conference, in order to protect the confidentiality of
the conversation before and after such events.</t>
        <t indent="0" pn="section-6.3-3">The SRTP master salt to be used by the endpoint is transmitted along
with the EKT Key.  All endpoints in the conference utilize
the same SRTP master salt that corresponds with a given EKT Key.</t>
        <t indent="0" pn="section-6.3-4">The Full EKT Tag in media packets is encrypted using a cipher specified
via the EKTKey message (e.g., AES Key Wrap with a 128-bit key).  This
cipher is different than the cipher used to protect media and is only
used to encrypt the endpoint's SRTP master key (and other EKT Tag data
as per <xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>).</t>
        <t indent="0" pn="section-6.3-5">The KEK is not given to the Media Distributor.</t>
      </section>
      <section anchor="endpoints-fabricate-an-srtp-master-key" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-endpoints-fabricate-an-srtp">Endpoints Fabricate an SRTP Master Key</name>
        <t indent="0" pn="section-6.4-1">As stated earlier, the E2E key determined via DTLS-SRTP <bcp14>MAY</bcp14> be
discarded in favor of a locally generated E2E SRTP master key.  While the
DTLS-SRTP-derived SRTP master key can be used initially, the endpoint might
choose to change the SRTP master key periodically and <bcp14>MUST</bcp14> change the
SRTP master key as a result of the EKT Key changing.</t>
        <t indent="0" pn="section-6.4-2">A locally generated SRTP master key is used along with the master salt
transmitted to the endpoint from the Key Distributor via the EKTKey
message to encrypt media end to end.</t>
        <t indent="0" pn="section-6.4-3">Since the Media Distributor is not involved in E2E functions, it does not
create this key, nor does it have access to any endpoint's E2E key.  Note, too,
that even the Key Distributor is unaware of the locally generated E2E keys
used by each endpoint.</t>
        <t indent="0" pn="section-6.4-4">The endpoint transmits its E2E key to other endpoints in the conference
by periodically including it in SRTP packets in a Full EKT Tag.  When
placed in the Full EKT Tag, it is encrypted using the EKT Key provided
by the Key Distributor.  The master salt is not transmitted, though,
since all endpoints receive the same master salt via the EKTKey
message from the Key Distributor.  The recommended frequency with which an
endpoint transmits its SRTP master key is specified in
<xref target="RFC8870" format="default" sectionFormat="of" derivedContent="RFC8870"/>.</t>
      </section>
      <section anchor="summary-of-key-types-and-entity-possession" numbered="true" toc="include" removeInRFC="false" pn="section-6.5">
        <name slugifiedName="name-summary-of-key-types-and-en">Summary of Key Types and Entity Possession</name>
        <t indent="0" pn="section-6.5-1">All endpoints have knowledge of the KEK.</t>
        <t indent="0" pn="section-6.5-2">Every HBH key is distinct for a given endpoint; thus, Endpoint A and
Endpoint B do not have knowledge of the other's HBH key.  Since HBH keys
are derived from a DTLS-SRTP association, there is at most one HBH key
per endpoint.  (The only exception is where the DTLS-SRTP association might
be rekeyed per <xref target="RFC5764" sectionFormat="of" section="5.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5764#section-5.2" derivedContent="RFC5764"/> and a new key is created to
replace the former key.)</t>
        <t indent="0" pn="section-6.5-3">Each endpoint generates its own E2E key (SRTP master key); thus,
there is a distinct E2E key per endpoint.  This key is transmitted (encrypted) via
the Full EKT Tag to other endpoints.  Endpoints that receive media from
a given transmitting endpoint gain knowledge of the
transmitter's E2E key via the Full EKT Tag.</t>
        <t indent="0" pn="section-6.5-4"><xref target="who-has-what-key-table" format="default" sectionFormat="of" derivedContent="Table 2"/> summarizes
        the various keys and which entity is in possession of a given key.</t>
        <table anchor="who-has-what-key-table" align="center" pn="table-2">
          <name slugifiedName="name-key-types-and-entity-posses">Key Types and Entity Possession</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Key/Entity</th>
              <th align="center" colspan="1" rowspan="1">Endpoint A</th>
              <th align="center" colspan="1" rowspan="1">MD X</th>
              <th align="center" colspan="1" rowspan="1">MD Y</th>
              <th align="center" colspan="1" rowspan="1">Endpoint B</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">KEK (EKT Key)</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">E2E Key (A and B)</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">HBH Key (A&lt;=&gt;MD X)</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">No</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">HBH Key (B&lt;=&gt;MD Y)</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">HBH Key (MD X&lt;=&gt;MD Y)</td>
              <td align="center" colspan="1" rowspan="1">No</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">Yes</td>
              <td align="center" colspan="1" rowspan="1">No</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="packetformat" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-encrypted-media-packet-form">Encrypted Media Packet Format</name>
      <t indent="0" pn="section-7-1"><xref target="fig-perc-packet-format" format="default" sectionFormat="of" derivedContent="Figure 4"/> presents a complete picture of what an encrypted
media packet per this framework looks like when transmitted over the wire.
The packet format shown in the figure is encrypted using the double cryptographic transform
with an EKT Tag appended to the end.</t>
      <figure anchor="fig-perc-packet-format" align="left" suppress-title="false" pn="figure-4">
        <name slugifiedName="name-encrypted-media-packet-forma">Encrypted Media Packet Format</name>
        <artwork align="center" name="" type="" alt="" pn="section-7-2.1">
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;++
    |V=2|P|X|  CC   |M|     PT      |       sequence number         | IO
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO
    |                           timestamp                           | IO
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO
    |           synchronization source (SSRC) identifier            | IO
    +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ IO
    |            contributing source (CSRC) identifiers             | IO
    |                               ....                            | IO
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;+O
    |                    RTP extension (OPTIONAL) ...               | |O
+&gt;+&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;+O
O I |                          payload  ...                         | IO
O I |                               +-------------------------------+ IO
O I |                               | RTP padding   | RTP pad count | IO
O +&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;+O
O | |                    E2E authentication tag                     | |O
O | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |O
O | |                            OHB ...                            | |O
+&gt;| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+
| | |                    HBH authentication tag                     | ||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ||
| | |   EKT Tag ...   | R                                             ||
| | +-+-+-+-+-+-+-+-+-+ |                                             ||
| |                     +- Neither encrypted nor authenticated;       ||
| |                        appended after the double transform        ||
| |                        is performed                               ||
| |                                                                   ||
| +- E2E-Encrypted Portion               E2E-Authenticated Portion ---+|
|                                                                      |
+--- HBH-Encrypted Portion               HBH-Authenticated Portion ----+

    I = Inner (E2E) encryption/authentication
    O = Outer (HBH) encryption/authentication</artwork>
      </figure>
    </section>
    <section anchor="attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section anchor="third-party-attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-third-party-attacks">Third-Party Attacks</name>
        <t indent="0" pn="section-8.1-1">Third-party attacks are attacks attempted by an adversary that is not
supposed to have access to keying material or is otherwise not an
authorized participant in the conference.</t>
        <t indent="0" pn="section-8.1-2">On-path attacks are mitigated by HBH integrity protection and
encryption.  The integrity protection mitigates packet modification.
Encryption makes selective blocking of packets harder, but not
impossible.</t>
        <t indent="0" pn="section-8.1-3">Off-path attackers could try connecting to different PERC entities to
send specifically crafted packets with an aim of forcing the receiver to
forward or render bogus media packets.  Endpoints and Media Distributors mitigate
such an attack by performing HBH authentication and discarding packets
that fail authentication.</t>
        <t indent="0" pn="section-8.1-4">Another attack vector is a third party claiming to be a Media
Distributor, fooling endpoints into sending packets to the false
Media Distributor instead of the correct one.  The deceived sending
endpoints could incorrectly assume that their packets have been delivered
to endpoints when they in fact have not.  While this attack is possible,
the result is a simple denial of service with no leakage of confidential
information, since the false Media Distributor would not have access
to either HBH or E2E encryption keys.</t>
        <t indent="0" pn="section-8.1-5">A third party could cause a denial of service by transmitting many bogus
or replayed packets toward receiving devices and ultimately degrading
conference or device performance.  Therefore, implementations might wish to
devise mechanisms to safeguard against such illegitimate packets, such as
utilizing rate-limiting or performing basic sanity checks on packets
(e.g., looking at packet length or expected sequence number ranges), before
performing decryption operations that are more expensive.</t>
        <t indent="0" pn="section-8.1-6">The use of mutual DTLS authentication (as required by DTLS-SRTP) also helps to
prevent a denial-of-service attack by preventing a false endpoint or false
Media Distributor from successfully participating as a perceived valid media
sender that could otherwise carry out an on-path attack.  When mutual
authentication fails, a receiving endpoint would know that it could safely
discard media packets received from the endpoint without inspection.</t>
      </section>
      <section anchor="media-distributor-attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-media-distributor-attacks">Media Distributor Attacks</name>
        <t indent="0" pn="section-8.2-1">A malicious or compromised Media Distributor can attack the session in a
number of possible ways, as discussed below.</t>
        <section anchor="denial-of-service" numbered="true" toc="include" removeInRFC="false" pn="section-8.2.1">
          <name slugifiedName="name-denial-of-service">Denial of Service</name>
          <t indent="0" pn="section-8.2.1-1">A simple form of attack is discarding received packets that should be
forwarded.  This solution framework does not provide any mitigation
mechanisms for Media Distributors that fail to forward media packets.</t>
          <t indent="0" pn="section-8.2.1-2">Another form of attack is modifying received packets before forwarding.
With this solution framework, any modification of the E2E-authenticated data
results in the receiving endpoint getting an integrity failure when performing authentication on the received packet.</t>
          <t indent="0" pn="section-8.2.1-3">The Media Distributor can also attempt to perform resource consumption
attacks on the receiving endpoint.  One such attack would be to insert
random SSRC/CSRC values in any RTP packet along with a Full EKT Tag.  Since such a message would trigger the receiver to form a new cryptographic
context, the Media Distributor can attempt to consume the receiving
endpoint's resources.  While E2E authentication would fail and the
cryptographic context would be destroyed, the key derivation operation
would nonetheless consume some computational resources.  While resource
consumption attacks cannot be mitigated entirely, rate-limiting packets
might help reduce the impact of such attacks.</t>
        </section>
        <section anchor="replay-attack" numbered="true" toc="include" removeInRFC="false" pn="section-8.2.2">
          <name slugifiedName="name-replay-attacks">Replay Attacks</name>
          <t indent="0" pn="section-8.2.2-1">A replay attack is an attack where an already-received packet from a previous
point in the RTP stream is replayed as a new packet.  This could, for
example, allow a Media Distributor to transmit a sequence of packets
identified as a user saying "yes", instead of the "no" the user
actually said.</t>
          <t indent="0" pn="section-8.2.2-2">A replay attack is mitigated by the requirement to implement
replay protection as
described in <xref target="RFC3711" sectionFormat="of" section="3.3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3711#section-3.3.2" derivedContent="RFC3711"/>.
E2E replay protection <bcp14>MUST</bcp14> be provided for the
duration of the conference.</t>
        </section>
        <section anchor="delayed-playout-attack" numbered="true" toc="include" removeInRFC="false" pn="section-8.2.3">
          <name slugifiedName="name-delayed-playout-attacks">Delayed Playout Attacks</name>
          <t indent="0" pn="section-8.2.3-1">A delayed playout attack is an attack where media is received and held by
a Media Distributor and then forwarded to endpoints at a later point
in time.</t>
          <t indent="0" pn="section-8.2.3-2">This attack is possible even if E2E replay protection is in place.
Because the Media Distributor is allowed to select a
subset of streams and not forward the rest to a receiver, such as in
forwarding only the most active speakers, the receiver has to accept
gaps in the E2E packet sequence.  The problem here is that a Media
Distributor can choose to not deliver a particular stream for a while.</t>
          <t indent="0" pn="section-8.2.3-3">While the Media Distributor can purposely stop forwarding media flows, it
can also select an arbitrary starting point to resume forwarding those
media flows, perhaps forwarding old packets rather than current packets.
As a consequence, what the media source sent can be substantially delayed
at the receiver with the receiver believing that newly arriving packets
are delayed only by transport delay when the packets may actually be
minutes or hours old.</t>
          <t indent="0" pn="section-8.2.3-4">While this attack cannot be eliminated entirely, its effectiveness
can be reduced by rekeying the conference periodically, since
significantly delayed media encrypted with expired keys would not be
decrypted by endpoints.</t>
        </section>
        <section anchor="splicing-attack" numbered="true" toc="include" removeInRFC="false" pn="section-8.2.4">
          <name slugifiedName="name-splicing-attacks">Splicing Attacks</name>
          <t indent="0" pn="section-8.2.4-1">A splicing attack is an attack where a Media Distributor receiving
multiple media sources splices one media stream into the other.  If
the Media Distributor were able to change the SSRC without the receiver
having any method for verifying the original source ID, then the Media
Distributor could first deliver stream A and then later forward stream
B under the same SSRC that stream A was previously using.  By including
the SSRC in the integrity check for each packet -- both HBH and E2E -- PERC
prevents splicing attacks.</t>
        </section>
        <section anchor="rtcp-attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8.2.5">
          <name slugifiedName="name-rtcp-attacks">RTCP Attacks</name>
          <t indent="0" pn="section-8.2.5-1">PERC does not provide E2E protection of RTCP messages.  This allows
a compromised Media Distributor to impact any message that might be
transmitted via RTCP, including media statistics, picture requests, or loss
indication.  It is also possible for a compromised Media Distributor to forge
requests, such as requests to the endpoint to send a new picture.  Such
requests can consume significant bandwidth and impair conference performance.</t>
        </section>
      </section>
      <section anchor="key-distributor-attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-key-distributor-attacks">Key Distributor Attacks</name>
        <t indent="0" pn="section-8.3-1">As stated in <xref target="key_distributor" format="default" sectionFormat="of" derivedContent="Section 3.2.2"/>, the Key Distributor needs to be secured,
since exploiting the Key Server can allow an adversary to gain access to
the keying material for one or more conferences.  Having access to that
keying material would then allow the adversary to decrypt media sent from
any endpoint in the conference.</t>
        <t indent="0" pn="section-8.3-2">As a first line of defense, the Key Distributor authenticates every
security association -- associations with both endpoints and Media
Distributors.  The Key Distributor knows which entities are authorized to
have access to which keys, and inspection of certificates will substantially
reduce the risk of providing keys to an adversary.</t>
        <t indent="0" pn="section-8.3-3">Both physical and network access to the Key Distributor should be severely
restricted.  This may be more difficult to achieve when the Key Distributor
is embedded within, for example, an endpoint.  Nonetheless, consideration
should be given to shielding the Key Distributor from unauthorized access
or any access that is not strictly necessary for the support of an
ongoing conference.</t>
        <t indent="0" pn="section-8.3-4">Consideration should be given to whether access to the keying material
will be needed beyond the conclusion of a conference.  If not needed,
the Key Distributor's policy should be to destroy the keying material
once the conference concludes or when keying material changes during
the course of the conference.  If keying material is needed beyond the
lifetime of the conference, further consideration should be given to
protecting keying material from future exposure.  While it might seem
obvious, it is worth making this point, to avoid any doubt that if an adversary were
to record the media packets transmitted during a conference and then
gain unauthorized access to the keying material left unsecured on the
Key Distributor even years later, the adversary could decrypt the
content of every packet transmitted during the conference.</t>
      </section>
      <section anchor="endpoint-attacks" numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-endpoint-attacks">Endpoint Attacks</name>
        <t indent="0" pn="section-8.4-1">A Trusted Endpoint is so named because conference confidentiality relies
heavily on the security and integrity of the endpoint.  If an adversary
successfully exploits a vulnerability in an endpoint, it might be possible
for the adversary to obtain all of the keying material used in the
conference.  With that keying material, an adversary could decrypt any
of the media flows received from any other endpoint, either in real time
or at a later point in time (assuming that the adversary makes a copy of the
media packets).</t>
        <t indent="0" pn="section-8.4-2">Additionally, if an adversary successfully exploits an endpoint, the
adversary could inject media into the conference. For example, an adversary
could manipulate the RTP or SRTP software to transmit
whatever media the adversary wishes to send. 
This could involve the reuse of the compromised endpoint's SSRC or,
since all conference participants share the same KEK,
the use of a new SSRC or the SSRC value of another endpoint.
Only a single SRTP cipher suite defined provides source
authentication properties that allow an endpoint to cryptographically
assert that it sent a particular E2E-protected packet (namely, Timed Efficient
Stream Loss-Tolerant Authentication (TESLA)
<xref target="RFC4383" format="default" sectionFormat="of" derivedContent="RFC4383"/>), and its usage is presently not
defined for PERC.  The suite
defined in PERC only allows an endpoint to determine that whoever sent a
packet had received the KEK.</t>
        <t indent="0" pn="section-8.4-3">However, attacks on the endpoint are not limited to the PERC-specific
software within the endpoint.  An attacker could inject media or record
media by manipulating the software that sits between the PERC-enabled
application and the hardware microphone of a video camera, for example.
Likewise, an attacker could potentially access confidential media by
accessing memory, cache, disk storage, etc. if the endpoint is not secured.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-9-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-perc-dtls-tunnel" to="PERC-DTLS"/>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">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="RFC3550" target="https://www.rfc-editor.org/info/rfc3550" quoteTitle="true" derivedAnchor="RFC3550">
          <front>
            <title>RTP: A Transport Protocol for Real-Time Applications</title>
            <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Casner" fullname="S. Casner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Frederick" fullname="R. Frederick">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Jacobson" fullname="V. Jacobson">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="July"/>
            <abstract>
              <t indent="0">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="RFC3711" target="https://www.rfc-editor.org/info/rfc3711" quoteTitle="true" derivedAnchor="RFC3711">
          <front>
            <title>The Secure Real-time Transport Protocol (SRTP)</title>
            <author initials="M." surname="Baugher" fullname="M. Baugher">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Naslund" fullname="M. Naslund">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Carrara" fullname="E. Carrara">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Norrman" fullname="K. Norrman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2004" month="March"/>
            <abstract>
              <t indent="0">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="RFC6904" target="https://www.rfc-editor.org/info/rfc6904" quoteTitle="true" derivedAnchor="RFC6904">
          <front>
            <title>Encryption of Header Extensions in the Secure Real-time Transport Protocol (SRTP)</title>
            <author initials="J." surname="Lennox" fullname="J. Lennox">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="April"/>
            <abstract>
              <t indent="0">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 indent="0">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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">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>
        <reference anchor="RFC8723" target="https://www.rfc-editor.org/info/rfc8723" quoteTitle="true" derivedAnchor="RFC8723">
          <front>
            <title>Double Encryption Procedures for the Secure Real-Time Transport Protocol (SRTP)</title>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Jones" fullname="P. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Barnes" fullname="R. Barnes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A.B." surname="Roach" fullname="A.B. Roach">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="April"/>
            <abstract>
              <t indent="0">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="RFC8870" target="https://www.rfc-editor.org/info/rfc8870" quoteTitle="true" derivedAnchor="RFC8870">
          <front>
            <title>Encrypted Key Transport for DTLS and Secure RTP</title>
            <author initials="C" surname="Jennings" fullname="Cullen Jennings">
              <organization showOnFrontPage="true">company</organization>
            </author>
            <author initials="J" surname="Mattsson" fullname="John Mattsson">
              <organization showOnFrontPage="true">company</organization>
            </author>
            <author initials="D" surname="McGrew" fullname="David A. McGrew">
              <organization showOnFrontPage="true">company</organization>
            </author>
            <author initials="D" surname="Wing" fullname="Dan Wing">
              <organization showOnFrontPage="true">company</organization>
            </author>
            <author initials="F" surname="Andreasen" fullname="Flemming Andreasen">
              <organization showOnFrontPage="true">company</organization>
            </author>
            <date month="January" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="8870"/>
          <seriesInfo name="DOI" value="10.17487/RFC8870"/>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-perc-dtls-tunnel" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-perc-dtls-tunnel-06" derivedAnchor="PERC-DTLS">
          <front>
            <title>DTLS Tunnel between a Media Distributor and Key Distributor to Facilitate Key Exchange</title>
            <author fullname="Paul E. Jones">
              <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Paul M. Ellenbogen">
              <organization showOnFrontPage="true">Princeton University</organization>
            </author>
            <author fullname="Nils H. Ohlmeier">
              <organization showOnFrontPage="true">Mozilla</organization>
            </author>
            <date month="October" day="16" year="2019"/>
            <abstract>
              <t indent="0">   This document defines a DTLS tunneling protocol for use in multimedia
   conferences that enables a Media Distributor to facilitate key
   exchange between an endpoint in a conference and the Key Distributor.
   The protocol is designed to ensure that the keying material used for
   hop-by-hop encryption and authentication is accessible to the media
   distributor, while the keying material used for end-to-end encryption
   and authentication is inaccessible to the media distributor.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-perc-dtls-tunnel-06"/>
          <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-perc-dtls-tunnel-06.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC3261" target="https://www.rfc-editor.org/info/rfc3261" quoteTitle="true" derivedAnchor="RFC3261">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Camarillo" fullname="G. Camarillo">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Johnston" fullname="A. Johnston">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Peterson" fullname="J. Peterson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Sparks" fullname="R. Sparks">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Schooler" fullname="E. Schooler">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2002" month="June"/>
            <abstract>
              <t indent="0">This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants.  These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3261"/>
          <seriesInfo name="DOI" value="10.17487/RFC3261"/>
        </reference>
        <reference anchor="RFC4353" target="https://www.rfc-editor.org/info/rfc4353" quoteTitle="true" derivedAnchor="RFC4353">
          <front>
            <title>A Framework for Conferencing with the Session Initiation Protocol (SIP)</title>
            <author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="February"/>
            <abstract>
              <t indent="0">The Session Initiation Protocol (SIP) supports the initiation, modification, and termination of media sessions between user agents. These sessions are managed by SIP dialogs, which represent a SIP relationship between a pair of user agents.  Because dialogs are between pairs of user agents, SIP's usage for two-party communications (such as a phone call), is obvious.  Communications sessions with multiple participants, generally known as conferencing, are more complicated.  This document defines a framework for how such conferencing can occur.  This framework describes the overall architecture, terminology, and protocol components needed for multi-party conferencing.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4353"/>
          <seriesInfo name="DOI" value="10.17487/RFC4353"/>
        </reference>
        <reference anchor="RFC4383" target="https://www.rfc-editor.org/info/rfc4383" quoteTitle="true" derivedAnchor="RFC4383">
          <front>
            <title>The Use of Timed Efficient Stream Loss-Tolerant Authentication (TESLA) in the Secure Real-time Transport Protocol (SRTP)</title>
            <author initials="M." surname="Baugher" fullname="M. Baugher">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Carrara" fullname="E. Carrara">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="February"/>
            <abstract>
              <t indent="0">This memo describes the use of the Timed Efficient Stream Loss-tolerant Authentication (RFC 4082) transform within the Secure Real-time Transport Protocol (SRTP), to provide data origin authentication for multicast and broadcast data streams.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4383"/>
          <seriesInfo name="DOI" value="10.17487/RFC4383"/>
        </reference>
        <reference anchor="RFC4566" target="https://www.rfc-editor.org/info/rfc4566" quoteTitle="true" derivedAnchor="RFC4566">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Jacobson" fullname="V. Jacobson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Perkins" fullname="C. Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="July"/>
            <abstract>
              <t indent="0">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.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4566"/>
          <seriesInfo name="DOI" value="10.17487/RFC4566"/>
        </reference>
        <reference anchor="RFC5763" target="https://www.rfc-editor.org/info/rfc5763" quoteTitle="true" derivedAnchor="RFC5763">
          <front>
            <title>Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</title>
            <author initials="J." surname="Fischl" fullname="J. Fischl">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="May"/>
            <abstract>
              <t indent="0">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" target="https://www.rfc-editor.org/info/rfc5764" quoteTitle="true" derivedAnchor="RFC5764">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="May"/>
            <abstract>
              <t indent="0">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="RFC6464" target="https://www.rfc-editor.org/info/rfc6464" quoteTitle="true" derivedAnchor="RFC6464">
          <front>
            <title>A Real-time Transport Protocol (RTP) Header Extension for Client-to-Mixer Audio Level Indication</title>
            <author initials="J." surname="Lennox" fullname="J. Lennox" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Ivov" fullname="E. Ivov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Marocco" fullname="E. Marocco">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="December"/>
            <abstract>
              <t indent="0">This document defines a mechanism by which packets of Real-time Transport Protocol (RTP) audio streams can indicate, in an RTP header extension, the audio level of the audio sample carried in the RTP packet.  In large conferences, this can reduce the load on an audio mixer or other middlebox that wants to forward only a few of the loudest audio streams, without requiring it to decode and measure every stream that is received.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6464"/>
          <seriesInfo name="DOI" value="10.17487/RFC6464"/>
        </reference>
        <reference anchor="RFC7667" target="https://www.rfc-editor.org/info/rfc7667" quoteTitle="true" derivedAnchor="RFC7667">
          <front>
            <title>RTP Topologies</title>
            <author initials="M." surname="Westerlund" fullname="M. Westerlund">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Wenger" fullname="S. Wenger">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="November"/>
            <abstract>
              <t indent="0">This document discusses point-to-point and multi-endpoint topologies used in environments based on the Real-time Transport Protocol (RTP). In particular, centralized topologies commonly employed in the video conferencing industry are mapped to the RTP terminology.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7667"/>
          <seriesInfo name="DOI" value="10.17487/RFC7667"/>
        </reference>
        <reference anchor="RFC8224" target="https://www.rfc-editor.org/info/rfc8224" quoteTitle="true" derivedAnchor="RFC8224">
          <front>
            <title>Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
            <author initials="J." surname="Peterson" fullname="J. Peterson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Wendt" fullname="C. Wendt">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="February"/>
            <abstract>
              <t indent="0">The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context.  This document defines a mechanism for securely identifying originators of SIP requests.  It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.</t>
              <t indent="0">This document obsoletes RFC 4474.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8224"/>
          <seriesInfo name="DOI" value="10.17487/RFC8224"/>
        </reference>
        <reference anchor="RFC8827" target="https://www.rfc-editor.org/info/rfc8827" quoteTitle="true" derivedAnchor="RFC8827">
          <front>
            <title>WebRTC Security Architecture</title>
            <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="January" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="8827"/>
          <seriesInfo name="DOI" value="10.17487/RFC8827"/>
        </reference>
        <reference anchor="W3C.CR-webrtc" target="https://www.w3.org/TR/webrtc/" quoteTitle="true" derivedAnchor="W3C.CR-webrtc">
          <front>
            <title>WebRTC 1.0: Real-time Communication Between Browsers</title>
            <author initials="C." surname="Jennings" fullname="Cullen Jennings">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Boström" fullname="Henrik Boström">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J-I." surname="Bruaroey" fullname="Jan-Ivar Bruaroey">
              <organization showOnFrontPage="true"/>
            </author>
            <date/>
          </front>
          <refcontent>W3C Proposed Recommendation</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Mo Zanaty"/>,
      <contact fullname="Christian Oien"/>, and <contact fullname="Richard       Barnes"/> for invaluable input on this document.  Also, we would like to
      acknowledge <contact fullname="Nermeen Ismail"/> for serving on the
      initial draft versions of this document as a coauthor.  We would also
      like to acknowledge <contact fullname="John Mattsson"/>, <contact fullname="Mats Naslund"/>, and <contact fullname="Magnus Westerlund"/>
      for providing some of the text in the document, including much of the
      original text in the Security Considerations section (<xref target="attacks" format="default" sectionFormat="of" derivedContent="Section 8"/>).</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="P." surname="Jones" fullname="Paul E. Jones">
        <organization showOnFrontPage="true">Cisco</organization>
        <address>
          <postal>
            <street>7025 Kit Creek Rd.</street>
            <city>Research Triangle Park</city>
            <region>North Carolina</region>
            <code>27709</code>
            <country>United States of America</country>
          </postal>
          <phone>+1 919 476 2048</phone>
          <email>paulej@packetizer.com</email>
        </address>
      </author>
      <author initials="D." surname="Benham" fullname="David Benham">
        <organization showOnFrontPage="true">Independent</organization>
        <address>
          <postal>
            <region>California</region>
            <country>United States of America</country>
          </postal>
          <email>dabenham@gmail.com</email>
        </address>
      </author>
      <author initials="C." surname="Groves" fullname="Christian Groves">
        <organization showOnFrontPage="true">Independent</organization>
        <address>
          <postal>
            <street/>
            <city>Melbourne</city>
            <country>Australia</country>
          </postal>
          <email>cngroves.std@gmail.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
