Re: [TLS] Adam Roach's Yes on draft-ietf-tls-record-limit-02: (with COMMENT)

Adam Roach <adam@nostrum.com> Wed, 04 April 2018 07:44 UTC

Return-Path: <adam@nostrum.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 56E9C1270AC; Wed, 4 Apr 2018 00:44:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.89
X-Spam-Level:
X-Spam-Status: No, score=-1.89 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01, T_SPF_HELO_PERMERROR=0.01, T_SPF_PERMERROR=0.01] autolearn=ham autolearn_force=no
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 OMPBMnhaLR07; Wed, 4 Apr 2018 00:44:29 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6E342126BF3; Wed, 4 Apr 2018 00:44:26 -0700 (PDT)
Received: from Svantevit.local (99-152-146-228.lightspeed.dllstx.sbcglobal.net [99.152.146.228]) (authenticated bits=0) by nostrum.com (8.15.2/8.15.2) with ESMTPSA id w347iMap026033 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Wed, 4 Apr 2018 02:44:23 -0500 (CDT) (envelope-from adam@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host 99-152-146-228.lightspeed.dllstx.sbcglobal.net [99.152.146.228] claimed to be Svantevit.local
To: Martin Thomson <martin.thomson@gmail.com>
Cc: The IESG <iesg@ietf.org>, draft-ietf-tls-record-limit@ietf.org, Sean Turner <sean@sn3rd.com>, tls-chairs <tls-chairs@ietf.org>, "<tls@ietf.org>" <tls@ietf.org>
References: <152282152084.23972.5999986320638189748.idtracker@ietfa.amsl.com> <CABkgnnUuHpHuDpsC9jDS36pw8c4xX-z5ODry1+J0CCPpQWxrYw@mail.gmail.com>
From: Adam Roach <adam@nostrum.com>
Message-ID: <5005fa90-021c-f947-baac-27b86a1acba4@nostrum.com>
Date: Wed, 04 Apr 2018 02:44:16 -0500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
In-Reply-To: <CABkgnnUuHpHuDpsC9jDS36pw8c4xX-z5ODry1+J0CCPpQWxrYw@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/KT5ZxSUOHyqrFfnkXcP7b-iXXv0>
Subject: Re: [TLS] Adam Roach's Yes on draft-ietf-tls-record-limit-02: (with COMMENT)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Apr 2018 07:44:32 -0000

On 4/4/18 1:44 AM, Martin Thomson wrote:
> Hi Adam,
>
> Thanks for the review.  You picked up on something that was a little
> sloppy there.
>
> PR: https://github.com/tlswg/tls-record-limit/pull/19
>
> On Wed, Apr 4, 2018 at 3:58 PM, Adam Roach <adam@nostrum.com> wrote:>
> Adam Roach has entered the following ballot position for
>> §4:
>>
>>>   MUST NOT send a value higher than the protocol-defined maximum record
>>>   size unless explicitly allowed by such a future version or extension.
>> Presumably, recipients MUST gracefully accept values higher than the maximum
>> record size?  That is implied by this text (and the text that follows), but
>> given how TLS frequently aborts connections at the first sign of any
>> irregularity, it's probably worth saying explicitly.
> I thought that the following text was doing precisely that:
>
>> A server MUST NOT enforce this restriction; a client might advertise a higher limit that is enabled by an extension or version the server does not understand.

It would, if it were present. The IESG is reviewing version -02 of the 
document, in which that text does not appear. (I see it's in your repo, 
so presumably the -03 version will address the issue I highlight).

> A client can enforce the restriction, because it knows the entire set
> of possible extensions that determine the maximum size.  I'll concede
> that it's a little sloppy in that it doesn't explicitly say whether a
> client is expected to police the value.  Is that a change you would
> like to see?  As in:
>
>> A client MAY abort the handshake with an illegal_parameter alert if the record_size_limit extension includes a value greater than the maximum record size permitted by the negotiated protocol version and extensions.
> Note that this wasn't made a MUST because if there is an extension
> that raises the limit, the client has to do a second pass over the
> extensions and that's awkward.

I'm okay both with and without the change. What I really wanted was text 
equivalent to what you quote above.

>
>> §4:
>>
>>>   a DTLS endpoint that
>>>   receives a record larger than its advertised limit MAY either
>>>   generate a fatal "record_overflow" alert or discard the record.
>> I'm concerned about the interaction between the option to discard the record and
>> protocols that perform retransmission of lost packets over DTLS (e.g., proposals
>> such as draft-rescorla-quic-over-dtls). In the case that an oversized packet is
>> simply discarded, retransmissions of that (presumably still oversized) packet
>> will take a while to time out (I'm not particularly well-versed in QUIC, but
>> assume it has characteristics similar to TCP's ~nine-minute timeout), which
>> would result in really bad user experiences.  Is there rationale for this optionality?
>> It would seem to be cleaner if the response were simply to always send a fatal
>> error.
> The problem is that you only want to abort if you decrypt the record.
> DTLS doesn't kill connections if it receives junk.

Ah, okay. That makes perfect sense. Under such circumstances, I agree 
that dropping such packets seems to be the least bad path. No document 
change is necessary, although I wouldn't object if you added an 
explanation to the document that says exactly what you say above.

/a