Re: [rtcweb] RTCWeb Forking usecase [was RE: draft-kaplan-rtcweb-sip-interworking-requirements-00]

Hadriel Kaplan <HKaplan@acmepacket.com> Sat, 29 October 2011 18:38 UTC

Return-Path: <HKaplan@acmepacket.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F005221F85B1 for <rtcweb@ietfa.amsl.com>; Sat, 29 Oct 2011 11:38:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.166
X-Spam-Level:
X-Spam-Status: No, score=-2.166 tagged_above=-999 required=5 tests=[AWL=-0.167, BAYES_00=-2.599, J_CHICKENPOX_26=0.6]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CP9hGcj2SVSP for <rtcweb@ietfa.amsl.com>; Sat, 29 Oct 2011 11:38:01 -0700 (PDT)
Received: from etmail.acmepacket.com (etmail.acmepacket.com [216.41.24.6]) by ietfa.amsl.com (Postfix) with ESMTP id 5299521F85A8 for <rtcweb@ietf.org>; Sat, 29 Oct 2011 11:38:01 -0700 (PDT)
Received: from MAIL2.acmepacket.com (10.0.0.22) by etmail.acmepacket.com (216.41.24.6) with Microsoft SMTP Server (TLS) id 8.2.254.0; Sat, 29 Oct 2011 14:37:56 -0400
Received: from MAIL1.acmepacket.com ([169.254.1.232]) by Mail2.acmepacket.com ([169.254.2.157]) with mapi id 14.01.0270.001; Sat, 29 Oct 2011 14:37:56 -0400
From: Hadriel Kaplan <HKaplan@acmepacket.com>
To: Harald Alvestrand <harald@alvestrand.no>
Thread-Topic: [rtcweb] RTCWeb Forking usecase [was RE: draft-kaplan-rtcweb-sip-interworking-requirements-00]
Thread-Index: AQHMlmnfG9o+JV4aRU6fOX6sBnYc9Q==
Date: Sat, 29 Oct 2011 18:37:55 +0000
Message-ID: <433A5637-35F1-4D50-84F8-3336A2CF57E2@acmepacket.com>
References: <20111024224257.28459.65554.idtracker@ietfa.amsl.com> <6EB8679A-13D5-4AD7-97F2-BC35FC0966F0@acmepacket.com> <2E239D6FCD033C4BAF15F386A979BF51159C32@sonusinmail02.sonusnet.com> <CALiegfnVaZjh1K+brd180Z9Ufheau3v6OJe6Ejv8P7wzw6ROQw@mail.gmail.com> <2E239D6FCD033C4BAF15F386A979BF51159D7A@sonusinmail02.sonusnet.com> <4EAAF413.8030501@alvestrand.no> <2E239D6FCD033C4BAF15F386A979BF51159D7B@sonusinmail02.sonusnet.com> <247FFE2C-DB2C-4280-A219-BE1503662F92@acmepacket.com> <4EAB2657.7090609@jesup.org> <CAD5OKxu=3FvnUDV5m1TW8n+7D+B6ihp_g7TXKtJVaVW3gtiySQ@mail.gmail.com> <4EAC24A2.70401@alvestrand.no>
In-Reply-To: <4EAC24A2.70401@alvestrand.no>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [216.41.24.34]
Content-Type: text/plain; charset="Windows-1252"
Content-ID: <7CA9957541603E4091D0EA9C685CD8E4@acmepacket.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAQAAAWE=
Cc: "<rtcweb@ietf.org>" <rtcweb@ietf.org>
Subject: Re: [rtcweb] RTCWeb Forking usecase [was RE: draft-kaplan-rtcweb-sip-interworking-requirements-00]
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, 29 Oct 2011 18:38:02 -0000

On Oct 29, 2011, at 12:06 PM, Harald Alvestrand wrote:

> I considered it when we discussed this last, but I'm not sure it works.
> If we support SDES, the offer also contains crypto keys. Reusing crypto keys for all created connections would be a huge security vulnerability.

The SDES key is used in the sending direction, not the receive.  That means everyone receiving the ROAP Offer will get the key and be able to decrypt the Offerer's transmitted media, but only the receivers of the ROAP Answer will be able to decrypt the Answerer's media.  So yes obviously if the ROAP Offer is generated by a Browser and sent to multiple parties, all of those parties would be able to render the media (and possibly spoof it to the others).  

But that vulnerability exists with SDES regardless of whether we support ROAP forking or not.  Even if the WebRTC browser only allows one ROAP Answer for any given Offer, if SDES is supported at all then we have to trust the JS and Web server, and trust them not to send the ROAP Offer to multiple parties, or we have to trust all those parties - assuming ROAP contains an SDES key and the Browser ends up using it.  For example, even if we don't support ROAP forking, a benign JS and Web-server might still send the ROAP Offer to multiple Browsers and only send back one ROAP Answer from the first answering Browser, not realizing that doing so introduced a vulnerability.

My point is that supporting SDES to begin with opens up vulnerabilities, regardless of whether we support forking.  If we want to support SDES for interop with SIP, which I think we do, then what we could do is mandate the Browsers support both SDES and DTLS-SRTP, and that if they receive a ROAP Offer or Answer with DTLS-SRTP in the SDP they use it for that peer, ignoring SDES.  And also that in the Browser's security-info display that would otherwise show the DTLS-SRTP fingerprint/SAS, if SDES is used it says so and gives some info about its vulnerabilities. {Note: I'm assuming Browsers will be required to provide the DTLS-SRTP fingerprint/SAS in some display box if the human wants to see them]

Fundamentally SDES relies on trusting the Web server(s) and the clients it's given to.  In the Web you already rely on that, for any JS-created/seen message.  For example Web-based mail or IM.  You have to trust the JS+Server, and trust them to not send your message to parties which shouldn't get to see them.  I'm not saying that makes using SDES ok, but just noting it, fwiw.


> Of course we could mandate DTLS-SRTP key negotiation…..

Assume we did that.  Then to interop with SIP, the Web-server or an interworking device would terminate DTLS-SRTP on one side, and use SDES or plaintext RTP on the other, including to multiple SIP-forked parties.  What have you gained?  The only benefit is that if the human checks the fingerprint/SAS in the Browser's display-box, and verifies that the other side did not have the same SAS or none at all, then the human would know the media is potentially not secure end-to-end.  But you can display "The media is potentially not secure end-to-end" even if SDES were used by the Browser itself, without even needing the human to verify an SAS with the other side.

-hadriel
p.s. draft-wing-srtp-keying-eval-00 discussed this forking issue and recommended re-keying in forking scenarios, for SIP.  No one does that as far as I know, though.