draft-ietf-perc-private-media-framework-12.txt | rfc8871.txt | |||
---|---|---|---|---|
Network Working Group P. Jones | Internet Engineering Task Force (IETF) P. Jones | |||
Internet-Draft Cisco | Request for Comments: 8871 Cisco | |||
Intended status: Standards Track D. Benham | Category: Standards Track D. Benham | |||
Expires: December 7, 2019 C. Groves | ISSN: 2070-1721 C. Groves | |||
Independent | Independent | |||
June 5, 2019 | January 2021 | |||
A Solution Framework for Private Media in Privacy Enhanced RTP | A Solution Framework for Private Media in Privacy-Enhanced RTP | |||
Conferencing (PERC) | Conferencing (PERC) | |||
draft-ietf-perc-private-media-framework-12 | ||||
Abstract | Abstract | |||
This document describes a solution framework for ensuring that media | This document describes a solution framework for ensuring that media | |||
confidentiality and integrity are maintained end-to-end within the | confidentiality and integrity are maintained end to end within the | |||
context of a switched conferencing environment where media | context of a switched conferencing environment where Media | |||
distributors are not trusted with the end-to-end media encryption | Distributors are not trusted with the end-to-end media encryption | |||
keys. The solution builds upon existing security mechanisms defined | keys. The solution builds upon existing security mechanisms defined | |||
for the real-time transport protocol (RTP). | for the Real-time Transport Protocol (RTP). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on December 7, 2019. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8871. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | 2. Conventions Used in This Document | |||
3. PERC Entities and Trust Model . . . . . . . . . . . . . . . . 5 | 3. PERC Entities and Trust Model | |||
3.1. Untrusted Entities . . . . . . . . . . . . . . . . . . . 5 | 3.1. Untrusted Entities | |||
3.1.1. Media Distributor . . . . . . . . . . . . . . . . . . 6 | 3.1.1. Media Distributor | |||
3.1.2. Call Processing . . . . . . . . . . . . . . . . . . . 7 | 3.1.2. Call Processing | |||
3.2. Trusted Entities . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Trusted Entities | |||
3.2.1. Endpoint . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.1. Endpoint | |||
3.2.2. Key Distributor . . . . . . . . . . . . . . . . . . . 7 | 3.2.2. Key Distributor | |||
4. Framework for PERC . . . . . . . . . . . . . . . . . . . . . 8 | 4. Framework for PERC | |||
4.1. End-to-End and Hop-by-Hop Authenticated Encryption . . . 8 | 4.1. E2E-Authenticated and HBH-Authenticated Encryption | |||
4.2. E2E Key Confidentiality . . . . . . . . . . . . . . . . . 9 | 4.2. E2E Key Confidentiality | |||
4.3. E2E Keys and Endpoint Operations . . . . . . . . . . . . 10 | 4.3. E2E Keys and Endpoint Operations | |||
4.4. HBH Keys and Per-hop Operations . . . . . . . . . . . . . 10 | 4.4. HBH Keys and Per-Hop Operations | |||
4.5. Key Exchange . . . . . . . . . . . . . . . . . . . . . . 11 | 4.5. Key Exchange | |||
4.5.1. Initial Key Exchange and Key Distributor . . . . . . 11 | 4.5.1. Initial Key Exchange and Key Distributor | |||
4.5.2. Key Exchange during a Conference . . . . . . . . . . 13 | 4.5.2. Key Exchange during a Conference | |||
5. Authentication . . . . . . . . . . . . . . . . . . . . . . . 14 | 5. Authentication | |||
5.1. Identity Assertions . . . . . . . . . . . . . . . . . . . 14 | 5.1. Identity Assertions | |||
5.2. Certificate Fingerprints in Session Signaling . . . . . . 14 | 5.2. Certificate Fingerprints in Session Signaling | |||
5.3. Conference Identification . . . . . . . . . . . . . . . . 15 | 5.3. Conference Identification | |||
6. PERC Keys . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 6. PERC Keys | |||
6.1. Key Inventory and Management Considerations . . . . . . . 15 | 6.1. Key Inventory and Management Considerations | |||
6.2. DTLS-SRTP Exchange Yields HBH Keys . . . . . . . . . . . 16 | 6.2. DTLS-SRTP Exchange Yields HBH Keys | |||
6.3. The Key Distributor Transmits the KEK (EKT Key) . . . . . 17 | 6.3. The Key Distributor Transmits the KEK (EKT Key) | |||
6.4. Endpoints fabricate an SRTP Master Key . . . . . . . . . 18 | 6.4. Endpoints Fabricate an SRTP Master Key | |||
6.5. Summary of Key Types and Entity Possession . . . . . . . 18 | 6.5. Summary of Key Types and Entity Possession | |||
7. Encrypted Media Packet Format . . . . . . . . . . . . . . . . 19 | 7. Encrypted Media Packet Format | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 8. Security Considerations | |||
8.1. Third Party Attacks . . . . . . . . . . . . . . . . . . . 20 | 8.1. Third-Party Attacks | |||
8.2. Media Distributor Attacks . . . . . . . . . . . . . . . . 21 | 8.2. Media Distributor Attacks | |||
8.2.1. Denial of service . . . . . . . . . . . . . . . . . . 21 | 8.2.1. Denial of Service | |||
8.2.2. Replay Attack . . . . . . . . . . . . . . . . . . . . 22 | 8.2.2. Replay Attacks | |||
8.2.3. Delayed Playout Attack . . . . . . . . . . . . . . . 22 | 8.2.3. Delayed Playout Attacks | |||
8.2.4. Splicing Attack . . . . . . . . . . . . . . . . . . . 23 | 8.2.4. Splicing Attacks | |||
8.2.5. RTCP Attacks . . . . . . . . . . . . . . . . . . . . 23 | 8.2.5. RTCP Attacks | |||
8.3. Key Distributor Attacks . . . . . . . . . . . . . . . . . 23 | 8.3. Key Distributor Attacks | |||
8.4. Endpoint Attacks . . . . . . . . . . . . . . . . . . . . 24 | 8.4. Endpoint Attacks | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 9. IANA Considerations | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 | 10. References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 10.1. Normative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 25 | 10.2. Informative References | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 26 | Acknowledgments | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Switched conferencing is an increasingly popular model for multimedia | Switched conferencing is an increasingly popular model for multimedia | |||
conferences with multiple participants using a combination of audio, | conferences with multiple participants using a combination of audio, | |||
video, text, and other media types. With this model, real-time media | video, text, and other media types. With this model, real-time media | |||
flows from conference participants are not mixed, transcoded, | flows from conference participants are not mixed, transcoded, | |||
transrated, recomposed, or otherwise manipulated by a Media | translated, recomposed, or otherwise manipulated by a Media | |||
Distributor, as might be the case with a traditional media server or | Distributor, as might be the case with a traditional media server or | |||
multipoint control unit (MCU). Instead, media flows transmitted by | Multipoint Control Unit (MCU). Instead, media flows transmitted by | |||
conference participants are simply forwarded by Media Distributors to | conference participants are simply forwarded by Media Distributors to | |||
each of the other participants. Media Distributors often forward | each of the other participants. Media Distributors often forward | |||
only a subset of flows based on voice activity detection or other | only a subset of flows based on voice activity detection or other | |||
criteria. In some instances, Media Distributors may make limited | criteria. In some instances, Media Distributors may make limited | |||
modifications to RTP [RFC3550] headers, for example, but the actual | modifications to RTP headers [RFC3550], for example, but the actual | |||
media content (e.g., voice or video data) is unaltered. | media content (e.g., voice or video data) is unaltered. | |||
An advantage of switched conferencing is that Media Distributors can | An advantage of switched conferencing is that Media Distributors can | |||
be more easily deployed on general-purpose computing hardware, | be more easily deployed on general-purpose computing hardware, | |||
including virtualized environments in private and public clouds. | including virtualized environments in private and public clouds. | |||
Virtualized public cloud environments have been viewed as less secure | Virtualized public cloud environments have been viewed as less | |||
since resources are not always physically controlled by those who use | secure, since resources are not always physically controlled by those | |||
them. This document defines improved security so as to lower the | who use them. This document defines improved security so as to lower | |||
barrier to taking advantage of those environments. | the barrier to taking advantage of those environments. | |||
This document defines a solution framework wherein media privacy is | This document defines a solution framework wherein media privacy is | |||
ensured by making it impossible for a Media Distributor to gain | ensured by making it impossible for a Media Distributor to gain | |||
access to keys needed to decrypt or authenticate the actual media | access to keys needed to decrypt or authenticate the actual media | |||
content sent between conference participants. At the same time, the | content sent between conference participants. At the same time, the | |||
framework allows for the Media Distributors to modify certain RTP | framework allows for the Media Distributors to modify certain RTP | |||
headers; add, remove, encrypt, or decrypt RTP header extensions; and | headers; add, remove, encrypt, or decrypt RTP header extensions; and | |||
encrypt and decrypt RTP Control Protocol (RTCP) [RFC3550] packets. | encrypt and decrypt RTP Control Protocol (RTCP) packets [RFC3550]. | |||
The framework also prevents replay attacks by authenticating each | The framework also prevents replay attacks by authenticating each | |||
packet transmitted between a given participant and the Media | packet transmitted between a given participant and the Media | |||
Distributor using a unique key per Endpoint that is independent from | Distributor using a unique key per endpoint that is independent from | |||
the key for media encryption and authentication. | the key for media encryption and authentication. | |||
This solution framework provides for enhanced privacy in RTP-based | This solution framework provides for enhanced privacy in RTP-based | |||
conferencing environments while utilizing existing security | conferencing environments while utilizing existing security | |||
procedures defined for RTP with minimal enhancements. | procedures defined for RTP with minimal enhancements. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
Additionally, this solution framework uses the following terms and | Additionally, this solution framework uses the following terms and | |||
acronyms: | abbreviations: | |||
End-to-End (E2E): Communications from one Endpoint through one or | End-to-End (E2E): Communications from one endpoint through one or | |||
more Media Distributors to the Endpoint at the other end. | more Media Distributors to the endpoint at the other end. | |||
Hop-by-Hop (HBH): Communications between an Endpoint and a Media | Hop-by-Hop (HBH): Communications between an endpoint and a Media | |||
Distributor or between Media Distributors. | Distributor or between Media Distributors. | |||
Trusted Endpoint (or simply Endpoint): An RTP flow terminating entity | Trusted Endpoint (or simply endpoint): An RTP flow-terminating | |||
that has possession of E2E media encryption keys and terminates E2E | entity that has possession of E2E media encryption keys and | |||
encryption. This may include embedded user conferencing equipment or | terminates E2E encryption. This may include embedded user | |||
browsers on computers, media gateways, MCUs, media recording devices | conferencing equipment or browsers on computers, media gateways, | |||
and more that are in the trusted domain for a given deployment. In | MCUs, media recording devices, and more, that are in the trusted | |||
the context of WebRTC [W3C.CR-webrtc-20180927], where control of a | domain for a given deployment. In the context of WebRTC | |||
session is divided between a JavaScript application and a browser, | [W3C.CR-webrtc], where control of a session is divided between a | |||
the browser acts as the Trusted Endpoint for purposes of this | JavaScript application and a browser, the browser acts as the | |||
framework (just as it acts as the endpoint for DTLS-SRTP [RFC5764] in | Trusted Endpoint for purposes of this framework (just as it acts | |||
one-to-one calls). | as the endpoint for DTLS-SRTP [RFC5764] in one-to-one calls). | |||
Media Distributor (MD): An RTP middlebox that forwards Endpoint media | Media Distributor (MD): An RTP middlebox that forwards endpoint | |||
content (e.g., voice or video data) unaltered, either a subset or all | media content (e.g., voice or video data) unaltered -- either a | |||
of the flows at any given time, and is never allowed to have access | subset or all of the flows at any given time -- and is never | |||
to E2E encryption keys. It operates according to the Selective | allowed to have access to E2E encryption keys. It operates | |||
Forwarding Middlebox RTP topologies [RFC7667] per the constraints | according to the Selective Forwarding Middlebox RTP topologies | |||
defined by the PERC system, which includes, but is not limited to, | [RFC7667] per the constraints defined by the Private Media in | |||
having no access to RTP media plaintext and having limits on what RTP | Privacy-Enhanced RTP Conferencing (PERC) system, which includes, | |||
header field it can alter. The header fields that may be modified by | but is not limited to, having no access to RTP media plaintext and | |||
a Media Distributor are enumerated in Section 4 of the Double | having limits on what RTP header fields it can alter. The header | |||
cryptographic transform specification [I-D.ietf-perc-double] and | fields that may be modified by a Media Distributor are enumerated | |||
chosen with respect to utility and the security considerations | in Section 4 of the double cryptographic transform specification | |||
outlined in this document. | [RFC8723] and chosen with respect to utility and the security | |||
considerations outlined in this document. | ||||
Key Distributor: An entity that is a logical function which | Key Distributor: An entity that is a logical function that | |||
distributes keying material and related information to Trusted | distributes keying material and related information to Trusted | |||
Endpoints and Media Distributor(s), only that which is appropriate | Endpoints and Media Distributor(s) -- only what is appropriate for | |||
for each. The Key Distributor might be co-resident with another | each. The Key Distributor might be co-resident with another | |||
entity trusted with E2E keying material. | entity trusted with E2E keying material. | |||
Conference: Two or more participants communicating via Trusted | Conference: Two or more participants communicating via Trusted | |||
Endpoints to exchange RTP flows through one or more Media | Endpoints to exchange RTP flows through one or more Media | |||
Distributor. | Distributors. | |||
Call Processing: All Trusted Endpoints in the conference connect to | Call Processing: All Trusted Endpoints connect to a conference via a | |||
it by a call processing dialog, such as with the Focus defined in the | call processing dialog, e.g., with the "focus" as defined in "A | |||
Framework for Conferencing with SIP [RFC4353]. | Framework for Conferencing with the Session Initiation Protocol | |||
(SIP)" [RFC4353]. | ||||
Third Party: Any entity that is not an Endpoint, Media Distributor, | Third Party: Any entity that is not an endpoint, Media Distributor, | |||
Key Distributor or Call Processing entity as described in this | Key Distributor, or call processing entity as described in this | |||
document. | document. | |||
3. PERC Entities and Trust Model | 3. PERC Entities and Trust Model | |||
The following figure depicts the trust relationships, direct or | Figure 1 depicts the trust relationships, direct or indirect, between | |||
indirect, between entities described in the subsequent sub-sections. | entities described in the subsequent subsections. Note that these | |||
Note that these entities may be co-located or further divided into | entities may be co-located or further divided into multiple, separate | |||
multiple, separate physical devices. | physical devices. | |||
Please note that some entities classified as untrusted in the simple, | Please note that some entities classified as untrusted in the simple, | |||
general deployment scenario used most commonly in this document might | general deployment scenario used most commonly in this document might | |||
be considered trusted in other deployments. This document does not | be considered trusted in other deployments. This document does not | |||
preclude such scenarios, but keeps the definitions and examples | preclude such scenarios, but it keeps the definitions and examples | |||
focused by only using the simple, most general deployment scenario. | focused by only using the simple, most general deployment scenario. | |||
| | | | |||
+----------+ | +-----------------+ | +----------+ | +-----------------+ | |||
| Endpoint | | | Call Processing | | | Endpoint | | | Call Processing | | |||
+----------+ | +-----------------+ | +----------+ | +-----------------+ | |||
| | | | |||
| | | | |||
+----------------+ | +--------------------+ | +----------------+ | +--------------------+ | |||
| Key Distributor| | | Media Distributor | | | Key Distributor| | | Media Distributor | | |||
+----------------+ | +--------------------+ | +----------------+ | +--------------------+ | |||
| | | | |||
Trusted | Untrusted | Trusted | Untrusted | |||
Entities | Entities | Entities | Entities | |||
| | | | |||
Figure 1: Trusted and Untrusted Entities in PERC | Figure 1: Trusted and Untrusted Entities in PERC | |||
3.1. Untrusted Entities | 3.1. Untrusted Entities | |||
The architecture described in this framework document enables | The architecture described in this framework document enables | |||
conferencing infrastructure to be hosted in domains, such as in a | conferencing infrastructure to be hosted in domains, such as in a | |||
cloud conferencing provider's facilities, where the trustworthiness | cloud conferencing provider's facilities, where the trustworthiness | |||
is below the level needed to assume the privacy of participant's | is below the level needed to assume that the privacy of the | |||
media is not compromised. The conferencing infrastructure in such a | participant's media is not compromised. The conferencing | |||
domain is still trusted with reliably connecting the participants | infrastructure in such a domain is still trusted with reliably | |||
together in a conference, but not trusted with keying material needed | connecting the participants together in a conference but is not | |||
to decrypt any of the participant's media. Entities in such lower | trusted with keying material needed to decrypt any of the | |||
trustworthiness domains are referred to as untrusted entities from | participant's media. Entities in such less-trustworthy domains are | |||
this point forward. | referred to as untrusted entities from this point forward. | |||
It is important to understand that untrusted in this document does | It is important to understand that "untrusted" in this document does | |||
not mean an entity is not expected to function properly. Rather, it | not mean that an entity is not expected to function properly. | |||
means only that the entity does not have access to the E2E media | Rather, it means only that the entity does not have access to the E2E | |||
encryption keys. | media encryption keys. | |||
3.1.1. Media Distributor | 3.1.1. Media Distributor | |||
A Media Distributor forwards RTP flows between Endpoints in the | A Media Distributor forwards RTP flows between endpoints in the | |||
conference while performing per-hop authentication of each RTP | conference while performing per-hop authentication of each RTP | |||
packet. The Media Distributor may need access to one or more RTP | packet. The Media Distributor may need access to one or more RTP | |||
headers or header extensions, potentially adding or modifying a | headers or header extensions, potentially adding or modifying a | |||
certain subset. The Media Distributor also relays secured messaging | certain subset. The Media Distributor also relays secured messaging | |||
between the Endpoints and the Key Distributor and acquires per-hop | between the endpoints and the Key Distributor and acquires per-hop | |||
key information from the Key Distributor. The actual media content | key information from the Key Distributor. The actual media content | |||
must not be decryptable by a Media Distributor, as it is untrusted to | must not be decryptable by a Media Distributor, as it is not trusted | |||
have access to the E2E media encryption keys. The key exchange | to have access to the E2E media encryption keys. The key exchange | |||
mechanisms specified in this framework prevent the Media Distributor | mechanisms specified in this framework prevent the Media Distributor | |||
from gaining access to the E2E media encryption keys. | from gaining access to the E2E media encryption keys. | |||
An Endpoint's ability to connect to a conference serviced by a Media | An endpoint's ability to connect to a conference serviced by a Media | |||
Distributor does imply that the Endpoint is authorized to have access | Distributor implies that the endpoint is authorized to have access to | |||
to the E2E media encryption keys, as the Media Distributor does not | the E2E media encryption keys, although the Media Distributor does | |||
have the ability to determine whether an Endpoint is authorized. | not have the ability to determine whether an endpoint is authorized. | |||
Instead, the Key Distributor is responsible for authenticating the | Instead, the Key Distributor is responsible for authenticating the | |||
Endpoint (e.g., using WebRTC Identity | endpoint (e.g., using WebRTC identity assertions [RFC8827]) and | |||
[I-D.ietf-rtcweb-security-arch]) and determining its authorization to | determining its authorization to receive E2E and HBH media encryption | |||
receive E2E and HBH media encryption keys. | keys. | |||
A Media Distributor must perform its role in properly forwarding | A Media Distributor must perform its role in properly forwarding | |||
media packets while taking measures to mitigate the adverse effects | media packets while taking measures to mitigate the adverse effects | |||
of denial of service attacks (refer to Section 8) to a level equal to | of denial-of-service attacks (refer to Section 8) to a level equal to | |||
or better than traditional conferencing (non-PERC) deployments. | or better than traditional conferencing (non-PERC) deployments. | |||
A Media Distributor or associated conferencing infrastructure may | A Media Distributor or associated conferencing infrastructure may | |||
also initiate or terminate various conference control related | also initiate or terminate various messaging techniques related to | |||
messaging, which is outside the scope of this framework document. | conference control. This topic is outside the scope of this | |||
framework document. | ||||
3.1.2. Call Processing | 3.1.2. Call Processing | |||
The call processing function is untrusted in the simple, general | Call processing is untrusted in the simple, general deployment | |||
deployment scenario. When a physical subset of the call processing | scenario. When a physical subset of call processing resides in | |||
function resides in facilities outside the trusted domain, it should | facilities outside the trusted domain, it should not be trusted to | |||
not be trusted to have access to E2E key information. | have access to E2E key information. | |||
The call processing function may include the processing of call | Call processing may include the processing of call signaling | |||
signaling messages, as well as the signing of those messages. It may | messages, as well as the signing of those messages. It may also | |||
also authenticate the Endpoints for the purpose of call signaling and | authenticate the endpoints for the purpose of call signaling and of | |||
subsequently joining of a conference hosted through one or more Media | subsequently joining a conference hosted through one or more Media | |||
Distributors. Call processing may optionally ensure the privacy of | Distributors. Call processing may optionally ensure the privacy of | |||
call signaling messages between itself, the Endpoint, and other | call signaling messages between itself (call processing), the | |||
entities. | endpoint, and other entities. | |||
3.2. Trusted Entities | 3.2. Trusted Entities | |||
From the PERC model system perspective, entities considered trusted | From the PERC model system's perspective, entities considered trusted | |||
(refer to Figure 1) can be in possession of the E2E media encryption | (refer to Figure 1) can be in possession of the E2E media encryption | |||
keys for one or more conferences. | keys for one or more conferences. | |||
3.2.1. Endpoint | 3.2.1. Endpoint | |||
An Endpoint is considered trusted and has access to E2E key | An endpoint is considered trusted and has access to E2E key | |||
information. While it is possible for an Endpoint to be compromised, | information. While it is possible for an endpoint to be compromised, | |||
subsequently performing in undesired ways, defining Endpoint | subsequently performing in undesired ways, defining endpoint | |||
resistance to compromise is outside the scope of this document. | resistance to compromise is outside the scope of this document. | |||
Endpoints take measures to mitigate the adverse effects of denial of | Endpoints take measures to mitigate the adverse effects of denial-of- | |||
service attacks (refer to Section 8) from other entities, including | service attacks (refer to Section 8) from other entities, including | |||
from other Endpoints, to a level equal to or better than traditional | from other endpoints, to a level equal to or better than traditional | |||
conference (non-PERC) deployments. | conference (non-PERC) deployments. | |||
3.2.2. Key Distributor | 3.2.2. Key Distributor | |||
The Key Distributor, which may be colocated with an Endpoint or exist | The Key Distributor, which may be co-located with an endpoint or | |||
standalone, is responsible for providing key information to Endpoints | exist standalone, is responsible for providing key information to | |||
for both end-to-end (E2E) and hop-by-hop (HBH) security and for | endpoints for both E2E and HBH security and for providing key | |||
providing key information to Media Distributors for the hop-by-hop | information to Media Distributors for HBH security. | |||
security. | ||||
Interaction between the Key Distributor and the call processing | Interaction between the Key Distributor and call processing is | |||
function is necessary for proper conference-to-Endpoint mappings. | necessary for proper conference-to-endpoint mappings. This is | |||
This is described in Section 5.3. | described in Section 5.3. | |||
The Key Distributor needs to be secured and managed in a way to | The Key Distributor needs to be secured and managed in a way that | |||
prevent exploitation by an adversary, as any kind of compromise of | prevents exploitation by an adversary, as any kind of compromise of | |||
the Key Distributor puts the security of the conference at risk. | the Key Distributor puts the security of the conference at risk. | |||
They Key Distributor needs to know which Endpoints and which Media | The Key Distributor needs to know which endpoints and which Media | |||
Distributors are authorized to participate in the conference. How | Distributors are authorized to participate in the conference. How | |||
the Key Distributor obtains this information is outside the scope of | the Key Distributor obtains this information is outside the scope of | |||
this document. However, Key Distributors MUST reject DTLS | this document. However, Key Distributors MUST reject DTLS | |||
associations with any unauthorized Endpoint or Media Distributor. | associations with any unauthorized endpoint or Media Distributor. | |||
4. Framework for PERC | 4. Framework for PERC | |||
The purpose for this framework is to define a means through which | The purpose of this framework is to define a means through which | |||
media privacy is ensured when communicating within a conferencing | media privacy is ensured when communicating within a conferencing | |||
environment consisting of one or more Media Distributors that only | environment consisting of one or more Media Distributors that only | |||
switch, hence not terminate, media. It does not otherwise attempt to | switch, and hence do not terminate, media. It does not otherwise | |||
hide the fact that a conference between Endpoints is taking place. | attempt to hide the fact that a conference between endpoints is | |||
taking place. | ||||
This framework reuses several specified RTP security technologies, | This framework reuses several specified RTP security technologies, | |||
including Secure Real-time Transport Protocol (SRTP) [RFC3711], | including the Secure Real-time Transport Protocol (SRTP) [RFC3711], | |||
Encrypted Key Transport (EKT) [I-D.ietf-perc-srtp-ekt-diet], and | Encrypted Key Transport (EKT) [RFC8870], and DTLS-SRTP. | |||
DTLS-SRTP. | ||||
4.1. End-to-End and Hop-by-Hop Authenticated Encryption | 4.1. E2E-Authenticated and HBH-Authenticated Encryption | |||
This solution framework focuses on the end-to-end privacy and | This solution framework focuses on the E2E privacy and integrity of | |||
integrity of the participant's media by limiting access to only | the participant's media by limiting access to only trusted entities | |||
trusted entities to the E2E key used for authenticated end-to-end | to the E2E key used for authenticated E2E encryption. However, this | |||
encryption. However, this framework does give a Media Distributor | framework does give a Media Distributor access to RTP header fields | |||
access to RTP headers fields and header extensions, as well as the | and header extensions, as well as the ability to modify a certain | |||
ability to modify a certain subset of the header fields and to add or | subset of the header fields and to add or change header extensions. | |||
change header extensions. Packets received by a Media Distributor or | Packets received by a Media Distributor or an endpoint are | |||
an Endpoint are authenticated hop-by-hop. | authenticated hop by hop. | |||
To enable all of the above, this framework defines the use of two | To enable all of the above, this framework defines the use of two | |||
security contexts and two associated encryption keys: an "inner" key | security contexts and two associated encryption keys: an "inner" key | |||
(an E2E key distinct for each transmitted media flow) for | (a distinct E2E key for each transmitted media flow) for | |||
authenticated encryption of RTP media between Endpoints and an | authenticated encryption of RTP media between endpoints and an | |||
"outer" key (HBH key) known only to Media Distributor or the adjacent | "outer" key (a HBH key) known only to a Media Distributor or the | |||
Endpoint for the hop between an Endpoint and a Media Distributor or | adjacent endpoint for the hop between an endpoint and a Media | |||
peer Endpoint. An Endpoint will receive one or more E2E keys from | Distributor or peer endpoint. An endpoint will receive one or more | |||
every other Endpoint in the conference that correspond to the media | E2E keys from every other endpoint in the conference that correspond | |||
flows transmitted by those other Endpoints, while HBH keys are | to the media flows transmitted by those other endpoints, while HBH | |||
derived from the DTLS-SRTP association with the Key Distributor. Two | keys are derived from the DTLS-SRTP association with the Key | |||
communicating Media Distributors use DTLS-SRTP associations directly | Distributor. Two communicating Media Distributors use DTLS-SRTP | |||
with each other to obtain the HBH keys they will use. See | associations directly with each other to obtain the HBH keys they | |||
Section 4.5 for more details on key exchange. | will use. See Section 4.5 for more details on key exchange. | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| |################################| | | | |################################| | | |||
| Media |------------------------ *----->| Media | | | Media |------------------------ *----->| Media | | |||
| Distributor |<----------------------*-|------| Distributor | | | Distributor |<----------------------*-|------| Distributor | | |||
| X |#####################*#|#|######| Y | | | X |#####################*#|#|######| Y | | |||
| | | | | | | | | | | | | | | | |||
+-------------+ | | | +-------------+ | +-------------+ | | | +-------------+ | |||
# ^ | # HBH Key (XY) -+ | | # ^ | # | # ^ | # HBH Key (XY) -+ | | # ^ | # | |||
# | | # E2E Key (B) ---+ | # | | # | # | | # E2E Key (B) ---+ | # | | # | |||
skipping to change at page 9, line 27 ¶ | skipping to change at line 391 ¶ | |||
# | | *---- HBH Key (AX) HBH Key (YB) ----* | | # | # | | *---- HBH Key (AX) HBH Key (YB) ----* | | # | |||
# | | # # | | # | # | | # # | | # | |||
# *--------- E2E Key (A) E2E Key (A) ---------* # | # *--------- E2E Key (A) E2E Key (A) ---------* # | |||
# | *------- E2E Key (B) E2E Key (B) -------* | # | # | *------- E2E Key (B) E2E Key (B) -------* | # | |||
# | | # # | | # | # | | # # | | # | |||
# | v # # | v # | # | v # # | v # | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| Endpoint A | | Endpoint B | | | Endpoint A | | Endpoint B | | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
Figure 2: E2E and HBH Keys Used for Authenticated Encryption of SRTP | Figure 2: E2E and HBH Keys Used for Authenticated Encryption of | |||
Packets | SRTP Packets | |||
The Double transform [I-D.ietf-perc-double] enables Endpoints to | The double transform [RFC8723] enables endpoints to perform | |||
perform encryption using both the end-to-end and hop-by-hop contexts | encryption using both the E2E and HBH contexts while still preserving | |||
while still preserving the same overall interface as other SRTP | the same overall interface as other SRTP transforms. The Media | |||
transforms. The Media Distributor simply uses the corresponding | Distributor simply uses the corresponding normal (single) AES-GCM | |||
normal (single) AES-GCM transform, keyed with the appropriate HBH | transform, keyed with the appropriate HBH keys. See Section 6.1 for | |||
keys. See Section 6.1 for a description of the keys used in PERC and | a description of the keys used in PERC and Section 7 for a diagram of | |||
Section 7 for diagram of how encrypted RTP packets appear on the | how encrypted RTP packets appear on the wire. | |||
wire. | ||||
RTCP is only encrypted hop-by-hop, not end-to-end. This framework | RTCP is only encrypted hop by hop -- not end to end. This framework | |||
introduces no additional step for RTCP authenticated encryption, so | does not provide an additional step for RTCP-authenticated | |||
the procedures needed are specified in [RFC3711] and use the same | encryption. Rather, implementations utilize the existing procedures | |||
outer, hop-by-hop cryptographic context chosen in the Double | specified in [RFC3711]; those procedures use the same outer, HBH | |||
operation described above. For this reason, Endpoints MUST NOT send | cryptographic context chosen in the double transform operation | |||
described above. For this reason, endpoints MUST NOT send | ||||
confidential information via RTCP. | confidential information via RTCP. | |||
4.2. E2E Key Confidentiality | 4.2. E2E Key Confidentiality | |||
To ensure the confidentiality of E2E keys shared between Endpoints, | To ensure the confidentiality of E2E keys shared between endpoints, | |||
Endpoints use a common Key Encryption Key (KEK) that is known only by | 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 | the trusted entities in a conference. That KEK, defined in the EKT | |||
specification [I-D.ietf-perc-srtp-ekt-diet] as the EKT Key, is used | specification [RFC8870] as the EKT Key, is used to subsequently | |||
to subsequently encrypt the SRTP master key used for E2E | encrypt the SRTP master key used for E2E-authenticated encryption of | |||
authenticated encryption of media sent by a given Endpoint. Each | media sent by a given endpoint. Each endpoint in the conference | |||
Endpoint in the conference creates an SRTP master key for E2E | creates an SRTP master key for E2E-authenticated encryption and keeps | |||
authenticated encryption and keep track of the E2E keys received via | track of the E2E keys received via the Full EKT Tag for each distinct | |||
the Full EKT Tag for each distinct synchronization source (SSRC) in | synchronization source (SSRC) in the conference so that it can | |||
the conference so that it can properly decrypt received media. An | properly decrypt received media. An endpoint may change its E2E key | |||
Endpoint may change its E2E key at any time and advertise that new | at any time and advertise that new key to the conference as specified | |||
key to the conference as specified in [I-D.ietf-perc-srtp-ekt-diet]. | in [RFC8870]. | |||
4.3. E2E Keys and Endpoint Operations | 4.3. E2E Keys and Endpoint Operations | |||
Any given RTP media flow is identified by its SSRC, and an Endpoint | 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 | might send more than one at a time and change the mix of media flows | |||
transmitted during the life of a conference. | transmitted during the lifetime of a conference. | |||
Thus, an Endpoint MUST maintain a list of SSRCs from received RTP | Thus, an endpoint MUST maintain a list of SSRCs from received RTP | |||
flows and each SSRC's associated E2E key information. An Endpoint | flows and each SSRC's associated E2E key information. An endpoint | |||
MUST discard old E2E keys no later than when it leaves the conference | MUST discard old E2E keys no later than when it leaves the | |||
(see Section 4.5.2). | conference. | |||
If the packet is to contain RTP header extensions, it should be noted | If the packet is to contain RTP header extensions, it should be noted | |||
that those are only encrypted HBH per [I-D.ietf-perc-double]. For | that those extensions are only encrypted hop by hop per [RFC8723]. | |||
this reason, Endpoints MUST NOT transmit confidential information via | For this reason, endpoints MUST NOT transmit confidential information | |||
RTP header extensions. | via RTP header extensions. | |||
4.4. HBH Keys and Per-hop Operations | 4.4. HBH Keys and Per-Hop Operations | |||
To ensure the integrity of transmitted media packets, it is REQUIRED | To ensure the integrity of transmitted media packets, it is REQUIRED | |||
that every packet be authenticated hop-by-hop between an Endpoint and | that every packet be authenticated hop by hop between an endpoint and | |||
a Media Distributor, as well between Media Distributors. The | a Media Distributor, as well as between Media Distributors. The | |||
authentication key used for hop-by-hop authentication is derived from | authentication key used for HBH authentication is derived from an | |||
an SRTP master key shared only on the respective hop. Each HBH key | SRTP master key shared only on the respective hop. Each HBH key is | |||
is distinct per hop and no two hops ever use the same SRTP master | distinct per hop, and no two hops ever use the same SRTP master key. | |||
key. | ||||
While Endpoints also perform HBH authentication, the ability of the | While endpoints also perform HBH authentication, the ability of the | |||
Endpoints to reconstruct the original RTP header also enables the | endpoints to reconstruct the original RTP header also enables the | |||
Endpoints to authenticate RTP packets E2E. This design yields | endpoints to authenticate RTP packets end to end. This design yields | |||
flexibility to the Media Distributor to change certain RTP header | flexibility to the Media Distributor to change certain RTP header | |||
values as packets are forwarded. Which values the Media Distributor | values as packets are forwarded. Values that the Media Distributor | |||
can change in the RTP header are defined in [I-D.ietf-perc-double]. | can change in the RTP header are defined in [RFC8723]. RTCP can only | |||
RTCP can only be encrypted hop-by-hop, giving the Media Distributor | be encrypted hop by hop, giving the Media Distributor the flexibility | |||
the flexibility to forward RTCP content unchanged, transmit compound | to (1) forward RTCP content unchanged, (2) transmit compound RTCP | |||
RTCP packets or to initiate RTCP packets for reporting statistics or | packets, (3) initiate RTCP packets for reporting statistics, or | |||
conveying other information. Performing hop-by-hop authentication | (4) convey other information. Performing HBH authentication for all | |||
for all RTP and RTCP packets also helps provide replay protection | RTP and RTCP packets also helps provide replay protection (see | |||
(see Section 8). The use of the replay protection mechanism | Section 8). The use of the replay protection mechanism specified in | |||
specified in Section 3.3.2 of [RFC3711] is REQUIRED at each hop. | Section 3.3.2 of [RFC3711] is REQUIRED at each hop. | |||
If there is a need to encrypt one or more RTP header extensions hop- | 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 | by hop, the endpoint derives an encryption key from the HBH SRTP | |||
master key to encrypt header extensions as per [RFC6904]. This still | master key to encrypt header extensions as per [RFC6904]. This still | |||
gives the Media Distributor visibility into header extensions, such | gives the Media Distributor visibility into header extensions, such | |||
as the one used to determine audio level [RFC6464] of conference | as the one used to determine the audio level [RFC6464] of conference | |||
participants. Note that when RTP header extensions are encrypted, | participants. Note that when RTP header extensions are encrypted, | |||
all hops need to decrypt and re-encrypt these encrypted header | all hops need to decrypt and re-encrypt these encrypted header | |||
extensions. Please refer to Sections 5.1 through 5.3 of | extensions. Please refer to Sections 5.1, 5.2, and 5.3 of [RFC8723] | |||
[I-D.ietf-perc-double] for procedures to perform RTP header extension | for procedures to perform RTP header extension encryption and | |||
encryption and decryption. | decryption. | |||
4.5. Key Exchange | 4.5. Key Exchange | |||
In brief, the keys used by any given Endpoints are determined in the | In brief, the keys used by any given endpoints are determined as | |||
following way: | follows: | |||
o The HBH keys that the Endpoint uses to send and receive SRTP media | * The HBH keys that the endpoint uses to send and receive SRTP media | |||
are derived from a DTLS handshake that the Endpoint performs with | are derived from a DTLS handshake that the endpoint performs with | |||
the Key Distributor (following normal DTLS-SRTP procedures). | the Key Distributor (following normal DTLS-SRTP procedures). | |||
o The E2E key that an Endpoint uses to send SRTP media can either be | * 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 | set from the DTLS-SRTP association with the Key Distributor or | |||
chosen by the Endpoint. It is then distributed to other Endpoints | chosen by the endpoint. It is then distributed to other endpoints | |||
in a Full EKT Tag, encrypted under an EKT Key provided to the | in a Full EKT Tag, encrypted under an EKT Key provided to the | |||
client by the Key Distributor within the DTLS channel they | client by the Key Distributor within the DTLS channel they | |||
negotiated. Note that an Endpoint MAY create a different E2E key | negotiated. Note that an endpoint MAY create a different E2E key | |||
per media flow, where a media flow is identified by its SSRC | per media flow, where a media flow is identified by its SSRC | |||
value. | value. | |||
o Each E2E key that an Endpoint uses to receive SRTP media is set by | * Each E2E key that an endpoint uses to receive SRTP media is set by | |||
receiving a Full EKT Tag from another Endpoint. | receiving a Full EKT Tag from another endpoint. | |||
o The HBH keys used between two Media Distributors is derived from | * The HBH keys used between two Media Distributors are derived via | |||
DTLS-SRTP procedures employed directly between them. | DTLS-SRTP procedures employed directly between them. | |||
4.5.1. Initial Key Exchange and Key Distributor | 4.5.1. Initial Key Exchange and Key Distributor | |||
The Media Distributor maintains a tunnel with the Key Distributor | The Media Distributor maintains a tunnel with the Key Distributor | |||
(e.g., using [I-D.ietf-perc-dtls-tunnel]), making it possible for the | (e.g., using the tunnel protocol defined in [PERC-DTLS]), making it | |||
Media Distributor to facilitate the establishment of a secure DTLS | possible for the Media Distributor to facilitate the establishment of | |||
association between each Endpoint and the Key Distributor as shown | a secure DTLS association between each endpoint and the Key | |||
the following figure. The DTLS association between Endpoints and the | Distributor as shown in Figure 3. The DTLS association between | |||
Key Distributor enables each Endpoint to generate E2E and HBH keys | endpoints and the Key Distributor enables each endpoint to generate | |||
and receive the KEK. At the same time, the Key Distributor securely | E2E and HBH keys and receive the KEK. At the same time, the Key | |||
provides the HBH key information to the Media Distributor. The key | Distributor securely provides the HBH key information to the Media | |||
information summarized here may include the SRTP master key, SRTP | Distributor. The key information summarized here may include the | |||
master salt, and the negotiated cryptographic transform. | SRTP master key, the SRTP master salt, and the negotiated | |||
cryptographic transform. | ||||
+-----------+ | +-----------+ | |||
KEK info | Key | HBH Key info to | KEK info | Key | HBH Key info to | |||
to Endpoints |Distributor| Endpoints & Media Distributor | to Endpoints |Distributor| Endpoints & Media Distributor | |||
+-----------+ | +-----------+ | |||
# ^ ^ # | # ^ ^ # | |||
# | | #--- Tunnel | # | | #--- Tunnel | |||
# | | # | # | | # | |||
+-----------+ +-----------+ +-----------+ | +-----------+ +-----------+ +-----------+ | |||
| Endpoint | DTLS | Media | DTLS | Endpoint | | | Endpoint | DTLS | Media | DTLS | Endpoint | | |||
| KEK |<------------|Distributor|------------>| KEK | | | KEK |<------------|Distributor|------------>| KEK | | |||
| HBH Key | to Key Dist | HBH Keys | to Key Dist | HBH Key | | | HBH Key | to Key Dist | HBH Keys | to Key Dist | HBH Key | | |||
+-----------+ +-----------+ +-----------+ | +-----------+ +-----------+ +-----------+ | |||
Figure 3: Exchanging Key Information Between Entities | Figure 3: Exchanging Key Information between Entities | |||
In addition to the secure tunnel between the Media Distributor and | In addition to the secure tunnel between the Media Distributor and | |||
the Key Distributor, there are two additional types of security | the Key Distributor, there are two additional types of security | |||
associations utilized as a part of the key exchange as discussed in | associations utilized as a part of the key exchange, as discussed in | |||
the following paragraphs. One is a DTLS-SRTP association between an | the following paragraphs. One is a DTLS-SRTP association between an | |||
Endpoint and the Key Distributor (with packets passing through the | endpoint and the Key Distributor (with packets passing through the | |||
Media Distributor) and the other is a DTLS-SRTP association between | Media Distributor), and the other is a DTLS-SRTP association between | |||
peer Media Distributors. | peer Media Distributors. | |||
Endpoints establish a DTLS-SRTP association over the RTP session with | Endpoints establish a DTLS-SRTP association over the RTP session with | |||
the Media Distributor and its media ports for the purposes of key | the Media Distributor and its media ports for the purposes of key | |||
information exchange with the Key Distributor. The Media Distributor | information exchange with the Key Distributor. The Media Distributor | |||
does not terminate the DTLS signaling, but instead forwards DTLS | does not terminate the DTLS signaling but instead forwards DTLS | |||
packets received from an Endpoint on to the Key Distributor (and vice | packets received from an endpoint on to the Key Distributor (and vice | |||
versa) via a tunnel established between Media Distributor and the Key | versa) via a tunnel established between the Media Distributor and the | |||
Distributor. | Key Distributor. | |||
In establishing the DTLS association between Endpoints and the Key | When establishing the DTLS association between endpoints and the Key | |||
Distributor, the Endpoint MUST act as the DTLS client and the Key | Distributor, the endpoint MUST act as the DTLS client, and the Key | |||
Distributor MUST act as the DTLS server. The KEK is conveyed by the | Distributor MUST act as the DTLS server. The KEK is conveyed by the | |||
Key Distributor over the DTLS association to Endpoints via procedures | Key Distributor over the DTLS association to endpoints via procedures | |||
defined in EKT [I-D.ietf-perc-srtp-ekt-diet] via the EKTKey message. | defined in EKT [RFC8870] via the EKTKey message. | |||
The Key Distributor MUST NOT establish DTLS-SRTP associations with | The Key Distributor MUST NOT establish DTLS-SRTP associations with | |||
Endpoints without first authenticating the Media Distributor | endpoints without first authenticating the Media Distributor | |||
tunneling the DTLS-SRTP packets from the Endpoint. | tunneling the DTLS-SRTP packets from the endpoint. | |||
Note that following DTLS-SRTP procedures for the | Note that following DTLS-SRTP procedures for the cipher defined in | |||
[I-D.ietf-perc-double] cipher, the Endpoint generates both E2E and | [RFC8723], the endpoint generates both E2E and HBH encryption keys | |||
HBH encryption keys and salt values. Endpoints MUST either use the | and salt values. Endpoints MUST either use the DTLS-SRTP-generated | |||
DTLS-SRTP generated E2E key for transmission or generate a fresh E2E | E2E key for transmission or generate a fresh E2E key. In either | |||
key. In either case, the generated SRTP master salt for E2E | case, the generated SRTP master salt for E2E encryption MUST be | |||
encryption MUST be replaced with the salt value provided by the Key | replaced with the salt value provided by the Key Distributor via the | |||
Distributor via the EKTKey message. That is because every Endpoint | EKTKey message. That is because every endpoint in the conference | |||
in the conference uses the same SRTP master salt. The Endpoint only | uses the same SRTP master salt. The endpoint only transmits the SRTP | |||
transmits the SRTP master key (not the salt) used for E2E encryption | master key (not the salt) used for E2E encryption to other endpoints | |||
to other Endpoints in RTP/RTCP packets per | in RTP/RTCP packets per [RFC8870]. | |||
[I-D.ietf-perc-srtp-ekt-diet]. | ||||
Media Distributors use DTLS-SRTP directly with a peer Media | Media Distributors use DTLS-SRTP directly with a peer Media | |||
Distributor to establish the HBH key for transmitting RTP and RTCP | Distributor to establish the HBH key for transmitting RTP and RTCP | |||
packets to that peer Media Distributor. The Key Distributor does not | packets to that peer Media Distributor. The Key Distributor does not | |||
facilitate establishing a HBH key for use between Media Distributors. | facilitate establishing a HBH key for use between Media Distributors. | |||
4.5.2. Key Exchange during a Conference | 4.5.2. Key Exchange during a Conference | |||
Following the initial key information exchange with the Key | Following the initial key information exchange with the Key | |||
Distributor, an Endpoint is able to encrypt media end-to-end with an | 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 | 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 | KEK, and is able to encrypt and authenticate RTP packets using a HBH | |||
key. The procedures defined do not allow the Media Distributor to | key. This framework does not allow the Media Distributor to gain | |||
gain access to the KEK information, preventing it from gaining access | access to the KEK information, preventing it from gaining access to | |||
to any Endpoint's E2E key and subsequently decrypting media. | any endpoint's E2E key and subsequently decrypting media. | |||
The KEK may need to change from time-to-time during the life of a | 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, such as when a new participant joins or leaves a | |||
conference. Dictating if, when or how often a conference is to be | conference. Dictating if, when, or how often a conference is to be | |||
re-keyed is outside the scope of this document, but this framework | rekeyed is outside the scope of this document, but this framework | |||
does accommodate re-keying during the life of a conference. | does accommodate rekeying during the lifetime of a conference. | |||
When a Key Distributor decides to re-key a conference, it transmits a | When a Key Distributor decides to rekey a conference, it transmits a | |||
new EKTKey message containing the new EKT Key to each of the | new EKTKey message containing the new EKT Key to each of the | |||
conference participants. Upon receipt of the new EKT Key, the | conference participants. Upon receipt of the new EKT Key, the | |||
Endpoint MUST create a new SRTP master key and prepare to send that | endpoint MUST create a new SRTP master key and prepare to send that | |||
key inside a Full EKT Field using the new EKT Key as per Section 4.5 | key inside a FullEKTField using the new EKT Key as per Section 4.5 of | |||
of [I-D.ietf-perc-srtp-ekt-diet]. In order to allow time for all | [RFC8870]. In order to allow time for all endpoints in the | |||
Endpoints in the conference to receive the new keys, the sender | conference to receive the new keys, the sender should follow the | |||
should follow the recommendations in Section 4.7 of [I-D.ietf-perc- | recommendations in Section 4.6 of [RFC8870]. On receiving a new EKT | |||
srtp-ekt-diet]. On receiving a new EKT Key, Endpoints MUST be | Key, endpoints MUST be prepared to decrypt EKT Tags using the new | |||
prepared to decrypt EKT tags using the new key. The EKT SPI field is | key. The EKT Security Parameter Index (SPI) field is used to | |||
used to differentiate between tags encrypted with the old and new | differentiate between EKT Tags encrypted with the old and new keys. | |||
keys. | ||||
After re-keying, an Endpoint SHOULD retain prior SRTP master keys and | After rekeying, an endpoint SHOULD retain prior SRTP master keys and | |||
EKT Key for a period of time sufficient for the purpose of ensuring | EKT Keys for a period of time sufficient for the purpose of ensuring | |||
it can decrypt late-arriving or out-of-order packets or packets sent | that it can decrypt late-arriving or out-of-order packets or packets | |||
by other Endpoints that used the prior keys for a period of time | sent by other endpoints that used the prior keys for a period of time | |||
after re-keying began. An Endpoint MAY retain old keys until the end | after rekeying began. An endpoint MAY retain old keys until the end | |||
of the conference. | of the conference. | |||
Endpoints MAY follow the procedures in section 5.2 of [RFC5764] to | Endpoints MAY follow the procedures in Section 5.2 of [RFC5764] to | |||
renegotiate HBH keys as desired. If new HBH keys are generated, the | renegotiate HBH keys as desired. If new HBH keys are generated, the | |||
new keys are also delivered to the Media Distributor following the | new keys are also delivered to the Media Distributor following the | |||
procedures defined in [I-D.ietf-perc-dtls-tunnel] as one possible | procedures defined in [PERC-DTLS] as one possible method. | |||
method. | ||||
Endpoints MAY change the E2E encryption key used at any time. An | At any time, endpoints MAY change the E2E encryption key being used. | |||
Endpoint MUST generate a new E2E encryption key whenever it receives | An endpoint MUST generate a new E2E encryption key whenever it | |||
a new EKT Key. After switching to a new key, the new key is conveyed | receives a new EKT Key. After switching to a new key, the new key is | |||
to other Endpoints in the conference in RTP/RTCP packets per | conveyed to other endpoints in the conference in RTP/RTCP packets per | |||
[I-D.ietf-perc-srtp-ekt-diet]. | [RFC8870]. | |||
5. Authentication | 5. Authentication | |||
It is important to this solution framework that the entities can | It is important that entities can validate the authenticity of other | |||
validate the authenticity of other entities, especially the Key | entities, especially the Key Distributor and endpoints. Details on | |||
Distributor and Endpoints. The details of this are outside the scope | this topic are outside the scope of this specification, but a few | |||
of specification but a few possibilities are discussed in the | possibilities are discussed in the following sections. The critical | |||
following sections. The critical requirements are that an Endpoint | requirements are that (1) an endpoint can verify that it is connected | |||
can verify it is connected to the correct Key Distributor for the | to the correct Key Distributor for the conference and (2) the Key | |||
conference and the Key Distributor can verify the Endpoint is the | Distributor can verify that the endpoint is the correct endpoint for | |||
correct Endpoint for the conference. | the conference. | |||
Two possible approaches to solve this are Identity Assertions and | Two possible approaches to resolve this situation are identity | |||
Certificate Fingerprints. | assertions and certificate fingerprints. | |||
5.1. Identity Assertions | 5.1. Identity Assertions | |||
WebRTC Identity assertion [I-D.ietf-rtcweb-security-arch] is used to | A WebRTC identity assertion [RFC8827] is used to bind the identity of | |||
bind the identity of the user of the Endpoint to the fingerprint of | the user of the endpoint to the fingerprint of the DTLS-SRTP | |||
the DTLS-SRTP certificate used for the call. This certificate is | certificate used for the call. This certificate is unique for a | |||
unique for a given call and a conference. This allows the Key | given call and a conference. This certificate is unique for a given | |||
Distributor to ensure that only authorized users participate in the | call and a conference, allowing the Key Distributor to ensure that | |||
conference. Similarly the Key Distributor can create a WebRTC | only authorized users participate in the conference. Similarly, the | |||
Identity assertion to bind the fingerprint of the unique certificate | Key Distributor can create a WebRTC identity assertion to bind the | |||
used by the Key Distributor for this conference so that the Endpoint | fingerprint of the unique certificate used by the Key Distributor for | |||
can validate it is talking to the correct Key Distributor. Such a | this conference so that the endpoint can verify that it is talking to | |||
setup requires an Identity Provider (Idp) trusted by the Endpoints | the correct Key Distributor. Such a setup requires an Identity | |||
and the Key Distributor. | Provider (IdP) trusted by the endpoints and the Key Distributor. | |||
5.2. Certificate Fingerprints in Session Signaling | 5.2. Certificate Fingerprints in Session Signaling | |||
Entities managing session signaling are generally assumed to be | Entities managing session signaling are generally assumed to be | |||
untrusted in the PERC framework. However, there are some deployment | untrusted in the PERC framework. However, there are some deployment | |||
scenarios where parts of the session signaling may be assumed | scenarios where parts of the session signaling may be assumed | |||
trustworthy for the purposes of exchanging, in a manner that can be | trustworthy for the purposes of exchanging, in a manner that can be | |||
authenticated, the fingerprint of an entity's certificate. | authenticated, the fingerprint of an entity's certificate. | |||
As a concrete example, SIP [RFC3261] and Session Description Protocol | As a concrete example, SIP [RFC3261] and the Session Description | |||
(SDP) [RFC4566] can be used to convey the fingerprint information per | Protocol (SDP) [RFC4566] can be used to convey the fingerprint | |||
[RFC5763]. An Endpoint's SIP User Agent would send an INVITE message | information per [RFC5763]. An endpoint's SIP User Agent would send | |||
containing SDP for the media session along with the Endpoint's | an INVITE message containing SDP for the media session along with the | |||
certificate fingerprint, which can be signed using the procedures | endpoint's certificate fingerprint, which can be signed using the | |||
described in [RFC8224] for the benefit of forwarding the message to | procedures described in [RFC8224] for the benefit of forwarding the | |||
other entities by the Focus [RFC4353]. Other entities can verify the | message to other entities by the focus [RFC4353]. Other entities can | |||
fingerprints match the certificates found in the DTLS-SRTP | verify that the fingerprints match the certificates found in the | |||
connections to find the identity of the far end of the DTLS-SRTP | DTLS-SRTP connections to find the identity of the far end of the | |||
connection and verify that is the authorized entity. | DTLS-SRTP connection and verify that it is the authorized entity. | |||
Ultimately, if using session signaling, an Endpoint's certificate | Ultimately, if using session signaling, an endpoint's certificate | |||
fingerprint would need to be securely mapped to a user and conveyed | fingerprint would need to be securely mapped to a user and conveyed | |||
to the Key Distributor so that it can check that that user is | to the Key Distributor so that it can check that the user in question | |||
authorized. Similarly, the Key Distributor's certificate fingerprint | is authorized. Similarly, the Key Distributor's certificate | |||
can be conveyed to an Endpoint in a manner that can be authenticated | fingerprint can be conveyed to an endpoint in a manner that can be | |||
as being an authorized Key Distributor for this conference. | authenticated as being an authorized Key Distributor for this | |||
conference. | ||||
5.3. Conference Identification | 5.3. Conference Identification | |||
The Key Distributor needs to know what Endpoints are being added to a | The Key Distributor needs to know what endpoints are being added to a | |||
given conference. Thus, the Key Distributor and the Media | given conference. Thus, the Key Distributor and the Media | |||
Distributor need to know Endpoint-to-conference mappings, which is | Distributor need to know endpoint-to-conference mappings, which are | |||
enabled by exchanging a conference-specific unique identifier defined | enabled by exchanging a conference-specific unique identifier as | |||
in [I-D.ietf-perc-dtls-tunnel]. How this unique identifier is | described in [PERC-DTLS]. How this unique identifier is assigned is | |||
assigned is outside the scope of this document. | outside the scope of this document. | |||
6. PERC Keys | 6. PERC Keys | |||
This section describes the various keys employed by PERC. | This section describes the various keys employed by PERC. | |||
6.1. Key Inventory and Management Considerations | 6.1. Key Inventory and Management Considerations | |||
This section summarizes the several different keys used in the PERC | This section summarizes the several different keys used in the PERC | |||
framework, how they are generated, and what purpose they serve. | framework, how they are generated, and what purpose they serve. | |||
The keys are described in the order in which they would typically be | The keys are described in the order in which they would typically be | |||
acquired. | acquired. | |||
The various keys used in PERC are shown in Figure 4 below. | The various keys used in PERC are shown in Table 1 below. | |||
+-----------+----------------------------------------------------+ | +===========+=============================================+ | |||
| Key | Description | | | Key | Description | | |||
+-----------+----------------------------------------------------+ | +===========+=============================================+ | |||
| HBH Key | SRTP master key used to encrypt media hop-by-hop. | | | HBH Key | SRTP master key used to encrypt media hop | | |||
+-----------+----------------------------------------------------+ | | | by hop. | | |||
| KEK | Key shared by all Endpoints and used to encrypt | | +-----------+---------------------------------------------+ | |||
| (EKT Key) | each Endpoint's E2E SRTP master key so receiving | | | KEK | Key shared by all endpoints and used to | | |||
| | Endpoints can decrypt media. | | | (EKT Key) | encrypt each endpoint's E2E SRTP master key | | |||
+-----------+----------------------------------------------------+ | | | so receiving endpoints can decrypt media. | | |||
| E2E Key | SRTP master key used to encrypt media end-to-end. | | +-----------+---------------------------------------------+ | |||
+-----------+----------------------------------------------------+ | | E2E Key | SRTP master key used to encrypt media end | | |||
| | to end. | | ||||
+-----------+---------------------------------------------+ | ||||
Figure 4: Key Inventory | Table 1: Key Inventory | |||
While the number of key types is very small, it should be understood | 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 | that the actual number of distinct keys can be large as the | |||
conference grows in size. | conference grows in size. | |||
As an example, with 1,000 participants in a conference, there would | 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 | be at least 1,000 distinct SRTP master keys, all of which share the | |||
same master salt. Each of those keys are passed through the KDF | same master salt. Each of those keys is passed through the Key | |||
defined in [RFC3711] to produce the actual encryption and | Derivation Function (KDF) as defined in [RFC3711] to produce the | |||
authentication keys. | actual encryption and authentication keys. | |||
Complicating key management is the fact that the KEK can change and, | Complicating key management is the fact that the KEK can change and, | |||
when it does, the Endpoints generate new SRTP master keys that are | 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 | associated with a new EKT SPI. Endpoints might retain old keys for a | |||
period of time to ensure they can properly decrypt late-arriving or | period of time to ensure that they can properly decrypt late-arriving | |||
out-of-order packets, which means the number of keys held during that | or out-of-order packets, which means that the number of keys held | |||
period of time might substantially more. | during that period of time might be substantially higher. | |||
A more detailed explanation of each of the keys follows. | A more detailed explanation of each of the keys follows. | |||
6.2. DTLS-SRTP Exchange Yields HBH Keys | 6.2. DTLS-SRTP Exchange Yields HBH Keys | |||
The first set of keys acquired are for hop-by-hop encryption and | The first set of keys acquired are for HBH encryption and decryption. | |||
decryption. Per the Double [I-D.ietf-perc-double] procedures, the | Per the double transform procedures [RFC8723], the endpoint performs | |||
Endpoint performs DTLS-SRTP exchange with the Key Distributor and | a DTLS-SRTP exchange with the Key Distributor and receives a key that | |||
receives a key that is, in fact, "double" the size that is needed. | is, in fact, "double" the size that is needed. The E2E part is the | |||
The end-to-end part is the first half of the key, so the Endpoint | first half of the key, so the endpoint discards that information when | |||
discards that information when generating its own key. The second | generating its own key. The second half of the keying material is | |||
half of the key material is for hop-by-hop operations, so that half | for HBH operations, so that half of the key (corresponding to the | |||
of the key (corresponding to the least significant bits) is assigned | least significant bits) is assigned internally as the HBH key. | |||
internally as the HBH key. | ||||
The Key Distributor informs the Media Distributor of the HBH key. | The Key Distributor informs the Media Distributor of the HBH key. | |||
Specifically, the Key Distributor sends the least significant bits | Specifically, the Key Distributor sends the least significant bits | |||
corresponding to the half of the keying material determined through | corresponding to the half of the keying material determined through | |||
DTLS-SRTP with the Endpoint to the Media Distributor. A salt value | 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 | is generated along with the HBH key. The salt is also longer than | |||
needed for hop-by-hop operations, thus only the least significant | needed for HBH operations; thus, only the least significant bits of | |||
bits of the required length (half of the generated salt material) are | the required length (half of the generated salt material) are sent to | |||
sent to the Media Distributor. One way to transmit this key and salt | the Media Distributor. One way to transmit this key and salt | |||
information is via the tunnel protocol defined in | information is via the tunnel protocol defined in [PERC-DTLS]. | |||
[I-D.ietf-perc-dtls-tunnel]. | ||||
No two Endpoints have the same HBH key, thus the Media Distributor | No two endpoints have the same HBH key; thus, the Media Distributor | |||
MUST keep track each distinct HBH key (and the corresponding salt) | MUST keep track of each distinct HBH key (and the corresponding salt) | |||
and use it only for the specified hop. | and use it only for the specified hop. | |||
The HBH key is also used for hop-by-hop encryption of RTCP. RTCP is | The HBH key is also used for HBH encryption of RTCP. RTCP is not | |||
not end-to-end encrypted in PERC. | E2E-encrypted in PERC. | |||
6.3. The Key Distributor Transmits the KEK (EKT Key) | 6.3. The Key Distributor Transmits the KEK (EKT Key) | |||
Via the aforementioned DTLS-SRTP association, the Key Distributor | The Key Distributor sends the KEK (the EKT Key per [RFC8870]) to the | |||
sends the Endpoint the KEK (EKT Key per | endpoint via the aforementioned DTLS-SRTP association. This key is | |||
[I-D.ietf-perc-srtp-ekt-diet]). This key is known only to the Key | known only to the Key Distributor and endpoints; it is the most | |||
Distributor and Endpoints. This key is the most important to protect | important entity to protect, since having knowledge of this key (and | |||
since having knowledge of this key (and the SRTP master salt | the SRTP master salt transmitted as a part of the same message) | |||
transmitted as a part of the same message) allows an entity to | allows an entity to decrypt any media packet in the conference. | |||
decrypt any media packet in the conference. | ||||
Note that the Key Distributor can send any number of EKT Keys to | Note that the Key Distributor can send any number of EKT Keys to | |||
Endpoints. This is used to re-key the entire conference. Each key | endpoints. This information is used to rekey the entire conference. | |||
is identified by a "Security Parameter Index" (SPI) value. Endpoints | Each key is identified by an SPI value. Endpoints MUST expect that a | |||
MUST expect that a conference might be re-keyed when a new | conference might be rekeyed when a new participant joins a conference | |||
participant joins a conference or when a participant leaves a | or when a participant leaves a conference, in order to protect the | |||
conference in order to protect the confidentiality of the | confidentiality of the conversation before and after such events. | |||
conversation before and after such events. | ||||
The SRTP master salt to be used by the Endpoint is transmitted along | 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 | with the EKT Key. All endpoints in the conference utilize the same | |||
SRTP master salt that corresponds with a given EKT Key. | SRTP master salt that corresponds with a given EKT Key. | |||
The Full EKT Tag in media packets is encrypted using a cipher | 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 | 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 | 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 | and is only used to encrypt the endpoint's SRTP master key (and other | |||
EKT Tag data as per [I-D.ietf-perc-srtp-ekt-diet]). | EKT Tag data as per [RFC8870]). | |||
The Media Distributor is not given the KEK. | The KEK is not given to the Media Distributor. | |||
6.4. Endpoints fabricate an SRTP Master Key | 6.4. Endpoints Fabricate an SRTP Master Key | |||
As stated earlier, the E2E key determined via DTLS-SRTP MAY be | As stated earlier, the E2E key determined via DTLS-SRTP MAY be | |||
discarded in favor of a locally-generated E2E SRTP master key. While | discarded in favor of a locally generated E2E SRTP master key. While | |||
the DTLS-SRTP-derived SRTP master key can be used initially, the | the DTLS-SRTP-derived SRTP master key can be used initially, the | |||
Endpoint might choose to change the SRTP master key periodically and | endpoint might choose to change the SRTP master key periodically and | |||
MUST change the SRTP master key as a result of the EKT key changing. | MUST change the SRTP master key as a result of the EKT Key changing. | |||
A locally-generated SRTP master key is used along with the master | A locally generated SRTP master key is used along with the master | |||
salt transmitted to the Endpoint from the Key Distributor via the | salt transmitted to the endpoint from the Key Distributor via the | |||
EKTKey message to encrypt media end-to-end. | EKTKey message to encrypt media end to end. | |||
Since the Media Distributor is not involved in E2E functions, it does | Since the Media Distributor is not involved in E2E functions, it does | |||
not create this key nor have access to any Endpoint's E2E key. Note, | not create this key, nor does it have access to any endpoint's E2E | |||
too, that even the Key Distributor is unaware of the locally- | key. Note, too, that even the Key Distributor is unaware of the | |||
generated E2E keys used by each Endpoint. | locally generated E2E keys used by each endpoint. | |||
The Endpoint transmits its E2E key to other Endpoints in the | The endpoint transmits its E2E key to other endpoints in the | |||
conference by periodically including it in SRTP packets in a Full EKT | 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 | 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 | Key provided by the Key Distributor. The master salt is not | |||
transmitted, though, since all Endpoints receive the same master salt | transmitted, though, since all endpoints receive the same master salt | |||
via the EKTKey message from the Key Distributor. The recommended | via the EKTKey message from the Key Distributor. The recommended | |||
frequency with which an Endpoint transmits its SRTP master key is | frequency with which an endpoint transmits its SRTP master key is | |||
specified in [I-D.ietf-perc-srtp-ekt-diet]. | specified in [RFC8870]. | |||
6.5. Summary of Key Types and Entity Possession | 6.5. Summary of Key Types and Entity Possession | |||
All Endpoints have knowledge of the KEK. | All endpoints have knowledge of the KEK. | |||
Every HBH key is distinct for a given Endpoint, thus Endpoint A and | 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 | 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 | 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 | HBH key per endpoint. (The only exception is where the DTLS-SRTP | |||
association might be rekeyed per Section 5.2 of [RFC5764] and a new | association might be rekeyed per Section 5.2 of [RFC5764] and a new | |||
key is created to replace the former key.) | key is created to replace the former key.) | |||
Each Endpoint generates its own E2E key (SRTP master key), thus there | Each endpoint generates its own E2E key (SRTP master key); thus, | |||
is a distinct E2E key per endpoint. This key is transmitted | there is a distinct E2E key per endpoint. This key is transmitted | |||
(encrypted) via the Full EKT Tag to other Endpoints. Endpoints that | (encrypted) via the Full EKT Tag to other endpoints. Endpoints that | |||
receive media from a given transmitting Endpoint gain knowledge of | receive media from a given transmitting endpoint gain knowledge of | |||
the transmitter's E2E key via the Full EKT Tag. | the transmitter's E2E key via the Full EKT Tag. | |||
To summarize the various keys and which entity is in possession of a | Table 2 summarizes the various keys and which entity is in possession | |||
given key, refer to Figure 5. | of a given key. | |||
+----------------------+------------+-------+-------+------------+ | +=======================+============+======+======+============+ | |||
| Key / Entity | Endpoint A | MD X | MD Y | Endpoint B | | | Key/Entity | Endpoint A | MD X | MD Y | Endpoint B | | |||
+----------------------+------------+-------+-------+------------+ | +=======================+============+======+======+============+ | |||
| KEK (EKT Key) | Yes | No | No | Yes | | | KEK (EKT Key) | Yes | No | No | Yes | | |||
+----------------------+------------+-------+-------+------------+ | +-----------------------+------------+------+------+------------+ | |||
| E2E Key (A and B) | Yes | No | No | Yes | | | E2E Key (A and B) | Yes | No | No | Yes | | |||
+----------------------+------------+-------+-------+------------+ | +-----------------------+------------+------+------+------------+ | |||
| HBH Key (A<=>MD X) | Yes | Yes | No | No | | | HBH Key (A<=>MD X) | Yes | Yes | No | No | | |||
+----------------------+------------+-------+-------+------------+ | +-----------------------+------------+------+------+------------+ | |||
| HBH Key (B<=>MD Y) | No | No | Yes | Yes | | | HBH Key (B<=>MD Y) | No | No | Yes | Yes | | |||
+----------------------+------------+---------------+------------+ | +-----------------------+------------+------+------+------------+ | |||
| HBH Key (MD X<=>MD Y)| No | Yes | Yes | No | | | HBH Key (MD X<=>MD Y) | No | Yes | Yes | No | | |||
+----------------------+------------+---------------+------------+ | +-----------------------+------------+------+------+------------+ | |||
Figure 5: Keys Types and Entity Possession | Table 2: Key Types and Entity Possession | |||
7. Encrypted Media Packet Format | 7. Encrypted Media Packet Format | |||
Figure 6 presents a complete picture of what an encrypted media | Figure 4 presents a complete picture of what an encrypted media | |||
packet per this framework looks like when transmitted over the wire. | packet per this framework looks like when transmitted over the wire. | |||
The packet format shown is encrypted using the Double cryptographic | The packet format shown in the figure is encrypted using the double | |||
transform with an EKT Tag appended to the end. | cryptographic transform with an EKT Tag appended to the end. | |||
0 1 2 3 | 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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<++ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<++ | |||
|V=2|P|X| CC |M| PT | sequence number | IO | |V=2|P|X| CC |M| PT | sequence number | IO | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO | |||
| timestamp | IO | | timestamp | IO | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IO | |||
| synchronization source (SSRC) identifier | IO | | synchronization source (SSRC) identifier | IO | |||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ IO | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ IO | |||
skipping to change at page 20, line 32 ¶ | skipping to change at line 881 ¶ | |||
O +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+O | O +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+O | |||
O | | E2E authentication tag | |O | O | | E2E authentication tag | |O | |||
O | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |O | O | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |O | |||
O | | OHB ... | |O | O | | OHB ... | |O | |||
+>| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+ | +>| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+ | |||
| | | HBH authentication tag | || | | | | HBH authentication tag | || | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || | |||
| | | EKT Tag ... | R || | | | | EKT Tag ... | R || | |||
| | +-+-+-+-+-+-+-+-+-+ | || | | | +-+-+-+-+-+-+-+-+-+ | || | |||
| | +- Neither encrypted nor authenticated; || | | | +- Neither encrypted nor authenticated; || | |||
| | appended after Double is performed || | | | appended after the double transform || | |||
| | || | | | is performed || | |||
| | || | | | || | |||
| +- E2E Encrypted Portion E2E Authenticated Portion ---+| | | +- E2E-Encrypted Portion E2E-Authenticated Portion ---+| | |||
| | | | | | |||
+--- HBH Encrypted Portion HBH Authenticated Portion ----+ | +--- HBH-Encrypted Portion HBH-Authenticated Portion ----+ | |||
I = Inner (E2E) encryption / authentication | I = Inner (E2E) encryption/authentication | |||
O = Outer (HBH) encryption / authentication | O = Outer (HBH) encryption/authentication | |||
Figure 6: Encrypted Media Packet Format | Figure 4: Encrypted Media Packet Format | |||
8. Security Considerations | 8. Security Considerations | |||
8.1. Third Party Attacks | 8.1. Third-Party Attacks | |||
Third party attacks are attacks attempted by an adversary that is not | Third-party attacks are attacks attempted by an adversary that is not | |||
supposed to have access to keying material or is otherwise not an | supposed to have access to keying material or is otherwise not an | |||
authorized participant in the conference. | authorized participant in the conference. | |||
On-path attacks are mitigated by hop-by-hop integrity protection and | On-path attacks are mitigated by HBH integrity protection and | |||
encryption. The integrity protection mitigates packet modification | encryption. The integrity protection mitigates packet modification. | |||
and encryption makes selective blocking of packets harder, but not | Encryption makes selective blocking of packets harder, but not | |||
impossible. | impossible. | |||
Off-path attackers could try connecting to different PERC entities to | Off-path attackers could try connecting to different PERC entities to | |||
send specifically crafted packets with an aim of forcing the receiver | send specifically crafted packets with an aim of forcing the receiver | |||
to forward or render bogus media packets. Endpoints and Media | to forward or render bogus media packets. Endpoints and Media | |||
Distributors mitigate such an attack by performing hop-by-hop | Distributors mitigate such an attack by performing HBH authentication | |||
authentication and discarding packets that fail authentication. | and discarding packets that fail authentication. | |||
Another attack vector is a third party claiming to be a Media | Another attack vector is a third party claiming to be a Media | |||
Distributor, fooling Endpoints into sending packets to the false | Distributor, fooling endpoints into sending packets to the false | |||
Media Distributor instead of the correct one. The deceived sending | Media Distributor instead of the correct one. The deceived sending | |||
Endpoints could incorrectly assume their packets have been delivered | endpoints could incorrectly assume that their packets have been | |||
to Endpoints when they in fact have not. While this attack is | delivered to endpoints when they in fact have not. While this attack | |||
possible, the result is a simple denial of service with no leakage of | is possible, the result is a simple denial of service with no leakage | |||
confidential information, since the false Media Distributor would not | of confidential information, since the false Media Distributor would | |||
have access to either HBH or E2E encryption keys. | not have access to either HBH or E2E encryption keys. | |||
A third party could cause a denial-of-service by transmitting many | A third party could cause a denial of service by transmitting many | |||
bogus or replayed packets toward receiving devices that ultimately | bogus or replayed packets toward receiving devices and ultimately | |||
degrade conference or device performance. Therefore, implementations | degrading conference or device performance. Therefore, | |||
might wish to devise mechanisms to safeguard against such | implementations might wish to devise mechanisms to safeguard against | |||
illegitimate packets, such as utilizing rate-limiting or performing | such illegitimate packets, such as utilizing rate-limiting or | |||
basic sanity-checks on packets (e.g., looking at packet length or | performing basic sanity checks on packets (e.g., looking at packet | |||
expected sequence number ranges) before performing more expensive | length or expected sequence number ranges), before performing | |||
decryption operations. | decryption operations that are more expensive. | |||
Use of mutual DTLS authentication (as required by DTLS-SRTP) also | The use of mutual DTLS authentication (as required by DTLS-SRTP) also | |||
helps to prevent a denial-of-service attack by preventing a false | helps to prevent a denial-of-service attack by preventing a false | |||
Endpoint or false Media Distributor from successfully participating | endpoint or false Media Distributor from successfully participating | |||
as a perceived valid media sender that could otherwise carry out an | as a perceived valid media sender that could otherwise carry out an | |||
on-path attack. When mutual authentication fails, a receiving | on-path attack. When mutual authentication fails, a receiving | |||
Endpoint would know that it could safely discard media packets | endpoint would know that it could safely discard media packets | |||
received from the Endpoint without inspection. | received from the endpoint without inspection. | |||
8.2. Media Distributor Attacks | 8.2. Media Distributor Attacks | |||
A malicious or compromised Media Distributor can attack the session | A malicious or compromised Media Distributor can attack the session | |||
in a number of possible ways. | in a number of possible ways, as discussed below. | |||
8.2.1. Denial of service | 8.2.1. Denial of Service | |||
A simple form of attack is discarding received packets that should be | A simple form of attack is discarding received packets that should be | |||
forwarded. This solution framework does not introduce any mitigation | forwarded. This solution framework does not provide any mitigation | |||
for Media Distributors that fail to forward media packets. | mechanisms for Media Distributors that fail to forward media packets. | |||
Another form of attack is modifying received packets before | Another form of attack is modifying received packets before | |||
forwarding. With this solution framework, any modification of the | forwarding. With this solution framework, any modification of the | |||
end-to-end authenticated data results in the receiving Endpoint | E2E-authenticated data results in the receiving endpoint getting an | |||
getting an integrity failure when performing authentication on the | integrity failure when performing authentication on the received | |||
received packet. | packet. | |||
The Media Distributor can also attempt to perform resource | The Media Distributor can also attempt to perform resource | |||
consumption attacks on the receiving Endpoint. One such attack would | consumption attacks on the receiving endpoint. One such attack would | |||
be to insert random SSRC/CSRC values in any RTP packet along with a | 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 | Full EKT Tag. Since such a message would trigger the receiver to | |||
form a new cryptographic context, the Media Distributor can attempt | form a new cryptographic context, the Media Distributor can attempt | |||
to consume the receiving Endpoint's resources. While E2E | to consume the receiving endpoint's resources. While E2E | |||
authentication would fail and the cryptographic context would be | authentication would fail and the cryptographic context would be | |||
destroyed, the key derivation operation would nonetheless consume | destroyed, the key derivation operation would nonetheless consume | |||
some computational resources. While resource consumption attacks | some computational resources. While resource consumption attacks | |||
cannot be mitigated entirely, rate-limiting packets might help reduce | cannot be mitigated entirely, rate-limiting packets might help reduce | |||
the impact of such attacks. | the impact of such attacks. | |||
8.2.2. Replay Attack | 8.2.2. Replay Attacks | |||
A replay attack is when an already received packet from a previous | A replay attack is an attack where an already-received packet from a | |||
point in the RTP stream is replayed as new packet. This could, for | previous point in the RTP stream is replayed as a new packet. This | |||
example, allow a Media Distributor to transmit a sequence of packets | could, for example, allow a Media Distributor to transmit a sequence | |||
identified as a user saying "yes", instead of the "no" the user | of packets identified as a user saying "yes", instead of the "no" the | |||
actually said. | user actually said. | |||
A replay attack is mitigated by the requirement to implement replay | A replay attack is mitigated by the requirement to implement replay | |||
protection as described in Section 3.3.2 of [RFC3711]. End-to-end | protection as described in Section 3.3.2 of [RFC3711]. E2E replay | |||
replay protection MUST be provided for the duration of the | protection MUST be provided for the duration of the conference. | |||
conference. | ||||
8.2.3. Delayed Playout Attack | 8.2.3. Delayed Playout Attacks | |||
A delayed playout attack is one where media is received and held by a | A delayed playout attack is an attack where media is received and | |||
Media Distributor and then forwarded to Endpoints at a later point in | held by a Media Distributor and then forwarded to endpoints at a | |||
time. | later point in time. | |||
This attack is possible even if E2E replay protection is in place. | This attack is possible even if E2E replay protection is in place. | |||
Because the Media Distributor is allowed to select a subset of | Because the Media Distributor is allowed to select a subset of | |||
streams and not forward the rest to a receiver, such as in forwarding | 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 | only the most active speakers, the receiver has to accept gaps in the | |||
E2E packet sequence. The issue with this is that a Media Distributor | E2E packet sequence. The problem here is that a Media Distributor | |||
can select to not deliver a particular stream for a while. | can choose to not deliver a particular stream for a while. | |||
While the Media Distributor can purposely stop forwarding media | While the Media Distributor can purposely stop forwarding media | |||
flows, it can also select an arbitrary starting point to resume | flows, it can also select an arbitrary starting point to resume | |||
forwarding those media flow, perhaps forwarding old packets rather | forwarding those media flows, perhaps forwarding old packets rather | |||
than current packets. As a consequence, what the media source sent | than current packets. As a consequence, what the media source sent | |||
can be substantially delayed at the receiver with the receiver | can be substantially delayed at the receiver with the receiver | |||
believing that newly arriving packets are delayed only by transport | believing that newly arriving packets are delayed only by transport | |||
delay when the packets may actually be minutes or hours old. | delay when the packets may actually be minutes or hours old. | |||
While this attack cannot be eliminated entirely, its effectiveness | While this attack cannot be eliminated entirely, its effectiveness | |||
can be reduced by re-keying the conference periodically since | can be reduced by rekeying the conference periodically, since | |||
significantly-delayed media encrypted with expired keys would not be | significantly delayed media encrypted with expired keys would not be | |||
decrypted by Endpoints. | decrypted by endpoints. | |||
8.2.4. Splicing Attack | 8.2.4. Splicing Attacks | |||
A splicing attack is an attack where a Media Distributor receiving | A splicing attack is an attack where a Media Distributor receiving | |||
multiple media sources splices one media stream into the other. If | multiple media sources splices one media stream into the other. If | |||
the Media Distributor were able to change the SSRC without the | the Media Distributor were able to change the SSRC without the | |||
receiver having any method for verifying the original source ID, then | receiver having any method for verifying the original source ID, then | |||
the Media Distributor could first deliver stream A and then later | the Media Distributor could first deliver stream A and then later | |||
forward stream B under the same SSRC as stream A was previously | forward stream B under the same SSRC that stream A was previously | |||
using. By including the SSRC in the integrity check for each packet, | using. By including the SSRC in the integrity check for each packet | |||
both HBH and E2E, PERC prevents splicing attacks. | -- both HBH and E2E -- PERC prevents splicing attacks. | |||
8.2.5. RTCP Attacks | 8.2.5. RTCP Attacks | |||
PERC does not provide end-to-end protection of RTCP messages. This | PERC does not provide E2E protection of RTCP messages. This allows a | |||
allows a compromised Media Distributor to impact any message that | compromised Media Distributor to impact any message that might be | |||
might be transmitted via RTCP, including media statistics, picture | transmitted via RTCP, including media statistics, picture requests, | |||
requests, or loss indication. It is also possible for a compromised | or loss indication. It is also possible for a compromised Media | |||
Media Distributor to forge requests, such as requests to the Endpoint | Distributor to forge requests, such as requests to the endpoint to | |||
to send a new picture. Such requests can consume significant | send a new picture. Such requests can consume significant bandwidth | |||
bandwidth and impair conference performance. | and impair conference performance. | |||
8.3. Key Distributor Attacks | 8.3. Key Distributor Attacks | |||
As stated in Section 3.2.2, the Key Distributor needs to be secured | As stated in Section 3.2.2, the Key Distributor needs to be secured, | |||
since exploiting the Key Server can allow an adversary to gain access | since exploiting the Key Server can allow an adversary to gain access | |||
to the keying material for one or more conferences. Having access to | to the keying material for one or more conferences. Having access to | |||
that keying material would then allow the adversary to decrypt media | that keying material would then allow the adversary to decrypt media | |||
sent from any Endpoint in the conference. | sent from any endpoint in the conference. | |||
As a first line of defense, the Key Distributor authenticates every | As a first line of defense, the Key Distributor authenticates every | |||
security association, both associations with Endpoints and Media | security association -- associations with both endpoints and Media | |||
Distributors. The Key Distributor knows which entities are | Distributors. The Key Distributor knows which entities are | |||
authorized to have access to which keys and inspection of | authorized to have access to which keys, and inspection of | |||
certificates will substantially reduce the risk of providing keys to | certificates will substantially reduce the risk of providing keys to | |||
an adversary. | an adversary. | |||
Both physical and network access to the Key Distributor should be | Both physical and network access to the Key Distributor should be | |||
severely restricted. This may be more difficult to achieve when the | severely restricted. This may be more difficult to achieve when the | |||
Key Distributor is embedded within and Endpoint, for example. | Key Distributor is embedded within, for example, an endpoint. | |||
Nonetheless, consideration should be given to shielding the Key | Nonetheless, consideration should be given to shielding the Key | |||
Distributor from unauthorized access or any access that is not | Distributor from unauthorized access or any access that is not | |||
strictly necessary for the support of an ongoing conference. | strictly necessary for the support of an ongoing conference. | |||
Consideration should be given to whether access to the keying | Consideration should be given to whether access to the keying | |||
material will be needed beyond the conclusion of a conference. If | material will be needed beyond the conclusion of a conference. If | |||
not needed, the Key Distributor's policy should be to destroy the | not needed, the Key Distributor's policy should be to destroy the | |||
keying material once the conference concludes or when keying material | keying material once the conference concludes or when keying material | |||
changes during the course of the conference. If keying material is | changes during the course of the conference. If keying material is | |||
needed beyond the lifetime of the conference, further consideration | needed beyond the lifetime of the conference, further consideration | |||
should be given to protecting keying material from future exposure. | should be given to protecting keying material from future exposure. | |||
While it might be obvious, it is worth stating to avoid any doubt | While it might seem obvious, it is worth making this point, to avoid | |||
that if an adversary were to record the media packets transmitted | any doubt that if an adversary were to record the media packets | |||
during a conference and then gain unauthorized access to the keying | transmitted during a conference and then gain unauthorized access to | |||
material left unsecured on the Key Distributor even years later, the | the keying material left unsecured on the Key Distributor even years | |||
adversary could decrypt the content every packet transmitted during | later, the adversary could decrypt the content of every packet | |||
the conference. | transmitted during the conference. | |||
8.4. Endpoint Attacks | 8.4. Endpoint Attacks | |||
A Trusted Endpoint is so named because conference confidentiality | A Trusted Endpoint is so named because conference confidentiality | |||
relies heavily on the security and integrity of the Endpoint. If an | relies heavily on the security and integrity of the endpoint. If an | |||
adversary successfully exploits a vulnerability in an Endpoint, it | adversary successfully exploits a vulnerability in an endpoint, it | |||
might be possible for the adversary to obtain all of the keying | might be possible for the adversary to obtain all of the keying | |||
material used in the conference. With that keying material, an | material used in the conference. With that keying material, an | |||
adversary could decrypt any of the media flows received from any | adversary could decrypt any of the media flows received from any | |||
other Endpoint, either in real-time or at a later point in time | other endpoint, either in real time or at a later point in time | |||
(assuming the adversary makes a copy of the media packets). | (assuming that the adversary makes a copy of the media packets). | |||
Additionally, if an adversary successfully exploits an Endpoint, the | Additionally, if an adversary successfully exploits an endpoint, the | |||
adversary could inject media into the conference. One way an | adversary could inject media into the conference. For example, an | |||
adversary could do that is by manipulating the RTP or SRTP software | adversary could manipulate the RTP or SRTP software to transmit | |||
to transmit whatever media the adversary wishes to send. This could | whatever media the adversary wishes to send. This could involve the | |||
involve re-use of the Endpoint's SSRC, a new SSRC, or the SSRC value | reuse of the compromised endpoint's SSRC or, since all conference | |||
of an existing endpoint. This is made possible since all conference | participants share the same KEK, the use of a new SSRC or the SSRC | |||
participants share the same KEK. Only a single SRTP cipher suite | value of another endpoint. Only a single SRTP cipher suite defined | |||
defined provides source authentication properties that allow an | provides source authentication properties that allow an endpoint to | |||
endpoint to cryptographically assert that it sent a particular E2E | cryptographically assert that it sent a particular E2E-protected | |||
protected packet (namely, TESLA [RFC4383]), and its usage is | packet (namely, Timed Efficient Stream Loss-Tolerant Authentication | |||
presently not defined for PERC. The suite defined in PERC only | (TESLA) [RFC4383]), and its usage is presently not defined for PERC. | |||
allows an Endpoint to determine that whoever sent a packet had | The suite defined in PERC only allows an endpoint to determine that | |||
received the KEK. | whoever sent a packet had received the KEK. | |||
However, attacks on the endpoint are not limited to the PERC-specific | However, attacks on the endpoint are not limited to the PERC-specific | |||
software within the Endpoint. An attacker could inject media or | software within the endpoint. An attacker could inject media or | |||
record media by manipulating the software that sits between the PERC- | record media by manipulating the software that sits between the PERC- | |||
enabled application and the hardware microphone of video camera, for | enabled application and the hardware microphone of a video camera, | |||
example. Likewise, an attacker could potentially access confidential | for example. Likewise, an attacker could potentially access | |||
media by accessing memory, cache, disk storage, etc. if the endpoint | confidential media by accessing memory, cache, disk storage, etc. if | |||
is no secured. | the endpoint is not secured. | |||
9. IANA Considerations | 9. IANA Considerations | |||
There are no IANA considerations for this document. | This document has no IANA actions. | |||
10. Acknowledgments | ||||
The authors would like to thank Mo Zanaty, Christian Oien, and | ||||
Richard Barnes for invaluable input on this document. Also, we would | ||||
like to acknowledge Nermeen Ismail for serving on the initial | ||||
versions of this document as a co-author. We would also like to | ||||
acknowledge John Mattsson, Mats Naslund, and Magnus Westerlund for | ||||
providing some of the text in the document, including much of the | ||||
original text in the security considerations section. | ||||
11. References | ||||
11.1. Normative References | ||||
[I-D.ietf-perc-double] | 10. References | |||
Jennings, C., Jones, P., Barnes, R., and A. Roach, "SRTP | ||||
Double Encryption Procedures", draft-ietf-perc-double-10 | ||||
(work in progress), October 2018. | ||||
[I-D.ietf-perc-srtp-ekt-diet] | 10.1. Normative References | |||
Jennings, C., Mattsson, J., McGrew, D., Wing, D., and F. | ||||
Andreasen, "Encrypted Key Transport for DTLS and Secure | ||||
RTP", draft-ietf-perc-srtp-ekt-diet-09 (work in progress), | ||||
October 2018. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | |||
July 2003, <https://www.rfc-editor.org/info/rfc3550>. | July 2003, <https://www.rfc-editor.org/info/rfc3550>. | |||
skipping to change at page 26, line 14 ¶ | skipping to change at line 1127 ¶ | |||
[RFC6904] Lennox, J., "Encryption of Header Extensions in the Secure | [RFC6904] Lennox, J., "Encryption of Header Extensions in the Secure | |||
Real-time Transport Protocol (SRTP)", RFC 6904, | Real-time Transport Protocol (SRTP)", RFC 6904, | |||
DOI 10.17487/RFC6904, April 2013, | DOI 10.17487/RFC6904, April 2013, | |||
<https://www.rfc-editor.org/info/rfc6904>. | <https://www.rfc-editor.org/info/rfc6904>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
11.2. Informative References | [RFC8723] Jennings, C., Jones, P., Barnes, R., and A.B. Roach, | |||
"Double Encryption Procedures for the Secure Real-Time | ||||
Transport Protocol (SRTP)", RFC 8723, | ||||
DOI 10.17487/RFC8723, April 2020, | ||||
<https://www.rfc-editor.org/info/rfc8723>. | ||||
[I-D.ietf-perc-dtls-tunnel] | [RFC8870] Jennings, C., Mattsson, J., McGrew, D., Wing, D., and F. | |||
Jones, P., Ellenbogen, P., and N. Ohlmeier, "DTLS Tunnel | Andreasen, "Encrypted Key Transport for DTLS and Secure | |||
between a Media Distributor and Key Distributor to | RTP", RFC 8870, DOI 10.17487/RFC8870, January 2021, | |||
Facilitate Key Exchange", draft-ietf-perc-dtls-tunnel-05 | <https://www.rfc-editor.org/info/rfc8870>. | |||
(work in progress), April 2019. | ||||
[I-D.ietf-rtcweb-security-arch] | 10.2. Informative References | |||
Rescorla, E., "WebRTC Security Architecture", draft-ietf- | ||||
rtcweb-security-arch-18 (work in progress), February 2019. | [PERC-DTLS] | |||
Jones, P. E., Ellenbogen, P. M., and N. H. Ohlmeier, "DTLS | ||||
Tunnel between a Media Distributor and Key Distributor to | ||||
Facilitate Key Exchange", Work in Progress, Internet- | ||||
Draft, draft-ietf-perc-dtls-tunnel-06, 16 October 2019, | ||||
<https://tools.ietf.org/html/draft-ietf-perc-dtls-tunnel- | ||||
06>. | ||||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
DOI 10.17487/RFC3261, June 2002, | DOI 10.17487/RFC3261, June 2002, | |||
<https://www.rfc-editor.org/info/rfc3261>. | <https://www.rfc-editor.org/info/rfc3261>. | |||
[RFC4353] Rosenberg, J., "A Framework for Conferencing with the | [RFC4353] Rosenberg, J., "A Framework for Conferencing with the | |||
Session Initiation Protocol (SIP)", RFC 4353, | Session Initiation Protocol (SIP)", RFC 4353, | |||
DOI 10.17487/RFC4353, February 2006, | DOI 10.17487/RFC4353, February 2006, | |||
skipping to change at page 27, line 27 ¶ | skipping to change at line 1197 ¶ | |||
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | [RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | |||
DOI 10.17487/RFC7667, November 2015, | DOI 10.17487/RFC7667, November 2015, | |||
<https://www.rfc-editor.org/info/rfc7667>. | <https://www.rfc-editor.org/info/rfc7667>. | |||
[RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | |||
"Authenticated Identity Management in the Session | "Authenticated Identity Management in the Session | |||
Initiation Protocol (SIP)", RFC 8224, | Initiation Protocol (SIP)", RFC 8224, | |||
DOI 10.17487/RFC8224, February 2018, | DOI 10.17487/RFC8224, February 2018, | |||
<https://www.rfc-editor.org/info/rfc8224>. | <https://www.rfc-editor.org/info/rfc8224>. | |||
[W3C.CR-webrtc-20180927] | [RFC8827] Rescorla, E., "WebRTC Security Architecture", RFC 8827, | |||
Bergkvist, A., Burnett, D., Jennings, C., Narayanan, A., | DOI 10.17487/RFC8827, January 2021, | |||
Aboba, B., Brandstetter, T., and J. Bruaroey, "WebRTC 1.0: | <https://www.rfc-editor.org/info/rfc8827>. | |||
Real-time Communication Between Browsers", World Wide Web | ||||
Consortium CR CR-webrtc-20180927, September 2018, | [W3C.CR-webrtc] | |||
<https://www.w3.org/TR/2018/CR-webrtc-20180927>. | Jennings, C., Boström, H., and J-I. Bruaroey, "WebRTC 1.0: | |||
Real-time Communication Between Browsers", W3C Proposed | ||||
Recommendation, <https://www.w3.org/TR/webrtc/>. | ||||
Acknowledgments | ||||
The authors would like to thank Mo Zanaty, Christian Oien, and | ||||
Richard Barnes for invaluable input on this document. Also, we would | ||||
like to acknowledge Nermeen Ismail for serving on the initial draft | ||||
versions of this document as a coauthor. We would also like to | ||||
acknowledge John Mattsson, Mats Naslund, and Magnus Westerlund for | ||||
providing some of the text in the document, including much of the | ||||
original text in the Security Considerations section (Section 8). | ||||
Authors' Addresses | Authors' Addresses | |||
Paul E. Jones | Paul E. Jones | |||
Cisco | Cisco | |||
7025 Kit Creek Rd. | 7025 Kit Creek Rd. | |||
Research Triangle Park, North Carolina 27709 | Research Triangle Park, North Carolina 27709 | |||
USA | United States of America | |||
Phone: +1 919 476 2048 | Phone: +1 919 476 2048 | |||
Email: paulej@packetizer.com | Email: paulej@packetizer.com | |||
David Benham | David Benham | |||
Independent | Independent | |||
California | ||||
United States of America | ||||
Email: dabenham@gmail.com | Email: dabenham@gmail.com | |||
Christian Groves | Christian Groves | |||
Independent | Independent | |||
Melbourne | Melbourne | |||
Australia | Australia | |||
Email: cngroves.std@gmail.com | Email: cngroves.std@gmail.com | |||
End of changes. 193 change blocks. | ||||
625 lines changed or deleted | 620 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |