Re: [secdir] secdir review of draft-ietf-httpbis-h2-websockets

Mark Nottingham <mnot@mnot.net> Thu, 31 May 2018 03:23 UTC

Return-Path: <mnot@mnot.net>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6D9231318CA; Wed, 30 May 2018 20:23:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mnot.net header.b=Hdu9wcsY; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=JCNuZaoO
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qRM_3fT7IliL; Wed, 30 May 2018 20:23:22 -0700 (PDT)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 18CE31314DD; Wed, 30 May 2018 20:23:22 -0700 (PDT)
Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 8027121BAF; Wed, 30 May 2018 23:23:21 -0400 (EDT)
Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Wed, 30 May 2018 23:23:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mnot.net; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=szCb2KWFZ7KX1Oj+jODZFgzd2Fkx3 09JXPHpSILByxs=; b=Hdu9wcsYzUK5jBcq/ZZFhCoY2W6WvbuefPsmsvvtxJDm4 s72TubjMzXFPWVYPVL/BpQkFV2NgSE+fpFHGYGiuKGKIvxaVi8EaksFCzIxSpt8p KGqSxhWXcc/YIVGb6LuC6fH+8lEr9cxTyUaW6Cr1tZh9oiVfE7uF7tSqcmwr8NEv wPB0Nmns6ySyG70+raNoVPUjYLk3Bt3keO3zN+yNLxjU+b59F8lE+JNexZdLHU++ uQF/wIjnzMBKAIZ1vZSN2BeSDkECb6/rHcIRsgxIyoNL0iG9SmcVRNfNgseKjJzD 3GKYOVy3DsW7GjjI4mYNI/YW6xCjbGTxiwAtPh9XA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=szCb2K WFZ7KX1Oj+jODZFgzd2Fkx309JXPHpSILByxs=; b=JCNuZaoOqvF79A+sEN1iNM VuR6Nv5jZEpGCm875LT0A6CVD+QABXiKsNBNnDQ5shWVs4Wd+2cl4lXm2q7sLqpV j+QEdXkTNjJblY9fPc+c3zE/+WB3w1fyzRa1m44X97ioV/FBBCD9ZjYBHYw37qLu HvIC5sHS1JgXBcFHfSTdJebBkKG1MpZyk7PAPxkeENgsmI6uT3yjy7Ei1B5wqo+G TccdRidz5YJKwGa+WkVdqGzs1GtaeCFC64ylz9VAwnVKdpAVjn6aTxfhHoH3oiyb bd7a0EfsBpby6dbhQcjFiyUrtXmtBvpfznLywdQunm5k5fE6ZGfhQAhTspt89+UA ==
X-ME-Proxy: <xmx:qWoPW5KST-H5Wtg8b_E1I9-9hK7I-3q0XekbliBErJoMzSNyyDPwSg>
X-ME-Proxy: <xmx:qWoPW1fCBWJR9gZnq0lF_9TVS_C9bWSmJpy946NTSoG2yRIzQdw1fg>
X-ME-Proxy: <xmx:qWoPW5XMzIBMR_ihnb6YT8gEr_uLcuC1cJO4y7QUb_qIT_WP4WD2GQ>
X-ME-Proxy: <xmx:qWoPW1CrjnBJLnWn3L2o0n6cuKYhjRQ95cm09JD0qg7QoK_Qf29T8A>
X-ME-Proxy: <xmx:qWoPW49mATl3Nzj-9r1sFtXIPv_wM8wUykuQ4Y6MBVPcMAMrf1q6Pw>
X-ME-Proxy: <xmx:qWoPWxbRbd3bWygYMxV5pDqCGN-PJb7zRUEDvX8a9z-oKXvyrmXoxQ>
X-ME-Sender: <xms:qWoPW1eWZYPigUpQJwFxvd3QAUD-mmXMrclkvickcAmgIF6ester2g>
Received: from attitudadjuster.localdomain (unknown [144.136.175.28]) by mail.messagingengine.com (Postfix) with ESMTPA id A34A310262; Wed, 30 May 2018 23:23:19 -0400 (EDT)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 11.3 \(3445.6.18\))
From: Mark Nottingham <mnot@mnot.net>
In-Reply-To: <D7332279.B8CA6%carl@redhoundsoftware.com>
Date: Thu, 31 May 2018 13:23:16 +1000
Cc: Patrick McManus <pmcmanus@mozilla.com>, draft-ietf-httpbis-h2-websockets.all@ietf.org, secdir@ietf.org, The IESG <iesg@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <E5BEBC29-97A2-41A2-BC27-043BE57BDF0A@mnot.net>
References: <D73306E9.B8C32%carl@redhoundsoftware.com> <CAOdDvNpiYqG4zpMQgiB2MXjHbL0CTuP9NgXh3AVTkFxeFTCK6Q@mail.gmail.com> <D7332279.B8CA6%carl@redhoundsoftware.com>
To: Carl Wallace <carl@redhoundsoftware.com>
X-Mailer: Apple Mail (2.3445.6.18)
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/pXOhHDZk3owJIcc33_L3a9S50Ok>
Subject: Re: [secdir] secdir review of draft-ietf-httpbis-h2-websockets
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/secdir/>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 31 May 2018 03:23:25 -0000

The problem is that we'd have to put such a caveat on pretty much every MUST in the document. 

Cheers,


> On 30 May 2018, at 5:37 am, Carl Wallace <carl@redhoundsoftware.com> wrote:
> 
> Your reasoning makes sense but it requires an awfully careful reading to counter the clarity of the prohibition on new pseudo-headers. Maybe an errata could be filed against 7540 to clarify the "alter any aspect of this protocol" where the prohibition  is asserted for the benefit of future readers. For example, something like "Endpoints MUST NOT generate pseudo-header fields other than those defined in this document, except where support for additional pseudo-headers is negotiated as permitted in section 5.5" would help.
> 
> From: Patrick McManus <pmcmanus@mozilla.com>
> Date: Tuesday, May 29, 2018 at 1:49 PM
> To: Carl Wallace <carl@redhoundsoftware.com>
> Cc: <draft-ietf-httpbis-h2-websockets.all@ietf.org>, <secdir@ietf.org>, The IESG <iesg@ietf.org>
> Subject: Re: secdir review of draft-ietf-httpbis-h2-websockets
> 
>> Hey Carl, thanks for doing this
>> 
>> On Tue, May 29, 2018 at 1:32 PM, Carl Wallace <carl@redhoundsoftware.com> wrote:
>>> 
>>> The draft-ietf-httpbis-h2-websockets defines a new pseudo-header field in
>>> section 4. Section 3 addresses extending HTTP/2 via a reference to section
>>> 5.5 of RFC7540, but there was nothing in that section to relax the
>>> prohibition on using pseudo-header fields not defined by 7540. Is a mod to
>>> 7540 necessary to enable support for the mechanism in
>>> draft-ietf-httpbis-h2-websockets?
>>> 
>> 
>> imo no update to 7540 is needed. the wg also considered the question and had the same conclusion. I will highlight the reasoning:
>> 
>> 5.5.  Extending HTTP/2
>> 
>> 
>> 
>>    HTTP/2 permits extension of the protocol.  Within the limitations
>>    described in this section, protocol extensions can be used to provide
>>    additional services or alter any aspect of the protocol.  Extensions
>>    are effective only within the scope of a single HTTP/2 connection.
>> 
>> 
>> note "alter any aspect of this protocol"
>> [..]
>> 
>>    Extensions that could change the semantics of existing protocol
>>    components MUST be negotiated before being used. 
>> 
>> This is one of the limitations mentioned above.. so the websockets extension needs to be negotiated (and it is).
>> [..] For example, an
>>    extension that changes the layout of the HEADERS frame cannot be used
>>    until the peer has given a positive signal that this is acceptable.
>> 
>>  In this case, it could also be necessary to coordinate when the
>>    revised layout comes into effect.  Note that treating any frames
>>    other than DATA frames as flow controlled is such a change in
>>    semantics and can only be done through negotiation.
>> 
>> These two examples are also powerful citations that negotiated extensions can change the interpretation of basic pieces of 7540 such as existing frame layouts and even flow control rules (both of which have MUSTs associated with them).
>> 
>> The whole section is a little bit confusing because it also enumerates a few extension points that the websockets draft is not using. But those are specifically enumerated because they can be used without negotiated opt-in and implementations not aware of the extensions need to take care to keep them clean and available for extending (so there are requirements even if you're not implementing the extension). As the example paragraph shows, extensions are not solely limited to that model.
>> 
>> Cheers
>> -Patrick
>> 
>> 
>> 

--
Mark Nottingham   https://www.mnot.net/