Record Size Limit Extension for TLS
RFC 8449

Note: This ballot was opened for revision 02 and is now closed.

(Ben Campbell) Yes

Benjamin Kaduk Yes

(Terry Manderson) Yes

Alexey Melnikov Yes

(Eric Rescorla) Yes

Comment (2018-03-31 for -02)
No email
send info
I apologize for not catching the point about "negotiated" earlier.


   An Authentication Encryption with Additional Data (AEAD) ciphers (see
   [RFC5116]) API requires that an entire record be present to decrypt
Nit: "An" .. "ciphers" do not agree.



   incremental processing of records minimally exposes endpoints to the
   risk of forged data.
This seems a bit weak. It's just not an acceptable practices to incrementally process.



   Unprotected messages - handshake messages in particular - are not
   subject to this limit.
This text is a bit confusing. Consider a case where a server recognizes the extension and has no limit, but the client offers one.

In that case, the server can either:

Return an extension with a max-size limit
Not return the extension
I think we want the server to conform to the client's limit in any case, but "negotiated" is unclear.


   they have no need to limit the size of records.  This allows servers
   to apply a limit at their discretion.  If this extension is not
   negotiated, endpoints can send records of any size permitted by the
I think by "apply" you mean "request" or "advertise"

Adam Roach Yes

Comment (2018-04-03 for -02)
No email
send info
Thanks to everyone who contributed work towards this document.

---------------------------------------------------------------------------

§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.

---------------------------------------------------------------------------

§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.

If this optionality is retained, please at least consider adding text describing
the impact of discarding oversized packets when used with a reliable protocol.

---------------------------------------------------------------------------

§4.1:

>  In TLS 1.2, block ciphers allow between 1 and 256 octets of padding.

nit: The formulation "between X and Y" is ambiguous as to whether X and Y are
included in the range. Consider rephrasing as "...from 1 to 256...".

Ignas Bagdonas No Objection

Deborah Brungard No Objection

Alissa Cooper No Objection

(Spencer Dawkins) No Objection

Comment (2018-04-02 for -02)
No email
send info
This is a nit, but just to make sure …

  The "record_size_limit" extension replaces the "max_fragment_length"
   extension [RFC6066].  A server that supports the "record_size_limit"
   extension MUST ignore and "max_fragment_length" that appears in a
                         ^^^
the "and" should be "any", shouldn't it?

   ClientHello if both extensions appear.  A client MUST treat receipt
   of both "max_fragment_length" and "record_size_limit" as a fatal
   error, and SHOULD generate an "illegal_parameter" alert.

Suresh Krishnan No Objection

Warren Kumari No Objection

Comment (2018-04-02 for -02)
No email
send info
Thanks to Éric Vyncke for his OpsDir review of this document.

Mirja Kühlewind No Objection

Comment (2018-03-29 for -02)
No email
send info
Thanks for the well written doc!

One minor comment the title of sec 5: not sure if "deprecating" is the best word as that maybe be read as "moved to historic" in IETF world...

Tiny typo in sec 5:
s/and "max_fragment_length"/an "max_fragment_length"/

Martin Vigoureux No Objection

Comment (2018-04-05 for -02)
No email
send info
Hello, I'm not a TLS expert so please disregard if this is irrelevant.
Document says:
   Clients that depend on having a small record size MAY continue to
   advertise the "max_fragment_length".

Do you mean:
   Clients that depend on having a small record size MAY continue to
   advertise the "max_fragment_length" *only*.

If so, what would be the behaviour of a server that supports both "max_fragment_length" and "record_size_limit" in that situation?