As is well known, the RFC6066 maximum_fragment_length (MFL) extension has a
few serious deficiencies, that led to its subsequent deprecation in
favour of RFC8449 record_size_limit (RSL).

Nevertheless a number of TLS implementations still support MFL, and
there is some history of completeness/correctness issues.  One
particular aspect of the specification seems unclear to me.

    https://datatracker.ietf.org/doc/html/rfc6066#section-4
    ...
       The negotiated length applies for the duration of the session
       including session resumptions.
    ...

It seems to me that as a consequence:

    - The initially negotiated value is implicitly still in force
      after resumption, even if (or especially if) the resumption
      ClientHello does not include the MFL extension.

    - However, it is unclear whether the client is permitted to
      attempt to negotiate a new value as part of resumption, or what
      happens if the server does not "accept" the new value.

The current OpenSSL implementation (module some nits I'm reviewing fixes
for) *requires* the client to repeat an identical MFL extension during
resumption, if one was successfully negotiated initially.

I personally don't read the quoted terse text from RFC6066 to preclude
renegotiation of the MFL on resumption.  It seems more like "good till
revised" rather than "immutable" to me.  A server might therefore be
willing to:

    - Accept a new value from the client, without aborting the handshake
      if it does not match the original choice.

    - Decline a new proposed value, and thereby let the original stand.

Is there any sort of "consensus" interpretation of MFL vs. resumption?

- Is stuttering the original choice verbatim a hard requirement?
- Is the client allowed to skip sending MFL on resumption?
- MUST the server abort handshakes on resumption MFL mismatch?

-- 
    Viktor.

_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to