Private communications in WebRTC depend on separating control (i.e., signaling) capabilities and access to media [
RFC 8827]. In this way, an application can establish a session that is end-to-end confidential, where the ends in question are user agents (or browsers) and not the signaling application. This allows an application to manage signaling for a session without having access to the media that is exchanged in the session.
Without some form of indication that is securely bound to the session, a WebRTC endpoint is unable to properly distinguish between a session that requires this confidentiality protection and one that does not. The ALPN identifier provides that signal.
A browser is required to enforce this confidentiality protection using isolation controls similar to those used in content cross-origin protections (see the "Origin" section of [
HTML5]). These protections ensure that media is protected from applications, which are not able to read or modify the contents of a protected flow of media. Media that is produced from a session using the
c-webrtc identifier
MUST only be displayed to users.
The promise to apply confidentiality protections do not apply to data that is sent using data channels. Confidential data depends on having both data sources and consumers that are exclusively browser or user based. No mechanisms currently exist to take advantage of data confidentiality, though some use cases suggest that this could be useful, for example, confidential peer-to-peer file transfer. Alternative labels might be provided in the future to support these use cases.
This mechanism explicitly does not define a specific authentication method; a WebRTC endpoint that accepts a session with this ALPN identifier
MUST respect confidentiality no matter what identity is attributed to a peer.
RTP middleboxes and entities that forward media or data cannot promise to maintain confidentiality. Any entity that forwards content, 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.