Hello,

Does anyone have any views on the below?

Thanks

Matt

On 30/09/15 11:06, Matt Caswell wrote:
> Hi all
>
> I have a question on how to interpret RFC 5246 with regards to the
> interleaving of app data and handshake records.
>
> RFC 5246 (and RFC 4346 before it) contains these words:
>
>    Note: Data of different TLS Record layer content types MAY be
>    interleaved.  Application data is generally of lower precedence for
>    transmission than other content types.  However, records MUST be
>    delivered to the network in the same order as they are protected by
>    the record layer.  Recipients MUST receive and process interleaved
>    application layer traffic during handshakes subsequent to the first
>    one on a connection.
>
> This wording seems to place no limits whatsoever on when it is valid to
> receive app data in the handshake. By the wording in the RFC it would be
> valid for app data to be received *after* the ChangeCipherSpec has been
> received but *before* the Finished has been processed.
>
> There is also this wording:
>
>    Note: If a rehandshake occurs while data is flowing on a connection,
>    the communicating parties may continue to send data using the old
>    CipherSpec.  However, once the ChangeCipherSpec has been sent, the
>    new CipherSpec MUST be used.  The first side to send the
>    ChangeCipherSpec does not know that the other side has finished
>    computing the new keying material (e.g., if it has to perform a
>    time-consuming public key operation).  Thus, a small window of time,
>    during which the recipient must buffer the data, MAY exist.  In
>    practice, with modern machines this interval is likely to be fairly
>    short.
>
> I think this means that as soon as the first party sends a CCS, they
> must not send any app data until they have received a CCS back - they
> must buffer it until the CCS is seen - but on reading it again I'm not
> sure! If that were the case then the second party should never expect to
> see app data between CCS and Finished. It doesn't tell you anything
> about what the first party can expect though, i.e. is the second party
> allowed to send app data between the CCS and Finished?
>
> Finally there is also this:
>
>    A Finished message is always sent immediately after a change
>    cipher spec message to verify that the key exchange and
>    authentication processes were successful.
>
> I suppose this trumps everything else, although as this section is
> specifically talking about handshakes you could interpret "immediately"
> as applying to the handshake sequence only without saying anything about
> interleaved app data records.
>
> I believe the intention is that app data should not be sent between the
> CCS and Finished but the RFC wording is not exactly crystal clear. This
> is the interpretation I have taken whilst fixing this OpenSSL bug:
>
> https://rt.openssl.org/Ticket/Display.html?id=3712&user=guest&pass=guest
>
> Can some confirm my interpretation is correct?
>
> Thanks
>
> Matt
>
>

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to