Re: [TLS] Fwd: Clarification on interleaving app data and handshake records

Matt Caswell <frodo@baggins.org> Wed, 14 October 2015 20:05 UTC

Return-Path: <frodo@baggins.org>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0D9B31A6F3A for <tls@ietfa.amsl.com>; Wed, 14 Oct 2015 13:05:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001] autolearn=ham
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 aiF2jqBp73M0 for <tls@ietfa.amsl.com>; Wed, 14 Oct 2015 13:05:07 -0700 (PDT)
Received: from ns3.dns-engine.com (ns3.dns-engine.com [87.106.189.53]) by ietfa.amsl.com (Postfix) with ESMTP id AB8EF1A1BCD for <tls@ietf.org>; Wed, 14 Oct 2015 13:05:06 -0700 (PDT)
Received: from [10.184.1.6] (unknown [104.238.169.130]) by ns3.dns-engine.com (Postfix) with ESMTPSA id 2A33C180041E; Wed, 14 Oct 2015 21:05:00 +0100 (BST)
To: mrex@sap.com
References: <20151014154401.DF1401A2E6@ld9781.wdf.sap.corp>
From: Matt Caswell <frodo@baggins.org>
Message-ID: <561EB56B.9050308@baggins.org>
Date: Wed, 14 Oct 2015 21:04:59 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0
MIME-Version: 1.0
In-Reply-To: <20151014154401.DF1401A2E6@ld9781.wdf.sap.corp>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/HrvjLMGGwpX9ikGgRyRiLFr2xv4>
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Fwd: Clarification on interleaving app data and handshake records
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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, 14 Oct 2015 20:05:10 -0000


On 14/10/15 16:44, Martin Rex wrote:
> Matt Caswell wrote:
>>
>> Does anyone have any views on the below?
> 
> Yup.  Interleaving application & handshake records is a
> highly dangerous idea (and fortunately some TLS implementations
> will abort if you try).
> 
> http://www.ietf.org/mail-archive/web/tls/current/msg07648.html
> 
> http://www.ietf.org/mail-archive/web/tls/current/msg09743.html
> 
> 

So is your recommendation that we should ignore the RFC and prevent
interleaving at all? The current OpenSSL behaviour is to abort, but this
is causing an interoperability problem. Since the RFC is clear that
OpenSSL is in the wrong we were seeking to fix it.

Matt


> -Martin
> 
>> 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