Re: [TLS] KeyUpdate and unbounded write obligations

Ilari Liusvaara <ilariliusvaara@welho.com> Fri, 02 September 2016 08:42 UTC

Return-Path: <ilariliusvaara@welho.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 2DC7812D7B7 for <tls@ietfa.amsl.com>; Fri, 2 Sep 2016 01:42:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.448
X-Spam-Level:
X-Spam-Status: No, score=-2.448 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-0.548] 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 xQgHOBLxw9KA for <tls@ietfa.amsl.com>; Fri, 2 Sep 2016 01:42:45 -0700 (PDT)
Received: from welho-filter1.welho.com (welho-filter1.welho.com [83.102.41.23]) by ietfa.amsl.com (Postfix) with ESMTP id 1834912D7B1 for <tls@ietf.org>; Fri, 2 Sep 2016 01:42:44 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by welho-filter1.welho.com (Postfix) with ESMTP id 01FD7F561; Fri, 2 Sep 2016 11:42:44 +0300 (EEST)
X-Virus-Scanned: Debian amavisd-new at pp.htv.fi
Received: from welho-smtp1.welho.com ([IPv6:::ffff:83.102.41.84]) by localhost (welho-filter1.welho.com [::ffff:83.102.41.23]) (amavisd-new, port 10024) with ESMTP id Pq93QE5Ztt-e; Fri, 2 Sep 2016 11:42:43 +0300 (EEST)
Received: from LK-Perkele-V2 (87-100-237-87.bb.dnainternet.fi [87.100.237.87]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by welho-smtp1.welho.com (Postfix) with ESMTPSA id 9D379C4; Fri, 2 Sep 2016 11:42:43 +0300 (EEST)
Date: Fri, 02 Sep 2016 11:42:43 +0300
From: Ilari Liusvaara <ilariliusvaara@welho.com>
To: Keith Winstein <keithw@cs.stanford.edu>
Message-ID: <20160902084243.kzfzxxm52bln7o3t@LK-Perkele-V2.elisa-laajakaista.fi>
References: <974CF78E8475CD4CA398B1FCA21C8E99565C26C5@PRN-MBX01-4.TheFacebook.com> <CAMzhQmM+msOti4rChS=dwRpo5YGh4VMpnqQvy4x=GG=rKA7kew@mail.gmail.com> <20160825042343.w6bg6kg75tujhexg@LK-Perkele-V2.elisa-laajakaista.fi> <CAMzhQmPFwE7H5gN-Ua1unGyFCpxh8aZuX4-2u55R0hmLD52FKQ@mail.gmail.com> <CABcZeBNjRvvKWctCy0oNYDpqgFoTck2Ai8iYuVeYQg1d5Jyk-g@mail.gmail.com> <20160828184105.yvrnbispbnpomk4s@LK-Perkele-V2.elisa-laajakaista.fi> <CABcZeBM=3RPpmGygMmrTU8DMNHQo=k0VTweKjCrY53GR3X4p1A@mail.gmail.com> <95C31431-189C-41ED-A2D2-E370A5FB8F7A@vigilsec.com> <CABcZeBNA_MVO5e-bsnPML4epRjSDVUBf4tewqQ6EY+F1sqooPA@mail.gmail.com> <CAMzhQmMR7y3htEoWE_jMXnBRZ=_1kg43MAj49mjzrUeusQsHqw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
In-Reply-To: <CAMzhQmMR7y3htEoWE_jMXnBRZ=_1kg43MAj49mjzrUeusQsHqw@mail.gmail.com>
User-Agent: NeoMutt/ (1.7.0)
Sender: ilariliusvaara@welho.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/62vgXxFVlbV3xXTqEuW6qMVmeYE>
Cc: IETF TLS <tls@ietf.org>
Subject: Re: [TLS] KeyUpdate and unbounded write obligations
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.17
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: Fri, 02 Sep 2016 08:42:47 -0000

On Thu, Sep 01, 2016 at 02:11:13PM -0700, Keith Winstein wrote:
> I think we have to oppose a change to KeyUpdate that adds P4 (bounded
> write obligations) but not P3 (ability to learn that a KeyUpdate was
> read by other side). These are orthogonal and easily achievable with a
> pretty small tweak. Here are four options that would work for us:

Unfortunately, one can get into situations like this (saw this
in testing):

1) Client send KeyUpdate[req=true] (and continues blasting data)
2) Server receives the KeyUpdate[req=true]
3) Server queues a KeyUpdate[req=false], it gets stuck.
4) Client send KeyUpdate[req=true] (and continues blasting data)
5) Server receives the KeyUpdate[req=true]
6) Server quenches the KeyUpdate, since it has fresh keys.
7) Client send KeyUpdate[req=true] (and continues blasting data)
8) Server receives the KeyUpdate[req=true]
9) Server quenches the KeyUpdate, since it has fresh keys.
10) Server sends something, the KeyUpdate gets unstuck.
11) The client receives the KeyUpdate[req=false]


Considering those KeyUpdates are triggered every ~5min (by volume
trigger[1]), effective RTT was something like ~10-15min (despite sub-
millisecond transport latencies). And the 1 server-sent KeyUpdate
was in reaction to first client KeyUpdate, not the last...


[1] Set at 10,000,000 records (even for 0x1303, which can handle
far far more).


-Ilari