rfc-8833

Application-Layer Protocol Negotiation (ALPN) for WebRTC

M. Thomson
date2021-01 streamIETF areawit wgrtcweb statusPROPOSED STANDARD pages6 canonicalhttps://www.rfc-editor.org/rfc/rfc8833 doi10.17487/RFC8833
This document specifies two Application-Layer Protocol Negotiation (ALPN) labels for use with Web Real-Time Communication (WebRTC). The "webrtc" label identifies regular WebRTC: a DTLS session that is used to establish keys for the Secure Real-time Transport Protocol (SRTP) or to establish data channels using the Stream Control Transmission Protocol (SCTP) over DTLS. The "c-webrtc" label describes the same protocol, but the peers also agree to maintain the confidentiality of the media by not sharing it with other applications.

Extracted elements (19)

design-rationale §3

Confidentiality protections under 'c-webrtc' explicitly do not extend to data channel messages, only to media, because no mechanisms currently exist to enforce data confidentiality end-to-end.

webrtc, privacy

design-rationale §3

The ALPN approach separates control (signaling) capabilities from media access, enabling an application to manage signaling for a session without having access to the media exchanged, achieving end-to-end confidentiality between user agents rather than between signaling endpoints.

webrtc, security, privacy

design-rationale §3

The ALPN identifier for 'c-webrtc' provides a signal securely bound to the DTLS session to distinguish confidential sessions from non-confidential ones; without it, a WebRTC endpoint cannot properly distinguish between the two.

webrtc, tls, security

interoperability-note §2

The 'webrtc' and 'c-webrtc' ALPN labels cover the same underlying protocol (DTLS for SRTP keys and/or SCTP data channels); either SRTP or data channels may be absent in a given session. ICE (RFC 8445) is required for UDP flow establishment but is not covered by the ALPN identifier.

webrtc, tls

normative-requirement §2 MUST

A peer in the client role MUST offer both 'webrtc' and 'c-webrtc' ALPN identifiers if it is not aware of a need for confidentiality.

webrtc, tls

normative-requirement §2 SHOULD

A peer in the server role SHOULD select 'webrtc' if it does not prefer either ALPN identifier.

webrtc, tls

normative-requirement §2 MUST NOT

A peer MUST NOT assume that 'c-webrtc' has been negotiated unless explicitly negotiated via ALPN.

webrtc, tls, security

normative-requirement §2 SHOULD

A peer willing to accept 'webrtc' SHOULD assume that a peer not supporting this specification has negotiated 'webrtc' unless signaling provides other information.

webrtc, tls

normative-requirement §3 MUST

A WebRTC endpoint that accepts a session with the 'c-webrtc' ALPN identifier MUST respect confidentiality regardless of what identity is attributed to a peer.

webrtc, security, privacy

normative-requirement §2 MUST

An endpoint MUST abort a session if it requires confidentiality but does not successfully negotiate 'c-webrtc'.

webrtc, tls, security

normative-requirement §3 MUST NOT

Any entity that forwards or records content for later access by entities other than the authenticated peer MUST NOT offer or accept a session with the 'c-webrtc' identifier.

webrtc, security, privacy

normative-requirement §3 MUST

Media produced from a session using the 'c-webrtc' identifier MUST only be displayed to users; browsers must enforce this via isolation controls similar to cross-origin content protections.

webrtc, privacy, security

protocol-element §2

Two ALPN labels are defined for WebRTC: 'webrtc' identifies a DTLS session used for DTLS-SRTP key establishment and/or data channels over SCTP; 'c-webrtc' identifies the same protocol but with an additional promise to maintain media confidentiality.

webrtc, tls

registry §5

Two entries added to the IANA 'TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs' registry: 'webrtc' for WebRTC Media and Data, and 'c-webrtc' for Confidential WebRTC Media and Data, both specified by RFC 8833.

webrtc, tls, registry

security-consideration §4 MAY

On shared computing platforms, other web applications with access to microphones or cameras may be able to sample confidential audio or video. Implementations MAY choose to limit concurrent access to input devices during confidential communication sessions.

webrtc, security, privacy

security-consideration §4

Peer authentication (per RFC 8827) is necessary to ensure data is only sent to the intended peer; without it, confidential communications cannot be guaranteed even with 'c-webrtc' negotiated.

webrtc, security

security-consideration §4

The 'c-webrtc' mechanism is not a digital rights management system; users are not prevented from using screen recorders, tape recorders, cameras, or other means to capture and redistribute media once delivered.

webrtc, security, privacy

wire-format §5

The 'c-webrtc' ALPN identification sequence is 0x63 0x2d 0x77 0x65 0x62 0x72 0x74 0x63 (8 bytes, ASCII 'c-webrtc').

webrtc, tls

wire-format §5

The 'webrtc' ALPN identification sequence is 0x77 0x65 0x62 0x72 0x74 0x63 (6 bytes, ASCII 'webrtc').

webrtc, tls