Re: [MMUSIC] Benjamin Kaduk's Discuss on draft-ietf-mmusic-sdp-uks-06: (with DISCUSS and COMMENT)

Benjamin Kaduk <> Wed, 07 August 2019 03:31 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E933A1200B9; Tue, 6 Aug 2019 20:31:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 4DUBUbvUaJhn; Tue, 6 Aug 2019 20:31:15 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 469F412004A; Tue, 6 Aug 2019 20:31:14 -0700 (PDT)
Received: from ([]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by (8.14.7/8.12.4) with ESMTP id x773VADW011258 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 6 Aug 2019 23:31:12 -0400
Date: Tue, 6 Aug 2019 22:31:09 -0500
From: Benjamin Kaduk <>
To: Martin Thomson <>
Cc: The IESG <>,, mmusic <>, "" <>
Message-ID: <>
References: <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <>
Subject: Re: [MMUSIC] Benjamin Kaduk's Discuss on draft-ietf-mmusic-sdp-uks-06: (with DISCUSS and COMMENT)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 07 Aug 2019 03:31:18 -0000

On Wed, Aug 07, 2019 at 01:09:39PM +1000, Martin Thomson wrote:
> Pruning aggressively.  PR updated for the easy stuff that didn't require commentary.
> On Wed, Aug 7, 2019, at 05:32, Benjamin Kaduk wrote:
> > > > Similarly, the current text for the last sentence of Section 3.2 ("In
> > > > TLS 1.3, the "external_id_hash" extension MUST be sent in the
> > > > EncryptedExtensions message.") can be (mis)read as implying that all
> > > > EncryptedExtensions messages sent by TLS servers that implement this
> > > > specification must include this extension, which would violate the TLS
> > > > extension-negotiation model since it mandates the server sending an
> > > > extension without regard to the client having indicated support for the
> > > > extension.  Perhaps "MUST NOT be sent in the TLS 1.3 ServerHello message"
> > > > conveys the restriction more clearly?
> > > > (A similar comment applies to the corresponding statement in Section
> > > > 4.3, which interestingly enough already has a "In TLS 1.3, the
> > > > "external_session_id" extension MUST NOT be included in a ServerHello."
> > > > disclaimer in addition to the problematic sentence.)
> > 
> > (I'm not sure we quite got all of these in the linked pull request.)
> I think that I caught these now.  It seems obvious to me - to the point it doesn't warrant mention - that a server can't send an extension that a client didn't send...  Hence the omission.

(I quote liberally from
in the following.)

It's quite obvious to you and me, but it's probably poor form to produce
statements of the form "an implementation MUST do X" with implied "except
in cases that are forbidden by the base protocol".  So, a standalone
paragraph of "In TLS 1.3, the <foo> extension MUST be sent in
the EncryptedExtensions message." still sounds like anything sending EE
that implements this document must include the <foo> extension, even though
you and I know that the intent is really "In TLS 1.3, the server's
responses to ClientHello extensions can either be in the ServerHello or
EncryptedExtensions, and this extension doesn't go in the ServerHello."
(To some extent, even this is redundant given the column in the registry,
though I don't mind the extra emphasis.)

On the other hand, "An endpoint that does not produce an identity binding
MUST generate an empty external_id_hash extension in its ClientHello or -
if a client provides the extension - in ServerHello or EncryptedExtensions"
is better about qualifying when it's allowed by the underlying protocol to
"do X", though a truly adversarial reader might claim that it is saying
that "all endpoints producing an identity binding MUST generate a

> > Thanks for helping flesh this out.  Looking back at the text I quoted from
> > the document, there are two things that I might want to change (still not
> > 100% confident): (1) "unless it is assumed", which is potentially vague
> > about who/what is doing the assuming.  Perhaps "unless there is additional
> > data exchanged under the assumption that" or similar.  (2) "unless they also
> > validate the identity of peers at both layers".  This document describes
> > how to validate the identity of the peer at the TLS layer, but I wonder if
> > we want some extra reference/guidance on validating the peer's identity at
> > the signalling layer.
> I've done part of that.  But the latter requires an existence proof.  I don't believe that any signaling system provides the necessary bindings.
> In thinking about this, you need channel bindings.  That is, the signaling need to be able to assert not that the peer is the same as the peer at the media layer, but also that the media layer is in the correct place.  So I'm going to say that this is out of scope:
> "Such a signaling system, while out of scope for this document, requires that the
> signaling layer is authenticated and bound to the TLS connections."

I'm fine leaving this out of scope, though I'd wordsmith your proposed text
to clarify that "such a signaling system" is one that can defend against
the attack being described.

> I'm not aware of any such system, as much as it might be desirable.  SIP is still wrestling with the concept of caller identity.  Proper channel bindings seems like a bit much to expect.

Oh, sure -- SIP is going to take some time to evolve, and I'm not trying to
force everything overnight.