Re: [rtcweb] Preserving stream isolation when traversing the network

Harald Alvestrand <> Fri, 07 March 2014 10:57 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id CE7391A01FA for <>; Fri, 7 Mar 2014 02:57:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.447
X-Spam-Status: No, score=-2.447 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.547] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 2-1aTUE1m9v4 for <>; Fri, 7 Mar 2014 02:57:25 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 29AAD1A0170 for <>; Fri, 7 Mar 2014 02:57:25 -0800 (PST)
Received: from localhost (localhost []) by (Postfix) with ESMTP id 9D0657C3218 for <>; Fri, 7 Mar 2014 11:57:20 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id qRpEHrG+0Cr2 for <>; Fri, 7 Mar 2014 11:57:19 +0100 (CET)
Received: from [IPv6:2001:67c:370:176:dc71:4cbb:f962:3326] (unknown [IPv6:2001:67c:370:176:dc71:4cbb:f962:3326]) by (Postfix) with ESMTPSA id B35527C3216 for <>; Fri, 7 Mar 2014 11:57:19 +0100 (CET)
Message-ID: <>
Date: Fri, 07 Mar 2014 11:57:19 +0100
From: Harald Alvestrand <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
References: <> <> <> <> <>
In-Reply-To: <>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Subject: Re: [rtcweb] Preserving stream isolation when traversing the network
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 07 Mar 2014 10:57:30 -0000

On 03/07/2014 11:23 AM, Martin Thomson wrote:
> I agree with the conclusion, however:
> On 7 March 2014 10:19, Tim Panton <> wrote:
>> Many of the use cases I see use these APIs to do things like add titlebars, mix audio streams play audio prompts etc,
> The stuff you cite can be achieved without having to of webgl or
> webaudio.  But I agree with the principle: there are cases where
> isolation is inconvenient.

I'd put this a bit more strongly:

Every single non-trivial application that uses WebRTC today is going to
fail if isolation is turned on by default.

Some of the things that will fail:

- Content-sensitive video overlays ("funny hats")
- Color enhancements that attempt to "fix" videos that are "too dark" /
"too light" and so on
- Bluescreening / background replacement
- Volume measurement via WebAudio
- "Voice effects" (also applied via WebAudio)
- Retransmission ("mesh conferencing")
- Any type of recording

All of these are being done by Javascript if they are done at all today.

If data channels are included in the isolate-by-default zone too, of
course every application that uses data channels will fail too - at the
moment there is *nothing* you can do with a data channel that doesn't
expose the data to the Javascript.

I don't think we've thought through the threat model here (well, Martin
may have, but I don't think we have a joint understanding of it), or
what the things are that we won't be able to do without inevitably
exposing our streams to the kinds of manipulation described here.

The threat model I heard at the meeting was that the sender wants a
guarantee from the receiver's browser that it will keep the streams
confidential against Javascript running in the receiver. It gains no
security against compromised receivers, or receivers that participate in
the RTCWEB protocol dialog but aren't Javascript-executing browsers - in
that case, the promise is simply irrelevant.

The promise might  be relevant for some use cases - in particular, the
use case of interactive videoconferencing where the users trust each
other, but not their Javascript, and where they're willing to give up
funny hats, recording and the other things listed above.

I think that's a very specialized use case.

Surveillance is pervasive. Go Dark.