Re: [TLS] I-D Action: draft-ietf-tls-ticketrequests-02.txt

Viktor Dukhovni <> Fri, 11 October 2019 03:15 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 65E5E1200D7 for <>; Thu, 10 Oct 2019 20:15:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id QlJhu5dFhqHG for <>; Thu, 10 Oct 2019 20:15:39 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 4B1EC120045 for <>; Thu, 10 Oct 2019 20:15:39 -0700 (PDT)
Received: from [] (unknown []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id ECBF82B5AA8 for <>; Thu, 10 Oct 2019 23:15:37 -0400 (EDT)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: Viktor Dukhovni <>
In-Reply-To: <>
Date: Thu, 10 Oct 2019 23:07:10 -0400
Content-Transfer-Encoding: quoted-printable
Reply-To: IETF TLS WG <>
Message-Id: <>
References: <> <> <>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <>
Subject: Re: [TLS] I-D Action: draft-ietf-tls-ticketrequests-02.txt
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 11 Oct 2019 03:15:41 -0000

> On Oct 9, 2019, at 9:04 PM, Martin Thomson <> wrote:
> I think that the discussion Victor started about the number of tickets you might want to supply being different for a resumed connection is a sensible one, but I would caution against servers making inferences, especially in light of a very clear signal from clients.  Advice for client implementations might be wise, so that servers are less motivated to make these sorts of decisions.

THanks for the above.  I share much the sentiment.  There's
just one thing I see no way to do, without a somewhat more
nuanced interaction between client and server.

  * The client has a what it believes to be a valid ticket
    and is willing to re-use it, and would prefer to avoid
    the cost of replacing it on each resumption.

  * The server is happy to allow re-use of still valid
    tickets by clients, but needs to know whether the
    client wants a new ticket (because it never re-uses).

  * The server would like to vend a new ticket only when the
    old one needs to be refreshed (ticket lifetime or STEK

In the context of the draft as-is, such a client and server
have a time arriving at a mutually compatible configuration.

  1. If the client requests zero tickets, the server might
     decide the client never wants tickets.  Perhaps here,
     we could say that if the client in fact presented a
     resumption PSK, then it should get zero tickets most of
     the time, but 1 if the ticket needs to be replaced.

     [ This may not quite work right if the presented resumption
       PSK turned out to already be expired and a full handshake
       took place.  In that case the server may not retain any
       knowledge of the original resumption attempt by the time
       the handshake is complete. And for PSKs that fail to
       decrypt, it may not be possible to know whether the PSK
       even was a ticket-based resumption attempt or not. ]

  2. If the client requests one ticket, the server can't
     distinguish between clients that want 1-to-1 replacement,
     because they implement single-use, and those that only want
     one if needed.

  3. When a client gets a new ticket, it has no idea whether the
     original one is still valid, and so must discard the old and
     switch to the new.  So servers that vend a new ticket each
     time force clients to constantly update their ticket store,
     which is sometimes problematic.

Therefore, I am trying to see whether there's a bit of wiggle-room
here for better coordination between server and client.

The simplest I've been able to come up with is to make 0 mean
send no tickets, and 1 mean send 1 as needed, and for n >= 2,
mean send n-1 unconditionally.  But perhaps some else has a
more elegant design that addresses the above?