[rtcweb] A compromise for SDES

Hadriel Kaplan <hadriel.kaplan@oracle.com> Sat, 13 July 2013 18:07 UTC

Return-Path: <hadriel.kaplan@oracle.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id BCBBD21F9D5C for <rtcweb@ietfa.amsl.com>; Sat, 13 Jul 2013 11:07:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.448
X-Spam-Status: No, score=-6.448 tagged_above=-999 required=5 tests=[AWL=0.151, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id Z9nwADs7vJ8v for <rtcweb@ietfa.amsl.com>; Sat, 13 Jul 2013 11:07:22 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com []) by ietfa.amsl.com (Postfix) with ESMTP id 1539421F9CAC for <rtcweb@ietf.org>; Sat, 13 Jul 2013 11:07:22 -0700 (PDT)
Received: from ucsinet21.oracle.com (ucsinet21.oracle.com []) by aserp1040.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id r6DI7K7A009067 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <rtcweb@ietf.org>; Sat, 13 Jul 2013 18:07:21 GMT
Received: from userz7022.oracle.com (userz7022.oracle.com []) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r6DI7JbX020055 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <rtcweb@ietf.org>; Sat, 13 Jul 2013 18:07:20 GMT
Received: from abhmt107.oracle.com (abhmt107.oracle.com []) by userz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r6DI7JjD001412 for <rtcweb@ietf.org>; Sat, 13 Jul 2013 18:07:19 GMT
Received: from [] (/ by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 13 Jul 2013 11:07:19 -0700
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\))
From: Hadriel Kaplan <hadriel.kaplan@oracle.com>
In-Reply-To: <F9556428-B6B8-407D-9D62-9A1CC04D4253@oracle.com>
Date: Sat, 13 Jul 2013 14:07:17 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <B2DF729D-B313-4D3E-9C06-DA00AF7A14FF@oracle.com>
References: <CA+9kkMBuCTdFsUMtmuBz6BnrSJMpHywEZU+x+m8ARnGprvzDzA@mail.gmail.com> <CABkgnnXOa44ZkZj-g6r7Qdk8dwm6m81yT4U=Q23-hE1Q7Hn22w@mail.gmail.com> <F9556428-B6B8-407D-9D62-9A1CC04D4253@oracle.com>
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
X-Mailer: Apple Mail (2.1508)
X-Source-IP: ucsinet21.oracle.com []
Subject: [rtcweb] A compromise for SDES
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 13 Jul 2013 18:07:29 -0000

Someone's asked me to explain the compromise I plan on presenting in Berlin now, so we have more time to argue over it or chew on it.  The reason I was going to wait is because I wanted to explain how I got to the point of thinking such a compromise would make sense.  So I'll try to do that in this email, which will make this email long.  Nothin' much I can do about that.

Obviously this is all my personal opinion, not that of my employer, and not a statement claiming to be objective fact, etc.

I think many people would agree that SDES has some benefits compared to DTLS for those of us wishing to interface to the SIP world.  Some of those benefits are commercial/cost factors, some are more tangible like reducing early media clipping.  Whether you agree with such benefits or not, so long as WebRTC could support SDES in a sufficiently-secure manner, there'd be less concern over having it.  Most of the arguments against SDES have been directed at whether it could in fact be "sufficiently secure".  Personally I find most of the arguments against it being secure enough to be essentially FUD, and/or also apply to DTLS-SRTP.

On the flip-side, I think the commercial/cost factor for SDES is not a strong cause, because I believe the market will bear whatever the extra cost may be. (I wasn't sure of this 2 years ago when this all started, but I'm fairly confident of it now)  And I think having only DTLS-SRTP as MTI would have a marketing benefit for WebRTC as a technology, which I value highly.

Given those personal feelings, I didn't much care either way, so long as a decision was made - although I still preferred having SDES to avoid the early media clipping problem.  So when I was going to present on this topic back in the Vancouver meeting, my last slide basically said: "If we support SDES and it turns out later we were wrong, we can always rescind it".  This was based on the notion that browsers get updated all the time, especially for security issues.

But later it occurred to me that's actually the Achilles' heel of supporting SDES in WebRTC, for those of us wanting to gateway this stuff to SIP.  Imagine if it turns out we were wrong, and some expected-or-unexpected vulnerability is exploited against some large WebRTC service provider, and makes the news/slashdot.  Browser vendors would instantly have new code removing SDES support, and browsers in devices would be updated virtually overnight - some users may take a long time to upgrade their specific browsers on their specific devices - but many of them would do so within days.  That would be untenable for a WebRTC service provider.  Even the smaller Enterprises take a long time to upgrade code on their servers, so even for them changing their gateways to suddenly support DTLS-SRTP would be unrealistic.  Imagine what it would be for larger providers, who might even have to deploy more servers to handle the sudden additional overhead of DTLS-SRTP.  Meanwhile a growing percentage of their users can no longer use the service.  That's bad mojo.

The things that a WebRTC-to-SIP service provider can control, and arguably the much larger use-case for this stuff to begin with, are not really true "browsers" anyway - they're web-based-framework device Apps, provided by the service provider to begin with.  I.e., the apps they build using web application framework things like PhoneGap/Cordova, Appcelerator Titanium, etc.  I mean using a real Browser is nice for ad-hoc stuff, like being able to click on a "talk to a rep" button on a website, or a webex/meetecho type thing; but for real communication "service", whether it be as a subscriber of a traditional carrier, or Skype, or an employee of an Enterprise, or a call-center attendant, or whatever - for those most people would never want to have to open a browser just to receive/make calls.  They'd give you an app to use instead.

So it's the app use-case that would benefit the most from SDES, especially for issues like media clipping.  And the app use-case doesn't have the security concerns nor concerns for unforeseen overnight updates.

The Compromise:
So given that background, I was planning to propose that the security doc keep DTLS-SRTP as the only MTI mechanism for browsers, BUT to add a statement that web-based application frameworks SHOULD also support SDES. (with text about why and how, etc.)

I don't think this is too controversial, because web-based frameworks are never beholden to following browser behavior anyway - they're used to build a native application, and native applications have a very different security/threat model in practice.  They're written for a specific purpose, and installed by users from known sources for that known purpose.  Technically, afaik, nothing we do in RTCWEB WG or W3C's WEBRTC group have any requirements/mandates for native applications anyway - an app maker would just ignore something they don't think applies to them - but I think web-based frameworks do generally try to follow W3C models for Javascript APIs, and will likely read the IETF RFCs for the media-layer stuff too.  So I think having this SHOULD statement would be beneficial.

Or if the WG prefers, we could even write a separate doc on what a web-based framework maker should consider supporting/not-supporting. (I can imagine a few other things they might want to offer that a browser can't)